Пример #1
0
        public List <DisbursementFormProduct> SaveDfP(DisbursementForm df)
        {
            Dictionary <int, int> _prodCountCheckDict = new Dictionary <int, int>();

            List <DisbursementFormProduct> _dfpList = new List <DisbursementFormProduct>();

            List <DisbursementFormRequisitionFormProduct> _dfrfpList = db.DisbursementFormRequisitionFormProducts
                                                                       .Where(x => x.DisbursementForm == df)
                                                                       .ToList();
            IEnumerable <Product> prodList = _dfrfpList.Select(x => x.RequisitionFormsProduct.Product).Distinct();

            return(_dfpList);
        }
        public List <DisbursementFormProduct> FindDisbursementFormProductsByDFId(int id)
        {
            //Find DF
            DisbursementForm df = db.DisbursementForms.Find(id);
            //Find DFP
            List <DisbursementFormProduct> dfpList = db.DisbursementFormProducts
                                                     .OrderBy(x => x.Product.ProductName)
                                                     .Where(x => x.DisbursementForm == df)
                                                     .ToList();
            //Find DFRF
            List <DisbursementFormRequisitionForm> dfrfList = db.DisbursementFormRequisitionForms
                                                              .Where(x => x.DisbursementForm == df).ToList();
            IEnumerable <RequisitionForm> rfList = dfrfList.Select(x => x.RequisitionForm).Distinct();

            //Call consolidated RFP
            List <RequisitionFormsProduct> _rfpConsolidatedList = new List <RequisitionFormsProduct>();

            //Find consolidated list of rfps
            foreach (RequisitionForm rf in rfList)
            {
                List <RequisitionFormsProduct> rfpList = db.RequisitionFormsProducts
                                                         .Where(x => x.RequisitionForm == rf)
                                                         .ToList();
                foreach (RequisitionFormsProduct rfp in rfpList)
                {
                    _rfpConsolidatedList.Add(rfp);
                }
            }

            foreach (DisbursementFormProduct dfp in dfpList)
            {
                dfp.ProductApprovedCount = 0;
                foreach (RequisitionFormsProduct _rfpConsolidated in _rfpConsolidatedList)
                {
                    if (dfp.Product.Id == _rfpConsolidated.Product.Id)
                    {
                        dfp.ProductApprovedCount = dfp.ProductApprovedCount + _rfpConsolidated.ProductApproved;
                    }
                }
            }
            return(dfpList);
        }
Пример #3
0
        public bool ConfirmDFDelivery(Employee deptrep, DisbursementForm df)
        {
            using (IDbContextTransaction transcat = db.Database.BeginTransaction())
            {
                try
                {
                    Employee         _deptrep = db.Employees.Find(deptrep.Id);
                    DisbursementForm _df      = db.DisbursementForms.Find(df.Id);
                    //_df.DFDeliveryDate = ;
                    _df.DFStatus = Enums.DFStatus.PendingDelivery;
                    _df.DeptRep  = _deptrep;
                    db.DisbursementForms.Update(_df);
                    db.SaveChanges();

                    transcat.Commit();

                    var message = new MimeMessage();
                    message.From.Add(new MailboxAddress("IMS System", "*****@*****.**"));
                    message.To.Add(new MailboxAddress(_df.StoreClerk.Firstname + " " + _df.StoreClerk.Lastname, _df.StoreClerk.Email));
                    message.Subject = "[ " + _df.DFCode + " ] Status: Confirmed";
                    message.Body    = new TextPart("plain")
                    {
                        Text = "[ " + _df.DFCode + " ]: Confirmed" +
                               "\nCollection Point: " + _df.CollectionPoint.CollectionName
                               +
                               "\nDelivery Date: " + _df.DFDeliveryDate
                    };
                    EmailUtil eUtil = new EmailUtil();
                    eUtil.SendEmail(message);

                    return(true);
                }
                catch
                {
                    transcat.Rollback();
                    return(false);
                }
            };
        }
