public async Task <bool> AddProductAsync(int id, Rent rent) { var product = await this.productsService.GetProductByIdAsync(id); if (product == null || rent == null) { return(false); } if (rent.Products.Any(x => x.ProductId == id)) { return(true); } var rentProduct = new RentProduct { Product = product, Rent = rent, Quantity = 1, }; await this.context.AddAsync(rentProduct); await this.context.SaveChangesAsync(); return(true); }
//POST: ADD PRODUCT TO RENT_PRODUCT TABLE (USER CART) public bool RentNewProduct(RentProduct product) { SqlConnection con = null; SqlCommand cmd = null; int rowsUpdated = 0; try { //AUTO DISPOSABLE //STORED PROCEDURE : spRentNewProduct using (con = dbContext.Connect()) using (cmd = new SqlCommand("spRentNewProduct", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@ProductId", product.ProductId); cmd.Parameters.AddWithValue("@UserId", product.UserId); cmd.Parameters.AddWithValue("@CategoryId", product.CategoryId); cmd.Parameters.AddWithValue("@VendorId", product.VendorId); cmd.Parameters.AddWithValue("@ProductName", product.ProductName); cmd.Parameters.AddWithValue("@StartDate", product.StartDate); cmd.Parameters.AddWithValue("@EndDate", product.EndDate); cmd.Parameters.AddWithValue("@PayableAmount", product.PayableAmount); cmd.Parameters.AddWithValue("@PayStatus", product.PayStatus); cmd.Parameters.AddWithValue("@ProductImage", product.ProductImage); cmd.Parameters.AddWithValue("@BookingStatus", product.BookingStatus); con.Open(); rowsUpdated = cmd.ExecuteNonQuery(); con.Close(); } } catch (Exception e) { //LOG EXCEPTION logger.Fatal("RentNewProduct() in ProductActionsDAL (DAL) : ", e); return(false); } finally { if (con.State == ConnectionState.Open) { con.Close(); } } if (rowsUpdated == 0) { return(false); } else { return(true); } }
//POST: ADD PRODUCT TO RENTED_PRODUCTS public bool RentNewProduct(RentProductModel rentProductModel) { RentProduct rentProduct = new RentProduct(); bool status = false; Mapper.Map(rentProductModel, rentProduct); try { status = db.RentNewProduct(rentProduct); } catch (Exception e) { //LOG EXCEPTION logger.Fatal("RentNewProduct() in ProductActions Class of Business Layer : ", e); return(false); } return(status); }
public async Task ReturnAsyncShouldChangeRentedStatusToReturned(int productQuantity, bool isRented, RentStatus rentStatus, decimal penalty, ReturnedOnTime returnedOnTime, RentStatus expectedStatus, bool expextedIsRented, int expectedProductQuantity, decimal expectedPenalty) { var options = new DbContextOptionsBuilder <PhotoparallelDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; var dbContext = new PhotoparallelDbContext(options); var rent = new Rent { RentStatus = rentStatus }; dbContext.Rents.Add(rent); var productService = new Mock <IProductsService>(); var invoicesService = new Mock <IInvoicesService>(); var userService = new Mock <IUsersService>(); var product = new Product { Name = "Canon M50", Quantity = productQuantity, IsRented = isRented }; dbContext.Products.Add(product); var rentProduct = new RentProduct { Product = product, Quantity = 1 }; rent.Products.Add(rentProduct); await dbContext.SaveChangesAsync(); var rentsService = new RentsService(dbContext, userService.Object, invoicesService.Object, productService.Object); await rentsService.ReturnAsync(rent.Id, penalty, returnedOnTime); Assert.Equal(expectedStatus, rent.RentStatus); Assert.Equal(expextedIsRented, product.IsRented); Assert.Equal(expectedProductQuantity, product.Quantity); Assert.Equal(expectedPenalty, rent.Penalty); }