Exemplo n.º 1
0
        public ResultViewModel FnUpdateCurrentAssignedTo(ApprovalSpotterDetails model, string UserName)
        {
            string userMail = "";

            glog.Debug("FnUpdateCurrentAssignedTo: Entry");
            var result = new ResultViewModel();

            using (var db = new MainDbContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        if (FnGetApprovingOfficerAvailbility(model.AssignedTo))
                        {
                            userMail = db.Sys_Users.FirstOrDefault(x => x.Name == UserName).Email;

                            var approvalProcessDtl = db.Approval_ProcessDetail.Where(w => w.ApprovalProcessID == model.ApprovalProcessDetailID).FirstOrDefault();
                            approvalProcessDtl.AssignedTo     = model.AssignedTo;
                            approvalProcessDtl.ReassignDate   = DateTime.Now;
                            approvalProcessDtl.ReassignBy     = userMail;
                            approvalProcessDtl.ReassignReason = model.ReassignReason;

                            db.Approval_ProcessDetail.Add(approvalProcessDtl);
                            db.Entry(approvalProcessDtl).State = System.Data.Entity.EntityState.Modified;
                            var Id = db.SaveChanges();
                            if (Id > 0)
                            {
                                transaction.Commit();
                                string EmpEmailId  = GetEmailByEmpCode(model.AssignedTo);
                                var    isEmailSend = SendReassignEmailNotificationAPI(model, EmpEmailId, UserName, userMail, model.AssignedTo);
                                result.Status  = 1;
                                result.Message = String.Format("Approval reassign to {0}", GetApprovingOfficerNameByCode(model.AssignedTo));
                            }
                            else
                            {
                                transaction.Rollback();
                                result.Status  = 0;
                                result.Message = "An error occurred while reassign task!";
                            }
                        }
                        else
                        {
                            result.Status  = 2;
                            result.Message = "Selected approving officer is currently unavailable. Please select another approving officer.Thanks";
                        }
                    }
                    catch (Exception ex)
                    {
                        glog.Error("FnUpdateCurrentAssignedTo Exception: " + ex.Message + ex.InnerException);
                        result.Status  = 0;
                        result.Message = "Please contact MIS, error: " + ex.Message;
                        transaction.Rollback();
                    }
                    finally
                    {
                        transaction.Dispose();
                    }
                    glog.Debug("FnUpdateCurrentAssignedTo: Exit");
                    return(result);
                }
            }
        }
Exemplo n.º 2
0
        public bool SendEmailNotificationAPI(ApprovalSpotterDetails model, string empEmailId, string UserName, string UserId, int currentTier, int maxTier, string employeeCode)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(ConfigurationManager.AppSettings["SitePathAPI"]);

                var emailModel = new EmailViewModel();
                if (!String.IsNullOrEmpty(model.RejectReason))
                {
                    string html = GenerateHtmlForEmailApprovedReject(model, clsVariables.Reject, UserName, employeeCode);
                    emailModel = new EmailViewModel()
                    {
                        MailType  = clsVariables.ApprovalMailType,
                        EmailTo   = empEmailId,
                        EmailFrom = UserId,
                        CcEmail   = "",
                        Subject   = clsVariables.SpotterMailSubject,
                        body      = html,
                        UserId    = UserId,
                    };
                }
                else
                {
                    if (currentTier == maxTier)
                    {
                        string html = GenerateHtmlForEmailApprovedReject(model, clsVariables.Approved, UserName, employeeCode);
                        emailModel = new EmailViewModel()
                        {
                            MailType  = clsVariables.ApprovalMailType,
                            EmailTo   = empEmailId,
                            EmailFrom = UserId,
                            CcEmail   = "",
                            Subject   = String.Format("Spotter Fee Approved {0}", model.SpotterSummary.SpotterRefNumber),
                            body      = html,
                            UserId    = UserId,
                        };
                    }
                    else
                    {
                        string html = GenerateHtmlForEmailSpotterApproval(model, "", UserName, employeeCode);
                        emailModel = new EmailViewModel()
                        {
                            MailType  = clsVariables.ApprovalMailType,
                            EmailTo   = empEmailId,
                            EmailFrom = UserId,
                            CcEmail   = "",
                            Subject   = clsVariables.SpotterMailSubject,
                            body      = html,
                            UserId    = UserId,
                        };
                    }
                }

                var responseTask = client.PostAsJsonAsync <EmailViewModel>("Email", emailModel);

                responseTask.Wait();

                var result = responseTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Exemplo n.º 3
