Beispiel #1
0
        public CreateBranchResponse InsertOrUpdateBranch(InsertOrUpdateBranchRequest request)
        {
            ThreadContext.Properties["EventClass"]    = ApplicationHelpers.GetCurrentMethod(1);
            ThreadContext.Properties["RemoteAddress"] = ApplicationHelpers.GetClientIP();

            _branchFacade = new BranchFacade();
            var response = _branchFacade.InsertOrUpdateBranch(request);

            return(response);
        }
Beispiel #2
0
        public CreateBranchResponse InsertOrUpdateBranch(InsertOrUpdateBranchRequest request)
        {
            var stopwatch = System.Diagnostics.Stopwatch.StartNew();
            CreateBranchResponse response = new CreateBranchResponse();

            Logger.Info(_logMsg.Clear().SetPrefixMsg("Call BranchService.InsertOrUpdateBranch").ToInputLogString());
            Logger.Debug("I:--START--:--BranchService.InsertOrUpdateBranch--");

            try
            {
                bool valid = false;
                _commonFacade = new CommonFacade();

                if (request.Header != null)
                {
                    valid           = _commonFacade.VerifyServiceRequest <Header>(request.Header);
                    response.Header = new Header
                    {
                        reference_no     = request.Header.reference_no,
                        service_name     = request.Header.service_name,
                        system_code      = request.Header.system_code,
                        transaction_date = request.Header.transaction_date
                    };
                }

                Logger.DebugFormat("-- XMLRequest --\n{0}", request.SerializeObject());
                var auditLog = new AuditLogEntity();
                auditLog.Module    = Constants.Module.WebService;
                auditLog.Action    = Constants.AuditAction.CreateBranch;
                auditLog.IpAddress = ApplicationHelpers.GetClientIP();

                #region == Validate Require Field ==

                if (!valid)
                {
                    response.StatusResponse = new StatusResponse()
                    {
                        ErrorCode   = Constants.ErrorCode.CSMBranch001,
                        Status      = Constants.StatusResponse.Failed,
                        Description = "Bad Request, the header is not valid"
                    };

                    return(response);
                }
                else
                {
                    if (string.IsNullOrEmpty(request.BranchCode))
                    {
                        return(GetReturnErrorRequireField("BranchCode", response));
                    }

                    if (string.IsNullOrEmpty(request.BranchName))
                    {
                        return(GetReturnErrorRequireField("BranchName", response));
                    }

                    if (string.IsNullOrEmpty(request.ChannelCode))
                    {
                        return(GetReturnErrorRequireField("ChannelCode", response));
                    }

                    if (request.StartTimeHour < 0 || request.StartTimeHour > 23)
                    {
                        return(GetReturnErrorInvalidFormat("StartTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 23", "5", response));
                    }

                    if (request.StartTimeMinute < 0 || request.StartTimeMinute > 59)
                    {
                        return(GetReturnErrorInvalidFormat("StartTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 59", "5", response));
                    }

                    if (request.EndTimeHour < 0 || request.EndTimeHour > 23)
                    {
                        return(GetReturnErrorInvalidFormat("EndTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 23", "5", response));
                    }

                    if (request.EndTimeMinute < 0 || request.EndTimeMinute > 59)
                    {
                        return(GetReturnErrorInvalidFormat("EndTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 59", "5", response));
                    }

                    if (request.Status != 0 && request.Status != 1)
                    {
                        return(GetReturnErrorInvalidFormat("Status", "ต้องมีค่าระหว่าง 0 ถึง 1", "5", response));
                    }
                }

                #endregion

                #region == Validate Code ==

                var channelDataAccess = new ChannelDataAccess(_context);

                int?channelId = channelDataAccess.GetChannelIdByChannelCode(request.ChannelCode);
                if (!channelId.HasValue)
                {
                    response.StatusResponse = new StatusResponse()
                    {
                        ErrorCode   = Constants.ErrorCode.CSMBranch003,
                        Status      = Constants.StatusResponse.Failed,
                        Description = "Fail to save branch:\r\nไม่พบ Channel Code ในฐานข้อมูล CSM"
                    };

                    return(response);
                }

                var branchDataAccess = new BranchDataAccess(_context);

                int?upperBranchId = null;

                if (!string.IsNullOrEmpty(request.UpperBranchCode))
                {
                    upperBranchId = branchDataAccess.GetBranchIdByBranchCode(request.UpperBranchCode);
                    if (!upperBranchId.HasValue)
                    {
                        response.StatusResponse = new StatusResponse()
                        {
                            ErrorCode   = Constants.ErrorCode.CSMBranch003,
                            Status      = Constants.StatusResponse.Failed,
                            Description = "Fail to save branch:\r\nไม่พบ Upper Branch Code ในฐานข้อมูล CSM"
                        };

                        return(response);
                    }
                }

                #endregion

                var result = branchDataAccess.InsertOrUpdateBranch(request, channelId.Value, upperBranchId);
                if (result.IsSuccess)
                {
                    response.StatusResponse = new StatusResponse
                    {
                        ErrorCode   = string.Empty,
                        Status      = Constants.StatusResponse.Success,
                        Description = "Save successful"
                    };
                    AppLog.AuditLog(auditLog, LogStatus.Success, response.StatusResponse.Description);
                }
                else
                {
                    response.StatusResponse = new StatusResponse
                    {
                        ErrorCode   = Constants.ErrorCode.CSMBranch003,
                        Status      = Constants.StatusResponse.Failed,
                        Description = result.ErrorMessage
                    };
                    AppLog.AuditLog(auditLog, LogStatus.Fail, response.StatusResponse.Description);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Exception occur:\n", ex);
                response.StatusResponse = new StatusResponse
                {
                    ErrorCode   = Constants.ErrorCode.CSMBranch004,
                    Status      = Constants.StatusResponse.Failed,
                    Description = ex.ToString()
                };
            }
            finally
            {
                Logger.DebugFormat("-- XMLResponse --\n{0}", response.SerializeObject());
                stopwatch.Stop();
                Logger.DebugFormat("O:--Finish--:ElapsedMilliseconds/{0}", stopwatch.ElapsedMilliseconds);
            }

            return(response);
        }
Beispiel #3
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (ValidateInput())
                {
                    var isConnectWsSuccess = false;
                    var isShowException    = false;


                    //check recursive branch
                    if (!BranchBiz.CheckRecurviceBranch(txtBranchCodeIdPopup.Text.Trim(), cmbUpperBranchPopup.SelectedItem.Value))
                    {
                        isShowException = true;
                        throw new Exception("SLM : การบันทึกข้อมูลไม่สำเร็จเนื่องจากพบ Recursive Upper Branch");
                    }

                    //check duplicate name , code
                    if (cbEdit.Checked)
                    {
                        //edit
                        if (!BranchBiz.CheckDuplicateBranchNameForEdit(txtBranchCodeIdPopup.Text.Trim(), txtBranchNamePopup.Text.Trim()))
                        {
                            isShowException = true;
                            throw new Exception(txtBranchNamePopup.Text.Trim() + " มีในระบบแล้ว");
                        }
                    }
                    else
                    {
                        if (!BranchBiz.CheckDuplicateBranchCode(txtBranchCodePopup.Text.Trim()))
                        {
                            isShowException = true;
                            throw new Exception("SLM : รหัสสาขา " + txtBranchCodePopup.Text.Trim() + " มีในระบบแล้ว");
                        }

                        if (!BranchBiz.CheckDuplicateBranchName(txtBranchNamePopup.Text.Trim()))
                        {
                            isShowException = true;
                            throw new Exception("SLM : " + txtBranchNamePopup.Text.Trim() + " มีในระบบแล้ว");
                        }
                    }

                    if (AppConstant.CSMServiceEnableSyncBranch)
                    {
                        try
                        {
                            //send data to webservice
                            var insertOrUpdateBranchRequest = new InsertOrUpdateBranchRequest();
                            insertOrUpdateBranchRequest.Header = new WebServiceHeader();
                            insertOrUpdateBranchRequest.Header.service_name = "CSMBranchService";
                            insertOrUpdateBranchRequest.Header.user_name    = "SLM";
                            insertOrUpdateBranchRequest.Header.system_code  = "SLM";
                            insertOrUpdateBranchRequest.Header.password     = "******";
                            insertOrUpdateBranchRequest.Header.command      = "InsertOrUpdateBranch";
                            insertOrUpdateBranchRequest.BranchCode          = txtBranchCodePopup.Text.Trim();
                            insertOrUpdateBranchRequest.BranchName          = txtBranchNamePopup.Text.Trim();
                            insertOrUpdateBranchRequest.Status      = Convert.ToInt16(rbActive.Checked);
                            insertOrUpdateBranchRequest.ChannelCode = cmbChannelPopup.SelectedItem.Value;
                            //                            insertOrUpdateBranchRequest.UpperBranchCode = cmbUpperBranchPopup.SelectedItem.Value;
                            insertOrUpdateBranchRequest.UpperBranchCode = BranchBiz.GetBranchCodeNew(cmbUpperBranchPopup.SelectedItem.Value);
                            insertOrUpdateBranchRequest.StartTimeHour   = Convert.ToInt32(txtWorkStartHourPopup.Text.Trim());
                            insertOrUpdateBranchRequest.StartTimeMinute = Convert.ToInt32(txtWorkStartMinPopup.Text.Trim());
                            insertOrUpdateBranchRequest.EndTimeHour     = Convert.ToInt32(txtWorkEndHourPopup.Text.Trim());
                            insertOrUpdateBranchRequest.EndTimeMinute   = Convert.ToInt32(txtWorkEndMinPopup.Text.Trim());
                            insertOrUpdateBranchRequest.ActionUsername  = HttpContext.Current.User.Identity.Name;
                            insertOrUpdateBranchRequest.HomeNo          = txtAddressNo.Text;
                            insertOrUpdateBranchRequest.Moo             = txtMoo.Text;
                            insertOrUpdateBranchRequest.Building        = txtBuilding.Text;
                            insertOrUpdateBranchRequest.Floor           = txtFloor.Text;
                            insertOrUpdateBranchRequest.Soi             = txtLane.Text;
                            insertOrUpdateBranchRequest.Street          = txtStreet.Text;
                            insertOrUpdateBranchRequest.Province        = cmbProvince.SelectedValue;
                            insertOrUpdateBranchRequest.Amphur          = cmbAmphur.SelectedValue;
                            insertOrUpdateBranchRequest.Tambol          = cmbTambol.SelectedValue;
                            insertOrUpdateBranchRequest.Zipcode         = txtZipCode.Text;
                            insertOrUpdateBranchRequest.Command         = cbEdit.Checked;

                            //Logging
                            _log.Info("===== [Start] Call WS Submit Staff Data to CSM: InsertOrUpdateBranch =====");
                            _log.Debug("===== [START] Request Parameter =====");
                            _log.Debug("BranchCode=" + insertOrUpdateBranchRequest.BranchCode);
                            _log.Debug("BranchName=" + insertOrUpdateBranchRequest.BranchName);
                            _log.Debug("Status=" + insertOrUpdateBranchRequest.Status);
                            _log.Debug("ChannelCode=" + insertOrUpdateBranchRequest.ChannelCode);
                            _log.Debug("UpperBranchCode=" + insertOrUpdateBranchRequest.UpperBranchCode);
                            _log.Debug("StartTimeHour=" + insertOrUpdateBranchRequest.StartTimeHour);
                            _log.Debug("StartTimeMinute=" + insertOrUpdateBranchRequest.StartTimeMinute);
                            _log.Debug("EndTimeHour=" + insertOrUpdateBranchRequest.EndTimeHour);
                            _log.Debug("EndTimeMinute=" + insertOrUpdateBranchRequest.EndTimeMinute);
                            _log.Debug("ActionUsername="******"HomeNo=" + insertOrUpdateBranchRequest.HomeNo);
                            _log.Debug("Moo=" + insertOrUpdateBranchRequest.Moo);
                            _log.Debug("Building=" + insertOrUpdateBranchRequest.Building);
                            _log.Debug("Floor=" + insertOrUpdateBranchRequest.Floor);
                            _log.Debug("Soi=" + insertOrUpdateBranchRequest.Soi);
                            _log.Debug("Street=" + insertOrUpdateBranchRequest.Street);
                            _log.Debug("Province=" + insertOrUpdateBranchRequest.Province);
                            _log.Debug("Amphur=" + insertOrUpdateBranchRequest.Amphur);
                            _log.Debug("Tambol=" + insertOrUpdateBranchRequest.Tambol);
                            _log.Debug("Zipcode=" + insertOrUpdateBranchRequest.Zipcode);
                            _log.Debug("===== [END] Request Parameter =====");

                            var start = DateTime.Now;
                            _log.DebugFormat("Start Call InsertOrUpdateBranch at {0:dd/MM/yyyy HH:mm:ss}", start);


                            var csmBranchService = new CSMBranchServiceClient();
                            var response         = csmBranchService.InsertOrUpdateBranch(insertOrUpdateBranchRequest);
                            isConnectWsSuccess = true;

                            var stop = DateTime.Now;
                            _log.DebugFormat("End Call InsertOrUpdateBranch at {0:dd/MM/yyyy HH:mm:ss} (Elapsed Time={1} seconds)", stop, stop.Subtract(start).TotalSeconds);

                            if (response.StatusResponse.Status == "SUCCESS")
                            {
                                _log.Info("===== [End] Call WS Submit Staff Data to CSM: InsertOrUpdateBranch (SUCCESS) =====");
                                _log.Debug("===== [START] Response Data =====");
                                _log.Debug("IsSuccess=" + response.StatusResponse.Status);
                                _log.Debug("ErrorCode=" + response.StatusResponse.ErrorCode);
                                _log.Debug("ErrorMessage=" + response.StatusResponse.Description);
                                _log.Debug("===== [END] Response Data =====");
                            }
                            else if (response.StatusResponse.Status == "FAILED")
                            {
                                _log.Error("===== [End] Call WS Submit Staff Data to CSM: InsertOrUpdateBranch (FAIL) =====");
                                _log.Error("===== [START] Response Data =====");
                                _log.Error("IsSuccess=" + response.StatusResponse.Status);
                                _log.Error("ErrorCode=" + response.StatusResponse.ErrorCode);
                                _log.Error("ErrorMessage=" + response.StatusResponse.Description);
                                _log.Error("===== [END] Response Data =====");
                            }

                            if (response.StatusResponse.Status == "FAILED")
                            {
                                throw new Exception(string.Format("{0} \r\nError Message : {1}", "การบันทึกข้อมูลไม่สำเร็จที่ ระบบ CSM", !string.IsNullOrEmpty(response.StatusResponse.Description) ? response.StatusResponse.Description : string.Empty));
                            }
                        }
                        catch (Exception wsex)
                        {
                            _log.Error("===== [End] Call WS Submit Staff Data to CSM: InsertOrUpdateBranch (FAIL with Exception) =====", wsex);
                            _log.Error("===== [START] FAIL with Exception =====");
                            _log.Error("ErrorMessage=" + (!string.IsNullOrEmpty(wsex.ToString()) ? wsex.ToString() : "การบันทึกข้อมูลไม่สำเร็จเนื่องจากไม่สามารถเชื่อมต่อระบบ CSM"));
                            _log.Error("===== [END] FAIL with Exception =====");
                            if (isShowException)
                            {
                                throw wsex;
                            }

                            if (!isConnectWsSuccess)
                            {
                                throw new Exception("การบันทึกข้อมูลไม่สำเร็จเนื่องจากไม่สามารถเชื่อมต่อระบบ CSM");
                            }
                            else
                            {
                                throw wsex;
                            }
                        }
                    }

                    if (cbEdit.Checked)
                    {
                        BranchBiz.UpdateData(txtBranchCodeOldPopup.Text.Trim(), txtBranchCodePopup.Text.Trim(), txtBranchNamePopup.Text.Trim(), txtWorkStartHourPopup.Text.Trim(), txtWorkStartMinPopup.Text.Trim(), txtWorkEndHourPopup.Text.Trim(), txtWorkEndMinPopup.Text.Trim(), cmbUpperBranchPopup.SelectedItem.Value, cmbChannelPopup.SelectedItem.Value, rbActive.Checked, HttpContext.Current.User.Identity.Name
                                             , txtAddressNo.Text, txtMoo.Text, txtBuilding.Text, txtFloor.Text, txtLane.Text, txtStreet.Text, AppUtil.SafeInt(cmbTambol.SelectedValue), AppUtil.SafeInt(cmbAmphur.SelectedValue), AppUtil.SafeInt(cmbProvince.SelectedValue), txtZipCode.Text);
                    }
                    else
                    {
                        string internalBranchCode = BranchBiz.InsertData(txtBranchCodePopup.Text.Trim(), txtBranchNamePopup.Text.Trim(), txtWorkStartHourPopup.Text.Trim(), txtWorkStartMinPopup.Text.Trim(), txtWorkEndHourPopup.Text.Trim(), txtWorkEndMinPopup.Text.Trim(), cmbUpperBranchPopup.SelectedItem.Value, cmbChannelPopup.SelectedItem.Value, rbActive.Checked, HttpContext.Current.User.Identity.Name
                                                                         , txtAddressNo.Text, txtMoo.Text, txtBuilding.Text, txtFloor.Text, txtLane.Text, txtStreet.Text, AppUtil.SafeInt(cmbTambol.SelectedValue), AppUtil.SafeInt(cmbAmphur.SelectedValue), AppUtil.SafeInt(cmbProvince.SelectedValue), txtZipCode.Text);

                        InsertBranchRole(internalBranchCode);
                    }

                    AppUtil.ClientAlert(Page, "บันทึกข้อมูลเรียบร้อย");

                    ClearPopupControl();
                    mpePopup.Hide();

                    DoSearchBranch(0);
                }
                else
                {
                    mpePopup.Show();
                }
            }
            catch (Exception ex)
            {
                mpePopup.Show();
                string message = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                _log.Error(message);
                AppUtil.ClientAlert(Page, message);
            }
        }
