Ejemplo n.º 1
0
 private Task <AuctionDataFile> _getAuctionDataTask(AuctionFile auctionFile)
 {
     return(new Task <AuctionDataFile>(() =>
     {
         var apiResponse = ApiProvider.GetFromJson(new ApiRequest <AuctionDataFile>(new Uri(auctionFile.Url)));
         return apiResponse;
     }));
 }
        public void OpenAuction(CreateAuctionViewModel model, Guid organizationId)
        {
            if (model == null)
            {
                throw new Exception($"{typeof(CreateAuctionViewModel).Name} is null");
            }

            int maximumAllowedActiveAuctions = 3;

            var auctionsCheck = _applicationDbContext.Auctions
                                .Where(p => p.OrganizationId == organizationId && p.Status == AuctionStatus.Active)
                                .Count() < maximumAllowedActiveAuctions;

            var categoryCheck = _applicationDbContext.AuctionTypes
                                .SingleOrDefault(p => p.Name == model.AuctionType);

            if (categoryCheck == null)
            {
                AuctionType auctionType = new AuctionType()
                {
                    Id   = Guid.NewGuid(),
                    Name = model.AuctionType
                };
                _applicationDbContext.AuctionTypes.Add(auctionType);
                _applicationDbContext.SaveChanges();
                categoryCheck = auctionType;
            }

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


            Auction auction = new Auction()
            {
                Id                      = Guid.NewGuid(),
                Description             = model.Description,
                ShippingAddress         = model.ShippingAddress,
                ShippingConditions      = model.ShippingConditions,
                MinRatingForParticipant = model.RatingForParticipant,
                StartPrice              = model.StartPrice,
                PriceStep               = model.PriceStep,
                MinPrice                = model.MinPrice,
                StartDate               = model.StartDate,
                FinishDate              = model.FinishDate,
                Status                  = AuctionStatus.Active,
                AuctionTypeId           = categoryCheck.Id,
                OrganizationId          = organizationId
            };

            _applicationDbContext.Auctions.Add(auction);
            _applicationDbContext.SaveChanges();


            //загружаем файлы аукциона в бд
            List <AuctionFile> auctionFiles = new List <AuctionFile>();

            if (model.UploadFiles.Count != 0)
            {
                foreach (HttpPostedFileBase i in model.UploadFiles)
                {
                    AuctionFile file     = new AuctionFile();
                    byte[]      fileData = null;

                    // считываем файл в массив байтов
                    using (var binaryReader = new BinaryReader(i.InputStream))
                    {
                        fileData = binaryReader.ReadBytes(i.ContentLength);
                    }

                    // установка массива байтов
                    file.AuctionId = auction.Id;
                    file.FileName  = i.FileName;
                    file.Extension = i.ContentType;
                    file.Content   = fileData;
                    file.CreatedAt = DateTime.Now;
                    _applicationDbContext.AuctionFiles.Add(file);
                }
                _applicationDbContext.SaveChanges();
            }
        }
Ejemplo n.º 3
0
 public async Task <AuctionDataDump> GetAuctionDataDump(AuctionFile auctionHouseFile)
 {
     return(await JsonUtilities.DeserializeUrlAync <AuctionDataDump>(auctionHouseFile.Url).ConfigureAwait(false));
 }
 public static Task <AuctionDataFile> Enqueue(AuctionFile auctionFile)
 {
     return(Queue.Enqueue(() => ApiProvider.GetFromJson(new ApiRequest <AuctionDataFile>(new Uri(auctionFile.Url))), CancellationToken.None));
 }