コード例 #1
0
        public ActionResult AddReview(int id, CommentViewModel commentViewModel)
        {
            int session_id = int.Parse(this.Session["User_ID"].ToString());

            try
            {
                this.commentService.GetAll().Where(c => c.productId == id && c.userId == session_id).First();
                this.ViewBag.DuplicateMessage = "You have already written a review to this product.";
                return(this.View());
            }
            catch
            {
                commentViewModel.commentId = this.commentService.FindMaxId() + 1;
                commentViewModel.userId    = session_id;
                commentViewModel.productId = id;

                int rate_id    = this.commentService.FindMaxIdRate() + 1;
                var rateDTO    = new RateDTO(rate_id, id, commentViewModel.rate);
                var commentDTO = new CommentDTO(commentViewModel.commentId, commentViewModel.productId, commentViewModel.userId, commentViewModel.message);
                this.commentService.CreateComment(commentDTO);
                this.commentService.CreateRate(rateDTO);

                return(this.RedirectToAction($"../Order/History"));
            }
        }
コード例 #2
0
        /// <summary>
        /// Записывает кур валюты в базу данных
        /// </summary>
        /// <param name="entity">Курс валюты</param>
        public async void CreateRateAsync(RateDTO entity)
        {
            var rate = Mapper.Map <RateDTO, Rate>(entity);
            await db.Rates.AddAsync(rate);

            db.SaveChanges();
        }
コード例 #3
0
        public void UpdateTest()
        {
            //Arange
            RateDTO projectDto = new RateDTO()
            {
                Id     = "id1",
                UserId = "userId1",
                BookId = "bookId1",
                Value  = 1
            };
            bool isUpdate = false;
            Mock <IUnitOfWork>         unitOfWorkMock = new Mock <IUnitOfWork>();
            Mock <IRepository <Rate> > repositoryMock = new Mock <IRepository <Rate> >();

            repositoryMock.Setup(repo => repo.Get(It.IsAny <Expression <Func <Rate, bool> > >()))
            .Returns <Expression <Func <Rate, bool> > >(predicate =>
                                                        _rates.Where(predicate.Compile()).AsQueryable());
            repositoryMock.Setup(repo => repo.Update(It.Is <Rate>(entity =>
                                                                  (entity.Id == projectDto.Id))))
            .Callback(() => isUpdate = true);
            unitOfWorkMock.Setup(getRepo => getRepo.GetRepository <Rate>()).Returns(repositoryMock.Object);
            RateService _rateService = new RateService(unitOfWorkMock.Object);

            //Act
            _rateService.Update(projectDto);

            //Assert
            Assert.True(isUpdate);
        }
コード例 #4
0
ファイル: HomeController.cs プロジェクト: OlegShevtsiv/Repo1
        public IActionResult RateBook(RateViewModel rateVM)
        {
            if (string.IsNullOrEmpty(rateVM.UserId) && string.IsNullOrEmpty(rateVM.RatedEssenceId) && (rateVM.Value < 1 || rateVM.Value > 5))
            {
                return(RedirectToAction("Error"));
            }
            BookDTO bookTORate = _bookService.Get(rateVM.RatedEssenceId);

            if (bookTORate == null)
            {
                return(RedirectToAction("Error"));
            }
            RateDTO yourRate = new RateDTO {
                BookId = rateVM.RatedEssenceId,
                UserId = rateVM.UserId,
                Value  = rateVM.Value
            };

            List <RateDTO> allRates = _rateService.GetAll().ToList();

            if (allRates != null)
            {
                bool isFinded = false;
                foreach (var r in allRates)
                {
                    if (r.BookId == rateVM.RatedEssenceId && r.UserId == rateVM.UserId)
                    {
                        isFinded         = true;
                        yourRate.Id      = r.Id;
                        bookTORate.Rate += (yourRate.Value - r.Value) / bookTORate.RatesAmount;
                        _rateService.Update(yourRate);
                        _bookService.Update(bookTORate);
                        break;
                    }
                }
                if (!isFinded)
                {
                    uint amount = bookTORate.RatesAmount;
                    bookTORate.RatesAmount++;
                    bookTORate.Rate = (bookTORate.Rate * amount + yourRate.Value) / bookTORate.RatesAmount;
                    _bookService.Update(bookTORate);
                    _rateService.Add(yourRate);
                }
            }
            else
            {
                uint amount = bookTORate.RatesAmount;
                bookTORate.RatesAmount++;
                bookTORate.Rate = (bookTORate.Rate * amount + yourRate.Value) / bookTORate.RatesAmount;
                _bookService.Update(bookTORate);
                _rateService.Add(yourRate);
            }

            return(RedirectToAction("GetBookInfo", "Home", new { id = bookTORate.Id }));
        }
コード例 #5
0
        public void CreateRate(RateDTO o)
        {
            Rate d = new Rate
            {
                rateID    = o.rateID,
                productId = o.productId,
                rate1     = o.rate,
            };

            this.Database.Rates.Create(d);
            this.Database.Save();
        }