Beispiel #4
0
        public InsertOrUpdateBranchResponse InsertOrUpdateBranch(InsertOrUpdateBranchRequest request, int channelId, int?upperBranchId)
        {
            _context.Configuration.AutoDetectChangesEnabled = false;

            var response = new InsertOrUpdateBranchResponse();

            Logger.Info(_logMsg.Clear().SetPrefixMsg("Insert or Update Branch").Add("BranchCode", request.BranchCode)
                        .Add("BranchName", request.BranchName).Add("ChannelId", channelId).Add("UpperBranchId", upperBranchId).ToInputLogString());

            try
            {
                #region "Comment out"
                //                var result = new InsertOrUpdateBranchResponse();

                ////                var dbBranch = _context.TB_R_BRANCH.Where(x => x.BRANCH_CODE.Trim().ToUpper() == request.BranchCode.Trim().ToUpper()).FirstOrDefault();
                //                TB_R_BRANCH dbBranch;
                ////                if (dbBranch == null)
                //                if (!request.Command)
                //                {
                //                    //add mode
                //                    dbBranch = new TB_R_BRANCH();
                //                    result.IsNewBranch = true;

                //                    //check duplicate code
                //                    var count = _context.TB_R_BRANCH.Count(p => p.BRANCH_CODE == request.BranchCode);
                //                    if (count > 0)
                //                    {
                //                        result.IsSuccess = false;
                //                        result.ErrorCode = "6";
                //                        result.ErrorMessage = string.Format("CSM : รหัสสาขา {0} มีในระบบแล้ว", request.BranchCode);
                //                        return result;
                //                    }

                //                    //check duplicate name
                //                    count = _context.TB_R_BRANCH.Count(p => p.BRANCH_NAME == request.BranchName);
                //                    if (count > 0)
                //                    {
                //                        result.IsSuccess = false;
                //                        result.ErrorCode = "6";
                //                        result.ErrorMessage = string.Format("CSM : {0} มีในระบบ", request.BranchName);
                //                        return result;
                //                    }
                //                }
                //                else
                //                {
                //                    //edit mode
                //                    result.IsNewBranch = false;
                //                    dbBranch = _context.TB_R_BRANCH.FirstOrDefault(x => x.BRANCH_CODE.Trim().ToUpper() == request.BranchCode.Trim().ToUpper());

                //                    #region == Validate Branch Data ==

                //                    if (dbBranch == null)
                //                    {
                //                        //create new branch at slm
                //                        dbBranch = new TB_R_BRANCH();
                //                        result.IsNewBranch = true;
                //                    }
                //                    else
                //                    {
                //                        // IF (Change Branch) Or (Change Status 1 to 0)
                //                        if (dbBranch.STATUS == 1 && request.Status == 0)
                //                        {
                //                            var count = _context.TB_M_POOL_BRANCH.Count(x => x.BRANCH_ID == dbBranch.BRANCH_ID && x.STATUS == 1);

                //                            if (count > 0)
                //                            {
                //                                result.IsSuccess = false;
                //                                result.ErrorCode = "6";
                //                                result.ErrorMessage = "ไม่สามารถอัพเดตข้อมูลเป็นปิดสาขาได้ เนื่องจาก มีการผูกสาขากับ Communication Pool";
                //                                return result;
                //                            }
                //                        }

                //                        //duplicate code and name
                //                        var countDuplicate = _context.TB_R_BRANCH.Count(p => p.BRANCH_NAME == request.BranchName && p.BRANCH_CODE != request.BranchCode);
                //                        if (countDuplicate > 0)
                //                        {
                //                            result.IsSuccess = false;
                //                            result.ErrorCode = "6";
                //                            result.ErrorMessage = string.Format("{0} มีในระบบแล้ว", request.BranchName);
                //                            return result;
                //                        }

                //                        //check recursive upper branch
                //                        if (!CheckRecursiveBranch(dbBranch.BRANCH_CODE, upperBranchId))
                //                        {
                //                            result.IsSuccess = false;
                //                            result.ErrorCode = "6";
                //                            result.ErrorMessage = "CSM : การบันทึกข้อมูลไม่สำเร็จเนื่องจากพบ Recursive Upper Branch";
                //                            return result;
                //                        }
                //                    }
                //                    #endregion
                //                }

                //                dbBranch.CHANNEL_ID = channelId;
                //                dbBranch.BRANCH_CODE = ValueOrDefault(request.BranchCode);
                //                dbBranch.BRANCH_NAME = ValueOrDefault(request.BranchName);
                //                dbBranch.STATUS = Convert.ToInt16(request.Status);
                //                dbBranch.UPPER_BRANCH_ID = upperBranchId;
                //                dbBranch.START_TIME_HOUR = Convert.ToInt16(request.StartTimeHour);
                //                dbBranch.START_TIME_MINUTE = Convert.ToInt16(request.StartTimeMinute);
                //                dbBranch.END_TIME_HOUR = Convert.ToInt16(request.EndTimeHour);
                //                dbBranch.END_TIME_MINUTE = Convert.ToInt16(request.EndTimeMinute);

                //                dbBranch.BRANCH_HOME_NO = ValueOrDefault(request.HomeNo);
                //                dbBranch.BRANCH_MOO = ValueOrDefault(request.Moo);
                //                dbBranch.BRANCH_BUILDING = ValueOrDefault(request.Building);
                //                dbBranch.BRANCH_FLOOR = ValueOrDefault(request.Floor);
                //                dbBranch.BRANCH_SOI = ValueOrDefault(request.Soi);
                //                dbBranch.BRANCH_STREET = ValueOrDefault(request.Street);
                //                dbBranch.BRANCH_PROVINCE = ValueOrDefault(request.Province);
                //                dbBranch.BRANCH_AMPHUR = ValueOrDefault(request.Amphur);
                //                dbBranch.BRANCH_TAMBOL = ValueOrDefault(request.Tambol);
                //                dbBranch.BRANCH_ZIPCODE = ValueOrDefault(request.Zipcode);

                //                var now = DateTime.Now;

                //                if (result.IsNewBranch)
                //                {
                //                    dbBranch.CREATE_USER = ValueOrDefault(request.ActionUsername);
                //                    dbBranch.UPDATE_USER = ValueOrDefault(request.ActionUsername);
                //                    dbBranch.CREATE_DATE = now;
                //                    dbBranch.UPDATE_DATE = now;

                //                    _context.TB_R_BRANCH.Add(dbBranch);
                //                }
                //                else
                //                {
                //                    dbBranch.UPDATE_USER = ValueOrDefault(request.ActionUsername);
                //                    dbBranch.UPDATE_DATE = DateTime.Now;
                //                    SetEntryStateModified(dbBranch);
                //                }

                //                this.Save();

                //                result.IsSuccess = true;
                //                return result;
                #endregion

                string logMsg;
                var    today       = DateTime.Now;
                string branchCode  = request.BranchCode.NullSafeTrim();
                var    dbBranch    = _context.TB_R_BRANCH.FirstOrDefault(x => x.BRANCH_CODE == branchCode);
                bool   isNewBranch = (dbBranch == null);

                if (isNewBranch)
                {
                    dbBranch = new TB_R_BRANCH();
                }
                else
                {
                    // เช็คเงื่อนไขการปิดสาขา
                    if (dbBranch.STATUS == 1 && request.Status == 0)
                    {
                        if (_context.TB_M_POOL_BRANCH.Any(x => x.BRANCH_ID == dbBranch.BRANCH_ID && x.STATUS == Constants.ApplicationStatus.Active))
                        {
                            response.IsSuccess    = false;
                            response.ErrorCode    = "6";
                            response.ErrorMessage = "ไม่สามารถอัพเดตข้อมูลเป็นปิดสาขาได้ เนื่องจาก มีการผูกสาขากับ Communication Pool";
                            return(response);
                        }
                    }

                    // Check recursive upper branch
                    if (!CheckRecursiveBranch(dbBranch.BRANCH_CODE, upperBranchId))
                    {
                        response.IsSuccess    = false;
                        response.ErrorCode    = "6";
                        response.ErrorMessage = "CSM : การบันทึกข้อมูลไม่สำเร็จเนื่องจากพบ Recursive Upper Branch";
                        return(response);
                    }
                }

                dbBranch.CHANNEL_ID        = channelId;
                dbBranch.BRANCH_CODE       = branchCode;
                dbBranch.BRANCH_NAME       = request.BranchName.NullSafeTrim();
                dbBranch.STATUS            = request.Status;
                dbBranch.UPPER_BRANCH_ID   = upperBranchId;
                dbBranch.START_TIME_HOUR   = (short)request.StartTimeHour;
                dbBranch.START_TIME_MINUTE = (short)request.StartTimeMinute;
                dbBranch.END_TIME_HOUR     = (short)request.EndTimeHour;
                dbBranch.END_TIME_MINUTE   = (short)request.EndTimeMinute;

                dbBranch.BRANCH_HOME_NO  = request.HomeNo.NullSafeTrim();
                dbBranch.BRANCH_MOO      = request.Moo.NullSafeTrim();
                dbBranch.BRANCH_BUILDING = request.Building.NullSafeTrim();
                dbBranch.BRANCH_FLOOR    = request.Floor.NullSafeTrim();
                dbBranch.BRANCH_SOI      = request.Soi.NullSafeTrim();
                dbBranch.BRANCH_STREET   = request.Street.NullSafeTrim();
                dbBranch.BRANCH_PROVINCE = request.Province.NullSafeTrim();
                dbBranch.BRANCH_AMPHUR   = request.Amphur.NullSafeTrim();
                dbBranch.BRANCH_TAMBOL   = request.Tambol.NullSafeTrim();
                dbBranch.BRANCH_ZIPCODE  = request.Zipcode.NullSafeTrim();
                dbBranch.UPDATE_USER     = request.ActionUsername.NullSafeTrim();
                dbBranch.UPDATE_DATE     = today;

                if (isNewBranch)
                {
                    logMsg = "Insert Branch";
                    dbBranch.CREATE_USER = request.ActionUsername.NullSafeTrim();
                    dbBranch.CREATE_DATE = today;
                    _context.TB_R_BRANCH.Add(dbBranch);
                }
                else
                {
                    logMsg = "Update Branch";
                    SetEntryStateModified(dbBranch);
                }

                response.IsSuccess = (Save() > 0);

                if (response.IsSuccess)
                {
                    Logger.Info(_logMsg.Clear().SetPrefixMsg(logMsg).ToSuccessLogString());
                }
                else
                {
                    Logger.Info(_logMsg.Clear().SetPrefixMsg(logMsg).Add("Error Message", "Failed to save data").ToFailLogString());
                }

                return(response);
            }
            catch (Exception ex)
            {
                Logger.Error("Exception occur:\n", ex);
                Logger.Info(_logMsg.Clear().SetPrefixMsg("Insert or Update Branch").Add("Error Message", ex.Message).ToFailLogString());

                response = new InsertOrUpdateBranchResponse
                {
                    IsSuccess    = false,
                    ErrorCode    = "1",
                    ErrorMessage = ex.Message,
                };

                return(response);
            }
            finally
            {
                _context.Configuration.AutoDetectChangesEnabled = false;
            }
        }