0
        public ResultViewModel FnApproveRejectEvent(ApprovalSpotterDetails model, string UserName)
        {
            string userMail = "";
            int    maxTier = 0, currentTier = 0;

            glog.Debug("InsertSpotterData: Entry");
            var result = new ResultViewModel();

            using (var db = new MainDbContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        userMail = db.Sys_Users.FirstOrDefault(x => x.Name == UserName).Email;
                        bool IsSave = false;

                        if (!string.IsNullOrEmpty(model.RejectReason))
                        {
                            var RejectedAmount = model.OutstandingFee.Select(s => s.SpotterAmt).Sum();
                            var ApprovedAmount = model.SpotterSummary.Amount - RejectedAmount;
                            if (FnUpdateCurrentApproval(db, model.IsAllCheck, model.ApprovalProcessID, model.RejectReason, userMail))
                            {
                                if (FnUpdateSpotterMaster(db, model.IsAllCheck, model.SpotterSummary.SpotterRefNumber, ApprovedAmount, model.RejectReason, userMail))
                                {
                                    if (FnUpdateSpotterDetail(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail))
                                    {
                                        if (FnUpdateContractSpotter(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail))
                                        {
                                            IsSave = true;
                                        }
                                        else
                                        {
                                            IsSave = false;
                                        }
                                    }
                                    else
                                    {
                                        IsSave = false;
                                    }
                                }
                                else
                                {
                                    IsSave = false;
                                }
                            }
                            else
                            {
                                IsSave = false;
                            }
                        }
                        else
                        {
                            maxTier     = db.Sys_Approval.Where(w => w.ApprovalHeaderID == model.ApprovalHeaderID).Select(s => s.Tier).FirstOrDefault();
                            currentTier = db.Approval_ProcessDetail.Where(w => w.ApprovalProcessID == model.ApprovalProcessID).Select(s => s.Tier).Max();
                            var ApprovedAmount = model.OutstandingFee.Select(s => s.SpotterAmt).Sum();
                            if (currentTier == maxTier)
                            {
                                if (FnUpdateCurrentApproval(db, model.IsAllCheck, model.ApprovalProcessID, model.RejectReason, userMail))
                                {
                                    if (FnUpdateSpotterMaster(db, model.IsAllCheck, model.SpotterSummary.SpotterRefNumber, ApprovedAmount, model.RejectReason, userMail))
                                    {
                                        if (FnUpdateSpotterDetail(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail))
                                        {
                                            if (FnUpdateContractSpotter(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail))
                                            {
                                                IsSave = true;
                                            }
                                            else
                                            {
                                                IsSave = false;
                                            }
                                        }
                                        else
                                        {
                                            IsSave = false;
                                        }
                                    }
                                    else
                                    {
                                        IsSave = false;
                                    }
                                }
                                else
                                {
                                    IsSave = false;
                                }
                            }
                            else
                            {
                                var             sysApproval          = db.Sys_Approval.Where(w => w.ApprovalHeaderID == model.ApprovalHeaderID).FirstOrDefault();
                                ApprovalProcess approvalProcessModel = new ApprovalProcess()
                                {
                                    ApprovalDetailID = model.ApprovalProcessID,
                                    CurrentTier      = currentTier,
                                    ApprovalHeaderID = model.ApprovalHeaderID,
                                    ModuleID         = sysApproval.ModuleID,
                                    ApprovalName     = sysApproval.ApprovalName,
                                    RefNo            = model.SpotterSummary.SpotterRefNumber,
                                    UserName         = userMail
                                };
                                result = FnStartNewProcessTier(approvalProcessModel);
                                if (result.Status == 1)
                                {
                                    IsSave = true;
                                }
                                else
                                {
                                    IsSave = false;
                                }
                            }
                        }

                        if (IsSave)
                        {
                            transaction.Commit();
                            string EmpEmailId   = string.Empty;
                            var    employeeCode = "";
                            if (currentTier == maxTier)
                            {
                                employeeCode = db.Sys_Users.FirstOrDefault(x => x.Name == UserName).EmployeeCode;
                                EmpEmailId   = GetEmailByEmpCode(employeeCode);
                            }
                            else
                            {
                                employeeCode = db.Approval_ProcessDetail.FirstOrDefault(x => x.ApprovalProcessID == model.ApprovalProcessID).AssignedTo;
                                EmpEmailId   = GetEmailByEmpCode(employeeCode);
                            }
                            var isEmailSend = SendEmailNotificationAPI(model, EmpEmailId, UserName, userMail, currentTier, maxTier, employeeCode);
                            result.Status = 1;
                            if (string.IsNullOrEmpty(model.RejectReason))
                            {
                                result.Message = "Data has been approved!";
                            }
                            else
                            {
                                result.Message = "Data has been rejected!";
                            }
                        }
                        else
                        {
                            transaction.Rollback();
                            result.Status  = 0;
                            result.Message = "An error occurred when updating approval process";
                        }
                    }
                    catch (Exception ex)
                    {
                        glog.Error("FnApproveRejectEvent Exception: " + ex.Message + ex.InnerException);
                        result.Status  = 0;
                        result.Message = "Please contact MIS, error: " + ex.Message;
                        transaction.Rollback();
                    }
                    finally
                    {
                        transaction.Dispose();
                    }
                    glog.Debug("FnApproveRejectEvent: Exit");
                    return(result);
                }
            }
        }