public async Task <IActionResult> PutAsync(Guid id, [FromBody] OrderEditRequest request, CancellationToken cancellationToken) { var phoneNumber = User.FindFirst(ClaimTypes.NameIdentifier).Value; request.PhoneNumber = phoneNumber; request.Id = id; var responseModel = await this.mediator.Send(request, cancellationToken); return(new CustomActionResult(responseModel)); }
public async Task <OrderEditResponse> Edit(OrderEditRequest request) { var order = await _orderDataService.Query.Include(x => x.Shipment).FirstAsync(x => x.Id == request.Id); bool hasShipment = order.Shipment != null; if (!AccessManager.HasAccess(order, AccessPremission.See)) { _securityLogger.LogDangeriousUpdateAttemp(request.RequestOwner, order); return(new OrderEditResponse() { Access = ResponseAccess.Deny }); } _orderLogger.OrderUpdated(order, request.Model.MapToModel()); request.Model.MapToExisting(order); await BaseBeforeUpdateAsync(order, request.RequestOwner); if (order.ShippingStatus == ShippingStatus.Delivered && order.PaymentStatus == PaymentStatus.Paid) { order.OrderStatus = OrderStatus.Complete; } else { order.OrderStatus = OrderStatus.Pending; } _unitOfWork.Update(order); await BaseAfterUpdateAsync(order, request.RequestOwner); await _unitOfWork.SaveChangesAsync(); return(new OrderEditResponse() { Access = ResponseAccess.Granted, Logs = _orderLogDataService.Query.Include(x => x.Creator).Where(x => x.OrderId == order.Id).ToList().MapToViewModel() }); }