public async Task <SimpleResonse> SendOrderShippmentStatusChangedNotification(Guid orderId) { var order = await _orderDataService.Query.Include(x => x.Shipment).Include(x => x.Creator).FirstOrDefaultAsync(x => x.Id == orderId); if (!AccessManager.HasAccess(order, AccessPremission.Manage)) { _securityLogger.LogDangeriousActionAttemp(_identityManager.GetCurrentPrincipal(), order, "send notification to order owner for shipping status change"); return(new SimpleResonse() { Access = ResponseAccess.Deny }); } if (order.ShippingStatus != ShippingStatus.Shipped) { return(new SimpleResonse() { Access = ResponseAccess.BadRequest }); } var shipmentTrackNumber = order.Shipment?.TrackingNumber; JobManager.AddJob(new UserMessageNotifier(order.Creator.Email, "وضعیت سفارش", "سفارش شما بسته بندی و ارسال شد " + shipmentTrackNumber), (s) => s.ToRunNow()); return(new SimpleResonse() { Access = ResponseAccess.Granted }); }
public async Task ChangeOrderItemDownLoadActivationState(Guid orderItemId) { var orderItem = _unitOfWork.Set <OrderItem>().Include(x => x.Order).First(x => x.Id == orderItemId); if (!AccessManager.HasAccess(orderItem.Order, AccessPremission.Manage)) { _securityLogger.LogDangeriousActionAttemp(_identityManager.GetCurrentPrincipal(), orderItem, "change download file product"); } orderItem.IsDownloadActivated = !orderItem.IsDownloadActivated; _unitOfWork.Update(orderItem); _orderLogger.OrderItemDownloadActivateStateChanged(orderItem); await _unitOfWork.SaveChangesAsync(); }
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() }); }