Пример #4
0
        public bool SaveDFRFPAssignment(
            List <DisbursementFormRequisitionFormProduct> dfrfpList,
            Employee emp,
            DisbursementForm df,
            List <DisbursementFormProduct> dfpList,
            List <DisbursementFormRequisitionForm> dfrfList)
        {
            using (IDbContextTransaction transcat = db.Database.BeginTransaction())
            {
                try
                {
                    //Assign employee to be used for DFAssignedby
                    Employee _emp = db.Employees.Find(emp.Id);

                    //Create RF List
                    List <RequisitionForm>         _rfList  = new List <RequisitionForm>();
                    List <RequisitionFormsProduct> _rfpList = new List <RequisitionFormsProduct>();

                    Dictionary <int, int> _prodCountCheckDict = new Dictionary <int, int>();

                    DateTime dfTransactAssignDate = DateTime.Now;

                    //Find DF
                    DisbursementForm _df = db.DisbursementForms.Find(df.Id);

                    //Create empty lists
                    List <DisbursementFormProduct>                _dfpList   = new List <DisbursementFormProduct>();
                    List <DisbursementFormRequisitionForm>        _dfrfList  = new List <DisbursementFormRequisitionForm>();
                    List <DisbursementFormRequisitionFormProduct> _dfrfpList = new List <DisbursementFormRequisitionFormProduct>();

                    //Add dfp to dfpList
                    foreach (DisbursementFormProduct dfp in dfpList)
                    {
                        DisbursementFormProduct _dfp = db.DisbursementFormProducts.Find(dfp.Id);
                        _dfpList.Add(_dfp);
                    }

                    //Add dfrf to dfrfList
                    foreach (DisbursementFormRequisitionForm dfrf in dfrfList)
                    {
                        DisbursementFormRequisitionForm _dfrf = db.DisbursementFormRequisitionForms.Find(dfrf.Id);
                        _dfrfList.Add(_dfrf);
                        _rfList.Add(_dfrf.RequisitionForm);

                        //Find all individual rfpList
                        List <RequisitionFormsProduct> _rfpIndividualList = db.RequisitionFormsProducts
                                                                            .Where(x => x.RequisitionForm == _dfrf.RequisitionForm)
                                                                            .ToList();

                        //add all rfp to a rfplist
                        foreach (RequisitionFormsProduct _rfpIndividual in _rfpIndividualList)
                        {
                            _rfpList.Add(_rfpIndividual);
                        }
                    }

                    //add dfrfp to dfrfpList
                    foreach (DisbursementFormRequisitionFormProduct dfrfp in dfrfpList)
                    {
                        DisbursementFormRequisitionFormProduct _dfrfp = db.DisbursementFormRequisitionFormProducts.Find(dfrfp.Id);
                        _dfrfpList.Add(_dfrfp);
                    }

                    //Check total quantity of each product
                    foreach (DisbursementFormProduct _dfp in _dfpList)
                    {
                        _prodCountCheckDict[_dfp.Product.Id] = 0;
                        foreach (DisbursementFormRequisitionFormProduct dfrfp in dfrfpList)
                        {
                            if (_dfp.Product.Id == dfrfp.RequisitionFormsProduct.Product.Id)
                            {
                                _prodCountCheckDict[_dfp.Product.Id] = _prodCountCheckDict[_dfp.Product.Id] + dfrfp.ProductCollected;
                            }
                        }
                    }
                    //Check each key
                    foreach (KeyValuePair <int, int> entry in _prodCountCheckDict)
                    {
                        for (int i = 0; i < _dfpList.Count; i++)
                        {
                            if (entry.Key == _dfpList[i].Product.Id)
                            {
                                if (entry.Value != _dfpList[i].ProductDeliveredTotal)
                                {
                                    throw new Exception("The quantity doesnt match");
                                }
                            }
                        }
                    }

                    //AssignProductCollected to be save to db for dfrfp
                    for (int i = 0; i < _dfrfpList.Count; i++)
                    {
                        foreach (DisbursementFormRequisitionFormProduct dfrfp in dfrfpList)
                        {
                            if (_dfrfpList[i].Id == dfrfp.Id)
                            {
                                _dfrfpList[i].ProductCollected = dfrfp.ProductCollected;
                                db.DisbursementFormRequisitionFormProducts.Update(_dfrfpList[i]);
                                db.SaveChanges();
                                foreach (RequisitionFormsProduct _rfp in _rfpList)
                                {
                                    if (_dfrfpList[i].RequisitionFormsProduct.Id == _rfp.Id)
                                    {
                                        _rfp.ProductCollectedTotal = _rfp.ProductCollectedTotal + dfrfp.ProductCollected;
                                        db.RequisitionFormsProducts.Update(_rfp);
                                        db.SaveChanges();
                                    }
                                }
                                if (_dfrfpList[i].RequisitionFormsProduct.ProductApproved < _dfrfpList[i].RequisitionFormsProduct.ProductCollectedTotal)
                                {
                                    throw new Exception("The value have exceeded");
                                }
                            }
                        }
                        db.SaveChanges();
                    }


                    foreach (DisbursementFormRequisitionForm _dfrf in _dfrfList)
                    {
                        _dfrf.DFRFStatus = DFRFStatus.Delivered;
                        db.DisbursementFormRequisitionForms.Update(_dfrf);
                        db.SaveChanges();
                    }

                    _df.DFStatus          = DFStatus.Completed;
                    _df.DFTransAssignDate = dfTransactAssignDate;
                    _df.DFAssignedBy      = _emp;
                    db.DisbursementForms.Update(_df);
                    db.SaveChanges();

                    //Check for RF
                    foreach (RequisitionForm _rf in _rfList)
                    {
                        bool isCompleted = true;
                        foreach (RequisitionFormsProduct _rfp in _rfpList)
                        {
                            if (_rfp.RequisitionForm.Id == _rf.Id)
                            {
                                if (_rfp.ProductCollectedTotal != _rfp.ProductApproved)
                                {
                                    isCompleted = false;
                                    break;
                                }
                            }
                        }

                        if (isCompleted == true)
                        {
                            _rf.RFStatus = RFStatus.Completed;
                        }
                        else
                        {
                            _rf.RFStatus = RFStatus.NotCompleted;
                        }
                        db.RequisitionForms.Update(_rf);
                        db.SaveChanges();
                    }

                    transcat.Commit();
                    foreach (RequisitionForm _rf in _rfList)
                    {
                        var message = new MimeMessage();
                        message.From.Add(new MailboxAddress("IMS System", "*****@*****.**"));
                        message.To.Add(new MailboxAddress(_rf.Employee.Firstname + " " + _rf.Employee.Lastname, _rf.Employee.Email));
                        message.Subject = "[ " + _rf.RFCode + " ] Status: Delivered";
                        message.Body    = new TextPart("plain")
                        {
                            Text = "[ " + _rf.RFCode + " ]: Delivered"
                        };
                        EmailUtil eUtil = new EmailUtil();
                        eUtil.SendEmail(message);
                    }

                    return(true);
                }
                catch
                {
                    transcat.Rollback();
                    return(false);
                }
            }
        }
