public bool CreateBidRequest(CreateBidRequestViewModel requestModel)
        {
            var dev     = freelancerDb.Developers.FirstOrDefault(t => t.DeveloperId == requestModel.DeveloperId);
            var project = freelancerDb.Projects.FirstOrDefault(t => t.ProjectId == requestModel.ProjectId);

            if (dev == null || project == null)
            {
                return(false);
            }

            var isExist = freelancerDb.BidRequests.Any(t => t.Developer.DeveloperId == requestModel.DeveloperId && t.Project.ProjectId == requestModel.ProjectId);

            if (isExist)
            {
                return(false);
            }

            var bidRequest = new BidRequest
            {
                BidRequestId  = Guid.NewGuid().ToString(),
                CreationDate  = DateTime.Now,
                Developer     = dev,
                Project       = project,
                Note          = requestModel.Note,
                Price         = Convert.ToDouble(requestModel.Price),
                DaysToFinish  = requestModel.DaysToFinish,
                RequestStatus = RequestStatus.Pending
            };

            freelancerDb.BidRequests.Add(bidRequest);
            freelancerDb.SaveChanges();
            return(true);
        }
        public async Task <BidResponseViewModel> CreateBid(CreateBidRequestViewModel viewModel)
        {
            if (!(await CanOfferBid(viewModel)))
            {
                return(null);
            }

            var command = _mapper.Map <CreateBidCommand>(viewModel);

            var result = await _bus.SendCommand <CreateBidCommand, Bid>(command);

            var productModel = await _productRepository.GetById(result.IdProduct);

            var userModel = await _userRepository.GetById(result.IdUser);

            var product = _mapper.Map <ProductResponseViewModel>(productModel);
            var user    = _mapper.Map <UserResponseViewModel>(userModel);

            var resultMapped = _mapper.Map <BidResponseViewModel>(result);

            resultMapped.Product = product;
            resultMapped.User    = user;

            return(resultMapped);
        }
 public IActionResult AddBidRequest([FromBody] CreateBidRequestViewModel requestModel)
 {
     try
     {
         var response = _freelancerService.CreateBidRequest(requestModel);
     }
     catch { }
     return(RedirectToAction("ProjectDetails", "Home", new { projectId = requestModel.ProjectId }));
 }
示例#4
0
        public async Task <IActionResult> CreateBid(CreateBidRequestViewModel viewModel)
        {
            var ret = await _bidApplicationService.CreateBid(viewModel);

            if (ret == null)
            {
                return(RedirectToAction("CreateBid", "Auction", new { error = "Você nao pode oferecer um lance com esse valor, aumente e tente novamente!" }));
            }

            return(RedirectToAction("BidList", "Auction"));
        }
        private async Task <bool> CanOfferBid(CreateBidRequestViewModel viewModel)
        {
            var product = await _productRepository.GetById(viewModel.IdProduct);

            if (viewModel.PriceOffer < product.Price)
            {
                return(false);
            }

            var bids = await _bidRepository.GetByProductId(viewModel.IdProduct);

            bool ret = true;

            bids.ForEach(x => {
                if (x.PriceOffer > viewModel.PriceOffer)
                {
                    ret = false;
                }
            });

            return(ret);
        }
示例#6
0
        public async Task <ActionResult <BidResponseViewModel> > Create([FromBody] CreateBidRequestViewModel viewModel)
        {
            var result = await _bidApplicationService.CreateBid(viewModel);

            return(Response(result));
        }