Beispiel #5
0
        public InsertOrUpdateBranchResponse InsertOrUpdateBranch(InsertOrUpdateBranchRequest request)
        {
            try
            {
                #region == Validate Require Field ==

                if (string.IsNullOrEmpty(request.BranchCode))
                {
                    return(GetReturnErrorRequireField("BranchCode"));
                }

                if (string.IsNullOrEmpty(request.BranchName))
                {
                    return(GetReturnErrorRequireField("BranchName"));
                }

                if (string.IsNullOrEmpty(request.ChannelCode))
                {
                    return(GetReturnErrorRequireField("ChannelCode"));
                }

                if (request.StartTimeHour < 0 || request.StartTimeHour > 23)
                {
                    return(GetReturnErrorInvalidFormat("StartTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 23", "5"));
                }

                if (request.StartTimeMinute < 0 || request.StartTimeMinute > 59)
                {
                    return(GetReturnErrorInvalidFormat("StartTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 59", "5"));
                }

                if (request.EndTimeHour < 0 || request.EndTimeHour > 23)
                {
                    return(GetReturnErrorInvalidFormat("EndTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 23", "5"));
                }

                if (request.EndTimeMinute < 0 || request.EndTimeMinute > 59)
                {
                    return(GetReturnErrorInvalidFormat("EndTimeHour", "ต้องมีค่าระหว่าง 0 ถึง 59", "5"));
                }

                if (request.Status != 0 && request.Status != 1)
                {
                    return(GetReturnErrorInvalidFormat("Status", "ต้องมีค่าระหว่าง 0 ถึง 1", "5"));
                }

                #endregion

                #region == Validate Code ==

                var channelDataAccess = new ChannelDataAccess(_context);

                int?channelId = channelDataAccess.GetChannelIdByChannelCode(request.ChannelCode);
                if (!channelId.HasValue)
                {
                    return(new InsertOrUpdateBranchResponse()
                    {
                        IsSuccess = false,
                        ErrorCode = "3",
                        ErrorMessage = "ไม่พบ Channel Code ในฐานข้อมูล CSM",
                    });
                }

                var branchDataAccess = new BranchDataAccess(_context);

                int?upperBranchId = null;

                if (!string.IsNullOrEmpty(request.UpperBranchCode))
                {
                    upperBranchId = branchDataAccess.GetBranchIdByBranchCode(request.UpperBranchCode);
                    if (!upperBranchId.HasValue)
                    {
                        return(new InsertOrUpdateBranchResponse()
                        {
                            IsSuccess = false,
                            ErrorCode = "4",
                            ErrorMessage = "ไม่พบ Upper Branch Code ในฐานข้อมูล CSM",
                        });
                    }
                }

                #endregion

                return(branchDataAccess.InsertOrUpdateBranch(request, channelId.Value, upperBranchId));
            }
            catch (Exception ex)
            {
                return(new InsertOrUpdateBranchResponse()
                {
                    IsSuccess = false,
                    ErrorCode = "1",
                    ErrorMessage = ex.Message
                });
            }
        }
