Пример #1
0
        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);
            }
        }
Пример #3
0
        //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);
        }