public async Task <HttpResponseMessage> Add(HttpRequestMessage request, [FromBody] VacancyInputDTO value) { try { var userId = ContextParser.GetUserId(request.GetRequestContext()); var vacancy = Mapper.Map <VacancyInputDTO, Vacancy>(value); var createdVacancy = await vacancyService.Post(vacancy, value.Candidates, userId) .ConfigureAwait(false); await eventService.RegisterVacancy(createdVacancy, userId); unitOfWork.Save(); var elasticVacancy = Mapper.Map <Vacancy, VacancyElasticModel>(createdVacancy); await vacancyElasticService.AddVacancyElastic(elasticVacancy); return(request.CreateResponse(HttpStatusCode.OK, createdVacancy.Id)); } catch (Exception ex) { logger.Error(ex, JsonConvert.SerializeObject(value)); return(request.CreateResponse(HttpStatusCode.InternalServerError)); } }
public async Task <HttpResponseMessage> Update(HttpRequestMessage request, [FromBody] VacancyInputDTO value) { try { var userId = ContextParser.GetUserId(request.GetRequestContext()); var vacancy = Mapper.Map <VacancyInputDTO, Vacancy>(value); var e = await eventService.RegisterVacancyUpdate(vacancy, userId); var updatedVacancy = await vacancyService.Update(vacancy, value.Candidates, userId) .ConfigureAwait(false); unitOfWork.Save(); var elasticVacancy = Mapper.Map <Vacancy, VacancyElasticModel>(updatedVacancy); await vacancyElasticService.UpdateVacancyElastic(elasticVacancy); var notification = await notificationService.CreateNotification(updatedVacancy.HRM, NotificationTypes.Update, e); if (NotificationsHub.IsConnected(updatedVacancy.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)); } }