public OpenAuctionProcessException(OpenAuctionRequestVm model, string text)
     : base(text)
 {
     ModelOnException = model;
     ExceptionText    = text;
     ExceptionTime    = DateTime.Now;
 }
Example #2
0
        public void OpenAuction(OpenAuctionRequestVm model, int organizationId)
        {
            if (model == null)
            {
                throw new ArgumentNullException($"{typeof(OpenAuctionRequestVm).Name} is null");
            }

            int maximumAllowedActiveAuctions = 3;

            var auctionsCheck = _aplicationDbContext
                                .Organizations
                                .Find(organizationId)
                                .Auctions
                                .Where(p => p.AuctionStatus == AuctionStatus.Active)
                                .Count() < maximumAllowedActiveAuctions;

            var categoryCheck = _aplicationDbContext.AuctionCategories
                                .SingleOrDefault(p => p.Name == model.AuctionCategory);

            if (categoryCheck == null)
            {
                throw new Exception("Ошибка валидации модели!");
            }

            int categoryChecked = categoryCheck.Id;

            if (!auctionsCheck)
            {
                throw new OpenAuctionProcessException(model, "Превышено максимальное количество активных аукционов!");
            }

            Auction auction = new Auction()
            {
                Description        = model.Description,
                ShippingAddress    = model.ShippingAddress,
                ShippingConditions = model.ShippingConditions,
                PriceAtStart       = model.PriceAtStart,
                PriceChangeStep    = model.PriceChangeStep,
                PriceAtMinimum     = model.PriceAtMinimum,
                StartDate          = model.StartDate,
                FinishDateExpected = model.FinishDateExpected,
                AuctionStatus      = AuctionStatus.Active,
                AuctionCategoryId  = categoryChecked,
                OrganizationId     = organizationId
            };

            _aplicationDbContext.Auctions.Add(auction);
            _aplicationDbContext.SaveChanges();
        }
Example #3
0
        public static void OpenAuction(int organizationId)
        {
            OpenAuctionRequestVm openAuction = new OpenAuctionRequestVm()
            {
                Category           = "test",
                Description        = "TestDiscription",
                FinishDateExpected = DateTime.Now.AddDays(5),
                PriceAtMinimum     = 300000,
                PriceAtStart       = 500000,
                PriceChangeStep    = 50000,
                ShippingAddress    = "TestShippingAdress",
                ShippingConditions = "TestShippingConditions",
                StartDate          = DateTime.Now
            };

            AuctionManagementService auctionService = new AuctionManagementService();

            auctionService.OpenAuction(openAuction, organizationId);
        }
Example #4
0
        public void OpenAuction(OpenAuctionRequestVm model, int organizationId)
        {
            if (model == null)
            {
                throw new ArgumentNullException($"{typeof(OpenAuctionRequestVm).Name} is null");
            }

            int maximumAllowedActiveAuctions = 3;

            var auctionsCheck = _aplicationDbContext
                                .Organizations
                                .Find(organizationId)
                                .Auctions
                                .Where(p => p.AuctionStatus == AuctionStatus.Active)
                                .Count() < maximumAllowedActiveAuctions;

            var categoryCheck = _aplicationDbContext.AuctionCategories
                                .SingleOrDefault(p => p.Name == model.AuctionCategory);

            if (categoryCheck == null)
            {
                throw new Exception("Ошибка валидации модели!");
            }

            if (!auctionsCheck)
            {
                throw new OpenAuctionProcessException(model, "Превышено максимальное количество активных аукционов!");
            }

            var auctionModel = Mapper.Map <Auction>(model);

            auctionModel.AuctionStatus  = AuctionStatus.Active;
            auctionModel.Category       = categoryCheck;
            auctionModel.OrganizationId = organizationId;
            _aplicationDbContext.Auctions.Add(auctionModel);
            _aplicationDbContext.SaveChanges();
        }