public async Task<JsonResult> NewRequest(string btnSubmit, FARRequestViewModel viewmodel) { if (!ModelState.IsValid) { var bind = await BindRequestDashboard(); bind.BUId = viewmodel.BUId; bind.OriginId = viewmodel.OriginId; bind.FailureTypeId = viewmodel.FailureTypeId; bind.StatusId = viewmodel.StatusId; bind.PriorityId = viewmodel.PriorityId; bind.LabSiteId = viewmodel.LabSiteId; Response.StatusCode = (int)HttpStatusCode.NotAcceptable; return new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = new { result = "invalidate" } }; } string suffix = (await OriginRepository.SingleAsync(viewmodel.OriginId)).Name; var newFARNumber = GeneralFARNumber(suffix); bool isSubmit = false; switch (btnSubmit) { case "Save": isSubmit = false; break; case "Submit": isSubmit = true; break; } FARMasterDto master = new FARMasterDto() { Number = newFARNumber, OriginId = viewmodel.OriginId, Requestor = viewmodel.Requestor, RefNo = viewmodel.RefNo, FailureTypeId = viewmodel.FailureTypeId, FailureOriginId = viewmodel.FailureOriginId, FailureRate = viewmodel.FailureRate, StatusId = (int)StatusType.OPEN, LabSiteId = viewmodel.LabSiteId, RequestDate = viewmodel.RequestDate, SamplesArriveDate = viewmodel.SamplesArriveDate, PriorityId = viewmodel.PriorityId, BUId = viewmodel.BUId, Product = viewmodel.Product, FailureDesc = viewmodel.FailureDesc, Customer = viewmodel.Customer, LastUpdatedBy = this.CurrentName, Submitted = isSubmit, //Enhancement Comments = String.Empty }; //Enhancement if (!String.IsNullOrEmpty(viewmodel.Product)) { try { //var products = ProductRepository.FindByName(viewmodel.Product); //Enhacement https://mail.google.com/mail/u/0/?tab=wm#inbox/1549ffc4556acdc7 var products = ProductRepository.FindByNameAndLabSite(viewmodel.Product, viewmodel.LabSiteId); if (products != null && products.Count() > 0) { var product = products.First(); if (!String.IsNullOrEmpty(product.MainPerson)) master.Analyst = product.MainPerson; else if (!String.IsNullOrEmpty(product.SecondaryPerson)) master.Analyst = product.SecondaryPerson; else if (!String.IsNullOrEmpty(product.TertiaryPerson)) master.Analyst = product.TertiaryPerson; } } catch (Exception ex) { LogService.Error(ex.Message, ex); } } //End Enhancement #18 var result = await MasterRepository.AddMasterAsync(master); if (result > 0) { if (!String.IsNullOrEmpty(master.Analyst)) { //SendMail string emailSubject = "FA Request " + master.Number + " has been assigned to you"; string ebody = "You have been assigned by " + this.CurrentName + " to oversee FA Number: " + master.Number + ". Please login to FA DB to update its details."; string emailBody = string.Format("{0}<br><br>{1}", ebody, DateTime.Now.ToShortDateString()); Mail.Send(master.Analyst, emailSubject, ebody); } //Copy all files temp tp folder id master, and remove all file temp string filesTemp = System.IO.Path.Combine(Server.MapPath("~/Upload/Temp"), viewmodel.Gu); if (System.IO.Directory.Exists(filesTemp)) { //get all files string[] files = System.IO.Directory.GetFiles(filesTemp); string folderMaster = System.IO.Path.Combine(Server.MapPath("~/Upload"), result.ToString().PadLeft(10, '0')); if (!System.IO.Directory.Exists(folderMaster)) System.IO.Directory.CreateDirectory(folderMaster); foreach (string file in files) { System.IO.File.Copy(file, System.IO.Path.Combine(folderMaster, System.IO.Path.GetFileName(file))); System.IO.File.Delete(file); } //Remove all file temp System.IO.Directory.Delete(filesTemp); } Response.StatusCode = (int)HttpStatusCode.OK; return new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = new { code = result } }; } else { var bind = await BindRequestDashboard(); bind.BUId = viewmodel.BUId; bind.OriginId = viewmodel.OriginId; bind.FailureTypeId = viewmodel.FailureTypeId; bind.StatusId = viewmodel.StatusId; bind.PriorityId = viewmodel.PriorityId; bind.LabSiteId = viewmodel.LabSiteId; Response.StatusCode = (int)HttpStatusCode.BadRequest; return new JsonResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = new { result = "Failure" } }; } }
/// <summary> /// Binds the request dashboard. /// </summary> /// <returns></returns> private async Task<FARRequestViewModel> BindRequestDashboard() { var reqOrigin = await OriginRepository.GetAllAsync(); var reqStat = (await StatusRepository.GetAllAsync()).Where(w => w.Id == (int)StatusType.OPEN); var reqBu = await BuRepository.GetAllAsync(); var reqFailType = await FailureTypeRepository.GetAllAsync(); var reqProdLine = await ProductRepository.GetAllAsync(); var reqFailureOrigin = await FailureOriginRepository.GetAllAsync(); var reqPriority = await PriorityRepository.GetAllAsync(); var labsites = await LabSiteRepository.GetAllAsync(); var requestor = this.CurrentName; var requestorSite = this.Site; FARRequestViewModel bind = new FARRequestViewModel { Origins = reqOrigin, Status = reqStat, BUs = reqBu, FailureTypes = reqFailType, FailureOrigins = reqFailureOrigin, Priorities = reqPriority, Requestor = requestor, Site = requestorSite, LabSites = labsites }; return bind; }