public DeliverSalesOrderConfirmViewModel( IServiceBundle serviceBundle, ISalesOrderWorkItemRepository salesOrderWorkItemRepository, ISignatureWorkItemRepository signatureWorkItemRepository, ISalesOrderRepository salesOrderRepository, ISalesOrderDeliveryNotificationRepository salesOrderDeliveryNotificationRepositoy, ISyncService syncService ) : base(serviceBundle) { _salesOrderWorkItemRepository = salesOrderWorkItemRepository; _signatureWorkItemRepository = signatureWorkItemRepository; _salesOrderRepository = salesOrderRepository; _salesOrderDeliveryNotificationRepositoy = salesOrderDeliveryNotificationRepositoy; _syncService = syncService; }
/// <inheritdoc /> public async Task <bool> CompleteSalesOrderDelivery( ISalesOrderWorkItemRepository salesOrderWorkItemRepository, ISignatureWorkItemRepository signatureWorkItemRepository, bool isDriverSignature, string salesOrderNumber, string encodedSignature, bool sendNotification = true ) { // Signature is required, do nothing. if (string.IsNullOrWhiteSpace(encodedSignature)) { return(false); } var workItems = await salesOrderWorkItemRepository.TryGetSalesOrderWorkItems(salesOrderNumber).ConfigureAwait(false); // No work items (weird), do nothing. if (workItems.Count == 0) { return(false); } var position = await _locationService.GetPositionAsync().ConfigureAwait(false); var userId = _configurationService.GetString(Constants.Config.UserId); // Set all sales order work item instances to delivered state. await Task.WhenAll(workItems.Select(item => SetSalesOrderWorkItemToDelivered( salesOrderWorkItemRepository, item, position, userId ))); // Create a new SignatureWorkItem instance. await signatureWorkItemRepository.TryCreateSignatureWorkItem(new SignatureWorkItem { SalesOrderNumber = salesOrderNumber, EncodedSignatureImage = encodedSignature, IsDriverSignature = isDriverSignature, SendNotification = sendNotification }).ConfigureAwait(false); return(true); }