/// <summary> /// Конвертирует запрос в сущность справки /// </summary> /// <param name="request">Запрос</param> /// <returns>Сущность справки</returns> public static Reference Map(CreateReferenceRequest request) { var reference = new Reference { Number = request.Code, Status = Constants.ReferenceStatusNew, Code = request.Code, Name = Resources.Strings.ResourceManager.GetString("ReferenceCode" + request.Code), RegistrationChannel = request.RegistrationChannel, CustomerCUID = request.Customer.CUID, CustomerFIO = request.Customer.FIO, CustomerPassportSerNum = request.Customer.PassportSerNum, }; if (request.User != null) { reference.UserID = request.User.ID; reference.UserFIO = request.User.FIO; reference.UserDateTime = request.User.LocalDateTime; reference.UserWorkstationIP = request.User.Workstation.IP; reference.UserWorkstationName = request.User.Workstation.Name; } return(reference); }
public async Task <IHttpActionResult> Create([FromBody] CreateReferenceRequest request) { if (request == null) { return(Error(HttpStatusCode.BadRequest, new[] { new Error { Code = "1000", InternalMessage = Resources.Strings.ErrorRequestRequired } })); } var errors = Validate(request, CreateReferenceRequestValidator); if (errors != null) { return(errors); } var reference = CreateReferenceMapper.Map(request); var cancellationToken = new CancellationToken(); reference = await _repository.Create(reference, cancellationToken); try { await _printServerBridge.Store(reference, request.Params, Request.GetCorrelationId().ToString("N"), cancellationToken); } catch (ReferenceServiceException ex) { reference.Status = Constants.ReferenceStatusPdfError; await _repository.Update(reference, cancellationToken); if (ex.Code == 102) { return(Error(HttpStatusCode.InternalServerError, new[] { new Error { Code = ex.Code.ToString(), UserMessage = "На данный момент автоматическое формирование справки невозможно.", InternalMessage = ex.Message } })); } else { return(Error(HttpStatusCode.InternalServerError, ex.ToErrors())); } } reference.Status = Constants.ReferenceStatusPdfOk; await _repository.Update(reference, cancellationToken); return(Created(request.Code, new CreateReferenceResponse { Number = reference.Number })); }