public int Update(SPKHeaderModel hdr, List <SPKAdditionalModel> lsAdditional, SPKEquipmentModel misc, List <SPKAttachmentModel> attchs, int docType, WorklistModel wrkl, out string errMsg) { errMsg = string.Empty; imap = config.CreateMapper(); result_affected = 0; tb_spkHdr hdrEnt = new tb_spkHdr(); tb_KetTambahan miscEnt = new tb_KetTambahan(); tb_PerlTambahan additionalEnt = new tb_PerlTambahan(); tb_Worklist_Archive worklistArchive = new tb_Worklist_Archive(); using (TDMDBEntities context = new TDMDBEntities()) { using (var transaction = context.Database.BeginTransaction()) { try { var update = context.tb_spkHdr.SingleOrDefault(x => x.Id == hdr.Id); if (update != null) { update.SPKDate = hdr.SPKDate; update.JanjiPenyerahan = hdr.JanjiPenyerahan; update.LOTNo = hdr.LOTNo; update.Buyer = hdr.Buyer; update.BuyerAddress = hdr.BuyerAddress; update.KTP = hdr.KTP; update.Phone = hdr.Phone; update.STNKName = hdr.STNKName; update.STNKAddress = hdr.STNKAddress; update.Email = hdr.Email; update.Branch = hdr.Branch; update.Merk = hdr.Merk; update.Warna = hdr.Warna; update.Karoseri = hdr.Karoseri; update.MachineNo = hdr.MachineNo; update.RangkaNo = hdr.RangkaNo; update.Pembiayaan = hdr.Pembiayaan; update.Year = hdr.Year; update.Via = hdr.Via; update.PercentageBunga = hdr.PercentageBunga; update.OTRPrice = hdr.OTRPrice; update.KaroseriPrice = hdr.KaroseriPrice; update.TotalPrice = hdr.TotalPrice; update.DP = hdr.DP; update.TandaJadi = hdr.TandaJadi; update.Pembayaran = hdr.Pembayaran; update.TransferVia = hdr.TransferVia; update.AlamatKirim = hdr.AlamatKirim; update.City = hdr.City; update.IsKaroseri = hdr.IsKaroseri; update.KaroseriDesc = hdr.KaroseriDesc; update.IsOnTR = hdr.IsOnTR; update.IsOffTR = hdr.IsOffTR; update.IsChooseNo = hdr.IsChooseNo; update.ChooseNo = hdr.ChooseNo; update.ModifiedBy = hdr.ModifiedBy; update.ModifiedDate = DateTime.Now; result_affected = context.SaveChanges(); #region ::ADDITIONAL ITEMS:: //remove additional items var _qryAdditional = context.tb_PerlTambahan.Where(x => x.SPKId == hdr.Id); context.tb_PerlTambahan.RemoveRange(_qryAdditional); context.SaveChanges(); //add additional items foreach (var item in lsAdditional) { additionalEnt.No = item.No; additionalEnt.SPKId = hdr.Id; additionalEnt.AdditionalItem = item.Additional; context.tb_PerlTambahan.Add(additionalEnt); result_affected += context.SaveChanges(); } #endregion #region ::ATTACHMENTS:: foreach (var item in attchs) { tb_Attachment attchEnt = new tb_Attachment(); attchEnt.Attachment = item.Attachment; attchEnt.AttachmentName = item.AttachmentName; attchEnt.DocType = item.DocType; attchEnt.DocId = hdr.Id; attchEnt.CreatedBy = "SYSTEM"; attchEnt.CreatedDate = DateTime.Now; context.tb_Attachment.Add(attchEnt); result_affected += context.SaveChanges(); } #endregion #region ::WORKFLOW APPROVAL:: var _updWorklist = context.tb_Worklist.SingleOrDefault(x => x.DocId == hdr.Id && x.DocType == docType); if (wrkl.Actioner.ToLower() == MyEnums.actionStatus.APPROVE.ToString().ToLower() || wrkl.Actioner.ToLower() == MyEnums.actionStatus.ACKNOWLEDGE.ToString().ToLower()) { if (_updWorklist != null) { worklistArchive = imap.Map <tb_Worklist, tb_Worklist_Archive>(_updWorklist); worklistArchive.RespondDate = DateTime.Now; worklistArchive.Actioner = wrkl.Actioner; worklistArchive.LastActor = wrkl.Actor; worklistArchive.CreatedBy = _updWorklist.CreatedBy; worklistArchive.CreatedDate = _updWorklist.CreatedDate; worklistArchive.ModifiedBy = hdr.CreatedBy; worklistArchive.ModifiedDate = DateTime.Now; worklistArchive.LastLevel = _updWorklist.CurrLevel + 1; worklistArchive.IsCompleted = new WorkflowSettingBLL().CheckIsWorkflowCompleted(docType, (int)worklistArchive.LastLevel); if (worklistArchive.IsCompleted) { worklistArchive.Status = MyEnums.workflowStatus.COMPLETED.ToString(); } context.tb_Worklist_Archive.Add(worklistArchive); context.SaveChanges(); if (!worklistArchive.IsCompleted) { //update status worklist _updWorklist.CurrLevel = _updWorklist.CurrLevel + 1; _updWorklist.ModifiedBy = hdr.ModifiedBy; _updWorklist.ModifiedDate = DateTime.Now; _updWorklist.NextApprover = Convert.ToInt32(new WorkflowSettingBLL().GetNextActorId(docType, _updWorklist.CurrLevel + 1)); result_affected += context.SaveChanges(); } else { var removeDocId = context.tb_Worklist.Where(x => x.DocId == hdr.Id); context.tb_Worklist.RemoveRange(removeDocId); result_affected += context.SaveChanges(); } } } else if (wrkl.Actioner.ToLower() == MyEnums.actionStatus.REJECT.ToString().ToLower()) { worklistArchive = imap.Map <tb_Worklist, tb_Worklist_Archive>(_updWorklist); worklistArchive.RespondDate = DateTime.Now; worklistArchive.Actioner = wrkl.Actioner; worklistArchive.LastActor = wrkl.Actor; worklistArchive.CreatedBy = _updWorklist.CreatedBy; worklistArchive.CreatedDate = _updWorklist.CreatedDate; worklistArchive.ModifiedBy = hdr.CreatedBy; worklistArchive.ModifiedDate = DateTime.Now; worklistArchive.LastLevel = _updWorklist.CurrLevel + 1; worklistArchive.IsCompleted = true; context.tb_Worklist_Archive.Add(worklistArchive); context.SaveChanges(); var removeDocId = context.tb_Worklist.Where(x => x.DocId == hdr.Id); context.tb_Worklist.RemoveRange(removeDocId); context.SaveChanges(); } #endregion transaction.Commit(); } } catch (Exception ex) { transaction.Rollback(); errMsg = ex.Message == null ? ex.InnerException.Message : ex.Message; } } } return(result_affected); }
public JsonResult UpdateSPK() { string _status = MyEnums.enumStatus.SUCCESS.ToString(); string _retId = "0"; string _errMsg = string.Empty; List <SPKAttachmentModel> _lsAttachment = new List <SPKAttachmentModel>(); List <SPKAdditionalModel> _lsAdditional = new List <SPKAdditionalModel>(); SPKHeaderModel _spk = new SPKHeaderModel(); SPKEquipmentModel _misc = new SPKEquipmentModel(); if (Session["UserLogon"] != null) { _spk.Id = Int32.Parse(Request.Form["SPKID"].ToString()); _spk.SPKDate = DateTime.Parse(Request.Form["TglSPK"].ToString()); _spk.JanjiPenyerahan = DateTime.Parse(Request.Form["JanjiSerah"].ToString()); _spk.Branch = Request.Form["Branch"].ToString(); _spk.LOTNo = Request.Form["Lot"].ToString(); _spk.Buyer = Request.Form["BuyerName"].ToString(); _spk.BuyerAddress = Request.Form["BuyerAddress"].ToString(); _spk.KTP = Request.Form["KTP"].ToString(); _spk.Phone = Request.Form["Phone"].ToString(); _spk.STNKName = Request.Form["STNKName"].ToString(); _spk.STNKAddress = Request.Form["AlamatSTNK"].ToString(); _spk.Email = Request.Form["Email"].ToString(); _spk.Merk = Request.Form["Merk"].ToString(); _spk.Warna = Request.Form["Warna"].ToString(); _spk.Year = Request.Form["Tahun"] == "" ? DateTime.Now.Year : int.Parse(Request.Form["Tahun"].ToString()); _spk.Karoseri = Request.Form["Karoseri"].ToString(); _spk.MachineNo = Request.Form["MachineNo"].ToString(); _spk.RangkaNo = Request.Form["RangkaNo"].ToString(); _spk.Pembiayaan = Request.Form["Pembiayaan"].ToString(); _spk.Via = Request.Form["Via"].ToString(); _spk.PercentageBunga = float.Parse(Request.Form["Bunga"].ToString()); _spk.OTRPrice = float.Parse(Request.Form["HargaOnTheRoad"].ToString()); _spk.KaroseriPrice = float.Parse(Request.Form["HargaKaroseri"].ToString()); _spk.TotalPrice = float.Parse(Request.Form["Total"].ToString()); _spk.DP = float.Parse(Request.Form["DP"].ToString()); _spk.TandaJadi = Request.Form["TandaJadi"].ToString(); _spk.Pembayaran = Request.Form["Pembayaran"].ToString(); _spk.TransferVia = Request.Form["TransferVia"].ToString(); _spk.AlamatKirim = Request.Form["AlamatKirim"].ToString(); _spk.City = int.Parse(Request.Form["City"].ToString()); _spk.CreatedDate = DateTime.Now; _spk.CreatedBy = Utilities.GetUserNameLogon((UserAppsModel)Session["UserLogon"]); if (Request.Form["IsKaroseri"].ToString() == "true") { _spk.IsKaroseri = true; } else { _spk.IsKaroseri = false; } if (Request.Form["IsOntheRoad"].ToString() == "true") { _spk.IsOnTR = true; } else { _spk.IsOnTR = false; } if (Request.Form["IsOffTheRoad"].ToString() == "true") { _spk.IsOffTR = true; } else { _spk.IsOffTR = false; } if (Request.Form["IsNoPilihan"].ToString() == "true") { _spk.IsChooseNo = true; } else { _spk.IsChooseNo = false; } _spk.KaroseriDesc = Request.Form["KaroseriDesc"].ToString(); _spk.ChooseNo = Request.Form["NoPilihan"].ToString(); _lsAdditional = JsonConvert.DeserializeObject <List <SPKAdditionalModel> >(Request.Form["Additional"]); foreach (string file in Request.Files) { var fileContent = Request.Files[file]; if (fileContent != null && fileContent.ContentLength > 0) { // get a stream var stream = fileContent.InputStream; var fileName = Path.GetFileName(fileContent.FileName); var reader = new System.IO.BinaryReader(stream); var Content = reader.ReadBytes(fileContent.ContentLength); _lsAttachment.Add(new SPKAttachmentModel { DocType = new MasterBLL().FindByValue("SPK", MyEnums.enumMaster.DocumentType.ToString()), AttachmentName = fileName, Attachment = Content, }); } } int _idocType = new MasterBLL().FindByValue("SPK", MyEnums.enumMaster.DocumentType.ToString()); WorklistModel wrkls = new WorklistModel(); wrkls.Actioner = Request.Form["Action"].ToString(); wrkls.Actor = Utilities.GetEmployeeID((UserAppsModel)Session["UserLogon"]); int result = new SPKBll().Update(_spk, _lsAdditional, _misc, _lsAttachment, _idocType, wrkls, out _errMsg); if (_errMsg != string.Empty) { _status = MyEnums.enumStatus.ERROR.ToString(); } } else { _status = MyEnums.enumStatus.ERROR.ToString(); _errMsg = "Your session Expired"; } return(Json(new { Status = _status, RetId = _retId, ErrMsg = _errMsg }, JsonRequestBehavior.AllowGet)); }