public bool CreateDisbursementForm(List <StationeryRetrievalRequisitionForm> srrfList, Employee emp, string comment) { using (IDbContextTransaction transcat = db.Database.BeginTransaction()) { try { DateTime createDate = DateTime.Now; //find employee Employee _emp = db.Employees.Find(emp.Id); //Create empty df List to save List <DisbursementForm> _dfList = new List <DisbursementForm>(); //Create empty list of srrf List <StationeryRetrievalRequisitionForm> _srrfList = new List <StationeryRetrievalRequisitionForm>(); //Find all SRRF and provide a full mapping properly foreach (StationeryRetrievalRequisitionForm srrf in srrfList) { StationeryRetrievalRequisitionForm _srrf = db.StationeryRetrievalRequisitionForms.Find(srrf.Id); _srrfList.Add(_srrf); } //Find all the distinct Departments IEnumerable <Department> deptList = _srrfList.Select(x => x.RequisitionForm.Employee.Department).Distinct(); foreach (Department dept in deptList) { //Dict to check for Total Product Approved Based on a particular product Dictionary <int, int> _prodCountCheckDict1 = new Dictionary <int, int>(); //Dict to check for Total Product Collected Based on a particular product Dictionary <int, int> _prodCountCheckDict2 = new Dictionary <int, int>(); //Find the total of DOs before adding NEW DO int count = FindDFsByDateTodayAndDept(dept); count++; //Create empty dfp List to save List <DisbursementFormProduct> _dfpList = new List <DisbursementFormProduct>(); //Create an empty dfrflist to save List <DisbursementFormRequisitionForm> _dfrfList = new List <DisbursementFormRequisitionForm>(); //Create an empty dfrflist to save List <DisbursementFormRequisitionFormProduct> _dfrfpList = new List <DisbursementFormRequisitionFormProduct>(); //Find Filtered list of srrf based on dept List <StationeryRetrievalRequisitionForm> _srrfListFilteredByDept = _srrfList .Where(x => x.RequisitionForm.Employee.Department == dept) .ToList(); DateTime deliveryDate = createDate.Date.AddDays(1); if (dept.CollectionPoint.CollectionName == "Stationery Store - Administration Building") { deliveryDate = deliveryDate.AddHours(9).AddMinutes(30); } else if (dept.CollectionPoint.CollectionName == "Management School") { deliveryDate = deliveryDate.AddHours(11).AddMinutes(0); } else if (dept.CollectionPoint.CollectionName == "Medical School") { deliveryDate = deliveryDate.AddHours(9).AddMinutes(30); } else if (dept.CollectionPoint.CollectionName == "Engineering School") { deliveryDate = deliveryDate.AddHours(11).AddMinutes(0); } else if (dept.CollectionPoint.CollectionName == "Science School") { deliveryDate = deliveryDate.AddHours(9).AddMinutes(30); } else if (dept.CollectionPoint.CollectionName == "University Hospital") { deliveryDate = deliveryDate.AddHours(11).AddMinutes(0); } //Assign a DF Code string dfCode = "DF" + "/" + dept.DeptCode + "/" + createDate.ToString("ddMMyy") + "/" + count.ToString(); //Create a DF DisbursementForm _df = new DisbursementForm() { DFDate = createDate, DFStatus = DFStatus.Created, DFCode = dfCode, DFComments = comment, DFDeliveryDate = deliveryDate, DeptRep = db.Employees .Where(x => x.Department == dept) .Where(x => x.EmployeeType.EmployeeTypeName == "Department Representative") .First(), //DeptRep = db.Employees.Find(dept.DeptRepId), CollectionPoint = dept.CollectionPoint, StoreClerk = _emp }; db.DisbursementForms.Add(_df); _dfList.Add(_df); db.SaveChanges(); //Find All distinct RFs in filtered srrfList IEnumerable <RequisitionForm> rfListFilteredByDept = _srrfListFilteredByDept.Select(x => x.RequisitionForm).Distinct(); //Create a consolidated RFPList based on all rf in a dept List <RequisitionFormsProduct> rfpConsolidatedListFilteredByDept = new List <RequisitionFormsProduct>(); foreach (RequisitionForm rfFilteredByDept in rfListFilteredByDept) { DisbursementFormRequisitionForm _dfrf = new DisbursementFormRequisitionForm() { DisbursementForm = _df, RequisitionForm = rfFilteredByDept, DFRFStatus = DFRFStatus.PendingDelivery }; _dfrfList.Add(_dfrf); db.DisbursementFormRequisitionForms.Add(_dfrf); db.SaveChanges(); //Find RFPList based on RF List <RequisitionFormsProduct> rfpListFilteredByDept = db.RequisitionFormsProducts .Where(x => x.RequisitionForm == rfFilteredByDept) .ToList(); //Find All RFP in a dept and add it to the consolidated list foreach (RequisitionFormsProduct rfpFilteredByDept in rfpListFilteredByDept) { rfpConsolidatedListFilteredByDept.Add(rfpFilteredByDept); } } //Find All independent Products in consolidated RFP in a dept IEnumerable <Product> pListFilteredByDept = rfpConsolidatedListFilteredByDept .Select(x => x.Product).Distinct(); //Create DFRFP based on RFP foreach (RequisitionFormsProduct rfpConsolidatedFilteredByDept in rfpConsolidatedListFilteredByDept) { DisbursementFormRequisitionFormProduct _dfrfp = new DisbursementFormRequisitionFormProduct() { DisbursementForm = _df, RequisitionFormsProduct = rfpConsolidatedFilteredByDept, ProductCollected = 0 }; _dfrfpList.Add(_dfrfp); db.DisbursementFormRequisitionFormProducts.Add(_dfrfp); db.SaveChanges(); } //Assign product as key to dictionary and set default values to 0 foreach (Product p in pListFilteredByDept) { _prodCountCheckDict1[p.Id] = 0; _prodCountCheckDict2[p.Id] = 0; } //Find All SRRFP pertaining to this DF List <StationeryRetrievalRequisitionFormProduct> _srrfpList = new List <StationeryRetrievalRequisitionFormProduct>(); List <StationeryRetrieval> _srList = new List <StationeryRetrieval>(); IEnumerable <RequisitionForm> _rfListFilteredByDept = _srrfListFilteredByDept.Select(x => x.RequisitionForm).Distinct(); IEnumerable <StationeryRetrieval> _srListFilteredByDept = _srrfListFilteredByDept.Select(x => x.StationeryRetrieval).Distinct(); foreach (StationeryRetrieval _srFilteredByDept in _srListFilteredByDept) { List <StationeryRetrievalRequisitionFormProduct> _srrfpListIndividual = db.StationeryRetrievalRequisitionFormProducts .Where(x => x.SR == _srFilteredByDept) .ToList(); foreach (RequisitionForm _rfFilteredByDept in _rfListFilteredByDept) { _srrfpListIndividual = _srrfpListIndividual .Where(x => x.RFP.RequisitionForm == _rfFilteredByDept) .ToList(); } foreach (StationeryRetrievalRequisitionFormProduct _srrfpIndividual in _srrfpListIndividual) { _srrfpList.Add(_srrfpIndividual); } } //Create DFP from Ienumerable products foreach (Product p in pListFilteredByDept) { int prodToDelivery = 0; foreach (RequisitionFormsProduct rfpConsolidatedFilteredByDept in rfpConsolidatedListFilteredByDept) { if (p.Id == rfpConsolidatedFilteredByDept.Product.Id) { _prodCountCheckDict1[p.Id] = _prodCountCheckDict1[p.Id] + rfpConsolidatedFilteredByDept.ProductApproved; _prodCountCheckDict2[p.Id] = _prodCountCheckDict2[p.Id] + rfpConsolidatedFilteredByDept.ProductCollectedTotal; } } foreach (StationeryRetrievalRequisitionFormProduct _srrfp in _srrfpList) { if (p.Id == _srrfp.RFP.Product.Id) { prodToDelivery = prodToDelivery + _srrfp.ProductAssigned; } } //CheckProductToReceive DisbursementFormProduct _dfp = new DisbursementFormProduct() { DisbursementForm = _df, Product = p, ProductToDeliverTotal = prodToDelivery }; _dfpList.Add(_dfp); db.DisbursementFormProducts.Add(_dfp); db.SaveChanges(); } ////Create DFP from Ienumerable products //foreach (Product p in pListFilteredByDept) //{ // foreach (RequisitionFormsProduct rfpConsolidatedFilteredByDept in rfpConsolidatedListFilteredByDept) // { // if (p.Id == rfpConsolidatedFilteredByDept.Product.Id) // { // _prodCountCheckDict1[p.Id] = _prodCountCheckDict1[p.Id] + rfpConsolidatedFilteredByDept.ProductApproved; // _prodCountCheckDict2[p.Id] = _prodCountCheckDict2[p.Id] + rfpConsolidatedFilteredByDept.ProductCollectedTotal; // } // } // DisbursementFormProduct _dfp = new DisbursementFormProduct() // { // DisbursementForm = _df, // Product = p, // ProductToDeliverTotal = _prodCountCheckDict1[p.Id] - _prodCountCheckDict2[p.Id] // }; // _dfpList.Add(_dfp); // db.DisbursementFormProducts.Add(_dfp); // db.SaveChanges(); //} } foreach (StationeryRetrievalRequisitionForm _srrf in _srrfList) { _srrf.SRRFStatus = SRRFStatus.Completed; db.StationeryRetrievalRequisitionForms.Update(_srrf); db.SaveChanges(); } transcat.Commit(); foreach (DisbursementForm _df in _dfList) { var message = new MimeMessage(); message.From.Add(new MailboxAddress("IMS System", "*****@*****.**")); message.To.Add(new MailboxAddress(_df.DeptRep.Firstname + " " + _df.DeptRep.Lastname, _df.DeptRep.Email)); message.Subject = "[ " + _df.DFCode + " ] Status: Created"; message.Body = new TextPart("plain") { Text = "[ " + _df.DFCode + " ]: Created" + "\nDisbursement From Comments: " + _df.DFComments }; EmailUtil eUtil = new EmailUtil(); eUtil.SendEmail(message); } return(true); } catch { transcat.Rollback(); return(false); } } }
public DBSeeder(InventoryManagementSystemContext db, IWebHostEnvironment environment, ProductService pService, DepartmentService dService, ProductCategoryService pcService, DisbursementFormService dfService, StationeryRetrievalFormService srfService, EmployeeTypeService etService, EmployeeService empService, RequisitionService rfService, DelegationService delService, SupplierService supService, SupplierProductService spService, InventoryTransactionService itService) { _hostingEnvironment = environment; var uploads = Path.Combine(_hostingEnvironment.WebRootPath, "uploads"); string filePath6 = Path.Combine(uploads, "ProductCategory.csv"); string jsonString6 = ReadCSVFileUtil.ReadCSVFile(filePath6); List <CSVProductCategory> productCategories = (List <CSVProductCategory>)JsonConvert.DeserializeObject(jsonString6, (typeof(List <CSVProductCategory>))); pcService.SaveProductCategoryFromCSV(productCategories); string filePath7 = Path.Combine(uploads, "Supplier.csv"); string jsonString7 = ReadCSVFileUtil.ReadCSVFile(filePath7); List <CSVSupplier> suppliers = (List <CSVSupplier>)JsonConvert.DeserializeObject(jsonString7, (typeof(List <CSVSupplier>))); supService.SaveSuppliersFromCSV(suppliers); string filePath3 = Path.Combine(uploads, "EmployeeType.csv"); string jsonString3 = ReadCSVFileUtil.ReadCSVFile(filePath3); List <CSVEmployeeType> employeeTypes = (List <CSVEmployeeType>)JsonConvert.DeserializeObject(jsonString3, (typeof(List <CSVEmployeeType>))); etService.SaveEmployeeTypesFromCSV(employeeTypes); ProductCategory pc1 = pcService.findProductCategory("Clip"); ProductCategory pc2 = pcService.findProductCategory("Envelope"); ProductCategory pc3 = pcService.findProductCategory("Eraser"); ProductCategory pc4 = pcService.findProductCategory("Exercise"); ProductCategory pc5 = pcService.findProductCategory("File"); ProductCategory pc6 = pcService.findProductCategory("Pen"); ProductCategory pc7 = pcService.findProductCategory("Puncher"); ProductCategory pc8 = pcService.findProductCategory("Pad"); ProductCategory pc9 = pcService.findProductCategory("Paper"); ProductCategory pc10 = pcService.findProductCategory("Ruler"); ProductCategory pc11 = pcService.findProductCategory("Scissors"); ProductCategory pc12 = pcService.findProductCategory("Tape"); ProductCategory pc13 = pcService.findProductCategory("Sharpener"); ProductCategory pc14 = pcService.findProductCategory("Shorthand"); ProductCategory pc15 = pcService.findProductCategory("Stapler"); ProductCategory pc16 = pcService.findProductCategory("Tacks"); ProductCategory pc17 = pcService.findProductCategory("Tparency"); ProductCategory pc18 = pcService.findProductCategory("Tray"); string filePath1 = Path.Combine(uploads, "Product.csv"); string jsonString = ReadCSVFileUtil.ReadCSVFile(filePath1); List <CSVProduct> products = (List <CSVProduct>)JsonConvert.DeserializeObject(jsonString, (typeof(List <CSVProduct>))); pService.SaveProductsFromCSV(products); string filePath9 = Path.Combine(uploads, "SupplierProduct.csv"); string jsonString9 = ReadCSVFileUtil.ReadCSVFile(filePath9); List <CSVSupplierProduct> supplierProducts = (List <CSVSupplierProduct>)JsonConvert.DeserializeObject(jsonString9, (typeof(List <CSVSupplierProduct>))); spService.SaveSupplierProductsFromCSV(supplierProducts); //save the images under images folder to database var imagefolder = Path.Combine(_hostingEnvironment.WebRootPath, "images"); DirectoryInfo Folder = new DirectoryInfo(imagefolder); FileInfo[] Images = Folder.GetFiles(); List <String> imagesList = new List <String>(); foreach (var image in Images) { imagesList.Add(String.Format(@"{0}", image.Name)); } pService.SaveProductImages(imagesList); EmployeeType empType1 = etService.FindEmployeeTypeByEmployeeTypeName("Store Clerk"); EmployeeType empType2 = etService.FindEmployeeTypeByEmployeeTypeName("Store Supervisor"); EmployeeType empType3 = etService.FindEmployeeTypeByEmployeeTypeName("Store Manager"); EmployeeType empType4 = etService.FindEmployeeTypeByEmployeeTypeName("Employee"); EmployeeType empType5 = etService.FindEmployeeTypeByEmployeeTypeName("Department Head"); EmployeeType empType6 = etService.FindEmployeeTypeByEmployeeTypeName("Department Representative"); EmployeeType empType7 = etService.FindEmployeeTypeByEmployeeTypeName("Warehouse Packer"); EmployeeType empType8 = etService.FindEmployeeTypeByEmployeeTypeName("Temporary Department Head"); CollectionPoint cp1 = new CollectionPoint() { CollectionName = "Stationery Store - Administration Building" }; CollectionPoint cp2 = new CollectionPoint() { CollectionName = "Management School" }; CollectionPoint cp3 = new CollectionPoint() { CollectionName = "Medical School" }; CollectionPoint cp4 = new CollectionPoint() { CollectionName = "Engineering School" }; CollectionPoint cp5 = new CollectionPoint() { CollectionName = "Science School" }; CollectionPoint cp6 = new CollectionPoint() { CollectionName = "University Hospital" }; db.Add(cp1); db.Add(cp2); db.Add(cp3); db.Add(cp4); db.Add(cp5); db.Add(cp6); Department dept1 = new Department() { DepartmentName = "Store", DeptCode = "STOR", CollectionPoint = cp1, PhoneNumber = "12345678" }; Department dept2 = new Department() { DepartmentName = "English Department", DeptCode = "ENDP", CollectionPoint = cp2, PhoneNumber = "98765432" }; Department dept3 = new Department() { DepartmentName = "Chinese Department", DeptCode = "CHSL", CollectionPoint = cp2, PhoneNumber = "87654321" }; Department dept4 = new Department() { DepartmentName = "Engineering Department", DeptCode = "ENGD", CollectionPoint = cp1, PhoneNumber = "76543219" }; Department dept5 = new Department() { DepartmentName = "Arts Department", DeptCode = "ARTD", CollectionPoint = cp3, PhoneNumber = "53046012" }; Department dept6 = new Department() { DepartmentName = "Business Department", DeptCode = "BIZD", CollectionPoint = cp4, PhoneNumber = "15397864" }; Department dept7 = new Department() { DepartmentName = "Science Department", DeptCode = "SCID", CollectionPoint = cp5, PhoneNumber = "68425397" }; Department dept8 = new Department() { DepartmentName = "Management Department", DeptCode = "MNGD", CollectionPoint = cp6, PhoneNumber = "86957412" }; Department dept9 = new Department() { DepartmentName = "HQ Department", DeptCode = "HQDP", CollectionPoint = cp3, PhoneNumber = "32540325" }; Department dept10 = new Department() { DepartmentName = "Music Department", DeptCode = "MSDP", CollectionPoint = cp4, PhoneNumber = "78954120" }; db.Add(dept1); db.Add(dept2); db.Add(dept3); db.Add(dept4); db.Add(dept5); db.Add(dept6); db.Add(dept7); db.Add(dept8); db.Add(dept9); db.Add(dept10); db.SaveChanges(); string filePath4 = Path.Combine(uploads, "Employee.csv"); string jsonString4 = ReadCSVFileUtil.ReadCSVFile(filePath4); List <CSVEmployee> employees = (List <CSVEmployee>)JsonConvert.DeserializeObject(jsonString4, (typeof(List <CSVEmployee>))); empService.SaveEmployeesFromCSV(employees); empService.SaveEmployeesSupervisedByFromCSV(employees); Employee emp1 = empService.GetEmployee("thinn"); Employee emp2 = empService.GetEmployee("arjun"); Employee emp3 = empService.GetEmployee("rohan"); Employee emp4 = empService.GetEmployee("darell"); Employee emp5 = empService.GetEmployee("yamone"); Employee emp6 = empService.GetEmployee("sheryl"); Employee emp7 = empService.GetEmployee("xinqi"); Employee emp8 = empService.GetEmployee("yanbin"); Employee emp9 = empService.GetEmployee("darellmgr2"); Employee emp10 = empService.GetEmployee("thinn2"); Product pr1 = pService.FindProductById(1); Product pr2 = pService.FindProductById(2); Product pr3 = pService.FindProductById(3); Product pr4 = pService.FindProductById(4); Product pr5 = pService.FindProductById(5); Product pr6 = pService.FindProductById(6); DateTime dd1 = new DateTime(2020, 8, 13, 8, 30, 20); DateTime dd2 = new DateTime(2020, 8, 14, 8, 30, 20); DateTime dd3 = new DateTime(2020, 8, 12, 8, 40, 20); DateTime dd4 = new DateTime(2020, 8, 10, 8, 30, 20); DateTime dd13 = new DateTime(2020, 8, 15, 8, 30, 20); RequisitionForm rq1 = new RequisitionForm() { RFCode = "RF/" + emp1.Department.DeptCode + "/" + dd1.ToString("ddMMyy") + "/1", Employee = emp1, RFStatus = Enums.RFStatus.Approved, RFDate = dd1, RFApprovalDate = dd1, RFComments = "", RFApprovalBy = emp9 }; RequisitionForm rq2 = new RequisitionForm() { RFCode = "RF/" + emp1.Department.DeptCode + "/" + dd2.ToString("ddMMyy") + "/1", Employee = emp1, RFStatus = Enums.RFStatus.Ongoing, RFDate = dd2, RFApprovalDate = dd1, RFComments = "", RFApprovalBy = emp9 }; //RequisitionForm rq3 = new RequisitionForm() { RFCode = "RF/" + emp2.Department.DeptCode + "/" + dd3.ToString("ddMMyy") + "/1", Employee = emp2, RFStatus = Enums.RFStatus.Approved, RFDate = dd3, RFApprovalDate = dd1, RFComments = "", RFApprovalBy = emp9 }; RequisitionForm rq4 = new RequisitionForm() { RFCode = "RF/" + emp1.Department.DeptCode + "/" + dd1.ToString("ddMMyy") + "/2", Employee = emp1, RFStatus = Enums.RFStatus.Submitted, RFDate = dd1 }; RequisitionForm rq5 = new RequisitionForm() { RFCode = "RF/" + emp1.Department.DeptCode + "/" + dd2.ToString("ddMMyy") + "/2", Employee = emp1, RFStatus = Enums.RFStatus.Submitted, RFDate = dd2 }; db.Add(rq1); db.Add(rq2); //db.Add(rq3); db.Add(rq4); db.Add(rq5); RequisitionFormsProduct rq1_p1 = new RequisitionFormsProduct() { RequisitionForm = rq1, Product = pr1, ProductRequested = 10, ProductApproved = 10 }; RequisitionFormsProduct rq1_p2 = new RequisitionFormsProduct() { RequisitionForm = rq1, Product = pr2, ProductRequested = 10, ProductApproved = 10 }; RequisitionFormsProduct rq2_p1 = new RequisitionFormsProduct() { RequisitionForm = rq2, Product = pr1, ProductRequested = 5, ProductApproved = 5 }; RequisitionFormsProduct rq2_p2 = new RequisitionFormsProduct() { RequisitionForm = rq2, Product = pr2, ProductRequested = 3, ProductApproved = 2 }; //RequisitionFormsProduct rq3_p1 = new RequisitionFormsProduct() { RequisitionForm = rq3, Product = pr1, ProductRequested = 10, ProductApproved = 5 }; //RequisitionFormsProduct rq3_p2 = new RequisitionFormsProduct() { RequisitionForm = rq3, Product = pr2, ProductRequested = 10, ProductApproved = 7 }; RequisitionFormsProduct rq4_p1 = new RequisitionFormsProduct() { RequisitionForm = rq1, Product = pr4, ProductRequested = 10, ProductApproved = 10 }; RequisitionFormsProduct rq5_p1 = new RequisitionFormsProduct() { RequisitionForm = rq1, Product = pr5, ProductRequested = 10, ProductApproved = 1 }; db.Add(rq1); db.Add(rq2); //db.Add(rq3); db.Add(rq1_p1); db.Add(rq1_p2); db.Add(rq2_p1); db.Add(rq2_p2); //db.Add(rq3_p1); //db.Add(rq3_p2); db.Add(rq4_p1); db.Add(rq5_p1); //db.SaveChanges(); /*For Testing*/ StationeryRetrieval sr1 = new StationeryRetrieval() { SRCode = "SR/" + dd1.ToString("ddMMyy") + "/1", SRStatus = Enums.SRStatus.PendingAssignment, SRComments = "Pending Assignment", SRDate = dd1, StoreClerk = emp1, WarehousePacker = emp7, SRRetrievalDate = dd2 }; StationeryRetrieval sr2 = new StationeryRetrieval() { SRCode = "SR/" + dd1.ToString("ddMMyy") + "/2", SRStatus = Enums.SRStatus.Assigned, SRComments = "Assigned", SRDate = dd1, StoreClerk = emp1, WarehousePacker = emp7, SRRetrievalDate = dd2, SRAssignedDate = dd13 }; //StationeryRetrieval sr3 = new StationeryRetrieval() { SRCode = "SR/" + dd1.ToString("ddMMyy") + "/3", SRStatus = Enums.SRStatus.Open, SRComments = "Open", SRDate = dd1, StoreClerk = emp1 }; db.Add(sr1); db.Add(sr2); //db.Add(sr3); db.SaveChanges(); StationeryRetrievalProduct srpr1 = new StationeryRetrievalProduct() { Product = pr1, ProductRequestedTotal = 5, StationeryRetrieval = sr1, ProductReceivedTotal = 4 }; StationeryRetrievalProduct srpr2 = new StationeryRetrievalProduct() { Product = pr2, ProductRequestedTotal = 10, StationeryRetrieval = sr1, ProductReceivedTotal = 10 }; StationeryRetrievalProduct srpr3 = new StationeryRetrievalProduct() { Product = pr1, ProductRequestedTotal = 5, StationeryRetrieval = sr2 }; StationeryRetrievalProduct srpr4 = new StationeryRetrievalProduct() { Product = pr2, ProductRequestedTotal = 10, StationeryRetrieval = sr2 }; db.Add(srpr1); db.Add(srpr2); db.Add(srpr3); db.Add(srpr4); //db.Add(srpr5); //db.Add(srpr6); db.SaveChanges(); StationeryRetrievalRequisitionForm sr1_rf_1 = new StationeryRetrievalRequisitionForm() { RequisitionForm = rq1, SRRFStatus = Enums.SRRFStatus.PendingAssignment, StationeryRetrieval = sr1 }; StationeryRetrievalRequisitionForm sr1_rf_2 = new StationeryRetrievalRequisitionForm() { RequisitionForm = rq2, SRRFStatus = Enums.SRRFStatus.PendingAssignment, StationeryRetrieval = sr1 }; //StationeryRetrievalRequisitionForm sr2_rf_3 = new StationeryRetrievalRequisitionForm() { RequisitionForm = rq3, SRRFStatus = Enums.SRRFStatus.PendingAssignment, StationeryRetrieval = sr2 }; db.Add(sr1_rf_1); db.Add(sr1_rf_2); //db.Add(sr2_rf_3); db.SaveChanges(); StationeryRetrievalRequisitionFormProduct sr1_rf1_pr_1 = new StationeryRetrievalRequisitionFormProduct() { SR = sr1, RFP = rq1_p1 }; StationeryRetrievalRequisitionFormProduct sr1_rf1_pr_2 = new StationeryRetrievalRequisitionFormProduct() { SR = sr1, RFP = rq1_p2 }; StationeryRetrievalRequisitionFormProduct sr1_rf2_pr_1 = new StationeryRetrievalRequisitionFormProduct() { SR = sr1, RFP = rq2_p1 }; StationeryRetrievalRequisitionFormProduct sr1_rf2_pr_2 = new StationeryRetrievalRequisitionFormProduct() { SR = sr1, RFP = rq2_p2 }; //StationeryRetrievalRequisitionFormProduct sr1_rf3_pr_1 = new StationeryRetrievalRequisitionFormProduct() { SR = sr1, RFP = rq3_p2 }; db.Add(sr1_rf1_pr_1); db.Add(sr1_rf1_pr_2); db.Add(sr1_rf2_pr_1); db.Add(sr1_rf2_pr_2); db.SaveChanges(); /*End For Testing*/ //Testing for RequisitionFormDisplay DateTime dd5 = new DateTime(2020, 8, 10, 8, 30, 20); DateTime dd6 = new DateTime(2020, 8, 11, 8, 30, 20); DateTime dd7 = new DateTime(2020, 8, 10, 8, 30, 20); string filePath5 = Path.Combine(uploads, "RequisitionForm.csv"); string jsonString5 = ReadCSVFileUtil.ReadCSVFile(filePath5); List <CSVRequisitionForm> rfs = (List <CSVRequisitionForm>)JsonConvert.DeserializeObject(jsonString5, (typeof(List <CSVRequisitionForm>))); rfService.SaveRFFromCSV(rfs); RequisitionForm rq6 = new RequisitionForm() { RFCode = "RF/" + emp1.Department.DeptCode + "/" + dd5.ToString("ddMMyy") + "/1", Employee = emp1, RFStatus = Enums.RFStatus.NotCompleted, RFDate = dd5, RFApprovalDate = dd6, RFApprovalBy = emp9 }; RequisitionFormsProduct rfp1 = new RequisitionFormsProduct() { Product = pr1, ProductRequested = 10, RequisitionForm = rq6, ProductCollectedTotal = 9, ProductApproved = 10 }; RequisitionFormsProduct rfp2 = new RequisitionFormsProduct() { Product = pr2, ProductRequested = 20, RequisitionForm = rq6, ProductCollectedTotal = 7, ProductApproved = 10 }; db.Add(rq6); db.Add(rfp1); db.Add(rfp2); DisbursementForm df1 = new DisbursementForm() { CollectionPoint = cp1, DFCode = "DF/" + emp2.Department.DeptCode + "/" + dd1.ToString("ddMMyy") + "/1", DeptRep = emp2, StoreClerk = emp4, DFDeliveryDate = dd2, DFStatus = Enums.DFStatus.Created, DFDate = dd1 }; DisbursementForm df2 = new DisbursementForm() { CollectionPoint = cp2, DFCode = "DF/" + emp2.Department.DeptCode + "/" + dd1.ToString("ddMMyy") + "/2", DeptRep = emp2, StoreClerk = emp4, DFDeliveryDate = dd2, DFStatus = Enums.DFStatus.Completed, DFDate = dd1 }; DisbursementFormRequisitionForm dfrf1 = new DisbursementFormRequisitionForm() { DisbursementForm = df1, DFRFStatus = Enums.DFRFStatus.Assigned, RequisitionForm = rq1 }; DisbursementFormRequisitionForm dfrf2 = new DisbursementFormRequisitionForm() { DisbursementForm = df1, DFRFStatus = Enums.DFRFStatus.Assigned, RequisitionForm = rq2 }; DisbursementFormRequisitionFormProduct dfrfp1 = new DisbursementFormRequisitionFormProduct() { DisbursementForm = df1, RequisitionFormsProduct = rfp1, ProductCollected = 9 }; DisbursementFormRequisitionFormProduct dfrfp2 = new DisbursementFormRequisitionFormProduct() { DisbursementForm = df1, RequisitionFormsProduct = rfp2, ProductCollected = 7 }; db.Add(df1); db.Add(df2); db.Add(dfrf1); db.Add(dfrf2); db.Add(dfrfp1); db.Add(dfrfp2); db.SaveChanges(); //DisbursementFormRequisitionForm dfrf3 = new DisbursementFormRequisitionForm() { DFRFStatus = Enums.DFRFStatus.PendingDelivery, DisbursementForm = df1, RequisitionForm = rq1 }; //DisbursementFormRequisitionForm dfrf4 = new DisbursementFormRequisitionForm() { DFRFStatus = Enums.DFRFStatus.PendingDelivery, DisbursementForm = df1, RequisitionForm = rq2 }; //db.Add(dfrf3); //db.Add(dfrf4); db.SaveChanges(); DisbursementFormProduct dfp1 = new DisbursementFormProduct() { DisbursementForm = df1, Product = pr1, ProductToDeliverTotal = 10 }; DisbursementFormProduct dfp2 = new DisbursementFormProduct() { DisbursementForm = df1, Product = pr2, ProductToDeliverTotal = 40 }; db.Add(dfp1); db.Add(dfp2); db.SaveChanges(); Supplier sup1 = db.Suppliers.Find(1); Supplier sup2 = db.Suppliers.Find(2); Supplier sup3 = db.Suppliers.Find(3); Supplier sup4 = db.Suppliers.Find(4); Supplier sup5 = db.Suppliers.Find(5); Supplier sup6 = db.Suppliers.Find(6); Supplier sup7 = db.Suppliers.Find(7); Supplier sup8 = db.Suppliers.Find(8); Supplier sup9 = db.Suppliers.Find(9); Supplier sup10 = db.Suppliers.Find(10); Supplier sup11 = db.Suppliers.Find(11); Supplier sup12 = db.Suppliers.Find(12); Supplier sup13 = db.Suppliers.Find(13); Supplier sup14 = db.Suppliers.Find(14); Supplier sup15 = db.Suppliers.Find(15); Supplier sup16 = db.Suppliers.Find(16); Supplier sup17 = db.Suppliers.Find(17); Supplier sup18 = db.Suppliers.Find(18); Supplier sup19 = db.Suppliers.Find(19); Supplier sup20 = db.Suppliers.Find(20); //db.Add(sup1); //db.Add(sup2); //db.Add(sup3); //db.Add(sup4); db.SaveChanges(); DateTime dd8 = new DateTime(2020, 8, 10, 8, 30, 20); DateTime dd9 = new DateTime(2020, 8, 22, 8, 30, 20); DateTime dd10 = new DateTime(2020, 7, 10, 8, 40, 20); DateTime dd11 = new DateTime(2020, 9, 12, 8, 30, 20); DateTime dd12 = new DateTime(2020, 9, 13, 9, 30, 20); SupplierProduct sp1 = db.SupplierProducts.Find(1); SupplierProduct sp2 = db.SupplierProducts.Find(6); SupplierProduct sp3 = db.SupplierProducts.Find(3); SupplierProduct sp4 = db.SupplierProducts.Find(4); //db.Add(sp1); //db.Add(sp2); //db.Add(sp3); //db.Add(sp4); db.SaveChanges(); PurchaseOrder po1 = new PurchaseOrder() { supplier = sup1, DeliverTo = "Logic University - Store", expectedDeliveryDate = dd9, IssuedBy = emp7, POStatus = Enums.POStatus.Issued, POComments = "Order affected by COVID", POCode = "PO/" + dd8.ToString("ddMMyy") + "/1", POIssueDate = dd8 }; PurchaseOrder po2 = new PurchaseOrder() { supplier = sup2, DeliverTo = "Logic University - Store", expectedDeliveryDate = dd11, IssuedBy = emp7, POStatus = Enums.POStatus.Completed, POComments = "Some Items may be out of stock", POCode = "PO/" + dd10.ToString("ddMMyy") + "/1", POIssueDate = dd10 }; PurchaseOrder po3 = new PurchaseOrder() { supplier = sup2, DeliverTo = "Logic University - Store", expectedDeliveryDate = dd12, IssuedBy = emp7, POStatus = Enums.POStatus.NotCompleted, POComments = "Urgent", POCode = "PO/" + dd10.ToString("ddMMyy") + "/2", POIssueDate = dd10 }; db.Add(po1); db.Add(po2); db.Add(po3); PurchaseOrderSupplierProduct posr1 = new PurchaseOrderSupplierProduct() { SupplierProduct = sp1, POQuantityRequested = 10, POUnitPrice = sp1.ProductPrice, PurchaseOrder = po1 }; PurchaseOrderSupplierProduct posr2 = new PurchaseOrderSupplierProduct() { SupplierProduct = sp2, POQuantityRequested = 15, POUnitPrice = sp2.ProductPrice, PurchaseOrder = po1 }; PurchaseOrderSupplierProduct posr3 = new PurchaseOrderSupplierProduct() { SupplierProduct = sp3, POQuantityRequested = 5, POUnitPrice = sp3.ProductPrice, PurchaseOrder = po1 }; PurchaseOrderSupplierProduct posr4 = new PurchaseOrderSupplierProduct() { SupplierProduct = sp1, POQuantityRequested = 3, POUnitPrice = sp1.ProductPrice, PurchaseOrder = po2 }; PurchaseOrderSupplierProduct posr5 = new PurchaseOrderSupplierProduct() { SupplierProduct = sp2, POQuantityRequested = 5, POUnitPrice = sp2.ProductPrice, PurchaseOrder = po2 }; PurchaseOrderSupplierProduct posr6 = new PurchaseOrderSupplierProduct() { SupplierProduct = sp3, POQuantityRequested = 3, POUnitPrice = sp3.ProductPrice, PurchaseOrder = po3 }; PurchaseOrderSupplierProduct posr7 = new PurchaseOrderSupplierProduct() { SupplierProduct = sp4, POQuantityRequested = 5, POUnitPrice = sp4.ProductPrice, PurchaseOrder = po3 }; db.Add(posr1); db.Add(posr2); db.Add(posr3); db.Add(posr4); db.SaveChanges(); //-------------------------- DeliveryOrder do2 = new DeliveryOrder() { DeliveryOrderNo = "D0121567", DOReceivedDate = dd11, PurchaseOrder = po2, Supplier = sup1, DOCode = "DO/" + dd11.ToString("ddMMyy") + "/1", ReceivedBy = emp7 }; DeliveryOrder do3 = new DeliveryOrder() { DeliveryOrderNo = "D011267", DOReceivedDate = dd12, PurchaseOrder = po3, Supplier = sup2, DOCode = "DO/" + dd12.ToString("ddMMyy") + "/1", ReceivedBy = emp7 }; db.Add(do2); db.Add(do3); db.SaveChanges(); DeliveryOrderSupplierProduct dosr4 = new DeliveryOrderSupplierProduct() { PurchaseOrderSupplierProduct = posr4, DOQuantityReceived = 3, DeliveryOrder = do2 }; DeliveryOrderSupplierProduct dosr5 = new DeliveryOrderSupplierProduct() { PurchaseOrderSupplierProduct = posr5, DOQuantityReceived = 5, DeliveryOrder = do2 }; DeliveryOrderSupplierProduct dosr6 = new DeliveryOrderSupplierProduct() { PurchaseOrderSupplierProduct = posr6, DOQuantityReceived = 3, DeliveryOrder = do3 }; DeliveryOrderSupplierProduct dosr7 = new DeliveryOrderSupplierProduct() { PurchaseOrderSupplierProduct = posr7, DOQuantityReceived = 3, DeliveryOrder = do3 }; db.Add(dosr4); db.Add(dosr5); db.Add(dosr6); db.Add(dosr7); DateTime dd19 = new DateTime(2020, 8, 15, 0, 0, 0); DateTime dd20 = new DateTime(2020, 9, 15, 0, 0, 0); DateTime dd21 = new DateTime(2020, 7, 15, 10, 10, 0); DateTime dd22 = new DateTime(2020, 10, 15, 0, 0, 0); DateTime dd23 = new DateTime(2020, 11, 15, 0, 0, 0); DelegationForm delForm1 = new DelegationForm() { startDate = dd19, endDate = dd20, delegateComment = "Hello There", Delegatee = emp10, DelegatedType = empType8, DepartmentHead = emp9, DLAssignedDate = dd21, DLStatus = Enums.DLStatus.Ongoing }; DelegationForm delForm2 = new DelegationForm() { startDate = dd22, endDate = dd23, delegateComment = "Hello There", Delegatee = emp10, DelegatedType = empType8, DepartmentHead = emp9, DLAssignedDate = dd21, DLStatus = Enums.DLStatus.Assigned }; //DelegationForm delForm3 = new DelegationForm() //{ // startDate = dd22, // endDate = dd23, // delegateComment = "Hello There", // Delegatee = emp10, // DelegatedType = empType6, // DepartmentHead = emp9, // DLAssignedDate = dd21, // DLStatus = Enums.DLStatus.Assigned //}; db.Add(delForm1); db.Add(delForm2); db.SaveChanges(); }
public bool saveReceivedProds3(List <StationeryRetrievalProduct> srpList, int SRid, Employee warehousepacker, Employee storeclerk, List <StationeryRetrievalRequisitionForm> srrfList) { using (IDbContextTransaction transcat = db.Database.BeginTransaction()) { try { //Check for store clerk and warehouse packer Employee _whpacker = empService.FindByUsernameAndPassword(warehousepacker.Username.ToLower(), warehousepacker.Password); Employee _stclerk = empService.FindByUsernameAndPassword(storeclerk.Username.ToLower(), storeclerk.Password); if (_whpacker.EmployeeType.EmployeeTypeName != "Warehouse Packer") { throw new Exception("The user type is wrong"); } if (_stclerk.EmployeeType.EmployeeTypeName != "Store Clerk" && _stclerk.EmployeeType.EmployeeTypeName != "Store Supervisor" && _stclerk.EmployeeType.EmployeeTypeName != "Store Manager") { throw new Exception("The user type is wrong"); } if (_whpacker == null || _stclerk == null) { throw new Exception("The username or password is wrong, please login again"); } DateTime transactDate = DateTime.Now; //Create RF List List <RequisitionForm> _rfList = new List <RequisitionForm>(); //Create new empty list to save to db List <StationeryRetrievalProduct> _srpList = new List <StationeryRetrievalProduct>(); //Create new empty list to save to db List <StationeryRetrievalRequisitionForm> _srrfList = new List <StationeryRetrievalRequisitionForm>(); //Find sr StationeryRetrieval _sr = db.StationeryRetrievals.Find(SRid); _sr.SRStatus = SRStatus.PendingAssignment; _sr.WarehousePacker = _whpacker; _sr.SRRetrievalDate = transactDate; _sr.StoreClerk = _stclerk; db.StationeryRetrievals.Update(_sr); db.SaveChanges(); //Define invtrans Code int count = invtService.FindInvTransByTodayCount(); foreach (StationeryRetrievalProduct srp in srpList) { if (srp.ProductReceivedTotal < 0) { throw new Exception("This value should not be negative"); } count++; StationeryRetrievalProduct _srp = db.StationeryRetrievalProduct.Find(srp.Id); _srp.ProductReceivedTotal = srp.ProductReceivedTotal; _srpList.Add(_srp); db.StationeryRetrievalProduct.Update(_srp); db.SaveChanges(); //Check for logic in terms of each RFP should not have more than what was specified //create itCode string invtransCode = "IT" + "/" + DateTime.Now.ToString("ddMMyy") + "/" + count.ToString(); //Create It InventoryTransaction _it = new InventoryTransaction() { EmployeeId = _sr.StoreClerk.Id, ProductId = _srp.Product.Id, Employee = _sr.StoreClerk, InventoryChangeQuantity = -_srp.ProductReceivedTotal, InventoryTransComments = _sr.SRCode, InventoryTransDate = _sr.SRRetrievalDate, ITStatus = ITStatus.Auto, ITCode = invtransCode, Product = _srp.Product }; db.InventoryTransactions.Add(_it); db.SaveChanges(); //Adjust Inventory Quantity Product _p = db.Products.Find(_srp.Product.Id); _p.InventoryQuantity = _p.InventoryQuantity + _it.InventoryChangeQuantity; if (_p.InventoryQuantity < 0) { throw new Exception(_p.InventoryQuantity + " is not enough"); } db.Products.Update(_p); db.SaveChanges(); } foreach (StationeryRetrievalRequisitionForm srrf in srrfList) { StationeryRetrievalRequisitionForm _srrf = db.StationeryRetrievalRequisitionForms.Find(srrf.Id); _srrf.SRRFStatus = SRRFStatus.PendingAssignment; db.StationeryRetrievalRequisitionForms.Update(_srrf); db.SaveChanges(); RequisitionForm _rf = db.RequisitionForms.Find(_srrf.RequisitionForm.Id); _rf.RFStatus = RFStatus.Ongoing; db.RequisitionForms.Update(_rf); db.SaveChanges(); } db.SaveChanges(); transcat.Commit(); return(true); } catch { transcat.Rollback(); return(false); } } }
public bool SetProductsAssignedInSR(int SRId, List <StationeryRetrievalRequisitionFormProduct> srrfpList, List <StationeryRetrievalProduct> srpList, List <StationeryRetrievalRequisitionForm> srrfList) { using (IDbContextTransaction transcat = db.Database.BeginTransaction()) { try { DateTime assignDate = DateTime.Now; Dictionary <int, int> _prodCountCheckDict = new Dictionary <int, int>(); //Find SR StationeryRetrieval _sr = db.StationeryRetrievals.Find(SRId); //Find SRPList through db List <StationeryRetrievalProduct> _srpList = new List <StationeryRetrievalProduct>(); //Find SRRFList through db List <StationeryRetrievalRequisitionForm> _srrfList = new List <StationeryRetrievalRequisitionForm>(); //Find pList through db List <Product> _pList = new List <Product>(); //Find pList through db List <RequisitionForm> _rfList = new List <RequisitionForm>(); //Find rfpList through db List <RequisitionFormsProduct> _rfpList = new List <RequisitionFormsProduct>(); //Find SRRFPList THROUGH db List <StationeryRetrievalRequisitionFormProduct> _srrfpList = new List <StationeryRetrievalRequisitionFormProduct>(); foreach (StationeryRetrievalProduct srp in srpList) { StationeryRetrievalProduct _srp = db.StationeryRetrievalProduct.Find(srp.Id); _srp.ProductReceivedTotal = _srp.ProductReceivedTotal; _srpList.Add(_srp); _pList.Add(_srp.Product); } foreach (StationeryRetrievalRequisitionForm srrf in srrfList) { StationeryRetrievalRequisitionForm _srrf = db.StationeryRetrievalRequisitionForms.Find(srrf.Id); _srrfList.Add(_srrf); _rfList.Add(_srrf.RequisitionForm); } foreach (StationeryRetrievalRequisitionFormProduct srrfp in srrfpList) { if (srrfp.ProductAssigned < 0) { throw new Exception("You cannot assign less than 0"); } StationeryRetrievalRequisitionFormProduct _srrfp = db.StationeryRetrievalRequisitionFormProducts.Find(srrfp.Id); if (_srrfp.RFP.ProductBalanceForSR < _srrfp.ProductAssigned) { throw new Exception("You cannot have a value less than the productApproved"); } ; _srrfpList.Add(_srrfp); } foreach (RequisitionForm _rf in _rfList) { List <RequisitionFormsProduct> _rfpIndividualList = db.RequisitionFormsProducts .Where(x => x.RequisitionForm == _rf) .ToList(); foreach (RequisitionFormsProduct _rfpIndividual in _rfpIndividualList) { _rfpList.Add(_rfpIndividual); } } //Assign Dictionary for (int i = 0; i < _srpList.Count; i++) { int p = _srpList[i].Product.Id; _prodCountCheckDict[p] = 0; } //Update Dict Value for Checking for (int i = 0; i < _srrfpList.Count; i++) { int p2 = _srrfpList[i].RFP.Product.Id; //Check total quantity collected is the same as quantity assigned _prodCountCheckDict[p2] = _prodCountCheckDict[p2] + srrfpList[i].ProductAssigned; Debug.WriteLine(_srrfpList[i].RFP.Product.Id + ": " + _prodCountCheckDict[p2]); } //This is to check if the value received is the sme as the value that is assigned. foreach (KeyValuePair <int, int> entry in _prodCountCheckDict) { for (int i = 0; i < _srpList.Count; i++) { if (entry.Key == _srpList[i].Product.Id) { if (entry.Value != _srpList[i].ProductReceivedTotal) { throw new Exception("The quantity doesnt match"); } } } } //update SRP Quantity foreach (StationeryRetrievalProduct _srp in _srpList) { db.StationeryRetrievalProduct.Update(_srp); db.SaveChanges(); } //Update SRRFP quantity for (int i = 0; i < srrfpList.Count; i++) { StationeryRetrievalRequisitionFormProduct _srrfp = FindSRRFPById(srrfpList[i].Id); _srrfp.ProductAssigned = srrfpList[i].ProductAssigned; db.StationeryRetrievalRequisitionFormProducts.Update(_srrfp); db.SaveChanges(); } //Update SRRF Status foreach (StationeryRetrievalRequisitionForm _srrf in _srrfList) { _srrf.SRRFStatus = SRRFStatus.Assigned; db.Update(_srrf); db.SaveChanges(); } //foreach (RequisitionForm _rf in _rfList) //{ // _rf.RFStatus = RFStatus.NotCompleted; // db.RequisitionForms.Update(_rf); // db.SaveChanges(); //} //Validation foreach (RequisitionFormsProduct _rfp in _rfpList) { List <StationeryRetrievalRequisitionFormProduct> _srrfpCheckList = _srrfpList.Where(x => x.RFP == _rfp).ToList(); int sumofProd = _srrfpCheckList.Select(x => x.ProductAssigned).Sum(); if (_rfp.ProductApproved < sumofProd) { throw new Exception("Sum of Assigned Products exceeded ProductsApproved"); } foreach (StationeryRetrievalRequisitionFormProduct _srrfp in _srrfpCheckList) { if (_rfp.Product.Id == _srrfp.RFP.Product.Id) { if (_rfp.ProductApproved < _rfp.ProductCollectedTotal + _srrfp.ProductAssigned) { throw new Exception("Sum of Collected Products with Product Assigned is more than the Sum of the Assigned Products"); } } } } //Update SR Status _sr.SRStatus = SRStatus.Assigned; _sr.SRAssignedDate = assignDate; db.StationeryRetrievals.Update(_sr); db.SaveChanges(); transcat.Commit(); return(true); } catch { transcat.Rollback(); return(false); } } }
public bool SaveStationaryRetrievalProducts(List <SRProductViewModel> productlist, Employee emp, string comment, List <int> selectedrequisiton, List <StationeryRetrievalProduct> srpList) { using (IDbContextTransaction transcat = db.Database.BeginTransaction()) { try { Employee _emp = db.Employees.Find(emp.Id); List <RequisitionForm> rfList = FindRFListByRF(selectedrequisiton); //Create empty srrfList List <StationeryRetrievalRequisitionForm> _srrfList = new List <StationeryRetrievalRequisitionForm>(); //Create empty rfpList List <RequisitionFormsProduct> _rfpList = new List <RequisitionFormsProduct>(); //Create empty srrfpList List <StationeryRetrievalRequisitionFormProduct> _srrfpList = new List <StationeryRetrievalRequisitionFormProduct>(); //Create empty srpList List <StationeryRetrievalProduct> _srpList = new List <StationeryRetrievalProduct>(); //Find the list of rfs on that day by the same employee int count = FindStationaryRetrievalFormByDeptTodayCount(_emp) + 1; //Define RF Code string srfCode = "SR" + "/" + DateTime.Now.ToString("ddMMyy") + "/" + count.ToString(); //Create New SRF and SRFP //DateTime ddToday = DateTime.Now; StationeryRetrieval srfForm = new StationeryRetrieval() { StoreClerk = _emp, SRCode = srfCode, SRStatus = SRStatus.Open, SRComments = comment, SRDate = DateTime.Now }; db.StationeryRetrievals.Add(srfForm); db.SaveChanges(); foreach (RequisitionForm rf in rfList) { StationeryRetrievalRequisitionForm _srrf = new StationeryRetrievalRequisitionForm() { StationeryRetrieval = srfForm, RequisitionForm = rf, SRRFStatus = SRRFStatus.Open }; db.Add(_srrf); _srrfList.Add(_srrf); db.SaveChanges(); List <RequisitionFormsProduct> individualrfpList = db.RequisitionFormsProducts .Where(x => x.RequisitionForm == rf) .ToList(); foreach (RequisitionFormsProduct individualrfp in individualrfpList) { _rfpList.Add(individualrfp); } } foreach (RequisitionFormsProduct _rfp in _rfpList) { StationeryRetrievalRequisitionFormProduct _srrfp = new StationeryRetrievalRequisitionFormProduct() { SR = srfForm, RFP = _rfp, ProductAssigned = 0 }; _srrfpList.Add(_srrfp); db.Add(_srrfp); db.SaveChanges(); } if (productlist == null) { throw new Exception("No products to be stored as a Stationary Retrieval Form"); } else { foreach (SRProductViewModel p in productlist) { Product product = db.Products.Where(x => x.ProductName == p.productname).FirstOrDefault(); StationeryRetrievalProduct _srfProduct = new StationeryRetrievalProduct(); _srfProduct.StationeryRetrieval = srfForm; _srfProduct.Product = product; _srfProduct.ProductRequestedTotal = p.productqty; db.StationeryRetrievalProduct.Add(_srfProduct); db.SaveChanges(); } foreach (var requ_id in selectedrequisiton) { RequisitionForm requform = db.RequisitionForms.Where(x => x.Id == requ_id).FirstOrDefault(); requform.RFStatus = RFStatus.Ongoing; db.SaveChanges(); } } transcat.Commit(); return(true); } catch { transcat.Rollback(); return(false); } } }