Exemplo n.º 1
0
        //private List<TaskApproval> ProcessApplicantForTaskApprovals(IList<taskapplicant> taskApplicants)
        //{

        //}

        public int AssignTask(AssignTaskRequest taskRequest)
        {
            var userContext         = _commonService.GetCurrentUserContext();
            var dbApprovedApplicant = new approvedapplicant();

            dbApprovedApplicant.ID           = taskRequest.TaskApplicantId;
            dbApprovedApplicant.TASK_ID      = taskRequest.TaskId;
            dbApprovedApplicant.APPLICANT_ID = taskRequest.ApplicantId;
            MapAuditFields <approvedapplicant>(ActionType.Insert, dbApprovedApplicant);
            var result = _requestorRepository.AssignTask(dbApprovedApplicant);

            if (result > 0)
            {
                var task                 = _taskRepository.GetTaskById(taskRequest.TaskId);
                var offering             = _commonService.GetOfferings().Where(x => x.Id == task.OFFERING_ID).Select(x => x.Description).FirstOrDefault();
                var applicant            = _requestorRepository.GetTaskApplicantByApplicantId(taskRequest.TaskApplicantId);
                var applicantUserContext = _commonService.MapDetailsFromDeloitteNetworkWithoutUserContextObject(applicant.user.EMAIL_ID.Split('@')[0]);
                var RMGroupEmailAddress  = _commonService.GetRMGroupEmailAddress(applicantUserContext.Department);

                var ccEmailAddress = taskRequest.TaskTypeId == 1
                    ? $"{userContext.EmailId};{applicant.user.MANAGER_EMAIL_ID};{RMGroupEmailAddress}"
                    : userContext.EmailId;

                var mailMessage  = EmailHelper.AssignNotification(applicant.user.FIRST_NAME + Constants.Space + applicant.user.LAST_NAME, applicant.task.TASK_NAME, applicant.task.PROJECT_NAME, applicant.task.PROJECT_WBS_Code, applicant.user.EMAIL_ID, ccEmailAddress, offering);
                var emailTracker = new EmailTracker
                {
                    ToAddresses = applicant.user.EMAIL_ID,
                    Subject     = mailMessage.Subject,
                    Body        = mailMessage.Body,
                    TaskId      = taskRequest.TaskId,
                    Source      = ApplicationSource.WebApp.ToString()
                };

                if (ccEmailAddress != null)
                {
                    emailTracker.CcAddresses.Add(ccEmailAddress);
                }

                _emailTrackerService.InsertEmail(emailTracker);
            }
            return(result);
        }