Example #1
0
 public Category(Guid id, string name)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateString(name, 2, 40);
     Id   = id;
     Name = name;
 }
Example #2
0
    public void HandleOperation(Guid customerId, Guid productId, int reserveDaysCount)
    {
        CustomValidator.ValidateId(customerId);
        CustomValidator.ValidateId(productId);
        if (reserveDaysCount > 7 || reserveDaysCount < 1)
        {
            return;
        }
        var customerExists = _customerRepository.Exists(customerId);
        var productExists  = _productRepository.Exists(productId);

        if (customerExists && productExists)
        {
            var product       = _productRepository.GetOne(productId);
            var checkForLimit = _bookRepository.GetCustomerBooks(customerId);
            if (checkForLimit.Count >= 3)
            {
                return;
            }
            product.ChangeStatus(ProductStatus.Booked);
            var book = new Book(Guid.NewGuid(), customerId, productId, reserveDaysCount);
            _productRepository.UpdateOne(product);
            _bookRepository.AddOne(book);
        }
    }
Example #3
0
    internal static void Detach <TEntity>(MyDbContext context, Guid id) where TEntity : class
    {
        CustomValidator.ValidateId(id);
        var entity = context.Set <TEntity>().Find(id);

        context.Entry(entity).State = EntityState.Detached;
    }
Example #4
0
 public StoreCategoryRelation(Guid storeId, Guid categoryId)
 {
     CustomValidator.ValidateId(storeId);
     CustomValidator.ValidateId(categoryId);
     StoreId    = storeId;
     CategoryId = categoryId;
 }
Example #5
0
 public StoreCategoryDbModel(Guid storeDbModelId, Guid categoryDbModelId)
 {
     CustomValidator.ValidateId(storeDbModelId);
     CustomValidator.ValidateId(categoryDbModelId);
     StoreDbModelId    = storeDbModelId;
     CategoryDbModelId = categoryDbModelId;
 }
Example #6
0
 public StoreProductRelation(Guid storeId, Guid productId)
 {
     CustomValidator.ValidateId(storeId);
     CustomValidator.ValidateId(productId);
     StoreId   = storeId;
     ProductId = productId;
 }
Example #7
0
 public StoreProductDbModel(Guid storeDbModelId, Guid productDbModelId)
 {
     CustomValidator.ValidateId(storeDbModelId);
     CustomValidator.ValidateId(productDbModelId);
     StoreDbModelId   = storeDbModelId;
     ProductDbModelId = productDbModelId;
 }
Example #8
0
        public async Task <ReservationOperationResult> HandleOperation(Guid clientId, Guid productId,
                                                                       int reserveDaysCount)
        {
            CustomValidator.ValidateId(clientId);
            CustomValidator.ValidateId(productId);
            if (reserveDaysCount > 7 || reserveDaysCount < 1)
            {
                return(ReservationOperationResult.InvalidParameters);
            }

            var clientExists  = _clientRepository.Exists(clientId);
            var productExists = _productRepository.Exists(productId);

            if (clientExists && productExists)
            {
                var product = await _productRepository.GetOne(productId);

                var clientBooksLimitCount = await _bookRepository.GetClientBooks(clientId);

                if (clientBooksLimitCount.Count >= 3)
                {
                    return(ReservationOperationResult.LimitExceeded);
                }

                product.ChangeStatus(ProductStatus.Booked);
                var book = new Book(Guid.NewGuid(), clientId, productId, reserveDaysCount);
                await _productRepository.UpdateOne(product);

                await _bookRepository.AddOne(book);

                return(ReservationOperationResult.Success);
            }

            return(ReservationOperationResult.Fail);
        }
Example #9
0
    public List <Book> GetCustomerBooks(Guid customerId)
    {
        CustomValidator.ValidateId(customerId);
        var bookDbModels = _context.Books.Where(b => b.CustomerId.Equals(customerId)).ToList();
        var books        = (from bookDbModel in bookDbModels select _bookMapper.DbToDomain(bookDbModel)).ToList();

        return(books);
    }
 private async Task <bool> StoreProductRelationExists(Guid storeId, Guid productId)
 {
     CustomValidator.ValidateId(storeId);
     CustomValidator.ValidateId(productId);
     await using var context = new MyDbContext(_options);
     return(await context.StoreProductRelation
            .AnyAsync(e => e.StoreDbModelId.Equals(storeId) && e.ProductDbModelId.Equals(productId)));
 }
Example #11
0
 public Customer(Guid id, string name, double balance)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateString(name, 2, 40);
     CustomValidator.ValidateNumber(balance, 0, 100_000_000);
     Id      = id;
     Name    = name;
     Balance = balance;
 }
Example #12
0
 public MallDbModel(Guid id, string name, string location)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateString(name, 2, 40);
     CustomValidator.ValidateString(location, 2, 40);
     Id             = id;
     Name           = name;
     Location       = location;
     _storeDbModels = new List <StoreDbModel>();
 }
Example #13
0
 public CategoryDbModel(Guid id, string name)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateString(name, 2, 40);
     Id                     = id;
     Name                   = name;
     _productDbModels       = new List <ProductDbModel>();
     _storeCategoryRelation = new List <StoreCategoryDbModel>();
     StoreDbModelId         = default;
 }
        public async Task <List <Book> > GetClientBooks(Guid clientId)
        {
            CustomValidator.ValidateId(clientId);
            await using var context = new MyDbContext(_options);
            var bookDbModels = await context.Books.Where(b => b.ClientId.Equals(clientId)).ToListAsync();

            var books = (from bookDbModel in bookDbModels select _bookMapper.DbToDomain(bookDbModel)).ToList();

            return(books);
        }
    public Product GetOne(Guid id)
    {
        CustomValidator.ValidateId(id);
        var exists = Exists(id);

        if (exists)
        {
            return(_productMapper.DbToDomain(_context.Products.Find(id)));
        }
        return(null);
    }
Example #16
0
 public Purchase(Guid id, Guid customerId, Guid productId, double priceAtPurchaseMoment)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateId(customerId);
     CustomValidator.ValidateId(productId);
     CustomValidator.ValidateNumber(priceAtPurchaseMoment, 0, 100_000_000);
     Id           = id;
     CustomerId   = customerId;
     ProductId    = productId;
     CreationTime = DateTimeOffset.UtcNow;
 }
        public async Task <List <Purchase> > GetClientPurchases(Guid clientId)
        {
            CustomValidator.ValidateId(clientId);
            await using var context = new MyDbContext(_options);
            var purchaseDbModels = await context.Purchases.Where(p => p.ClientId.Equals(clientId)).ToListAsync();

            var purchases = (from purchaseDbModel in purchaseDbModels
                             select _purchaseMapper.DbToDomain(purchaseDbModel)).ToList();

            return(purchases);
        }
    public Customer GetOne(Guid id)
    {
        CustomValidator.ValidateId(id);
        var exists = Exists(id);

        if (exists)
        {
            return(_customerMapper.DbToDomain(_context.Customers.Find(id)));
        }
        return(null);
    }
Example #19
0
    internal IReadOnlyCollection <ProductDbModel> GetStoreSpecificProducts(Guid storeId)
    {
        CustomValidator.ValidateId(storeId);
        var storeSpecificProducts = (from pr in _productDbModels
                                     from storeProdRel in pr.StoreProductRelation
                                     where storeProdRel.StoreDbModelId.Equals(storeId) &&
                                     storeProdRel.ProductDbModel.CategoryId.Equals(Id)
                                     select storeProdRel.ProductDbModel).ToList().AsReadOnly();

        return(storeSpecificProducts);
    }
        public async Task <List <Product> > GetClientPurchasedProducts(Guid clientId)
        {
            CustomValidator.ValidateId(clientId);
            await using var context = new MyDbContext(_options);
            var purchasedProductDbModels = await(from productDbModel in context.Products
                                                 join purchaseDbModel in context.Purchases on productDbModel.Id equals purchaseDbModel.ProductId
                                                 select productDbModel).ToListAsync();
            var purchasedProducts = (from purchasedProductDbModel in purchasedProductDbModels
                                     select _productMapper.DbToDomain(purchasedProductDbModel)).ToList();

            return(purchasedProducts);
        }
