Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }