public void Handle(DeleteProductCommand command)
        {
            var matchedProduct = context.Set <BaseProduct>()
                                 .FirstOrDefault(x => x.Id == command.Id);

            if (matchedProduct == null)
            {
                throw new NullReferenceException();
            }

            context.Set <BaseProduct>().Remove(matchedProduct);

            context.SaveChanges();
        }
Beispiel #2
0
        public CustomerDetailsDto[] Handle(GetAllCustomerQuery query)
        {
            var customers    = context.Set <CustomerBase>().Where(x => x.Id != null).ToArray();
            var customerDtos = mapper.Map <CustomerDetailsDto[]>(customers);

            return(customerDtos);
        }
        public UpdateProductValidationResult ValidListOfProductResult(IEnumerable <UpdatedProductSnapshot> productSnapshotDtos)
        {
            var allProductNumber = context.Set <BaseProduct>()
                                   .Where(x => x.Id != null)
                                   .Select(x => new UpdatedProduct
            {
                ProductNumber = x.ProductNumber,
                Amount        = x.Quantity
            }).ToList();

            return(new UpdateProductValidationResult
            {
                IsValid = CheckValidProduct(productSnapshotDtos, allProductNumber),
                InvalidProdcutNumbers = GetInValidProductNumber(productSnapshotDtos, allProductNumber)
            });
        }
        public IEnumerable <BaseProductDto> Handle(GetAllProductsQuery query)
        {
            var modelProducts = context.Set <BaseProduct>().Where(x => x.Id != null).ToArray();

            var listProductDtos = MapModelProductToDto(modelProducts);

            return(listProductDtos);
        }
        public BaseProductDto Handle(GetProductByNumberQuery query)
        {
            var baseProduct = context.Set <BaseProduct>()
                              .AsNoTracking()
                              .FirstOrDefault(x => x.ProductNumber.Contains(query.ProductNumber));

            return(mapper.Map <BaseProductDto>(baseProduct));
        }
        public TransactionDto[] Handle(GetAllTransactionsQuery query)
        {
            var transactions = context.Set <Transaction>()
                               .Where(x => x.Id != null).ToArray()
                               .OrderByDescending(x => x.CreatedAt);

            return(mapper.Map <TransactionDto[]>(transactions));
        }
        public string Handle(CreateBaseProductCommand command)
        {
            var existingProduct = context.Set <BaseProduct>()
                                  .FirstOrDefault(x => x.ProductNumber == command.ProductNumber);

            if (existingProduct != null)
            {
                throw new DuplicateProductException(command.ProductNumber);
            }

            var newProduct = mapper.Map <BaseProduct>(command);

            context.Set <BaseProduct>().Add(newProduct);

            context.SaveChangesAsync();

            return(newProduct.ProductNumber);
        }
Beispiel #8
0
        public string Handle(DeleteTransactionCommand command)
        {
            var existingTransaction = context.Set <Transaction>()
                                      .Include(x => x.ProductSnapshot)
                                      .FirstOrDefault(x => x.TransactionNumber == command.TransactionId);

            if (existingTransaction == null)
            {
                throw new TransactionIsNotExistException(command.TransactionId);
            }

            productUpdater.DeleteExistingProductSnapshot(existingTransaction.Id);

            context.Set <Transaction>().Remove(existingTransaction);

            context.SaveChanges();

            return(command.TransactionId);
        }
Beispiel #9
0
        public CustomerDetailsDto Handle(GetCustomerByIdQuery query)
        {
            var customer = context.Set <Customerbase>()
                           .AsNoTracking()
                           .FirstOrDefault(x => x.CustomerId == query.CustomerId);

            var customerDto = mapper.Map <CustomerDetailsDto>(customer);

            return(customerDto);
        }
Beispiel #10
0
        public string Handle(CreateCustomerCommand command)
        {
            var existingCustomer = context.Set <CustomerModel>()
                                   .AsNoTracking()
                                   .FirstOrDefault(x => x.CustomerId == command.CustomerId);

            if (existingCustomer != null)
            {
                throw new DuplicateCustomerException(command.CustomerId);
            }

            var newCustomer = mapper.Map <CustomerModel>(command);

            context.Set <CustomerModel>().Add(newCustomer);

            context.SaveChanges();

            return(newCustomer.CustomerId);
        }
        public CustomerDetailsDto[] Handle(SearchCustomerQuery query)
        {
            var predicate = MatchBySearchTerm(query.SearchTerm);
            var customers = context.Set <MasterCustomer>()
                            .AsNoTracking()
                            .Where(predicate)
                            .ToArray();

            return(mapper.Map <CustomerDetailsDto[]>(customers));
        }
