public async Task <OrderPutResponse> PutOne(ApplicationUser currentUser, OrderPutRequest request) { var response = new OrderPutResponse { IsSuccess = false }; if (currentUser is Client) { response.AddError(_stringLocalizer[CustomStringLocalizer.NO_RIGHTS_TO_ASSIGN_DRIVER]); return(response); } var order = await _fuelContext.Orders.FirstOrDefaultAsync(x => x.Id == request.OrderId); if (order == null) { response.AddError(_stringLocalizer[CustomStringLocalizer.ORDER_NOT_FOUND]); return(response); } var driver = await _fuelContext.DriverUsers.FirstOrDefaultAsync(x => x.Id == request.DriverId); if (driver == null) { response.AddError(_stringLocalizer[CustomStringLocalizer.USER_NOT_FOUND]); return(response); } var lastHistoryRecord = await _fuelContext.StatusHistory .Where(x => x.OrderId == order.Id) .OrderByDescending(x => x.ChangeTime) .FirstOrDefaultAsync(); if (lastHistoryRecord != null && lastHistoryRecord.Status == Model.Enums.OrderStatus.Completed) { response.AddError(_stringLocalizer[CustomStringLocalizer.USER_CAN_NOT_ASSIGN_DRIVER_COMPLETED_ORDER]); return(response); } await _fuelContext.DriverDetalizations.AddAsync(new DriverOrderDetalization { DriverId = driver.Id, OrderId = order.Id, ReceiptDate = DateTime.Now }); await _fuelContext.SaveChangesAsync(); // записать в историю, что водитель назначен await AddStatusToHistory(order.Id, OrderStatusVM.DriverAssigned); response.IsSuccess = true; return(response); }
public async Task WhenAsync(CreateOrderDto c) { var idObj = (c as ICreateOrder).OrderId; var uriParameters = new OrderUriParameters(); uriParameters.Id = idObj; var req = new OrderPutRequest(uriParameters, (CreateOrderDto)c); var resp = await _ramlClient.Order.Put(req); OrderProxyUtils.ThrowOnHttpResponseError(resp); }
public async Task <OrderPutResponse> Put(long id, [FromBody] OrderPutRequest request) { var currentUser = await _userManager.GetUserAsync(User); return(await _orderModel.PutOne(currentUser, request)); }