| | | 1 | | using OzonDomains; |
| | | 2 | | using OzonDomains.Models; |
| | | 3 | | using Services.DataServices; |
| | | 4 | | |
| | | 5 | | namespace Services.TransactionUtilsServices |
| | | 6 | | { |
| | | 7 | | public class TransactionManager : ITransactionManager |
| | | 8 | | { |
| | | 9 | | private readonly ITransactionDataServices _transactionDataServices; |
| | | 10 | | |
| | 35 | 11 | | public TransactionManager(ITransactionDataServices transactionDataServices) |
| | | 12 | | { |
| | 35 | 13 | | _transactionDataServices = transactionDataServices; |
| | 35 | 14 | | } |
| | | 15 | | |
| | | 16 | | private async Task<(int, string, int)> CreateTransaction( |
| | | 17 | | TransactionType type, |
| | | 18 | | List<Order> orders, |
| | | 19 | | string userName, |
| | | 20 | | DateTime createDateTime, |
| | | 21 | | string comment) |
| | | 22 | | { |
| | 35 | 23 | | var transaction = new Transaction |
| | 35 | 24 | | { |
| | 35 | 25 | | Type = type, |
| | 35 | 26 | | CreateBy = userName, |
| | 35 | 27 | | CreatedDateTime = createDateTime, |
| | 35 | 28 | | Comment = TransactionCommentNormalizer.NormalizeUserComment(comment) |
| | 35 | 29 | | }; |
| | | 30 | | |
| | 35 | 31 | | await _transactionDataServices.AddTransaction(transaction); |
| | 35 | 32 | | var result = await _transactionDataServices.SaveChanges(); |
| | | 33 | | |
| | | 34 | | // Attach transaction ID to orders and mark as accepted |
| | 152 | 35 | | foreach (var order in orders) |
| | | 36 | | { |
| | 41 | 37 | | order.TransactionId = transaction.Id; |
| | 41 | 38 | | ConfirmAccepted(order); |
| | | 39 | | } |
| | | 40 | | |
| | 35 | 41 | | result = await _transactionDataServices.SaveChanges(); |
| | 35 | 42 | | return (result, $"{transaction.FormattedCreatedDate}\t{transaction.FormattedCreatedTime}", transaction.Id); |
| | 35 | 43 | | } |
| | | 44 | | |
| | | 45 | | public Task<(int, string, int)> CreateOrderToSupplierTransaction(List<Order> orders, string userName, |
| | | 46 | | DateTime createDateTime, string comment) |
| | 16 | 47 | | => CreateTransaction(TransactionType.OrderedToSupplier, orders, userName, createDateTime, comment); |
| | | 48 | | |
| | | 49 | | public Task<(int, string, int)> CreateShippedBySupplierTransaction(List<Order> orders, string userName, |
| | | 50 | | DateTime createDateTime, string comment) |
| | 1 | 51 | | => CreateTransaction(TransactionType.ShippedBySupplier, orders, userName, createDateTime, comment); |
| | | 52 | | |
| | | 53 | | public Task<(int, string, int)> CreateShippedToSellerTransaction(List<Order> orders, string userName, |
| | | 54 | | DateTime createDateTime, string comment) |
| | 2 | 55 | | => CreateTransaction(TransactionType.ShippedToSeller, orders, userName, createDateTime, comment); |
| | | 56 | | |
| | | 57 | | public Task<(int, string, int)> CreateOrderedToSellerTransaction(List<Order> orders, string userName, |
| | | 58 | | DateTime createDateTime, string comment) |
| | 1 | 59 | | => CreateTransaction(TransactionType.OrderedToSeller, orders, userName, createDateTime, comment); |
| | | 60 | | |
| | | 61 | | public Task<(int, string, int)> CreateShippedToClientTransaction(List<Order> orders, string userName, |
| | | 62 | | DateTime createDateTime, string comment) |
| | 2 | 63 | | => CreateTransaction(TransactionType.ShippedToClient, orders, userName, createDateTime, comment); |
| | | 64 | | |
| | | 65 | | public Task<(int, string, int)> CreatePercentageTransaction(List<Order> orders, string userName, |
| | | 66 | | DateTime createDateTime, string comment) |
| | 1 | 67 | | => CreateTransaction(TransactionType.Percentage, orders, userName, createDateTime, comment); |
| | | 68 | | |
| | | 69 | | public Task<(int, string, int)> AcceptedToWarehouseTransaction(List<Order> orders, string userName, |
| | | 70 | | DateTime createDateTime, string comment) |
| | 2 | 71 | | => CreateTransaction(TransactionType.AcceptedToWarehouse, orders, userName, createDateTime, comment); |
| | | 72 | | |
| | | 73 | | public Task<(int, string, int)> CreateToCancellationTransaction(List<Order> orders, string userName, |
| | | 74 | | DateTime createDateTime, string comment) |
| | 1 | 75 | | => CreateTransaction(TransactionType.ToCancellation, orders, userName, createDateTime, comment); |
| | | 76 | | |
| | | 77 | | public Task<(int, string, int)> CreateCancelledTransaction(List<Order> orders, string userName, |
| | | 78 | | DateTime createDateTime, string comment) |
| | 1 | 79 | | => CreateTransaction(TransactionType.Cancelled, orders, userName, createDateTime, comment); |
| | | 80 | | |
| | | 81 | | public Task<(int, string, int)> CreateCustomerReturnTransaction(List<Order> orders, string userName, |
| | | 82 | | DateTime createDateTime, string comment) |
| | 1 | 83 | | => CreateTransaction(TransactionType.CustomerReturn, orders, userName, createDateTime, comment); |
| | | 84 | | |
| | | 85 | | public Task<(int, string, int)> CreateWarehouseChangeTransaction(List<Order> orders, string userName, |
| | | 86 | | DateTime createDateTime, string comment) |
| | 1 | 87 | | => CreateTransaction(TransactionType.WarehouseChange, orders, userName, createDateTime, comment); |
| | | 88 | | |
| | | 89 | | public Task<(int, string, int)> CreateReturnToSupplierTransaction(List<Order> orders, string userName, |
| | | 90 | | DateTime createDateTime, string comment) |
| | 1 | 91 | | => CreateTransaction(TransactionType.ReturnToSupplier, orders, userName, createDateTime, comment); |
| | | 92 | | |
| | | 93 | | public Task<(int, string, int)> CreateReturnToWarehouseTransaction(List<Order> orders, string userName, |
| | | 94 | | DateTime createDateTime, string comment) |
| | 1 | 95 | | => CreateTransaction(TransactionType.ReturnToWarehouse, orders, userName, createDateTime, comment); |
| | | 96 | | |
| | | 97 | | public Task<(int, string, int)> CreateWarehouseTransferTransaction(List<Order> orders, string userName, |
| | | 98 | | DateTime createDateTime, string comment) |
| | 1 | 99 | | => CreateTransaction(TransactionType.WarehouseTransfer, orders, userName, createDateTime, comment); |
| | | 100 | | |
| | | 101 | | public Task<(int, string, int)> CreateShippedToCommissionerTransaction(List<Order> orders, string userName, |
| | | 102 | | DateTime createDateTime, string comment) |
| | 1 | 103 | | => CreateTransaction(TransactionType.ShippedToCommissioner, orders, userName, createDateTime, comment); |
| | | 104 | | |
| | | 105 | | public Task<(int, string, int)> CreateReturnTransferTransaction(List<Order> orders, string userName, |
| | | 106 | | DateTime createDateTime, string comment) |
| | 1 | 107 | | => CreateTransaction(TransactionType.ReturnTransfer, orders, userName, createDateTime, comment); |
| | | 108 | | |
| | | 109 | | public Task<(int, string, int)> CreateLostByCommissionerTransaction(List<Order> orders, string userName, |
| | | 110 | | DateTime createDateTime, string comment) |
| | 1 | 111 | | => CreateTransaction(TransactionType.LostByCommissioner, orders, userName, createDateTime, comment); |
| | | 112 | | |
| | | 113 | | private void ConfirmAccepted(Order order) |
| | | 114 | | { |
| | 41 | 115 | | order.IsAccepted = true; |
| | 41 | 116 | | order.IsVerified = true; |
| | 41 | 117 | | order.UpdatedColumns = null; |
| | 41 | 118 | | } |
| | | 119 | | } |
| | | 120 | | } |