<%@ WebHandler Language="C#" Class="UploadHandler" %>

using System;
using System.Web;
using System.Data;
using System.Collections.Generic;
using System.Linq;
//using BizDataAccess;
using System.IO;
using System.Net;
using System.Web.Services;
using System.Text;
using System.Data.SqlClient;

using DataLinkMesWork;

public class UploadHandler : IHttpHandler
{
    private static string connectionString = System.Configuration.ConfigurationManager.AppSettings.GetValues("ConnectionString")[0].ToString();

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string filePath = "../webpage/file";
        filePath = HttpContext.Current.Server.MapPath(filePath);
        string number = HttpContext.Current.Request["number"];
        string number1 = HttpContext.Current.Request["number1"];
        string reasonsForNonconformity = HttpContext.Current.Request["reasonsForNonconformity"];
        string disqualificationTreatment = HttpContext.Current.Request["disqualificationTreatment"];
        string remark = HttpContext.Current.Request["remark"];
        string num = HttpContext.Current.Request["num"];
        string type = HttpContext.Current.Request["type"];
        int qualifiedNum = 2; // 发票结算申请单流水号
        string result = "";
        bool isOK;
        try
        {
            Guid guid = Guid.NewGuid();
            string uid = guid.ToString().Replace("-", "").ToUpper();
            HttpFileCollection files = context.Request.Files;
            if (files.Count > 0)
            {
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile hpFile = files[0];
                    if (hpFile.ContentLength > 0)
                    {
                        string fileName = System.IO.Path.GetFileName(hpFile.FileName);
                        string suffix = fileName.Split(new Char[] { '.' })[1];
                        string Name = fileName.Split(new Char[] { '.' })[0];
                        string procedureName = "车间生产管理_质检管理_不合格处理";
                        string errorMessage;
                        SqlParameter[] thisParms = new SqlParameter[12];
                        thisParms[0] = new SqlParameter("@零部件流水号", num);
                        thisParms[1] = new SqlParameter("@质检类型代码", type);
                        thisParms[2] = new SqlParameter("@数量", number);
                        thisParms[3] = new SqlParameter("@不合格数量", number1);
                        thisParms[4] = new SqlParameter("@是否合格", qualifiedNum);
                        thisParms[5] = new SqlParameter("@不合格原因", reasonsForNonconformity);
                        thisParms[6] = new SqlParameter("@不合格处理", disqualificationTreatment);
                        thisParms[7] = new SqlParameter("@备注", remark);
                        thisParms[8] = new SqlParameter("@文件标识", uid);
                        thisParms[9] = new SqlParameter("@文件名称", Name);
                        thisParms[10] = new SqlParameter("@文件后缀", suffix);
                        thisParms[11] = new SqlParameter("@是否启用", 1);
                        isOK = DataLinkMesWork.DataLink.ExecuteStoredProcedure(procedureName, ref thisParms, out errorMessage);

                        try
                        {

                            if (isOK)
                            {
                                filePath = filePath + "/" + uid + "." + suffix;
                                hpFile.SaveAs(filePath);
                                result = "[{ \"result\":\"1\"}]";
                            }
                            else
                            {
                                result = "[{ \"result\":\"0\"}]";
                            }
                            try
                            {
                                //增加文件保存到数据库的功能
                                byte[]bytes = new byte[files[0].InputStream.Length];
                                files[0].InputStream.Read(bytes, 0, bytes.Length);
                                string procedureName1 = "_文件存储_高精_增加";
                                string errorMessage1;
                                SqlParameter []thisParms1 = new SqlParameter[5];
                                thisParms1[0] = new SqlParameter("@业务代码", 8);
                                thisParms1[1] = new SqlParameter("@文件标识", uid);
                                thisParms1[2] = new SqlParameter("@文件名称", Name);
                                thisParms1[3] = new SqlParameter("@文件后缀", suffix);
                                thisParms1[4] = new SqlParameter("@文件内容", bytes);
                                DataLinkMesWork.DataLink.ExecuteStoredProcedure(procedureName1, ref thisParms1, out errorMessage1);

                                //--业务代码  1：
                                //-- 1 ：发货管理_附件
                                //-- 2 ：合同信息管理_履约保证金_履约保函
                                //-- 3 ：合同管理_文件路径
                                //-- 4 ：PDM_机床总图_文件列表
                                //-- 5 ：采购管理_采购发票_附件
                                //-- 6 ：车间采购管理_发票结算申请单
                                //-- 7 ：设备管理_设备监控_图片
                                //-- 8 ：车间生产管理_质检管理
                                //-- 9 ：人员管理_图片
                                //--10  tableName


                                if(DataLinkMesWork.DataLink.isBakup=="1")
                                {
                                    DataLinkMesWork.DataLink.ExecuteStoredProcedure_Bakup(procedureName1, ref thisParms1, out errorMessage1);

                                    DataLinkMesWork.DataLink.ExecuteStoredProcedure_Bakup(procedureName, ref thisParms, out errorMessage);
                                }
                            }
                            catch
                            {

                            }
                        }
                        catch
                        {

                        }
                      
                    }
                    else
                    {
                        context.Response.Write(result);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            result = "[{ \"result\":\"0\"}]";
        }
        context.Response.Write(result);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
