public JobOrderInspectionRequestLine Create(JobOrderInspectionRequestLine pt, string UserName)
 {
     pt.CreatedBy    = UserName;
     pt.CreatedDate  = DateTime.Now;
     pt.ModifiedBy   = UserName;
     pt.ModifiedDate = DateTime.Now;
     pt.ObjectState  = ObjectState.Added;
     db.JobOrderInspectionRequestLine.Add(pt);
     return(pt);
 }
        public ActionResult ConfirmedJobOrders(List <JobOrderInspectionRequestWizardViewModel> ConfirmedList, int DocTypeId, string UserRemark)
        {
            if (ConfirmedList.Count() > 0 && ConfirmedList.GroupBy(m => m.JobWorkerId).Count() > 1)
            {
                return(Json(new { Success = false, Data = " Multiple Headers are selected. " }, JsonRequestBehavior.AllowGet));
            }
            else if (ConfirmedList.Count() == 0)
            {
                return(Json(new { Success = false, Data = " No Records are selected. " }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                int DivisionId = (int)System.Web.HttpContext.Current.Session["DivisionId"];
                int SiteId     = (int)System.Web.HttpContext.Current.Session["SiteId"];

                bool BeforeSave = true;
                int  Serial     = 1;
                List <JobOrderInspectionRequestLineViewModel> LineStatus = new List <JobOrderInspectionRequestLineViewModel>();

                try
                {
                    BeforeSave = JobOrderInspectionRequestDocEvents.beforeWizardSaveEvent(this, new JobEventArgs(0), ref db);
                }
                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    return(Json(new { Success = false, Data = message }, JsonRequestBehavior.AllowGet));
                }


                if (!BeforeSave)
                {
                    TempData["CSEXC"] += "Failed validation before save";
                }


                int Cnt = 0;
                int Sr  = 0;


                JobOrderInspectionRequestSettings Settings = new JobOrderInspectionRequestSettingsService(db).GetJobOrderInspectionRequestSettingsForDocument(DocTypeId, DivisionId, SiteId);

                int?MaxLineId = 0;

                if (ModelState.IsValid && BeforeSave && !EventException)
                {
                    JobOrderInspectionRequestHeader pt = new JobOrderInspectionRequestHeader();

                    //Getting Settings
                    pt.SiteId       = SiteId;
                    pt.JobWorkerId  = ConfirmedList.FirstOrDefault().JobWorkerId;
                    pt.DivisionId   = DivisionId;
                    pt.ProcessId    = Settings.ProcessId;
                    pt.Remark       = UserRemark;
                    pt.DocTypeId    = DocTypeId;
                    pt.DocDate      = DateTime.Now;
                    pt.DocNo        = new DocumentTypeService(_unitOfWork).FGetNewDocNo("DocNo", ConfigurationManager.AppSettings["DataBaseSchema"] + ".JobOrderInspectionRequestHeaders", pt.DocTypeId, pt.DocDate, pt.DivisionId, pt.SiteId);
                    pt.ModifiedBy   = User.Identity.Name;
                    pt.ModifiedDate = DateTime.Now;
                    pt.CreatedBy    = User.Identity.Name;
                    pt.CreatedDate  = DateTime.Now;

                    pt.Status      = (int)StatusConstants.Drafted;
                    pt.ObjectState = Model.ObjectState.Added;

                    db.JobOrderInspectionRequestHeader.Add(pt);

                    var SelectedJobOrders = ConfirmedList;

                    var JobOrderLineIds = SelectedJobOrders.Select(m => m.JobOrderLineId).ToArray();

                    var JobOrderBalanceRecords = (from p in db.ViewJobOrderBalanceForInspectionRequest
                                                  where JobOrderLineIds.Contains(p.JobOrderLineId)
                                                  select p).AsNoTracking().ToList();

                    var JobOrderRecords = (from p in db.JobOrderLine
                                           where JobOrderLineIds.Contains(p.JobOrderLineId)
                                           select p).AsNoTracking().ToList();

                    foreach (var item in SelectedJobOrders)
                    {
                        JobOrderLine Recline    = JobOrderRecords.Where(m => m.JobOrderLineId == item.JobOrderLineId).FirstOrDefault();
                        var          balRecline = JobOrderBalanceRecords.Where(m => m.JobOrderLineId == item.JobOrderLineId).FirstOrDefault();

                        if (item.Qty <= JobOrderBalanceRecords.Where(m => m.JobOrderLineId == item.JobOrderLineId).FirstOrDefault().BalanceQty)
                        {
                            JobOrderInspectionRequestLine line = new JobOrderInspectionRequestLine();

                            line.JobOrderInspectionRequestHeaderId = pt.JobOrderInspectionRequestHeaderId;
                            line.JobOrderLineId = item.JobOrderLineId;
                            line.Qty            = item.Qty;
                            line.Remark         = item.Remark;
                            line.ProductUidId   = Recline.ProductUidId;
                            line.Sr             = Serial++;
                            line.JobOrderInspectionRequestLineId = Cnt;
                            line.CreatedDate  = DateTime.Now;
                            line.ModifiedDate = DateTime.Now;
                            line.CreatedBy    = User.Identity.Name;
                            line.ModifiedBy   = User.Identity.Name;
                            LineStatus.Add(Mapper.Map <JobOrderInspectionRequestLineViewModel>(line));

                            line.ObjectState = Model.ObjectState.Added;
                            db.JobOrderInspectionRequestLine.Add(line);
                            Cnt = Cnt + 1;
                        }
                    }

                    //new JobOrderLineStatusService(_unitOfWork).UpdateJobOrderQtyQAMultiple(LineStatus, pt.DocDate, ref db);

                    try
                    {
                        JobOrderInspectionRequestDocEvents.onWizardSaveEvent(this, new JobEventArgs(pt.JobOrderInspectionRequestHeaderId, EventModeConstants.Add), ref db);
                    }
                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXC"] += message;
                        EventException     = true;
                    }

                    try
                    {
                        if (EventException)
                        {
                            throw new Exception();
                        }
                        db.SaveChanges();
                        //_unitOfWork.Save();
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        return(Json(new { Success = false, Data = message }, JsonRequestBehavior.AllowGet));
                    }

                    try
                    {
                        JobOrderInspectionRequestDocEvents.afterWizardSaveEvent(this, new JobEventArgs(pt.JobOrderInspectionRequestHeaderId, EventModeConstants.Add), ref db);
                    }
                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        TempData["CSEXC"] += message;
                    }

                    LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                    {
                        DocTypeId    = pt.DocTypeId,
                        DocId        = pt.JobOrderInspectionRequestHeaderId,
                        ActivityType = (int)ActivityTypeContants.WizardCreate,
                        DocNo        = pt.DocNo,
                        DocDate      = pt.DocDate,
                        DocStatus    = pt.Status,
                    }));

                    return(Json(new { Success = "URL", Data = "/JobOrderInspectionRequestHeader/Submit/" + pt.JobOrderInspectionRequestHeaderId }, JsonRequestBehavior.AllowGet));
                }

                else
                {
                    return(Json(new { Success = false, Data = "ModelState is Invalid" }, JsonRequestBehavior.AllowGet));
                }
            }
        }
 public void Update(JobOrderInspectionRequestLine pt, string UserName)
 {
     pt.ModifiedDate = DateTime.Now; pt.ModifiedBy = UserName;
     pt.ObjectState  = ObjectState.Modified;
     db.JobOrderInspectionRequestLine.Add(pt);
 }
 public void Delete(JobOrderInspectionRequestLine pt)
 {
     pt.ObjectState = Model.ObjectState.Deleted;
     db.JobOrderInspectionRequestLine.Remove(pt);
 }