コード例 #6
0
        public void CreateRate(RateDTO r)
        {
            Rate rate = new Rate()
            {
                rateID    = r.rateID,
                productId = r.productId,
                rate1     = r.rate
            };

            this.Database.Rates.Create(rate);
            this.Database.Save();
        }
コード例 #7
0
ファイル: HomeController.cs プロジェクト: OlegShevtsiv/PPS
        public IActionResult RateBook(string bookId, string userId, decimal rate)
        {
            if (string.IsNullOrEmpty(bookId) || string.IsNullOrEmpty(userId) || rate < 1 || rate > 5)
            {
                RedirectToAction("Error");
            }
            BookDTO bookTORate = _bookService.Get(bookId);

            if (bookTORate == null)
            {
                return(RedirectToAction("Error"));
            }
            RateDTO yourRate = new RateDTO {
                BookId = bookId, UserId = userId, Value = rate
            };
            List <RateDTO> allRates = _rateService.GetAll().ToList();

            if (allRates != null)
            {
                bool isFinded = false;
                foreach (var r in allRates)
                {
                    if (r.BookId == bookId && r.UserId == userId)
                    {
                        isFinded        = true;
                        yourRate.Id     = r.Id;
                        bookTORate.Rate = (bookTORate.Rate * bookTORate.RatesAmount - r.Value + rate) / bookTORate.RatesAmount;
                        _rateService.Update(yourRate);
                        _bookService.Update(bookTORate);
                        break;
                    }
                }
                if (!isFinded)
                {
                    uint amount = bookTORate.RatesAmount;
                    bookTORate.RatesAmount++;
                    bookTORate.Rate = (bookTORate.Rate * amount + rate) / bookTORate.RatesAmount;
                    _bookService.Update(bookTORate);
                    _rateService.Add(yourRate);
                }
            }
            else
            {
                uint amount = bookTORate.RatesAmount;
                bookTORate.RatesAmount++;
                bookTORate.Rate = (bookTORate.Rate * amount + rate) / bookTORate.RatesAmount;
                _bookService.Update(bookTORate);
                _rateService.Add(yourRate);
            }

            return(RedirectToAction("GetBookInfo", "Home", new { id = bookTORate.Id }));
        }
コード例 #8
0
        /// <summary>
        /// Обновляет запись курса валюты
        /// </summary>
        /// <param name="entity">Курс валюты</param>
        public async void UpdateRateAsync(RateDTO entity)
        {
            var rate   = Mapper.Map <RateDTO, Rate>(entity);
            var rateDB = await db.Rates.FirstOrDefaultAsync(r => r.Id == rate.Id);

            if (rateDB != null)
            {
                rateDB.ConversionPairs = rate.ConversionPairs;
                rateDB.Rates           = rate.Rates;
            }
            db.Entry(rateDB).State = EntityState.Modified;
            db.SaveChanges();
        }
コード例 #9
0
        public IActionResult RateBook([FromBody] RatePostModel rate)
        {
            BookDTO bookToRate = _bookProvider.Get(rate.RatedEssenceId);

            if (bookToRate == null)
            {
                return(BadRequest());
            }
            RateDTO yourRate = new RateDTO {
                BookId = rate.RatedEssenceId,
                UserId = rate.UserId,
                Value  = rate.Value
            };

            List <RateDTO> allRates = _provider.GetAll().ToList();

            if (allRates.Any())
            {
                bool isFinded = false;
                foreach (var r in allRates)
                {
                    if (r.BookId == rate.RatedEssenceId && r.UserId == rate.UserId)
                    {
                        isFinded         = true;
                        yourRate.Id      = r.Id;
                        bookToRate.Rate += (yourRate.Value - r.Value) / bookToRate.RatesAmount;
                        _dataWriter.Update(yourRate);
                        _bookDataWriter.Update(bookToRate);
                        break;
                    }
                }
                if (!isFinded)
                {
                    uint amount = bookToRate.RatesAmount;
                    bookToRate.RatesAmount++;
                    bookToRate.Rate = (bookToRate.Rate * amount + yourRate.Value) / bookToRate.RatesAmount;
                    _bookDataWriter.Update(bookToRate);
                    _dataWriter.Add(yourRate);
                }
            }
            else
            {
                uint amount = bookToRate.RatesAmount;
                bookToRate.RatesAmount++;
                bookToRate.Rate = (bookToRate.Rate * amount + yourRate.Value) / bookToRate.RatesAmount;
                _bookDataWriter.Update(bookToRate);
                _dataWriter.Add(yourRate);
            }

            return(Ok());
        }