Beispiel #12
0
        public TransactionDto Handle(GetTransactionByIdQuery query)
        {
            var transaction = context.Set <Transaction>()
                              .Include(x => x.ProductSnapshot)
                              .AsNoTracking()
                              .FirstOrDefault(x => x.Id == query.Id);

            var transactionDto = mapper.Map <TransactionDto>(transaction);

            return(transactionDto);
        }
Beispiel #13
0
        public BaseProductDto Handle(GetBaseProductByIdQuery query)
        {
            var product = context.Set <BaseProduct>().SingleOrDefault(x => x.Id == query.ProductId);

            if (product == null)
            {
                throw new Exception();
            }

            var dto = mapper.Map <BaseProductDto>(product);

            return(dto);
        }
Beispiel #14
0
        public string Handle(CreateTransactionCommand command)
        {
            var existingTransaction = context.Set <Transaction>()
                                      .FirstOrDefault(x => x.TransactionNumber == command.TransactionNumber);

            if (existingTransaction != null)
            {
                throw new DuplicateTransactionNumerException(command.TransactionNumber);
            }

            var transaction = mapper.Map <Transaction>(command);

            var customer = customerUpdater.GetCustomerByCustomerNumber(command.CustomerId);

            if (customer != null)
            {
                transaction.CustomerId = customer.Id;
                customerUpdater.UpdateCustomerEmotion(customer, command);
            }

            if (productUpdater.ValidListOfProductResult(mapper.Map <IEnumerable <UpdatedProductSnapshot> >(command.ProductSnapshotDto)).IsValid)
            {
                transaction.ProductSnapshot = productUpdater.CreateNewListofProductSnapshot(
                    mapper.Map <IEnumerable <UpdatedProductSnapshot> >(command.ProductSnapshotDto),
                    transaction.Id);

                context.Set <Transaction>().Add(transaction);

                context.SaveChangesAsync();

                //TODO: Move this function after implementing background jobs.
                productUpdater.UpdateProductQuantity(mapper.Map <IEnumerable <UpdatedProductSnapshot> >(command.ProductSnapshotDto));
            }

            return(transaction.TransactionNumber);
        }
Beispiel #15
0
        public string Handle(EditCustomerCommand command)
        {
            var existingCustomer = context.Set <CustomerBase>()
                                   .FirstOrDefault(x => x.CustomerId == command.CustomerId);

            if (existingCustomer == null)
            {
                throw new CustomerNotFoundException(command.CustomerId);
            }

            existingCustomer.Update(mapper.Map <Model.Customer.UpdatedCustomer>(command));

            context.SaveChanges();

            return(existingCustomer.CustomerId);
        }
Beispiel #16
0
        public Guid Handle(UpdateTransactionCommand command)
        {
            var existingtransaction = context.Set <Transaction>()
                                      .FirstOrDefault(x => x.TransactionNumber == command.TransactionNumber);

            if (existingtransaction == null)
            {
                throw new TransactionIsNotExistException(command.TransactionNumber);
            }

            existingtransaction.Update(mapper.Map <UpdatedTransaction>(command));

            UpdateProduct(existingtransaction, command);

            context.SaveChanges();

            return(existingtransaction.Id);
        }
Beispiel #17
0
        public string Handle(EditProductCommnand commnand)
        {
            var existingProduct = context.Set <BaseProduct>()
                                  .SingleOrDefault(x => x.ProductNumber == commnand.ProductNumber);

            if (existingProduct == null)
            {
                throw new NullReferenceException($"The product with ID {commnand.ProductNumber} does not exist.");
            }

            existingProduct.Update(
                commnand.Name,
                commnand.Price,
                commnand.Quantity,
                commnand.ExpiryDate,
                commnand.ManufacturingDate);

            context.SaveChanges();

            return(existingProduct.ProductNumber);
        }
 public CustomerModel GetCustomerByCustomerNumber(string customerNumber)
 {
     return(context.Set <CustomerModel>()
            .FirstOrDefault(x => x.CustomerId == customerNumber));
 }
Beispiel #19
0
        public CustomerDetailsDto Handle(SearchCustomerByCustomerNumberQuery query)
        {
            var customer = context.Set <CustomerMaster>().SingleOrDefault(c => c.CustomerId.Contains(query.CustomerNumber));

            return(mapper.Map <CustomerDetailsDto>(customer));
        }