public CreateOrderResponseDTO Order(MobileOrderDTO ord) { var id = SaveAndGetId(ord); if (WebOperationContext.Current?.OutgoingResponse != null) { WebOperationContext.Current.OutgoingResponse.StatusCode = id > 0 ? HttpStatusCode.OK : HttpStatusCode.InternalServerError; } return(new CreateOrderResponseDTO(id, ord.UuidRaw)); }
int SaveAndGetId(MobileOrderDTO mobileOrder) { int resId = -1; if (mobileOrder == null) { logger.Error("[MB]Отсутсвует заказ"); return(resId); } if (mobileOrder.OrderId > 0) { //реализовать для изменения заказа logger.Error(string.Format("[MB]Запрос на измение мобильного заказа '{0}'. Пока не реализованно.", mobileOrder.OrderId)); return(resId); } if (!mobileOrder.IsOrderSumValid()) { logger.Error(string.Format("[MB]Неправильная сумма заказа: \"{0}\"", mobileOrder.OrderSum)); return(resId); } if (!mobileOrder.IsUuidValid()) { logger.Error(string.Format("[MB]Неправильный Uuid: \"{0}\"", mobileOrder.UuidRaw)); return(resId); } if (SaveAndGetIdTestGap != null) { return(SaveAndGetIdTestGap(mobileOrder)); } using (var uow = UnitOfWorkFactory.CreateWithNewRoot <OrderIdProviderForMobileApp>($"[MB]Регистрация заказа для '{mobileOrder.GetUuid()}' на сумму '{mobileOrder.OrderSum}'")) { uow.Root.Uuid = mobileOrder.GetUuid(); uow.Root.OrderSum = mobileOrder.OrderSum; try { uow.Save(); resId = uow.Root.Id; } catch (Exception ex) { logger.Error(string.Format("[MB]Ошибка при сохранении: {0}", ex.Message)); throw ex; } } return(resId); }