Esempio n. 1
0
        public void SaveJobOrderDetails(iffsJobOrderHeader jobOrderHeader, IList <string> voucherDetails, string action, IList <string> quotationDetails)
        {
            var jobOrderHeaderId = jobOrderHeader.Id;

            if (action == "Add")
            {
                for (var i = 0; i < voucherDetails.Count(); i++)
                {
                    var row           = voucherDetails[i].Split(new[] { ':' });
                    var fieldCategory = row[0].ToString();
                    var field         = row[1].ToString();
                    var value         = row[2].ToString();

                    var jobDetail = new iffsJobOrderDetail();
                    jobDetail.Id = 0;
                    jobDetail.JobOrderHeaderId = jobOrderHeaderId;
                    jobDetail.FieldCategory    = fieldCategory;
                    jobDetail.Field            = row[1] != null ? field : "";
                    jobDetail.Value            = row[2] != null ? value : "";

                    _jobOrderDetail.AddNew(jobDetail);
                    _context.SaveChanges();
                }

                //Save Job Order Quotations
                for (var j = 0; j < quotationDetails.Count(); j++)
                {
                    var rowquote    = quotationDetails[j].Split(new[] { ':' });
                    var quotationId = int.Parse(rowquote[0]);

                    var jobOrderQuotation = new iffsJobOrderQuotation();
                    jobOrderQuotation.Id          = 0;
                    jobOrderQuotation.JobOrderId  = jobOrderHeaderId;
                    jobOrderQuotation.QuotationId = quotationId;

                    _jobOrderQuotation.AddNew(jobOrderQuotation);
                    _context.SaveChanges();
                }
            }
            else if (action == "Edit")
            {
                _jobOrderDetail.Delete(s => s.JobOrderHeaderId == jobOrderHeaderId);
                for (int i = 0; i < voucherDetails.Count(); i++)
                {
                    var row           = voucherDetails[i].Split(new[] { ':' });
                    var fieldCategory = row[0].ToString();
                    var field         = row[1].ToString();
                    var value         = row[2].ToString();

                    var jobDetail = new iffsJobOrderDetail();
                    jobDetail.Id = 0;
                    jobDetail.JobOrderHeaderId = jobOrderHeaderId;
                    jobDetail.FieldCategory    = fieldCategory;
                    jobDetail.Field            = row[1] != null ? field : "";
                    jobDetail.Value            = row[2] != null ? value : "";

                    _jobOrderDetail.AddNew(jobDetail);
                    _context.SaveChanges();
                }

                _jobOrderQuotation.Delete(q => q.JobOrderId == jobOrderHeaderId);
                //Save Job Order Quotations
                for (var j = 0; j < quotationDetails.Count(); j++)
                {
                    var rowquote    = quotationDetails[j].Split(new[] { ':' });
                    var quotationId = int.Parse(rowquote[0]);

                    var jobOrderQuotation = new iffsJobOrderQuotation();
                    jobOrderQuotation.Id          = 0;
                    jobOrderQuotation.JobOrderId  = jobOrderHeaderId;
                    jobOrderQuotation.QuotationId = quotationId;

                    _jobOrderQuotation.AddNew(jobOrderQuotation);
                    _context.SaveChanges();
                }
            }
            else if (action == "Revised")
            {
                _jobOrderDetail.Delete(j => j.JobOrderHeaderId == jobOrderHeaderId);
                for (var i = 0; i < voucherDetails.Count(); i++)
                {
                    var row           = voucherDetails[i].Split(new[] { ':' });
                    var fieldCategory = row[0].ToString();
                    var field         = row[1].ToString();
                    var value         = row[2].ToString();

                    var jobDetail = new iffsJobOrderDetail();
                    jobDetail.Id = 0;
                    jobDetail.JobOrderHeaderId = jobOrderHeaderId;
                    jobDetail.FieldCategory    = fieldCategory;
                    jobDetail.Field            = field;
                    jobDetail.Value            = value;

                    _jobOrderDetail.AddNew(jobDetail);
                    _context.SaveChanges();
                }

                _jobOrderQuotation.Delete(q => q.JobOrderId == jobOrderHeaderId);
                //Save Job Order Quotations
                for (var j = 0; j < quotationDetails.Count(); j++)
                {
                    var rowquote    = quotationDetails[j].Split(new[] { ':' });
                    var quotationId = int.Parse(rowquote[0]);

                    var jobOrderQuotation = new iffsJobOrderQuotation();
                    jobOrderQuotation.Id          = 0;
                    jobOrderQuotation.JobOrderId  = jobOrderHeaderId;
                    jobOrderQuotation.QuotationId = quotationId;

                    _jobOrderQuotation.AddNew(jobOrderQuotation);
                    _context.SaveChanges();
                }
            }
        }
