Esempio n. 1
0
        public void GetRating(int PutsOrganizationId, int OrganizationId, double score)
        {
            var AuctionExist = _aplicationDbContext.Auctions
                               .Where(p => p.OrganizationId == PutsOrganizationId)
                               .Where(p => p.AuctionStatus == AuctionStatus.Finished).ToList();

            if (AuctionExist.Count != 0)
            {
                foreach (var item in AuctionExist)
                {
                    var BidExist = _aplicationDbContext.Bids
                                   .SingleOrDefault(p => p.Id == item.WinnerBidId);
                    if (BidExist.OrganizationId == OrganizationId)
                    {
                        OrganizationRating raiting = new OrganizationRating()
                        {
                            Score          = score,
                            OrganizationId = OrganizationId
                        };
                        _aplicationDbContext.OrganizationRatings.Add(raiting);
                        _aplicationDbContext.SaveChanges();
                    }
                }
            }
        }
        public async Task <IActionResult> setMarkup(int id, [FromBody] JObject data)
        {
            ApplicationUser user = await _userManager.FindByNameAsync(_userManager.GetUserId(User));

            Order order = await dbContext.Order
                          .Where(t => t.ID == id)
                          .Where(t => t.User_ID == user)
                          .Include(t => t.Service_ID)
                          .Include(t => t.Organization_ID)
                          .FirstOrDefaultAsync();

            if (dbContext.OrganizationMarkup.Any(t => t.Order_ID == order))
            {
                return(BadRequest());
            }

            OrganizationRating organizationRating = new OrganizationRating()
            {
                Order_ID = order,
                User_ID  = user,
                Value    = data["value"].ToObject <decimal>(),
                Comment  = data["comment"].ToObject <string>()
            };

            dbContext.OrganizationMarkup.Add(organizationRating);

            await dbContext.SaveChangesAsync();

            return(Ok(organizationRating));
        }
        public void RateOrganization(RateOrganizationVm model)
        {
            var organizationExists = _aplicationDbContext.Organizations.SingleOrDefault(p => p.Id == model.OrganizationId);

            if (organizationExists == null)
            {
                throw new Exception("Организации с таким номером не имеется");
            }

            var auctionExists = _aplicationDbContext.Auctions.SingleOrDefault(p => p.Id == model.AuctionId);

            if (auctionExists == null)
            {
                throw new Exception("Аукциона с таким номером не имеется");
            }

            var rateExists = _aplicationDbContext.OrganizationRatings.SingleOrDefault(p => p.OrganizationId == model.OrganizationId &&
                                                                                      p.AuctionId == model.AuctionId);

            if (rateExists != null)
            {
                throw new Exception("Данная организация уже имеет рейтинг по выбранному аукциону");
            }

            OrganizationRating organizationRating = new OrganizationRating()
            {
                OrganizationId = model.OrganizationId,
                AuctionId      = model.AuctionId,
                Point          = model.Point
            };

            _aplicationDbContext.OrganizationRatings.Add(organizationRating);
            _aplicationDbContext.SaveChanges();
        }
        public void PutRatingScoreToOrganization(Guid organizationId, double score)
        {
            var organization = _applicationDbContext.Organizations.SingleOrDefault(p => p.Id == organizationId);

            if (organization == null)
            {
                throw new Exception($"Организации с таким id {organizationId} не существует");
            }

            OrganizationRating rating = new OrganizationRating()
            {
                Id             = Guid.NewGuid(),
                Score          = score,
                OrganizationId = organization.Id
            };

            _applicationDbContext.OrganizationRatings.Add(rating);
            _applicationDbContext.SaveChanges();
        }
        public void OrganizationManagementService_PutRatingScoreToOrganization()
        {
            ApplicationDbContext applicationDb = new ApplicationDbContext();

            applicationDb.Database.CreateIfNotExists();

            OrganizationType organizationType = new OrganizationType()
            {
                Id   = Guid.NewGuid(),
                Name = "TestType_02"
            };

            applicationDb.OrganizationTypes.Add(organizationType);
            applicationDb.SaveChanges();

            Organization organization = new Organization()
            {
                Id                 = Guid.NewGuid(),
                FullName           = "TestCompany_02",
                RegistrationDate   = DateTime.Now,
                OrganizationTypeId = organizationType.Id
            };

            applicationDb.Organizations.Add(organization);
            applicationDb.SaveChanges();

            double score = 10.5;

            OrganizationManagementService sut = new OrganizationManagementService();

            sut.PutRatingScoreToOrganization(organization.Id, score);

            OrganizationRating rating = applicationDb.OrganizationRatings
                                        .SingleOrDefault(p => p.OrganizationId == organization.Id);

            Assert.IsNotNull(rating);
            Assert.IsTrue(rating.Score == score);
        }
        public void AuctionManagementService_ElectWinnerInAuction()
        {
            ApplicationDbContext applicationDb = new ApplicationDbContext();

            applicationDb.Database.CreateIfNotExists();

            OrganizationType organizationType = new OrganizationType()
            {
                Id   = Guid.NewGuid(),
                Name = "TstTypeA_04"
            };

            applicationDb.OrganizationTypes.Add(organizationType);
            applicationDb.SaveChanges();

            Organization auctionMaster = new Organization()
            {
                Id                 = Guid.NewGuid(),
                FullName           = "TestCompanyA_04",
                RegistrationDate   = DateTime.Now,
                OrganizationTypeId = organizationType.Id
            };

            applicationDb.Organizations.Add(auctionMaster);
            applicationDb.SaveChanges();

            Organization auctionParticipant = new Organization()
            {
                Id                 = Guid.NewGuid(),
                FullName           = "TestCompanyA_042",
                RegistrationDate   = DateTime.Now,
                OrganizationTypeId = organizationType.Id
            };

            applicationDb.Organizations.Add(auctionParticipant);
            applicationDb.SaveChanges();

            AuctionType auctionType = new AuctionType()
            {
                Id   = Guid.NewGuid(),
                Name = "TestAuctionType_04"
            };

            applicationDb.AuctionTypes.Add(auctionType);
            applicationDb.SaveChanges();

            Auction auction = new Auction()
            {
                Id                      = Guid.NewGuid(),
                Description             = "test_any description_04",
                MinRatingForParticipant = 9.5,
                StartPrice              = 600000M,
                MinPrice                = 100000M,
                PriceStep               = 50000M,
                StartDate               = new DateTime(2019, 4, 26),
                FinishDate              = new DateTime(2019, 5, 22),
                Status                  = AuctionStatus.Active,
                AuctionTypeId           = auctionType.Id,
                OrganizationId          = auctionMaster.Id
            };

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

            Transaction depositTrans = new Transaction()
            {
                Id = Guid.NewGuid(),
                TransactionType = TransactionType.Deposit,
                Sum             = 400000,
                TransactionDate = DateTime.Now,
                OrganizationId  = auctionParticipant.Id
            };

            applicationDb.Transactions.Add(depositTrans);
            applicationDb.SaveChanges();

            OrganizationRating rating = new OrganizationRating()
            {
                Id             = Guid.NewGuid(),
                Score          = 10,
                OrganizationId = auctionParticipant.Id
            };

            applicationDb.OrganizationRatings.Add(rating);
            applicationDb.SaveChanges();

            var activeBidStatus = applicationDb.BidStatuses.SingleOrDefault(p => p.StatusName == "Active");

            if (activeBidStatus == null)
            {
                BidStatus status = new BidStatus()
                {
                    Id         = Guid.NewGuid(),
                    StatusName = "Active"
                };
                applicationDb.BidStatuses.Add(status);
                applicationDb.SaveChanges();
                activeBidStatus = status;
            }

            Bid bid = new Bid()
            {
                Id             = Guid.NewGuid(),
                Price          = 200000M,
                CreatedDate    = DateTime.Now,
                BidStatusId    = activeBidStatus.Id,
                AuctionId      = auction.Id,
                OrganizationId = auctionParticipant.Id
            };

            applicationDb.Bids.Add(bid);
            applicationDb.SaveChanges();

            BidInfoViewModel model = new BidInfoViewModel()
            {
                BidId          = bid.Id.ToString(),
                AuctionId      = auction.Id.ToString(),
                OrganizationId = auctionParticipant.Id.ToString(),
                CreatedDate    = DateTime.Now,
                Price          = bid.Price
            };

            AuctionManagementService sut = new AuctionManagementService();

            sut.ElectWinnerInAuction(model);

            Bid         newBid      = applicationDb.Bids.SingleOrDefault(p => p.Id.ToString() == model.BidId);
            Transaction transaction = applicationDb.Transactions
                                      .SingleOrDefault(p => p.Sum == model.Price && p.TransactionType == TransactionType.Withdraw &&
                                                       p.OrganizationId.ToString() == model.OrganizationId);

            Assert.IsNotNull(newBid);
            Assert.IsNotNull(transaction);
        }