public Category(Guid id, string name) { CustomValidator.ValidateId(id); CustomValidator.ValidateString(name, 2, 40); Id = id; Name = name; }
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); } }
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; }
public StoreCategoryRelation(Guid storeId, Guid categoryId) { CustomValidator.ValidateId(storeId); CustomValidator.ValidateId(categoryId); StoreId = storeId; CategoryId = categoryId; }
public StoreCategoryDbModel(Guid storeDbModelId, Guid categoryDbModelId) { CustomValidator.ValidateId(storeDbModelId); CustomValidator.ValidateId(categoryDbModelId); StoreDbModelId = storeDbModelId; CategoryDbModelId = categoryDbModelId; }
public StoreProductRelation(Guid storeId, Guid productId) { CustomValidator.ValidateId(storeId); CustomValidator.ValidateId(productId); StoreId = storeId; ProductId = productId; }
public StoreProductDbModel(Guid storeDbModelId, Guid productDbModelId) { CustomValidator.ValidateId(storeDbModelId); CustomValidator.ValidateId(productDbModelId); StoreDbModelId = storeDbModelId; ProductDbModelId = productDbModelId; }
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); }
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))); }
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; }
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>(); }
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); }
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); }
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); }
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(); }
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(); } }
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; }
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); }