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 })); }
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); }
public async Task <ActionResult <BidResponseViewModel> > Create([FromBody] CreateBidRequestViewModel viewModel) { var result = await _bidApplicationService.CreateBid(viewModel); return(Response(result)); }