Ejemplo n.º 1
0
        public void Execute(int request)
        {
            var category = _context.Categories.Find(request);

            if (category == null)
            {
                throw new EntityNotFoundException(request, typeof(Category));
            }
            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                category.IsActive  = false;
                category.IsDeleted = true;
                category.DeletedAt = DateTime.Now;
                _context.SaveChanges();
                var products = _context.Products.Where(p => p.CategoryId == category.Id);

                foreach (var product in products)
                {
                    product.IsActive  = false;
                    product.IsDeleted = true;
                    product.DeletedAt = DateTime.Now;
                }
                _context.SaveChanges();
                dbContextTransaction.Commit();
            }
        }
Ejemplo n.º 2
0
        public void Execute(int request)
        {
            var role = _context.Roles.Find(request);

            if (role == null)
            {
                throw new EntityNotFoundException(request, typeof(Role));
            }
            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                role.IsActive  = false;
                role.IsDeleted = true;
                role.DeletedAt = DateTime.Now;

                _context.SaveChanges();

                var users = _context.Users.Where(u => u.RoleId == role.Id);

                foreach (var user in users)
                {
                    user.IsActive  = false;
                    user.IsDeleted = true;
                    user.DeletedAt = DateTime.Now;
                }
                _context.SaveChanges();
                dbContextTransaction.Commit();
            }
        }
Ejemplo n.º 3
0
 public void Log(IUseCase useCase, IApplicationActor actor, object useCaseData)
 {
     _context.UseCaseLogs.Add(new UseCaseLogs
     {
         Actor       = actor.Identity,
         Data        = JsonConvert.SerializeObject(useCaseData),
         Date        = DateTime.UtcNow,
         UseCaseName = useCase.Name
     });
     _context.SaveChanges();
 }
Ejemplo n.º 4
0
        public void Execute(RoleDto request)
        {
            _validator.ValidateAndThrow(request);
            var role = new Role
            {
                Name = request.Name
            };

            _context.Roles.Add(role);
            _context.SaveChanges();
        }
        public void Execute(IEnumerable <ProductPictureDeleteDto> request)
        {
            var query = _context.Pictures;

            foreach (var item in request)
            {
                var productPicture = query.Find(item.IdPicture);
                _context.Pictures.Remove(productPicture);
            }
            _context.SaveChanges();
        }
Ejemplo n.º 6
0
        public void Execute(UserPutDto request)
        {
            _validator.ValidateAndThrow(request);
            var user = _context.Users.Find(request.Id);

            user.FirstName = request.FirstName;
            user.LastName  = request.LastName;
            user.Email     = request.Email;

            _context.SaveChanges();
        }
Ejemplo n.º 7
0
        public void Execute(CategoryDto request)
        {
            _validator.ValidateAndThrow(request);

            var category = new Category
            {
                Name = request.Name
            };

            _context.Categories.Add(category);
            _context.SaveChanges();
        }
Ejemplo n.º 8
0
        public void Execute(UserPostDto request)
        {
            _validator.ValidateAndThrow(request);
            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                var user = new User
                {
                    FirstName = request.FirstName,
                    LastName  = request.LastName,
                    Email     = request.Email,
                    Pass      = request.Pass,
                    PID       = request.PID,
                    RoleId    = 2
                };

                _context.Users.Add(user);
                _context.SaveChanges();

                var authUseCases = new List <int> {
                    13, 17, 23, 7, 6, 18
                };
                foreach (var useCase in authUseCases)
                {
                    var useCaseRow = new UserUseCase
                    {
                        UserId    = user.Id,
                        UseCaseId = useCase
                    };
                    _context.UserUseCases.Add(useCaseRow);
                }
                _context.SaveChanges();
                dbContextTransaction.Commit();
            }
            _sender.Send(new SendEmailDto
            {
                Content = "<h1>You are successfully registrated now!</h1>",
                SendTo  = request.Email,
                Subject = "E-store registration"
            });
        }
Ejemplo n.º 9
0
        public void Execute(ProductDto request)
        {
            _validator.ValidateAndThrow(request);
            var paths   = UploadService.UploadImages(request.Images);
            var product = new Product
            {
                Name        = request.Name,
                Description = request.Description,
                Stock       = request.Stock,
                ImagePath   = paths[0],
                CategoryId  = request.CategoryId
            };

            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                _context.Products.Add(product);
                _context.SaveChanges();
                int LastProductId = product.Id;
                for (int i = 1; i < paths.Count; i++)
                {
                    var productPicture = new Picture
                    {
                        ImagePath = paths[i],
                        ProductId = LastProductId
                    };
                    _context.Pictures.Add(productPicture);
                }
                _context.SaveChanges();

                var price = new PriceHistory
                {
                    Price     = request.Price,
                    ProductId = LastProductId
                };
                _context.PriceHistory.Add(price);
                _context.SaveChanges();
                dbContextTransaction.Commit();
            }
        }
