private void HandleModify(USAGE_INFO_REGISTRATION oUSAGE_INFO_REG, DataRow row)
        {
            string strMsg = "";

            //Get EDI_ACCOUNT object
            BOL_EDI_ACCOUNT oEDI_ACCOUNT = GetEDI_ACCOUNT(oUSAGE_INFO_REG);

            EDI_ACCOUNT DAL_EDI_ACCOUNT = new EDI_ACCOUNT(con);

            if (!DAL_EDI_ACCOUNT.IsAlreadyUpdated(oEDI_ACCOUNT, out strMsg)) // If updated_at is not already modified
            {
                //insert the record
                DAL_EDI_ACCOUNT.Update(oEDI_ACCOUNT, CURRENT_DATETIME, CURRENT_USER, out strMsg);
            }
            else
            {
                //already use in another process
                ResponseUtility.ReturnFailMessage(row);
                return;
            }

            //return message and MK value
            if (String.IsNullOrEmpty(strMsg)) //success
            {
                ResponseUtility.ReturnSuccessMessage(row, UPDATED_AT_DATETIME, CURRENT_DATETIME, CURRENT_USER);
            }
            else //failed
            {
                ResponseUtility.ReturnFailMessage(row);
            }
        }
        private void HandleDelete(USAGE_INFO_REGISTRATION oUSAGE_INFO_REG, DataRow row)
        {
            string strMsg = "";

            using (TransactionScope dbTxn = new TransactionScope())
            {
                //GET EDI ACCOUNT OBJECT
                BOL_EDI_ACCOUNT oEDI_ACCOUNT = GetEDI_ACCOUNT(oUSAGE_INFO_REG);

                EDI_ACCOUNT DAL_EDI_ACCOUNT = new EDI_ACCOUNT(con);

                if (!DAL_EDI_ACCOUNT.IsAlreadyUpdated(oEDI_ACCOUNT, out strMsg)) // IF updated_at is not already modified
                {
                    //delete the record
                    DAL_EDI_ACCOUNT.Delete(oEDI_ACCOUNT, out strMsg);
                }
                else
                {
                    dbTxn.Dispose();
                    ResponseUtility.ReturnFailMessage(row);
                    return;
                }

                //return message and MK value
                if (String.IsNullOrEmpty(strMsg)) //success
                {
                    dbTxn.Complete();
                    ResponseUtility.ReturnDeleteSuccessMessage(row);
                }
                else //failed
                {
                    ResponseUtility.ReturnFailMessage(row);
                }
            }
        }
        private void HandleInsert(USAGE_INFO_REGISTRATION oUSAGE_INFO_REG, string OPERATION, DataRow row)
        {
            string strMsg = "";

            //Search in EDI_CANDICATE
            BOL_EDI_CANDIDATE oEDI_CANDIDATE = new BOL_EDI_CANDIDATE();

            EDI_CANDIDATE DAL_EDI_CANDICATE = new EDI_CANDIDATE(con);
            DataTable     dtUseFLG          = DAL_EDI_CANDICATE.GetUseFLG(oUSAGE_INFO_REG.EDI_ACCOUNT, out strMsg);

            using (TransactionScope dbTxn = new TransactionScope())
            {
                //Prepare EDI CANDIDATE
                oEDI_CANDIDATE = GetEDI_CANDIDATE(oUSAGE_INFO_REG);


                if (dtUseFLG.Rows.Count == 0)
                {
                    //Insert AS USED
                    DAL_EDI_CANDICATE.Insert(oEDI_CANDIDATE, CURRENT_DATETIME, CURRENT_USER, out strMsg);
                }
                else
                {
                    if (dtUseFLG.Rows[0]["USED_FLG"].ToString() == "*") //if record is already used
                    {
                        ResponseUtility.ReturnFailMessage(row, Utility.Messages.Jimugo.E000WB013);
                        return;
                    }
                    else
                    {
                        //set used flage
                        oEDI_CANDIDATE.USED_FLG = "*";
                        //Update as USED
                        DAL_EDI_CANDICATE.Update(oEDI_CANDIDATE, CURRENT_DATETIME, CURRENT_USER, out strMsg);
                    }
                }

                EDI_ACCOUNT     DAL_EDI_ACCOUNT = new EDI_ACCOUNT(con);
                BOL_EDI_ACCOUNT oEDI_ACCOUNT    = GetEDI_ACCOUNT(oUSAGE_INFO_REG);

                if (DAL_EDI_ACCOUNT.IsCompanyNoBoxAlreadyRegistered(oEDI_ACCOUNT.COMPANY_NO_BOX, out strMsg))
                {
                    ResponseUtility.ReturnFailMessage(row, String.Format(Utility.Messages.Jimugo.E000ZZ038, "会社番号+BOX"));
                    return;
                }

                if (DAL_EDI_ACCOUNT.IsEDIAccountAlreadyRegistered(oEDI_ACCOUNT.EDI_ACCOUNT, out strMsg))
                {
                    ResponseUtility.ReturnFailMessage(row, String.Format(Utility.Messages.Jimugo.E000ZZ038, "EDIアカウント"));
                    return;
                }

                DAL_EDI_ACCOUNT.Insert(oEDI_ACCOUNT, CURRENT_DATETIME, CURRENT_USER, out strMsg);

                #region ASSIGN_MK_VALUE_AND_MESSAGES

                if (String.IsNullOrEmpty(strMsg)) //success
                {
                    dbTxn.Complete();
                    ResponseUtility.ReturnSuccessMessage(row, UPDATED_AT_DATETIME, CURRENT_DATETIME, CURRENT_USER);
                }
                else //failed
                {
                    ResponseUtility.ReturnFailMessage(row);
                }
            }
            #endregion
        }
        public MetaResponse SendMailCreate(string list)  //add more parameter
        {
            #region Parameters
            //message for pop up
            DataTable messagecode = new DataTable();
            messagecode.Columns.Add("Error Message");

            DataTable dtParameter = Utility.Utility_Component.JsonToDt(list);

            COMPANY_NO_BOX = dtParameter.Rows[0]["COMPANY_NO_BOX"].ToString();
            REQ_SEQ        = Convert.ToInt32(dtParameter.Rows[0]["REQ_SEQ"].ToString());
            QUOTATION_DATE = dtParameter.Rows[0]["QUOTATION_DATE"].ToString();
            ORDER_DATE     = dtParameter.Rows[0]["ORDER_DATE"].ToString();
            COMPLETION_NOTIFICATION_DATE = dtParameter.Rows[0]["COMPLETION_NOTIFICATION_DATE"].ToString();
            COMPANY_NAME  = dtParameter.Rows[0]["COMPANY_NAME"].ToString();
            EMAIL_ADDRESS = dtParameter.Rows[0]["EMAIL_ADDRESS"].ToString();
            EDI_ACCOUNT   = dtParameter.Rows[0]["EDI_ACCOUNT"].ToString();
            FILENAME      = dtParameter.Rows[0]["FILENAME"].ToString();
            #endregion
            string msg = "";
            try
            {
                using (TransactionScope dbtnx = new TransactionScope())
                {
                    #region Update RequestDetail For CompleteNotificationSending
                    DAL_REQUEST_DETAIL.SendMailUpdate(TEMP.ToString("yyyy/MM/dd"), COMPANY_NO_BOX, REQ_SEQ, CURRENT_DATETIME, CURRENT_USER, out msg);
                    #endregion

                    if (String.IsNullOrEmpty(msg))
                    {
                        #region InsertReportHistroy
                        DateTime now = DateTime.Now;

                        string outputFile = COMPANY_NO_BOX + "-" + "3" + "-" + REQ_SEQ.ToString().PadLeft(2, '0') + "_完了通知書(" + EDI_ACCOUNT.Replace("@", "") + ")_" + COMPANY_NAME + "様" + ".pdf";
                        string msgText    = outputFile;

                        int REPORTHISTORY_SEQ = DAL_REPORT_HISTORY.GetReportHistorySEQ(COMPANY_NO_BOX, 5, REQ_SEQ, out msg);

                        if (string.IsNullOrEmpty(msg))
                        {
                            DAL_REPORT_HISTORY.InsertNotiSending(COMPANY_NO_BOX, REQ_SEQ, REPORTHISTORY_SEQ, outputFile, EMAIL_ADDRESS, CURRENT_USER, UPDATED_AT_DATETIME, CURRENT_DATETIME, out msg);

                            if (string.IsNullOrEmpty(msg))
                            {
                                BOL_CONFIG config  = new BOL_CONFIG("CTS060", con);
                                BOL_CONFIG config1 = new BOL_CONFIG("SYSTEM", con);

                                string temPath = config1.getStringValue("temp.dir");
                                temPath = temPath + "/" + FILENAME;

                                string pdfSavePath = config.getStringValue("fileSavePath.completionNotice");
                                pdfSavePath = pdfSavePath + "/" + outputFile;

                                //CopyAndMove File
                                int res = MovePdfFile(temPath, pdfSavePath);

                                if (res == 1)
                                {
                                    //BOL_CONFIG config1 = new BOL_CONFIG("SYSTEM", con);
                                    string zipStorageFolder = config1.getStringValue("temp.dir") + "/" + outputFile.Replace(".pdf", ".zi_");

                                    string PASSWORD = config.getStringValue("password.Attachment");

                                    //Create ZipFile With Password
                                    bool zipgenerate = ZipGenerator(temPath, PASSWORD, zipStorageFolder, outputFile);

                                    if (zipgenerate)
                                    {
                                        #region SendMail
                                        String emailAddressCC = config.getStringValue("emailAddress.cc");
                                        string tempString     = PrepareAndSendMail(COMPANY_NAME, PASSWORD);

                                        if (tempString != null)
                                        {
                                            string    subjectString = config.getStringValue("emailSubject.notice");
                                            DataTable result        = new DataTable();
                                            result.Clear();
                                            result.Columns.Add("ZipFileName");
                                            result.Columns.Add("EmailAddressCC");
                                            result.Columns.Add("TemplateString");
                                            result.Columns.Add("SubjectString");
                                            result.Columns.Add("COMPLETE_NOTIFICATION_DATE");
                                            result.Columns.Add("UPDATED_AT");
                                            result.Columns.Add("UPDATED_AT_RAW");

                                            DataRow dtRow = result.NewRow();
                                            dtRow["ZipFileName"]                = outputFile.Replace(".pdf", ".zi_");
                                            dtRow["EmailAddressCC"]             = emailAddressCC;
                                            dtRow["TemplateString"]             = tempString;
                                            dtRow["SubjectString"]              = subjectString.Replace("${companyName}", COMPANY_NAME);
                                            dtRow["COMPLETE_NOTIFICATION_DATE"] = TEMP.ToString("yyyy/MM/dd");
                                            dtRow["UPDATED_AT"]     = UPDATED_AT_DATETIME;
                                            dtRow["UPDATED_AT_RAW"] = CURRENT_DATETIME;

                                            result.Rows.Add(dtRow);
                                            dbtnx.Complete();
                                            response.Data   = Utility.Utility_Component.DtToJSon(result, "pdfData");
                                            response.Status = 1;
                                            return(response);
                                        }
                                        else
                                        {
                                            return(ResponseUtility.ReturnFailMessage(response, timer, messagecode, Utility.Messages.Jimugo.E000WB018));
                                        }
                                        #endregion
                                    }
                                    else
                                    {
                                        return(ResponseUtility.ReturnFailMessage(response, timer, messagecode, Utility.Messages.Jimugo.E000WB007));
                                    }
                                }
                                else
                                {
                                    return(ResponseUtility.ReturnFailMessage(response, timer, messagecode, String.Format(Utility.Messages.Jimugo.E000WB001, msgText)));
                                }
                            }
                            else
                            {
                                return(ResponseUtility.ReturnFailMessage(response, timer, messagecode, Utility.Messages.Jimugo.E000WB003));
                            }
                        }
                        else
                        {
                            return(ResponseUtility.ReturnFailMessage(response, timer, messagecode, Utility.Messages.Jimugo.E000WB002));
                        }

                        #endregion
                    }
                    else
                    {
                        return(ResponseUtility.ReturnFailMessage(response, timer, messagecode, Utility.Messages.Jimugo.E000WB002));
                    }
                }
            }
            catch (Exception ex)
            {
                return(ResponseUtility.GetUnexpectedResponse(response, timer, ex));
            }
        }