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)); }
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); }
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; } }
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; } }