Example #21
0
 public Product(Guid id, string name, double priceInUAH, ProductStatus productStatus, Guid categoryId)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateId(categoryId);
     CustomValidator.ValidateString(name, 2, 40);
     CustomValidator.ValidateNumber(priceInUAH, 0, 100_000_000);
     Id            = id;
     Name          = name;
     PriceInUAH    = priceInUAH;
     ProductStatus = productStatus;
     CategoryId    = categoryId;
 }
    public Category GetOne(Guid id)
    {
        CustomValidator.ValidateId(id);
        var exists = Exists(id);

        if (exists)
        {
            var categoryDbModel = _context.Categories.Find(id);
            return(_categoryMapper.DbToDomain(categoryDbModel));
        }

        return(null);
    }
    public void DeleteOne(Guid id)
    {
        CustomValidator.ValidateId(id);
        var exists = Exists(id);

        if (exists)
        {
            var storeDbModel = _context.Stores.Find(id);
            var enState      = _context.Stores.Remove(storeDbModel);
            enState.State = EntityState.Deleted;
            _context.SaveChanges();
        }
    }
        public async Task DeleteProductFromStore(Product product, Guid storeId)
        {
            CustomValidator.ValidateObject(product);
            CustomValidator.ValidateId(storeId);
            await using var context = new MyDbContext(_options);
            var storeProdRelToRemove = await context.StoreProductRelation.FirstAsync(e =>
                                                                                     e.ProductDbModelId.Equals(product.Id) && e.StoreDbModelId.Equals(storeId));

            var enState = context.StoreProductRelation.Remove(storeProdRelToRemove);

            enState.State = EntityState.Deleted;
            await context.SaveChangesAsync();
        }
Example #25
0
 public StoreDbModel(Guid id, string name, string location, double profit)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateString(name, 2, 60);
     CustomValidator.ValidateString(location, 2, 60);
     CustomValidator.ValidateNumber(profit, 0, double.MaxValue);
     Id       = id;
     Name     = name;
     Location = location;
     Profit   = profit;
     _storeCategoryRelation = new List <StoreCategoryDbModel>();
     _storeProductRelation  = new List <StoreProductDbModel>();
 }
 public ProductDbModel(Guid id, string name, double priceInUAH, ProductStatus productStatus, Guid categoryId)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateId(categoryId);
     CustomValidator.ValidateString(name, 2, 60);
     CustomValidator.ValidateNumber(priceInUAH, 0, 100_000_000);
     Id                    = id;
     Name                  = name;
     PriceInUAH            = priceInUAH;
     ProductStatus         = productStatus;
     CategoryId            = categoryId;
     _storeProductRelation = new List <StoreProductDbModel>();
 }
        public async Task DeleteOne(Guid id)
        {
            CustomValidator.ValidateId(id);
            await using var context = new MyDbContext(_options);
            if (Exists(id))
            {
                var storeDbModel = await context.Stores.FindAsync(id);

                var enState = context.Stores.Remove(storeDbModel);
                enState.State = EntityState.Deleted;
                await context.SaveChangesAsync();
            }
        }
Example #28
0
 public Book(Guid id, Guid customerId, Guid productId, int reserveDaysCount)
 {
     CustomValidator.ValidateNumber(reserveDaysCount, 1, 7);
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateId(customerId);
     CustomValidator.ValidateId(productId);
     Id               = id;
     CustomerId       = customerId;
     ProductId        = productId;
     CreationTime     = DateTimeOffset.UtcNow;
     ExpirationTime   = CreationTime.AddDays(reserveDaysCount);
     ReserveDaysCount = reserveDaysCount;
 }
Example #29
0
 public PurchaseDbModel(Guid id, Guid customerId, Guid productId, DateTimeOffset creationTime,
                        double priceAtPurchaseMoment)
 {
     CustomValidator.ValidateId(id);
     CustomValidator.ValidateId(customerId);
     CustomValidator.ValidateId(productId);
     CustomValidator.ValidateNumber(priceAtPurchaseMoment, 0, 100_000_000);
     Id                    = id;
     CustomerId            = customerId;
     ProductId             = productId;
     CreationTime          = creationTime;
     PriceAtPurchaseMoment = priceAtPurchaseMoment;
 }
        public async Task <Product> GetOne(Guid id)
        {
            CustomValidator.ValidateId(id);
            await using var context = new MyDbContext(_options);
            if (Exists(id))
            {
                var productDbModel = await context.Products.FindAsync(id);

                return(_productMapper.DbToDomain(productDbModel));
            }

            return(null);
        }