public int Insert(SPKHeaderModel hdr, List <SPKAdditionalModel> lsAdditional, SPKEquipmentModel misc, List <SPKAttachmentModel> attchs, int docType, out string errMsg) { errMsg = string.Empty; imap = config.CreateMapper(); int _spkId = 0; tb_spkHdr hdrEnt = new tb_spkHdr(); tb_KetTambahan miscEnt = new tb_KetTambahan(); tb_PerlTambahan additionalEnt = new tb_PerlTambahan(); using (TDMDBEntities context = new TDMDBEntities()) { using (var transaction = context.Database.BeginTransaction()) { try { imap = config.CreateMapper(); hdrEnt = imap.Map <SPKHeaderModel, tb_spkHdr>(hdr); context.tb_spkHdr.Add(hdrEnt); result_affected = context.SaveChanges(); _spkId = hdrEnt.Id; foreach (var item in lsAdditional) { additionalEnt.No = item.No; additionalEnt.SPKId = _spkId; additionalEnt.AdditionalItem = item.Additional; context.tb_PerlTambahan.Add(additionalEnt); result_affected += context.SaveChanges(); } //miscEnt = imap.Map<SPKEquipmentModel, tb_KetTambahan>(misc); //miscEnt.SPKId = _spkId; //context.tb_KetTambahan.Add(miscEnt); //result_affected += context.SaveChanges(); 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 = _spkId; attchEnt.CreatedBy = "SYSTEM"; attchEnt.CreatedDate = DateTime.Now; context.tb_Attachment.Add(attchEnt); result_affected += context.SaveChanges(); } //insert to worklist tb_Worklist _entWorklist = new tb_Worklist(); _entWorklist.DocId = _spkId; _entWorklist.DocType = docType; _entWorklist.Status = MyEnums.workflowStatus.PENDING.ToString(); _entWorklist.StartDate = DateTime.Now; _entWorklist.CurrLevel = 0; _entWorklist.NextApprover = Convert.ToInt32(new WorkflowSettingBLL().GetNextActorId(docType, _entWorklist.CurrLevel + 1)); _entWorklist.CreatedBy = hdr.CreatedBy; _entWorklist.CreatedDate = DateTime.Now; context.tb_Worklist.Add(_entWorklist); result_affected += context.SaveChanges(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); errMsg = ex.Message; } } } return(_spkId); }
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); }