Exemplo n.º 1
0
        public ActionResult RemoveLockRecord(string refNumber)
        {
            var result = _clsGlobal.RemoveLockRecord("Spotter", refNumber, User.Identity.Name);
            var res    = new JsonResult()
            {
                Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };

            return(res);
        }
        public ResultViewModel InsertSpotterData(SpotterViewModel model, string UserName)
        {
            string userMail = "";

            glog.Debug("InsertSpotterData: Entry");
            var result = new ResultViewModel();

            using (var db = new MainDbContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        userMail = db.Sys_Users.FirstOrDefault(x => x.Name == UserName).Email;
                        var            NewId         = clsGlobal.GetSystemID("Payment", "SFP", DateTime.Now.Year.ToString(), DateTime.Now.Month.ToString());
                        Spotter_Master spotterMaster = new Spotter_Master()
                        {
                            SpotterID        = model.SpotterId,
                            SpotterRefNumber = model.SpotterId == 0 ? NewId.NewId : model.SpotterRefNumber,
                            PreparationDate  = DateTime.ParseExact(model.PreparationDate, "dd/MM/yyyy", CultureInfo.InvariantCulture),
                            ApprovedAmount   = (decimal)0.00,
                            Amount           = model.Amount,
                            Status           = "P",
                            CreatedBy        = model.SpotterId == 0 ? userMail : model.CreatedBy,
                            CreatedDate      = model.SpotterId == 0 ? DateTime.Now : Convert.ToDateTime(model.CreatedDate),
                            UpdatedBy        = model.SpotterId == 0 ? null : userMail,
                            UpdatedDate      = model.SpotterId == 0 ? (DateTime?)null : DateTime.Now,
                        };
                        db.Spotter_Master.Add(spotterMaster);
                        if (model.SpotterId == 0)
                        {
                            db.Entry(spotterMaster).State = System.Data.Entity.EntityState.Added;
                        }
                        else
                        {
                            db.Entry(spotterMaster).State = System.Data.Entity.EntityState.Modified;
                        }


                        var Id = db.SaveChanges();

                        #region Spotter Details
                        var spotterId = 0;
                        foreach (var data in model.SpotterContractDetails)
                        {
                            Spotter_Detail spotter = new Spotter_Detail()
                            {
                                SpotterDetailId = data.SpotterDetailId,
                                ApprovedInd     = "P",
                                SpotterId       = model.SpotterId == 0 ? spotterMaster.SpotterID : model.SpotterId,
                                ContractNumber  = data.ContractNumber,
                                RolloverNumber  = data.RolloverNumber,
                                ItemNumber      = data.ItemNumber,
                                Valid           = data.Valid,
                                CreatedBy       = model.SpotterId == 0 ? userMail : model.CreatedBy,
                                CreatedDate     = model.SpotterId == 0 ? DateTime.Now : Convert.ToDateTime(model.CreatedDate),
                                UpdatedBy       = model.SpotterId == 0 ? null : userMail,
                                UpdatedDate     = model.SpotterId == 0 ? (DateTime?)null : DateTime.Now,
                            };
                            db.Spotter_Detail.Add(spotter);
                            if (model.SpotterId == 0)
                            {
                                db.Entry(spotter).State = EntityState.Added;
                            }
                            else
                            {
                                db.Entry(spotter).State = EntityState.Modified;
                            }
                        }
                        spotterId = db.SaveChanges();
                        #endregion

                        #region Contract Spotter
                        foreach (var data in model.SpotterContractDetails)
                        {
                            Contract_Spotter contractSpotter = new Contract_Spotter()
                            {
                                ContractNumber = data.ContractNumber,
                                RolloverNumber = data.RolloverNumber,
                                ItemNumber     = data.ItemNumber,
                                SpotterAmt     = data.SpotterAmt,
                                Status         = data.Status,
                                ApprovedInd    = data.ApprovedInd,
                                Referral       = data.ReferralID,
                                CreatedBy      = data.CreatedBy,
                                CreatedDate    = data.CreatedDate,
                                UpdatedBy      = userMail,
                                UpdatedDate    = DateTime.Now,
                            };
                            db.Contract_Spotter.Add(contractSpotter);
                            db.Entry(contractSpotter).State = System.Data.Entity.EntityState.Modified;
                        }
                        var contractId = db.SaveChanges();
                        #endregion

                        if (model.SpotterId == 0)
                        {
                            clsGlobal.UpdateSystemIDLastNum(NewId, UserName, db);
                        }
                        if (model.SpotterId != 0)
                        {
                            _clsGlobal.RemoveLockRecord("Spotter", spotterMaster.SpotterRefNumber, UserName);
                        }
                        if (spotterId > 0)
                        {
                            transaction.Commit();
                            var isEmailSend = SendEmailNotificationAPI(model, NewId.NewId, UserName, userMail);
                            if (model.SpotterId == 0)
                            {
                                result.Status  = 1;
                                result.Message = "Data had been submitted for approval!";
                            }
                            else
                            {
                                result.Status  = 1;
                                result.Message = String.Format("{0}  updated successfully!", spotterMaster.SpotterRefNumber);
                            }
                        }
                        else
                        {
                            transaction.Rollback();
                            if (model.SpotterId == 0)
                            {
                                result.Status  = 0;
                                result.Message = "Error occurred when submitting for approval.";
                            }
                            else
                            {
                                result.Status  = 1;
                                result.Message = String.Format("Error occurred when updating {0}!", spotterMaster.SpotterRefNumber);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        glog.Error("InsertSpotterData Exception: " + ex.Message + ex.InnerException);
                        result.Status  = 0;
                        result.Message = "Please contact MIS, error: " + ex.Message;
                        transaction.Rollback();
                    }
                    finally
                    {
                        transaction.Dispose();
                    }
                    glog.Debug("InsertSpotterData: Exit");
                    return(result);
                }
            }
        }