Exemplo n.º 1
0
        public Requisition CreateRequisition(int empid, string deptid)
        {
            Employee emp = erepo.FindEmpById(empid);

            if (emp.Role == "dh")
            {
                throw new Exception("Sorry, department head cannot create own requisition");
            }

            //create empty requisition with date,employee ID and departmentid
            Requisition newform = new Requisition();

            DateTime       dateTime = DateTime.UtcNow.Date;
            DateTimeOffset dt       = new DateTimeOffset(dateTime, TimeSpan.Zero).ToUniversalTime();
            long           date     = dt.ToUnixTimeMilliseconds();

            newform.ReqByEmpId   = empid;
            newform.CreatedDate  = date;
            newform.DepartmentId = deptid;
            newform.Status       = Status.RequsitionStatus.created;
            Department dept = drepo.FindDepartmentById(deptid);

            newform.CollectionPointId = dept.CollectionPointId;
            return(rrepo.SaveNewRequisition(newform));
        }
Exemplo n.º 2
0
        public bool GenerateQuoteFromPr(List <PurchaseRequestDetail> prdlist, int clerkid)
        {
            List <PurchaseRequestDetail> prdlistwithnull = new List <PurchaseRequestDetail>();

            foreach (PurchaseRequestDetail prd in prdlist)
            {
                if (prd.VenderQuote == null || prd.VenderQuote == "")
                {
                    prdlistwithnull.Add(prd);
                }
            }
            if (prdlistwithnull.Count() < 1)
            {
                return(true);
            }
            else
            {
                List <PurchaseRequestDetail> pnull = prdlistwithnull.OrderBy(m => m.SupplierId).ToList();
                Dictionary <string, List <PurchaseRequestDetail> > pdict = new Dictionary <string, List <PurchaseRequestDetail> >();

                foreach (PurchaseRequestDetail prd in pnull)
                {
                    prd.Product = prepo.FindProductById(prd.ProductId);
                    if (!pdict.ContainsKey(prd.SupplierId))
                    {
                        List <PurchaseRequestDetail> prdlist1 = new List <PurchaseRequestDetail>();
                        prdlist1.Add(prd);
                        pdict.Add(prd.SupplierId, prdlist1);
                    }
                    else
                    {
                        pdict[prd.SupplierId].Add(prd);
                    }
                }
                foreach (var r in pdict)
                {
                    Supplier   supplier = srepo.FindSupplierById(r.Value[0].SupplierId);
                    Employee   clerk    = erepo.FindEmpById(clerkid);
                    EmailModel email    = new EmailModel();
                    List <PurchaseRequestDetail> List_of_PR_tosend = pdict[r.Key];
                    Task.Run(async() =>
                    {
                        EmailTemplates.RequestQuoteTemplate rfq = new EmailTemplates.RequestQuoteTemplate(clerk, supplier, List_of_PR_tosend);
                        email.emailTo      = supplier.Email;
                        email.emailSubject = rfq.subject;
                        email.emailBody    = rfq.body;
                        await mailservice.SendRFQEmailAsync(email, clerk);
                    });
                }
            }
            return(true);
        }
Exemplo n.º 3
0
 public bool AssignDeptRep(int empid, string deptid)
 {
     try
     {
         drepo.AssignDeptRep(empid, deptid);
         Employee deptrep  = erepo.FindEmpById(empid);
         Employee depthead = erepo.FindSupervisorByEmpId(deptrep.Id);
         //find collectionpoint
         Department      dp     = drepo.FindDeptbyRepID(deptrep.Id);
         CollectionPoint deptCP = crepo.GetDeptCollectionPoint(dp);
         EmailModel      email  = new EmailModel();
         Task.Run(async() =>
         {
             EmailTemplates.AssignDeptRepTemplate adt = new EmailTemplates.AssignDeptRepTemplate(deptrep, depthead, deptCP);
             email.emailTo      = deptrep.Email;
             email.emailSubject = adt.subject;
             email.emailBody    = adt.body;
             await mailservice.SendEmailAsync(email);
         });
         return(true);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Exemplo n.º 4
0
        public bool ApprovRejAdjustmentVoucher(AdjustmentVoucher av, int approvalId)
        {
            Employee       emp      = erepo.FindEmpById(approvalId);
            DateTime       dateTime = DateTime.UtcNow.Date;
            DateTimeOffset dt       = new DateTimeOffset(dateTime, TimeSpan.Zero).ToUniversalTime();
            long           date     = dt.ToUnixTimeMilliseconds();

            try
            {
                if (emp.Role == "sm")   //persist to correct column based on supervisor or manager role
                {
                    av.ApprovedMgrId   = emp.Id;
                    av.ApprovedMgrDate = date;
                    //For all approvals by manager, it will jump to final state of "approved"
                    if (av.Status != Status.AdjVoucherStatus.rejected)
                    {
                        av.Status = Status.AdjVoucherStatus.approved;
                    }
                    avrepo.ManagerUpdateAdjustmentVoucherApprovals(av);
                }
                if (emp.Role == "ss")
                {
                    av.ApprovedSupId   = emp.Id;
                    av.ApprovedSupDate = date;
                    avrepo.SupervisorUpdateAdjustmentVoucherApprovals(av);
                }

                if (av.Status == Status.AdjVoucherStatus.pendmanapprov)
                {
                    AdjustmentVoucher av1     = avrepo.FindAdjustmentVoucherById(av.Id);
                    Employee          manager = erepo.FindSupervisorByEmpId(emp.Id);
                    Employee          sup     = erepo.FindEmpById(emp.Id);
                    EmailModel        email   = new EmailModel();

                    Task.Run(async() =>
                    {
                        EmailTemplates.PendingManagerApprovalAVTemplate apt = new EmailTemplates.PendingManagerApprovalAVTemplate(av1, manager, sup);
                        email.emailTo      = manager.Email;
                        email.emailSubject = apt.subject;
                        email.emailBody    = apt.body;
                        await mailservice.SendEmailAsync(email);
                    });
                }
                else //approved or rejected
                {
                    AdjustmentVoucher av1 = avrepo.FindAdjustmentVoucherById(av.Id);

                    if (av1.Status == Status.AdjVoucherStatus.approved) //new method for auto update of stock card upon approved adjustment vouchers
                    {
                        UpdateStockCardForApprovedAdjustmentVoucher(av1);
                    }
                    Employee        clerk   = erepo.FindEmpById(av1.InitiatedClerkId);
                    Employee        sup     = erepo.FindEmpById((int)clerk.ManagerId);
                    Employee        manager = erepo.FindEmpById((int)sup.ManagerId);
                    List <Employee> elist   = new List <Employee>(); //Regardless of approval hierarchy or who approved, as long as its in final state of approved or rejected, clerk + supervisor + manager will get email
                    elist.Add(sup);
                    elist.Add(manager);
                    EmailModel email = new EmailModel();
                    Task.Run(async() =>
                    {
                        EmailTemplates.ApproveRejectAVTemplate apt = new EmailTemplates.ApproveRejectAVTemplate(av1, clerk, sup);
                        email.emailTo      = clerk.Email;
                        email.emailSubject = apt.subject;
                        email.emailBody    = apt.body;

                        await mailservice.SendEmailwithccallAsync(email, elist);
                    });
                }

                return(true);
            }
            catch (Exception m)
            {
                throw m;
            }
        }