public bool AssignDelegate(Employee emp, string deptid)
        {
            List <Employee> emplist = erepo.FindEmpByDept(deptid);

            foreach (Employee e in emplist)
            {
                if (emp.DelegateFromDate >= e.DelegateFromDate && emp.DelegateFromDate <= e.DelegateToDate)
                {
                    if (emp.Id != e.Id)
                    {
                        throw new Exception("Conflict of delegate dates with " + e.Name + ". Please try again");
                    }
                }
                if (emp.DelegateToDate >= e.DelegateFromDate && emp.DelegateToDate <= e.DelegateToDate)
                {
                    if (emp.Id != e.Id)
                    {
                        throw new Exception("Conflict of delegate dates with " + e.Name + ". Please try again");
                    }
                }
            }
            try
            {
                Employee   delegateemp = erepo.AssignDelegateDate(emp);
                Employee   depthead    = erepo.FindSupervisorByEmpId(delegateemp.Id);
                EmailModel email       = new EmailModel();

                Task.Run(async() =>
                {
                    EmailTemplates.AssignDelTemplate adt = new EmailTemplates.AssignDelTemplate(delegateemp, depthead);
                    email.emailTo      = delegateemp.Email;
                    email.emailSubject = adt.subject;
                    email.emailBody    = adt.body;
                    await mailservice.SendEmailwithccallAsync(email, emplist);
                });
                return(true);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Esempio n. 2
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;
            }
        }