Beispiel #6
0
        public InsertOrUpdateBranchResponse InsertOrUpdateBranch(InsertOrUpdateBranchRequest request, int channelId, int?upperBranchId)
        {
            _context.Configuration.AutoDetectChangesEnabled = false;

            try
            {
                var result = new InsertOrUpdateBranchResponse();

                var dbBranch = _context.TB_R_BRANCH.Where(x => x.BRANCH_CODE.Trim().ToUpper() == request.BranchCode.Trim().ToUpper()).FirstOrDefault();

                if (dbBranch == null)
                {
                    dbBranch           = new TB_R_BRANCH();
                    result.IsNewBranch = true;
                }
                else
                {
                    result.IsNewBranch = false;

                    // IF (Change Branch) Or (Change Status 1 to 0)
                    if (dbBranch.STATUS == 1 && request.Status == 0)
                    {
                        #region == Validate Relation Between Branch to Pool ==

                        var count = _context.TB_M_POOL_BRANCH.Count(x => x.BRANCH_ID == dbBranch.BRANCH_ID && x.STATUS == 1);

                        if (count > 0)
                        {
                            result.IsSuccess    = false;
                            result.ErrorCode    = "6";
                            result.ErrorMessage = "ไม่สามารถอัพเดตข้อมูลเป็นปิดสาขาได้ เนื่องจาก มีการผูกสาขากับ Communication Pool";
                            return(result);
                        }

                        #endregion
                    }
                }

                dbBranch.CHANNEL_ID        = channelId;
                dbBranch.BRANCH_CODE       = ValueOrDefault(request.BranchCode);
                dbBranch.BRANCH_NAME       = ValueOrDefault(request.BranchName);
                dbBranch.STATUS            = Convert.ToInt16(request.Status);
                dbBranch.UPPER_BRANCH_ID   = upperBranchId;
                dbBranch.START_TIME_HOUR   = Convert.ToInt16(request.StartTimeHour);
                dbBranch.START_TIME_MINUTE = Convert.ToInt16(request.StartTimeMinute);
                dbBranch.END_TIME_HOUR     = Convert.ToInt16(request.EndTimeHour);
                dbBranch.END_TIME_MINUTE   = Convert.ToInt16(request.EndTimeMinute);

                dbBranch.BRANCH_HOME_NO  = ValueOrDefault(request.HomeNo);
                dbBranch.BRANCH_MOO      = ValueOrDefault(request.Moo);
                dbBranch.BRANCH_BUILDING = ValueOrDefault(request.Building);
                dbBranch.BRANCH_FLOOR    = ValueOrDefault(request.Floor);
                dbBranch.BRANCH_SOI      = ValueOrDefault(request.Soi);
                dbBranch.BRANCH_STREET   = ValueOrDefault(request.Street);
                dbBranch.BRANCH_PROVINCE = ValueOrDefault(request.Province);
                dbBranch.BRANCH_AMPHUR   = ValueOrDefault(request.Amphur);
                dbBranch.BRANCH_TAMBOL   = ValueOrDefault(request.Tambol);
                dbBranch.BRANCH_ZIPCODE  = ValueOrDefault(request.Zipcode);

                var now = DateTime.Now;

                if (result.IsNewBranch)
                {
                    dbBranch.CREATE_USER = ValueOrDefault(request.ActionUsername);
                    dbBranch.UPDATE_USER = ValueOrDefault(request.ActionUsername);
                    dbBranch.CREATE_DATE = now;
                    dbBranch.UPDATE_DATE = now;

                    _context.TB_R_BRANCH.Add(dbBranch);
                }
                else
                {
                    dbBranch.UPDATE_USER = ValueOrDefault(request.ActionUsername);
                    dbBranch.UPDATE_DATE = DateTime.Now;
                    SetEntryStateModified(dbBranch);
                }

                this.Save();

                result.IsSuccess = true;
                return(result);
            }
            catch (Exception ex)
            {
                Logger.Error("Exception occur:\n", ex);

                return(new InsertOrUpdateBranchResponse()
                {
                    IsSuccess = false,
                    ErrorCode = "1",
                    ErrorMessage = ex.Message,
                });
            }
            finally
            {
                _context.Configuration.AutoDetectChangesEnabled = false;
            }
        }
Beispiel #7
0
        public InsertOrUpdateBranchResponse InsertOrUpdateBranch(InsertOrUpdateBranchRequest request)
        {
            IBranchFacade facade = new BranchFacade();

            return(facade.InsertOrUpdateBranch(request));
        }