Esempio n. 1
0
        public int ApplyTask(int taskId, string emailAddress, string statementOfPurpose)
        {
            try
            {
                var user = _commonService.GetCurrentUserContext();

                var taskApplicant = new taskapplicant
                {
                    APPLICANT_ID         = user.UserId,
                    TASK_ID              = taskId,
                    STATUS               = ApplicantStatus.Active.ToString(),
                    STATUS_DATE          = DateTime.Now,
                    STATEMENT_OF_PURPOSE = statementOfPurpose
                };

                MapAuditFields(ActionType.Insert, taskApplicant);

                var result = _contributorRepository.ApplyForTask(taskApplicant);

                if (result > 0)
                {
                    var task = _taskRepository.GetTaskById(taskId);

                    if (string.IsNullOrWhiteSpace(emailAddress))
                    {
                        emailAddress = user.ManagerEmailId;
                    }

                    var managerName = _commonService.GetNameFromEmailId(emailAddress);

                    _userRepository.UpdateManager(user.UserId, managerName, emailAddress);

                    var RMGroupEmailAddress = _commonService.GetRMGroupEmailAddress(user.Department);

                    var offering = _commonService.GetOfferings().Where(x => x.Id == task.OFFERING_ID).Select(x => x.Description).FirstOrDefault();

                    var mailMessage = EmailHelper.ApplyNotification(
                        managerName,
                        $"{user.FirstName}{Constants.Space}{user.LastName}",
                        task.TASK_NAME,
                        task.PROJECT_NAME,
                        $"{task.HOURS.ToString()}h",
                        task.ONBOARDING_DATE.Value.ToShortDateString(),
                        emailAddress,
                        $"{user.EmailId};{RMGroupEmailAddress}",
                        offering);

                    var emailTracker = new EmailTracker
                    {
                        ToAddresses = emailAddress,
                        Subject     = mailMessage.Subject,
                        Body        = mailMessage.Body,
                        TaskId      = taskId,
                        Source      = ApplicationSource.WebApp.ToString()
                    };

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

                    _emailTrackerService.InsertEmail(emailTracker);
                }
                return(result);
            }
            catch (Exception ex)
            {
                var logDetails = new DCode.Models.Common.Log {
                    Description = ex.Message, Details = ex.ToString()
                };
                _commonService.LogToDatabase(logDetails);
                return(-1);
            }
        }