Пример #5
0
        public bool ConfirmDFTransactionWithDeptRep(DisbursementForm df, List <DisbursementFormProduct> dfpList, Employee storeclerk, Employee deptrep, string comment)
        {
            using (IDbContextTransaction transcat = db.Database.BeginTransaction())
            {
                try
                {
                    //Assign date time now
                    DateTime handoverDate = DateTime.Now;

                    //find storeclerk
                    Employee sc = db.Employees
                                  .Where(x => x.Username == storeclerk.Username.ToLower())
                                  .Where(x => x.Password == storeclerk.Password)
                                  .FirstOrDefault();

                    //find deptrep
                    Employee dp = db.Employees
                                  .Where(x => x.Username == deptrep.Username.ToLower())
                                  .Where(x => x.Password == deptrep.Password)
                                  .FirstOrDefault();

                    //Check if username and password is valid
                    if (sc == null || dp == null)
                    {
                        throw new Exception("Username is invalid");
                    }

                    if (dp.EmployeeType.EmployeeTypeName != "Department Representative")
                    {
                        throw new Exception("The user type is wrong");
                    }

                    if (sc.EmployeeType.EmployeeTypeName != "Store Clerk" && sc.EmployeeType.EmployeeTypeName != "Store Supervisor" && sc.EmployeeType.EmployeeTypeName != "Store Manager")
                    {
                        throw new Exception("The user type is wrong");
                    }
                    //Find df
                    DisbursementForm _df = db.DisbursementForms.Find(df.Id);


                    //Create an empty dfpList to save
                    List <DisbursementFormProduct> _dfpList = new List <DisbursementFormProduct>();


                    foreach (DisbursementFormProduct dfp in dfpList)
                    {
                        DisbursementFormProduct _dfp = db.DisbursementFormProducts.Find(dfp.Id);
                        _dfp.ProductDeliveredTotal = dfp.ProductDeliveredTotal;
                        db.DisbursementFormProducts.Update(_dfp);
                        _dfpList.Add(_dfp);
                        db.SaveChanges();
                    }

                    foreach (DisbursementFormProduct _dfp in _dfpList)
                    {
                        if (_dfp.ProductToDeliverTotal < _dfp.ProductDeliveredTotal)
                        {
                            throw new Exception("You cannot input a value more than the number that is to deliver");
                        }
                    }
                    //Update DF Status
                    _df.DeptRep        = dp;
                    _df.StoreClerk     = sc;
                    _df.DFStatus       = Enums.DFStatus.PendingAssignment;
                    _df.DFHandoverDate = handoverDate;
                    _df.DFComments     = comment;
                    db.SaveChanges();

                    //Change all DFRF Status to pending assignment
                    List <DisbursementFormRequisitionForm> _dfrfList = db.DisbursementFormRequisitionForms
                                                                       .Where(x => x.DisbursementForm == _df)
                                                                       .ToList();

                    //Change all DFRF StatuS to pending assignment
                    foreach (DisbursementFormRequisitionForm _dfrf in _dfrfList)
                    {
                        _dfrf.DFRFStatus = DFRFStatus.PendingAssignment;
                        db.DisbursementFormRequisitionForms.Update(_dfrf);
                        db.SaveChanges();
                    }


                    db.SaveChanges();

                    transcat.Commit();
                    return(true);
                }
                catch
                {
                    transcat.Rollback();
                    return(false);
                }
            }
        }
Пример #6
0
        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();
        }