Esempio n. 2
0
        public DirectResult Save(iffsJobOrderHeader jobOrderHeader)
        {
            using (var transaction = new TransactionScope((TransactionScopeOption.Required), new TransactionOptions {
                IsolationLevel = IsolationLevel.ReadCommitted
            }))
            {
                _context.Database.Connection.Open();
                _context.Database.CommandTimeout = int.MaxValue;
                try
                {
                    int employeeId = 0;
                    var objUser    = (coreUser)Session[Constants.CurrentUser];
                    if (objUser != null && objUser.EmployeeId != null)
                    {
                        employeeId = (int)objUser.EmployeeId;
                    }

                    var hashtable            = JsonConvert.DeserializeObject <Hashtable>(Request.Params["record"]);
                    var voucherDetailsString = hashtable["templateDetails"].ToString();
                    voucherDetailsString = voucherDetailsString.Remove(voucherDetailsString.Length - 1);
                    var    voucherDetails = voucherDetailsString.Split(new[] { ';' });
                    string action         = hashtable["action"].ToString();
                    var    jobOrderNo     = jobOrderHeader.JobOrderNo;
                    if (Request.Params["IsViewed"] != null)
                    {
                        jobOrderHeader.IsViewed = true;
                    }


                    if (jobOrderHeader.Id.Equals(0))
                    {
                        jobOrderHeader.PreparedById = employeeId;
                        jobOrderHeader.PreparedDate = DateTime.Now;


                        /* ***************************************************
                        * Concurrency controlling scheme using global locking
                        * ***************************************************/
                        if (jobOrderNo == "Auto-Generated")
                        {
                            var objOperationType = _lookup.GetAll((Lookups.LupOperationType)).Where(o => o.Id == jobOrderHeader.OperationTypeId).FirstOrDefault();
                            CyberErp.Presentation.Iffs.Web.MvcApplication httpapplication = HttpContext.ApplicationInstance as CyberErp.Presentation.Iffs.Web.MvcApplication;
                            httpapplication.Application.Lock();
                            jobOrderHeader.JobOrderNo = objOperationType.Code + "/" + GetDocumentNumber("JobOrder");
                            jobOrderHeader.Version    = "000";
                            _jobOrderHeader.AddNew(jobOrderHeader);
                            UpdateDocumentNumber("JobOrder");
                            httpapplication.Application.UnLock();
                        }
                        else
                        {
                            _jobOrderHeader.AddNew(jobOrderHeader);
                        }
                    }
                    else
                    {
                        if (action == "Revised")
                        {
                            var    objJobOrder     = _jobOrderHeader.Get(j => j.Id == jobOrderHeader.ParentJobOrderId);
                            var    objJobHistories = _historyHeader.GetAll().Where(h => h.ParentJobOrderId == jobOrderHeader.ParentJobOrderId);
                            var    objJobDetail    = _jobOrderDetail.GetAll().Where(o => o.JobOrderHeaderId == jobOrderHeader.ParentJobOrderId);
                            int    versionint      = 0;
                            string version         = "";
                            if (objJobHistories.Any())
                            {
                                var lastVersion = objJobHistories.LastOrDefault().Version;
                                versionint = Convert.ToInt32(lastVersion);
                                versionint = versionint + 1;
                                version    = "00" + versionint.ToString();
                            }
                            else
                            {
                                version = "001";
                            }

                            //Make the copy of the previous joborder in history table

                            iffsJobOrderHistoryHeader history = new iffsJobOrderHistoryHeader();
                            history.Quotations           = objJobOrder.Quotations;
                            history.JobOrderNo           = objJobOrder.JobOrderNo;
                            history.OperationTypeId      = objJobOrder.OperationTypeId;
                            history.ParentJobOrderId     = objJobOrder.Id;
                            history.Version              = version;
                            history.ValidityDate         = objJobOrder.ValidityDate;
                            history.UltimateClient       = objJobOrder.UltimateClient;
                            history.ReceivingClient      = objJobOrder.ReceivingClient;
                            history.ContactPersonForeign = objJobOrder.ContactPersonForeign;
                            history.ContactPersonLocal   = objJobOrder.ContactPersonLocal;
                            history.PreparedById         = objJobOrder.PreparedById;
                            history.PreparedDate         = objJobOrder.PreparedDate;
                            history.CheckedById          = objJobOrder.CheckedById;
                            history.CheckedDate          = objJobOrder.CheckedDate;
                            history.ApprovedById         = objJobOrder.ApprovedById;
                            history.ApprovedDate         = objJobOrder.ApprovalDate;
                            history.Status   = objJobOrder.Status;
                            history.IsViewed = objJobOrder.IsViewed;
                            history.Remark   = objJobOrder.Remark;
                            history.IsRequiredDocumentsSubmited = objJobOrder.IsRequiredDocumentsSubmited;
                            _historyHeader.AddNew(history);

                            foreach (var d in objJobDetail)
                            {
                                iffsJobOrderHistoryDetail historyDetail = new iffsJobOrderHistoryDetail();
                                historyDetail.JobOrderHeaderId = history.Id;
                                historyDetail.FieldCategory    = d.FieldCategory;
                                historyDetail.Field            = d.Field;
                                historyDetail.Value            = d.Value;
                                _historyDetail.AddNew(historyDetail);
                            }
                            _context.Entry(objJobOrder).State = EntityState.Detached;

                            jobOrderHeader.CheckedById  = null;
                            jobOrderHeader.CheckedDate  = null;
                            jobOrderHeader.ApprovedById = null;
                            jobOrderHeader.ApprovalDate = null;
                        }
                        _jobOrderHeader.Edit(jobOrderHeader);
                    }

                    var quotations = Request.Form["QuotationRecs"];
                    quotations = quotations.Remove(quotations.Length - 1);
                    var quotationDetails = quotations.Split(new[] { ';' });

                    SaveJobOrderDetails(jobOrderHeader, voucherDetails.ToList(), action, quotationDetails.ToList());

                    //if (action != "Revised")
                    //{
                    //    var quotations = Request.Form["QuotationRecs"];
                    //    quotations = quotations.Remove(quotations.Length - 1);
                    //    var quotationDetails = quotations.Split(new[] { ';' });

                    //    SaveJobOrderDetails(jobOrderHeader, voucherDetails.ToList(), action, quotationDetails.ToList());
                    //}
                    //else
                    //{
                    //    SaveJobOrderDetails(jobOrderHeader, voucherDetails.ToList(), action, null);

                    //}

                    _context.SaveChanges();
                    transaction.Complete();
                    return(this.Json(new { success = true, data = "Job Order has been saved Successfully!" }));
                }
                catch (Exception exception)
                {
                    return(this.Json(new { success = false, data = exception.InnerException != null ? exception.InnerException.Message : exception.Message }));
                }
            }
        }