/// <summary> /// Adds the request technology. /// </summary> /// <param name="model">The model.</param> public void AddRequestTechnology(ManpowerRequestTechnology model) { _dbContext.Add(model); _dbContext.SaveChanges(); }
/// <summary> /// /// </summary> /// <param name="dto"></param> /// <returns></returns> public ServiceResponseDTO <RequestDTO> SaveRequest(RequestDTO dto) { try { var request = _mapper.Map <ManpowerRequest>(dto); var requestId = _requestCtxRepository.SaveRequest(request); dto.Id = requestId; var taggbleApplicants = _taggableApplicantsReposity.GetTaggableApplicants(request.PrimarySkillId); var applicantLevel = _applicantLevelRepository.GetApplicantLevelList().ToArray(); for (var i = 0; i < dto.NumberOfHires.Count; i++) { for (int j = 0; j < dto.NumberOfHires[i]; j++) { //TODO: Create enum of statuses var refNoId = _referenceNumberRepository.CreateReferenceNumber(requestId, 1, applicantLevel[i].Id); foreach (var taggbleApplicant in taggbleApplicants) { var taggedApplicant = new TaggedApplicant() { ReferenceNoId = refNoId, ApplicantId = taggbleApplicant.Id, TagDate = DateTime.Now }; _taggedApplicantRepository.Add(taggedApplicant); } } } for (var i = 0; i < dto.Technologies.Count; i++) { var model = new ManpowerRequestTechnology() { ManpowerRequestId = requestId, TechnologyId = dto.Technologies[i] }; _requestTechnologyRepository.AddRequestTechnology(model); } #region Send Email UserDTO requestor = new UserDTO(); List <string> recipientEmails = new List <string>(); // get user list var usersDto = _userService.GetUserList(); if (usersDto.Success) { requestor = usersDto.ResponseData.FirstOrDefault(a => a.Id == dto.RequestedBy); // get roles with 'Tag Applicant' permission var roles = _roleService.GetRoles(); if (roles.Success) { var rolesWithTagApplicant = roles.ResponseData.SelectMany(a => a.Permissions).Where(b => b.Name == "Tag Applicants").Select(c => c.RoleId).Distinct(); recipientEmails = usersDto.ResponseData.Where(a => rolesWithTagApplicant.Contains(a.RoleId)).Select(a => a.Email).ToList(); } } // get project details var projectDto = _projectService.GetProject(dto.ProjectId); // build email reference TagApplicant emailReference = new TagApplicant(); emailReference.ProjectName = projectDto.Success ? projectDto.ResponseData.Name : string.Join(String.Empty, projectDto.Errors); emailReference.EstimateHires = dto.NumberOfHires.Sum(); emailReference.Requestor = requestor != null ? requestor.Firstname + " " + requestor.Lastname : ""; emailReference.ManpowerAppUrl = _emailSettings.ManpowerAppUrl; _emailService.BuildEmailMessage(requestor != null ? requestor.Email : "", recipientEmails, emailReference); #endregion return(new ServiceResponseDTO <RequestDTO>() { ResponseData = dto, Success = true }); } catch (Exception ex) { return(new ServiceResponseDTO <RequestDTO>() { Errors = new List <string>() { ex.Message }, Success = false }); } }