コード例 #10
0
        public OrderShippingInfo CreateShippingInfo(RateDTO rate,
                                                    long orderId,
                                                    int shippingNumber,
                                                    int methodId)
        {
            var now          = DateHelper.GetAppNowTime();
            var shippingInfo = new OrderShippingInfo
            {
                OrderId          = orderId,
                ShippingMethodId = methodId,
                ShippingNumber   = shippingNumber,
                ShippingGroupId  = rate.GroupId,

                ShipmentOfferId      = rate.OfferId,
                ShipmentProviderType = rate.ProviderType,

                StampsShippingCost   = rate.Amount,
                InsuranceCost        = rate.InsuranceCost,
                SignConfirmationCost = rate.SignConfirmationCost,
                UpChargeCost         = rate.UpChargeCost,

                PackageLength = rate.PackageLength,
                PackageWidth  = rate.PackageWidth,
                PackageHeight = rate.PackageHeight,

                ShippingDate          = DateHelper.FitTOSQLDateTime(rate.ShipDate),
                EstimatedDeliveryDate = DateHelper.FitTOSQLDateTime(rate.DeliveryDate),
                EarliestDeliveryDate  = DateHelper.FitTOSQLDateTime(rate.EarliestDeliveryDate),
                DeliveryDaysInfo      = StringHelper.Substring(rate.DeliveryDaysInfo, 50),
                DeliveryDays          = rate.DeliveryDays,

                LabelPath         = null,
                LabelPrintPackId  = null,
                NumberInBatch     = rate.NumberInBatch,
                FeedId            = null,
                IsActive          = rate.IsDefault,
                IsVisible         = rate.IsVisible,
                IsFeedSubmitted   = false,
                IsFulfilled       = false,
                MessageIdentifier = 0,
                TrackingNumber    = null,
                CreateDate        = now,
                UpdateDate        = now
            };

            Add(shippingInfo);
            unitOfWork.Commit();

            return(shippingInfo);
        }
コード例 #11
0
        public IHttpActionResult Rate([FromBody] RateDTO rate)
        {
            try
            {
                tradeService.RateTradingLot(rate, User.Identity.Name);
            }
            catch (NotFoundException)
            {
                return(NotFound());
            }
            catch (AuctionException ex)
            {
                return(BadRequest(ex.Message));
            }

            return(Ok());
        }
コード例 #12
0
        public void GetByIdTest()
        {
            //Arange
            Mock <IUnitOfWork>         unitOfWorkMock = new Mock <IUnitOfWork>();
            Mock <IRepository <Rate> > repositoryMock = new Mock <IRepository <Rate> >();

            repositoryMock.Setup(repo => repo.Get(It.IsAny <Expression <Func <Rate, bool> > >()))
            .Returns <Expression <Func <Rate, bool> > >(predicate =>
                                                        _rates.Where(predicate.Compile()).AsQueryable());
            unitOfWorkMock.Setup(getRepo => getRepo.GetRepository <Rate>()).Returns(repositoryMock.Object);
            RateService _rateService = new RateService(unitOfWorkMock.Object);

            //Act
            RateDTO _rateDto = _rateService.Get("id1");

            //Assert
            Assert.NotNull(_rateDto);
            Assert.Equal(1, _rateDto.Value);
        }
コード例 #13
0
        /// <summary>
        /// Makes rate for trade
        /// </summary>
        /// <param name="rate">Rate</param>
        /// <param name="userName">User name who makes rate</param>
        public void RateTradingLot(RateDTO rate, string userName)
        {
            try
            {
                if (!IsTradeExist(rate.TradeId))
                {
                    throw new NotFoundException($"Trade with id: {rate.TradeId}");
                }
                if (!UserManager.IsUserWithUserNameExist(userName))
                {
                    throw new NotFoundException($"User with user name: {userName}");
                }

                Trade       trade = Database.Trades.GetTradeById(rate.TradeId);
                UserProfile user  = Database.UserProfiles.GetProfileByUserName(userName);

                if (trade.TradingLot.User.Id == user.Id)
                {
                    throw new AuctionException("This is your lot");
                }
                if (DateTime.Now.CompareTo(trade.TradeEnd) >= 0)
                {
                    throw new AuctionException("This trade is over");
                }
                if (IsUserAlreadyHaveMaxBet(rate.TradeId, user.Id))
                {
                    throw new AuctionException("You already have max bet on this lot");
                }

                bool isNew = user.Trades.All(t => !t.Id.Equals(trade.Id));

                if (trade.LastPrice < rate.Sum)
                {
                    trade.LastPrice      = rate.Sum;
                    trade.LastRateUserId = user.Id;
                    if (isNew)
                    {
                        user.Trades.Add(trade);
                    }
                }
                else
                {
                    throw new AuctionException($"Your price should be greater than: {trade.LastPrice}");
                }

                Database.UserProfiles.UpdateProfile(user);
                Database.Trades.UpdateTrade(trade);
            }
            catch (NotFoundException ex)
            {
                throw ex;
            }
            catch (AuctionException ex)
            {
                throw ex;
            }
            catch (Exception)
            {
                throw new DatabaseException();
            }

            Database.Save();
        }