protected void AssignViewJobLookupListsFuncs(EditPrdnJobViewModel viewJob) { viewJob.CustListFunc = GetCustomerList; viewJob.CustLocsFunc = GetCustLocationSelList; viewJob.ShipCodesFunc = GetShipCodes; viewJob.JobPrioritiesFunc = GetJobPriorities; }
protected void LoadEditJobViewModel(EditPrdnJobViewModel model, int id, string urlReturn) { var job = (from j in PrdnDBContext.ProductionJobs .Include("Run").Include("Product").Include("Request").Include("Priority").Include("PrdnInvItem") .Include("CreatedUser").Include("ScheduledUser").Include("ProcessedUser").Include("CompletedUser").Include("CanceledUser") where j.ID == id select j).FirstOrDefault(); if (job != null) { Mapper.Map<ProductionJob, EditPrdnJobViewModel>(job, model); if (job.IsNotNull(j => j.PrdnInvItem)) { } model.UrlReturn = urlReturn; model.loadFromRun(job.Run); LoadViewJobProdLists(model, job); WorksheetEditViewModel.LoadViewJobEditWorksheet(model, job); overrideViewJobProdOpts(model); } else { model = null; } }
protected void PrintJobViewItemLabel(IPrinterInfo printerInfo, EditPrdnJobViewModel viewJob, ProductionJob job = null) { if ((viewJob.PrdnTypeCode == null) && (job.IfNotNull(j => j.Run) != null)) { viewJob.loadFromRun(job.Run); } if ((viewJob.WorksheetID != null) && (viewJob.EditWorksheet == null)) { WorksheetEditViewModel.LoadViewJobEditWorksheet(viewJob, job); } PrdnZplMultiParam parm = new PrdnZplMultiParam(viewJob); ZplPrinterHelper.NetworkMultiZpl(printerInfo.PrinterHostName, (int)printerInfo.PrinterPort, parm); }
protected void UpdateJobWorksheet(ProductionJob editJob, EditPrdnJobViewModel viewJob) { bool anyWSRows = viewJob.NotNullAny(n => n.IfNotNull(x => x.EditWorksheet).IfNotNull(x => x.WorksheetOpts)); Worksheet worksheet = editJob.Worksheet; if (worksheet != null) // clear the existing worksheet chars and comps { PrdnDBContext.ExecuteStoreCommand("DELETE FROM FG_WORKSHEET_CHAR WHERE FG_WORKSHEET_ID = :p0", worksheet.ID); PrdnDBContext.ExecuteStoreCommand("DELETE FROM FG_WORKSHEET_COMP WHERE FG_PARENT_COMP_PROD_CD IS NOT NULL AND FG_WORKSHEET_ID = :p0", worksheet.ID); PrdnDBContext.ExecuteStoreCommand("DELETE FROM FG_WORKSHEET_COMP WHERE FG_WORKSHEET_ID = :p0", worksheet.ID); if (anyWSRows) { editJob.AssignWorksheet(worksheet); } else { PrdnDBContext.DeleteObject(worksheet); } } else if (anyWSRows) { worksheet = new Worksheet { ID = PrdnIsisEntities.GetNextWorksheetID() }; editJob.AssignWorksheet(worksheet); } if (anyWSRows) { viewJob.EditWorksheet.WorksheetOpts.ForEach(o => o.AssignTypeProps()); foreach (var opt in viewJob.EditWorksheet.WorksheetOpts.Where(o => (o.Type == OptionType.Component) && o.IsRoot)) { WorksheetComp comp = Mapper.Map<WorksheetOpt, WorksheetComp>(opt); worksheet.WorksheetComps.Add(comp); } foreach (var opt in viewJob.EditWorksheet.WorksheetOpts.Where(o => (o.Type == OptionType.Component) && !o.IsRoot)) { WorksheetComp comp = Mapper.Map<WorksheetOpt, WorksheetComp>(opt); worksheet.WorksheetComps.Add(comp); } foreach (var opt in viewJob.EditWorksheet.WorksheetOpts.Where(o => o.Type == OptionType.Characteristic)) { WorksheetChar chr = Mapper.Map<WorksheetOpt, WorksheetChar>(opt); worksheet.WorksheetChars.Add(chr); } } }
protected void loadViewJobForPost(EditPrdnJobViewModel viewJob) { LoadViewJobProdLists(viewJob); AssignViewJobLookupListsFuncs(viewJob); if (viewJob.IsNotNull(j => j.EditWorksheet)) { string modKey = viewJob.FullPropertyName(m => m.EditWorksheet.Editable); ModelState.Remove(modKey); viewJob.EditWorksheet.Editable = false; } ProcessAttacherForPost(viewJob.Attacher); }
public static void LoadViewJobEditWorksheet(EditPrdnJobViewModel viewJob, ProductionJob job) { if (job.IsNotNull(j => j.Worksheet)) { viewJob.EditWorksheet = new WorksheetEditViewModel(job.Product.IfNotNull(j => j.ProdTypeCD), job.Worksheet); } else { if (viewJob.WorksheetID != null) { viewJob.EditWorksheet = new WorksheetEditViewModel(job.Product.IfNotNull(j => j.ProdTypeCD), viewJob.WorksheetID); } else { viewJob.EditWorksheet = new WorksheetEditViewModel(job.Product.IfNotNull(j => j.ProdTypeCD)); } } viewJob.EditWorksheet.Editable = false; }
protected void overrideViewJobProdOpts(EditPrdnJobViewModel viewJob) { if ((viewJob.NotNullAny(j => j.ProdOptions)) && (viewJob.NotNullAny(j => j.IfNotNull(x => x.EditWorksheet).IfNotNull(e => e.WorksheetOpts)))) { foreach (var wOpt in viewJob.EditWorksheet.WorksheetOpts) { foreach (var pOpt in viewJob.ProdOptions.Where(o => !o.Overriden && o.OverrideMatch(wOpt))) { pOpt.Overriden = true; } } }; }
protected void loadViewJobViewAttachments(EditPrdnJobViewModel viewJob, string groups) { viewJob.Attacher = new FileAttacher(); viewJob.Attacher.Groups = groups; if (viewJob.ID != null) { List<ExtantFileInfo> edit = new List<ExtantFileInfo>(); List<ExtantFileInfo> view = new List<ExtantFileInfo>(); List<ExtantFileInfo> allExtant = ExtantAttachments(viewJob.ID); string[] groupArr = groups.Split(','); foreach (var item in allExtant) { if (groupArr.Contains(item.GroupCD)) { edit.Add(item); } else { view.Add(item); } } if (edit.Count() > 0) { viewJob.Attacher.ExtantFiles = edit; } if (view.Count() > 0) { viewJob.Attacher.ViewFiles = view; } } viewJob.Attacher.AttTypesFunc = GetAttTypes; viewJob.Attacher.RecordCounts(); }
protected void AssignCustSpecific(EditPrdnJobViewModel viewJob) { if (viewJob.CustID == PrdnDataHelper.PrdnCustIDCST) { AssignCstpecific(viewJob); } }
protected void AssignCstpecific(EditPrdnJobViewModel viewJob) { viewJob.OrderTotal = 0; if (!String.IsNullOrEmpty(viewJob.OrderNo)) { if (viewJob.OrderLineID == null) { viewJob.OrderTotal = PrdnDBContext.GetCstOrdTotal(viewJob.OrderNo) ?? 0; } else { var lnQry = from l in PrdnDBContext.CstOrderLines where l.OrderLineID == viewJob.OrderLineID select new { l.OrderNo, l.OrderLine, l.OrderLineID, l.ProdCD }; var ordInfo = (from o in PrdnDBContext.CstOrders where o.OrderNo == viewJob.OrderNo join l in lnQry on o.OrderNo equals l.OrderNo into temp from ln in temp.DefaultIfEmpty() select new { o.OrderNo, OrderTot = o.OrderLines.Sum(l => l.LineTotal) + (o.Tax ?? 0) + (o.Transport ?? 0) + (o.Shipping ?? 0), line = ln }).FirstOrDefault(); if (ordInfo != null) { viewJob.OrderTotal = ordInfo.OrderTot; viewJob.OrderLine = ordInfo.line.IfNotNull(l => l.OrderLine); } } } }
protected void AddExtraJobsForQty(EditPrdnJobViewModel newViewJob, ProductionJob job) { AddPrdnJobViewModel addedViewJob = newViewJob as AddPrdnJobViewModel; if (addedViewJob.IfNotNull(j => j.Qty) > 1) { CopyJob(job, addedViewJob.Qty-1); PrdnDBContext.SaveChanges(); } }
public ActionResult Edit(EditPrdnJobViewModel editViewJob, IEnumerable<HttpPostedFileBase> uploadedFiles) { ProcessAttacherForSave(editViewJob.Attacher, uploadedFiles); ProductionJob editJob = (from j in PrdnDBContext.ProductionJobs.Include("PrdnInvItem") where j.ID == editViewJob.ID select j).FirstOrDefault(); if (editJob == null) { return ErrMsgView(SystemExtensions.Sentence("Error Saving Job: ", LocalStr.JobID, editViewJob.IfNotNull(j => j.ID).ToString(), LocalStr.verbIsNot, LocalStr.valid)); } if (editViewJob.EditStatus == PrdnJobStatus.New) { editViewJob.EditStatus = editJob.Status; } else if ((editJob.Status != editViewJob.EditStatus) && (!EditPrdnJobViewModel.FromStatusTo(editJob.Status, editViewJob.EditStatus))) { ModelState.AddModelError(editViewJob.FullPropertyName(j => j.EditStatus), SystemExtensions.Sentence(LocalStr.Status, LocalStr.Change, LocalStr.to, editViewJob.EditStatus.Description(), LocalStr.verbIsNot, LocalStr.valid)); } JobModelValidate(editViewJob); if (ModelState.IsValid) { if (editJob.IsNotNull(j => j.PrdnInvItem)) { return ErrMsgView(SystemExtensions.Sentence("Error Saving Job: ", editJob.PrdnInvItem.SerialNo, " exists in inventory.")); } EnsurePrdnDBContextOpen(); using (var transaction = PrdnDBContext.Connection.BeginTransaction()) { try { Mapper.Map<EditPrdnJobViewModel, ProductionJob>(editViewJob, editJob); if (editJob.Status != editViewJob.EditStatus) { editJob.UpdateStatus((PrdnJobStatus)editViewJob.EditStatus, GetCurrentUserID()); } UpdateJobWorksheet(editJob, editViewJob); UpdateJobAttachments(editJob, editViewJob.Attacher); PrdnDBContext.SaveChanges(); if ((editViewJob.EditRunSeqNo != null) && (editJob.RunSeqNo != editViewJob.EditRunSeqNo)) { InsertRunSeqs(PrdnDBContext, editJob, (int)editViewJob.EditRunSeqNo); ReSequenceRun(editJob.RunID); PrdnDBContext.SaveChanges(); } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); return ErrMsgView("Error Saving Job: " + ex.Message); } } return RedirectIfLocal(editViewJob.UrlReturn, () => RedirectToAction(actionName: "Jobs", controllerName: "Schedule", routeValues: new { id = editViewJob.RunID })); //if (this.IsLocalUrl(editViewJob.UrlReturn)) { return Redirect(editViewJob.UrlReturn);} else {return RedirectToAction(actionName: "Jobs", controllerName: "Schedule", routeValues: new { RunID = editViewJob.RunID });} } else { //assignViewJobLookupListsFuncs(editViewJob); //ProcessAttacherForPost(editViewJob.Attacher); loadViewJobForPost(editViewJob); return View(editViewJob); } }
private ActionUpdateResult AddNewJobFromViewModel(EditPrdnJobViewModel newViewJob, IEnumerable<HttpPostedFileBase> uploadedFiles, out ProductionJob addedJob, Action<EditPrdnJobViewModel, ProductionJob> extraSaveProc=null) { addedJob = null; ProcessAttacherForSave(newViewJob.Attacher, uploadedFiles); JobModelValidate(newViewJob); if (ModelState.IsValid) { EnsurePrdnDBContextOpen(); using (var transaction = PrdnDBContext.Connection.BeginTransaction()) { try { newViewJob.RunSeqNo = PrdnDBContext.NextRunSequence(newViewJob.RunID); newViewJob.SerialNo = PrdnDBContext.NextSerialStr(); ProductionJob newJob = new ProductionJob(DateTime.Now, GetCurrentUserID()); Mapper.Map<EditPrdnJobViewModel, ProductionJob>(newViewJob, newJob); newJob.UpdateStatus((PrdnJobStatus)newViewJob.EditStatus, GetCurrentUserID()); PrdnDBContext.ProductionJobs.AddObject(newJob); UpdateJobWorksheet(newJob, newViewJob); UpdateJobAttachments(newJob, newViewJob.Attacher); PrdnDBContext.SaveChanges(); if (extraSaveProc != null) { extraSaveProc(newViewJob, newJob); } if ((newViewJob.EditRunSeqNo != null) && (newJob.RunSeqNo != newViewJob.EditRunSeqNo)) { InsertRunSeqs(PrdnDBContext, newJob, (int)newViewJob.EditRunSeqNo); } ReSequenceRun(newJob.RunID); transaction.Commit(); addedJob = newJob; return new ActionUpdateResult(ActionUpdateType.Success); } catch (Exception ex) { transaction.Rollback(); return new ActionUpdateResult(ActionUpdateType.Exception, ex.Message); } } } else { loadViewJobForPost(newViewJob); return new ActionUpdateResult(ActionUpdateType.Invalid); } }
//[HttpPost] //public ActionResult RequestRun() //{ // RequestScheduleViewModel model = null; // if (TryValidateModel(model)) { // return RedirectToAction(actionName: model.RouteAction, controllerName: model.RouteController, // routeValues: new // { // requestID = model.RequestID, // urlReturn = model.UrlReturn, // runID = model.RunID // }); // } // else { // model.LookupRunModel = new PrdnRunLookupModel(); // model.NewRunModel = new NewPrdnRunViewModel(Session, model.RouteController, model.RouteAction, // new RequestCreateRunActionParm { RequestID = model.RequestID, UrlReturn = model.UrlReturn }); // return View(model); // } //} protected void UpdateScheduledRequest(EditPrdnJobViewModel newViewJob, ProductionJob job) { if (job.CstRequestID == null) { return; } var request = (from r in PrdnDBContext.Requests where r.ID == job.CstRequestID select r).FirstOrDefault(); if (request != null) { CST.Prdn.Data.ProductionJobAttachment newAttachment = null; request.Status = RequestStatus.SCHEDULED; request.ScheduledJobID = job.ID; request.ScheduledDt = DateTime.Now; request.ScheduledUserID = GetCurrentUserID(); var reqAtt = (from a in PrdnDBContext.RequestAttachments where a.ID == job.CstRequestID && a.Attachment != null select new { a.ID, a.FileName, MimeContentType = a.MimeType.ContentType, MimeSubType = a.MimeTypeCD, a.MimeType, }).FirstOrDefault(); if (reqAtt != null) { string requestAttachmentTypeID = WebConfigurationManager.AppSettings["RequestAttachmentTypeID"]; decimal attTypeID = Convert.ToDecimal(requestAttachmentTypeID); newAttachment = new CST.Prdn.Data.ProductionJobAttachment { //JobID = editJob.ID, FileName = reqAtt.FileName, MimeType = CST.ISIS.Data.Attachment.ConcatMimeType(reqAtt.MimeContentType, reqAtt.MimeSubType), Description = "Original Request Attachment", Attachment = null, AttachmentTypeID = attTypeID }; job.Attachments.Add(newAttachment); } PrdnDBContext.SaveChanges(); if (newAttachment != null) { PrdnDBContext.ExecuteStoreCommand( @"UPDATE FG_PRDN_JOB_ATTACHMENT J SET J.FG_ATTACH_DATA = (SELECT R.FG_ATTACHMENT FROM FG_REQ_PART R WHERE R.FG_REQUEST_ID = :p0) WHERE J.FG_PRDN_JOB_ATT_ID = :p1" , reqAtt.ID, newAttachment.ID); } } }
protected void loadJobViewForOrder(EditPrdnJobViewModel viewJob) { if (viewJob == null) { return; } if (!String.IsNullOrEmpty(viewJob.OrderNo)) { OrderShipToInfo info = PrdnDBContext.GetOrderShipToInfo(viewJob.OrderNo); if (info != null) { if (info.DropShip) { viewJob.DropShip = true; viewJob.DropShipCustID = info.ShipToCustID; viewJob.DropShipCustName = info.ShipToName; viewJob.ShipAddr1 = info.ShipToAddr1; viewJob.ShipAddr2 = info.ShipToAddr2; viewJob.ShipAddr3 = info.ShipToAddr3; viewJob.ShipAddr4 = info.ShipToAddr4; viewJob.ShipCity = info.ShipToCity; viewJob.ShipState = info.ShipToState; viewJob.ShipPostal = info.ShipToPostal; viewJob.ShipCountry = info.ShipToCountry; } else { viewJob.DropShip = false; } viewJob.OrderTotal = info.OrderTot; } } }
protected void LoadViewJobProdLists(EditPrdnJobViewModel viewJob, ProductionJob job = null) { viewJob.ProdOptions = ProdOptDefn.ProdOptions(viewJob.ProdCD, viewJob.ParentProdCD); viewJob.ProdImageInfoSet = IsisDbContext.ProdImageInfoSet(viewJob.ProdCD); }
protected bool JobModelValidate(EditPrdnJobViewModel viewJob) { bool isValid = (ModelState.IsValid); if (isValid) { if (!String.IsNullOrEmpty(viewJob.ProdCD)) { var prodObj = (from p in PrdnDBContext.Products where (p.ProdTypeCD == viewJob.ProdTypeCD && p.ProdCD == viewJob.ProdCD) select new { p.ProdCD }) .FirstOrDefault(); if (prodObj == null) { ModelState.AddModelError(viewJob.FullPropertyName(j => j.ProdCD), SystemExtensions.Sentence(viewJob.ProdCD, LocalStr.verbIsNot, LocalStr.valid)); isValid = false; } } } if (isValid) { if ((viewJob.CustID == @PrdnDataHelper.PrdnCustIDCST) && (!String.IsNullOrEmpty(viewJob.OrderNo))) { isValid = JobModelValidateCstOrder(viewJob); } } if (isValid) { isValid = JobModelValidateOtherJobs(viewJob); } return isValid; }
protected bool JobModelValidateCstOrder(EditPrdnJobViewModel viewJob) { var lnQry = from l in PrdnDBContext.CstOrderLines where l.OrderLine == viewJob.OrderLine select new { l.OrderNo, l.OrderLine, l.OrderLineID, l.ProdCD }; var ordMatch = (from o in PrdnDBContext.CstOrders where o.OrderNo == viewJob.OrderNo join l in lnQry on o.OrderNo equals l.OrderNo into temp from ln in temp.DefaultIfEmpty() select new { o.OrderNo, line = ln }).FirstOrDefault(); bool isValid = false; if (ordMatch == null) { ModelState.AddModelError(viewJob.FullPropertyName(j => j.OrderNo), SystemExtensions.Sentence(LocalStr.OrderNo, viewJob.OrderNo, LocalStr.verbIsNot, LocalStr.valid)); } else if (ordMatch.line == null) { ModelState.AddModelError(viewJob.FullPropertyName(j => j.OrderLineInt), SystemExtensions.Sentence(LocalStr.OrderNo, viewJob.OrderNo, LocalStr.OrderLine, viewJob.OrderLineInt.ToString(), LocalStr.verbIsNot, LocalStr.valid)); } else if (ordMatch.line.ProdCD != viewJob.ProdCD) { ModelState.AddModelError(viewJob.FullPropertyName(j => j.ProdCD), SystemExtensions.Sentence(LocalStr.OrderNo, viewJob.OrderNo, LocalStr.OrderLine, viewJob.OrderLineInt.ToString(), LocalStr.ProductCD, viewJob.ProdCD, LocalStr.doesNotMatch, ordMatch.line.ProdCD)); } else { isValid = true; viewJob.OrderLineID = ordMatch.line.OrderLineID; } return isValid; }
protected bool JobModelValidateOtherJobs(EditPrdnJobViewModel viewJob) { bool isValid = true; string dbCancStr = PrdnJobStatus.Canceled.DbValStr(); using (PrdnEntities PrdnDBContext = new PrdnEntities()) { if (!String.IsNullOrEmpty(viewJob.CstRequestID)) { var jobReqQry = from j in PrdnDBContext.ProductionJobs where j.CstRequestID == viewJob.CstRequestID && j.CustID == viewJob.CustID && j.StatusStr != dbCancStr select j; if (viewJob.ID != null) { jobReqQry = from j in jobReqQry where j.ID != viewJob.ID select j; } var reqJob = (from j in jobReqQry select new { j.ID, j.SerialNo, j.Run.PrdnOrderNo, j.Run.PrdnType.Code, j.StatusStr, }).FirstOrDefault(); if (reqJob != null) { ModelState.AddModelError(viewJob.FullPropertyName(j => j.CstRequestID), SystemExtensions.Sentence(LocalStr.Job, reqJob.PrdnOrderNo + reqJob.Code, LocalStr.JobID, reqJob.ID.ToString(), LocalStr.SerialNo, reqJob.SerialNo, LocalStr.isAlreadyAssignedTo, LocalStr.RequestID, viewJob.CstRequestID)); isValid = false; } } if (isValid && !String.IsNullOrEmpty(viewJob.OrderNo) && (viewJob.OrderLine != null) && !String.IsNullOrEmpty(viewJob.ProdCD)) { var jobOrdQry = from j in PrdnDBContext.ProductionJobs where j.OrderNo == viewJob.OrderNo && j.CustID == viewJob.CustID && j.OrderLine == viewJob.OrderLine && j.ProdCD == viewJob.ProdCD && j.StatusStr != dbCancStr select j; if (viewJob.ID != null) { jobOrdQry = from j in jobOrdQry where j.ID != viewJob.ID select j; } var ordJob = (from j in jobOrdQry select new { j.ID, j.SerialNo, j.Run.PrdnOrderNo, j.Run.PrdnType.Code, j.StatusStr, }).FirstOrDefault(); if (ordJob != null) { ModelState.AddModelError(viewJob.FullPropertyName(j => j.CstRequestID), SystemExtensions.Sentence(LocalStr.Job, ordJob.PrdnOrderNo + ordJob.Code, LocalStr.JobID, ordJob.ID.ToString(), LocalStr.SerialNo, ordJob.SerialNo, LocalStr.isAlreadyAssignedTo, LocalStr.OrderNo, viewJob.OrderNo, LocalStr.OrderLine, viewJob.OrderLineInt.ToString(), LocalStr.ProductCD, viewJob.ProdCD)); isValid = false; } } } return isValid; }
protected EditPrdnJobViewModel GetEditJobViewModel(int id, string urlReturn) { EditPrdnJobViewModel model = new EditPrdnJobViewModel(); LoadEditJobViewModel(model, id, urlReturn); return model; }
public PrdnZplMultiParam(EditPrdnJobViewModel job) { SerialNo = job.SerialNo; ProdCD = job.ProdCD; Descr = job.ProdDescr; LoadFromCharCompOpts(job.IfNotNull(j => j.EditWorksheet).IfNotNull(w => w.WorksheetOpts)); Priority = job.PriorityDescription; SetPrdnOrderDisp(job.PrdnOrderNo, job.PrdnTypeCode, job.RunSeqNo); ShipCD = job.IfNotNull(j => j.ShipMethodCD); }