Ejemplo n.º 10
0
        public void Execute(UpdateProductDto request)
        {
            if (_context.Products.Any(pr => pr.Name == request.Name))
            {
            }
            _validator.ValidateAndThrow(request);

            var product = _context.Products.AsQueryable().Include(p => p.Prices).Where(p => p.Id == request.Id).FirstOrDefault();

            var pathImage = product.ImagePath;

            if (request.Image != null)
            {
                pathImage = UploadService.UploadImage(request.Image);
            }

            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                product.Name        = request.Name;
                product.Description = request.Description;
                product.Stock      += request.Stock;
                product.ImagePath   = pathImage;
                _context.SaveChanges();
                if (!_context.PriceHistory.Where(prod => prod.ProductId == request.Id).Any(price => price.Price == request.Price))
                {
                    var price = new PriceHistory
                    {
                        Price     = request.Price,
                        ProductId = request.Id
                    };
                    _context.PriceHistory.Add(price);
                    _context.SaveChanges();
                }


                dbContextTransaction.Commit();
            }
        }
Ejemplo n.º 11
0
        public void Execute(int request)
        {
            var user = _context.Users.Find(request);

            if (user == null)
            {
                throw new EntityNotFoundException(request, typeof(User));
            }
            user.IsDeleted = true;
            user.IsActive  = false;
            user.DeletedAt = DateTime.Now;

            _context.SaveChanges();
        }
Ejemplo n.º 12
0
        public void Execute(CategoryPutDto request)
        {
            _validator.ValidateAndThrow(request);
            var category = _context.Categories.Find(request.Id);

            if (category == null)
            {
                throw new EntityNotFoundException(request.Id, typeof(Category));
            }

            category.Name = request.Name;

            _context.SaveChanges();
        }
Ejemplo n.º 13
0
        public void Execute(int request)
        {
            var product = _context.Products.Find(request);

            if (product == null)
            {
                throw new EntityNotFoundException(request, typeof(Product));
            }
            product.IsDeleted = true;
            product.IsActive  = false;
            product.DeletedAt = DateTime.Now;

            _context.SaveChanges();
        }
Ejemplo n.º 14
0
        public void Execute(RolePutDto request)
        {
            _validator.ValidateAndThrow(request);

            var role = _context.Roles.Find(request.Id);

            if (role == null)
            {
                throw new EntityNotFoundException(request.Id, typeof(Role));
            }

            role.Name = request.Name;
            _context.SaveChanges();
        }
        public void Execute(NewProductPictureDto request)
        {
            var paths = UploadService.UploadImages(request.Pictures);

            for (int i = 0; i < paths.Count; i++)
            {
                var productPicture = new Picture
                {
                    ImagePath = paths[i],
                    ProductId = request.ProductId
                };
                _context.Pictures.Add(productPicture);
            }
            _context.SaveChanges();
        }
Ejemplo n.º 16
0
        public void Execute(OrderDto request)
        {
            _validator.ValidateAndThrow(request);

            var userId = _actor.Id;

            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                var order = new Order
                {
                    Address       = request.Address,
                    UserId        = userId,
                    OrderStatus   = OrderStatus.OnHold,
                    PaymentOption = request.PaymentOption
                };
                _context.Orders.Add(order);
                _context.SaveChanges();
                foreach (var line in request.OrderLines)
                {
                    var product   = _context.Products.Include(p => p.Prices).Where(p => p.Id == line.ProductId).FirstOrDefault();
                    var orderLine = new OrderLine
                    {
                        Name      = product.Name,
                        Price     = product.Prices.OrderByDescending(date => date.CreatedAt).FirstOrDefault().Price,
                        OrderId   = order.Id,
                        ProductId = product.Id,
                        Quantity  = line.Quantity
                    };
                    product.Stock -= line.Quantity;
                    _context.OrderLines.Add(orderLine);
                }

                _context.SaveChanges();
                dbContextTransaction.Commit();
            }
        }
Ejemplo n.º 17
0
        public void Execute(ChangeOStatusDto request)
        {
            var order = _context.Orders.AsQueryable().Include(o => o.OrderLines).ThenInclude(order => order.Product).FirstOrDefault(o => o.Id == request.OrderId);


            if (order == null)
            {
                throw new EntityNotFoundException(request.OrderId, typeof(Order));
            }

            if (order.OrderStatus == OrderStatus.Delivered)
            {
                throw new ConflictOrderStatusException("Cannot change status of delivered order!");
            }

            if (order.OrderStatus == OrderStatus.OnHold)
            {
                if (request.Status == OrderStatus.Delivered)
                {
                    throw new ConflictOrderStatusException("Order cannot be changed from recieved to delivered directly!");
                }
            }

            if (request.Status == OrderStatus.Canceled || request.Status == OrderStatus.Shipped)
            {
                order.OrderStatus = request.Status;
                if (request.Status == OrderStatus.Canceled)
                {
                    foreach (var item in order.OrderLines)
                    {
                        item.Product.Stock += item.Quantity;
                    }
                }
                _context.SaveChanges();
            }
        }