public async Task <HttpResponseMessage> Update(HttpRequestMessage request, [FromBody] CandidateInputDTO value) { try { var userId = ContextParser.GetUserId(request.GetRequestContext()); var candidate = Mapper.Map <CandidateInputDTO, Candidate>(value); candidate.LastModifier = userId; var events = await eventService.RegisterCandidateUpdate(candidate, userId); var updatedCandidate = await candidateService.Update(candidate, value.VacanciesIds) .ConfigureAwait(false); unitOfWork.Save(); var candidateElasticModel = Mapper.Map <Candidate, CandidateElasticModel>(updatedCandidate); await candidateElasticService.UpdateCandidateElastic(candidateElasticModel); var notification = await notificationService.CreateNotification(updatedCandidate.HRM, NotificationTypes.Update, events); if (NotificationsHub.IsConnected(updatedCandidate.HRM)) { await NotificationsHub.PushNotification(notification); } unitOfWork.Save(); return(request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { logger.Error(ex, JsonConvert.SerializeObject(value)); return(request.CreateResponse(HttpStatusCode.InternalServerError)); } }
public async Task <HttpResponseMessage> AddCandidate(HttpRequestMessage request, [FromBody] CandidateInputDTO value) { try { var userId = ContextParser.GetUserId(request.GetRequestContext()); var candidate = Mapper.Map <CandidateInputDTO, Candidate>(value); candidate.HRM = userId; candidate.LastModifier = userId; var createdCandidate = await candidateService.Add(candidate, value.VacanciesIds) .ConfigureAwait(false); await eventService.RegisterCandidate(createdCandidate, userId); unitOfWork.Save(); var candidateElastic = Mapper.Map <Candidate, CandidateElasticModel>(createdCandidate); await candidateElasticService.AddCandidateElastic(candidateElastic).ConfigureAwait(false); return(request.CreateResponse(HttpStatusCode.OK, createdCandidate.Id)); } catch (Exception ex) { logger.Error(ex, JsonConvert.SerializeObject(value)); return(request.CreateResponse(HttpStatusCode.InternalServerError)); } }