public async Task <object> Create([FromBody] RequestModel model) { var user = (await GetCurrentUserAsync()); try { if (user.Customer == null) { return(new Response <bool>(Constants.Access_Denied_CODE, false, Constants.Access_Denied)); } model.CustomerId = user.Customer?.Id; Request request = Mapper.Map <RequestModel, Request>(model); request.SendDate = DateTime.Now; if (ModelState.IsValid) { db.Request.Add(request); var AirportOffer = db.AirportOffers .FirstOrDefault(x => x.OfferId == model.OfferId && x.AirportId == model.AirportId); int?AirportOfferId = AirportOffer?.Id; if (AirportOffer == null) { return(new Response <bool>(Constants.BAD_REQUEST_CODE, false, Constants.BAD_REQUEST)); } RequestOffers requestOffers = new RequestOffers() { OfferId = model.OfferId, RequestId = request.Id, AirportOfferId = AirportOfferId, RStatus = ReplyStatus.Pending, }; db.Add(requestOffers); await db.SaveChangesAsync(); model.Customer = $"{user.Customer.FirstName} {user.Customer.LastName}"; model.Airport = db.Airport.Find(model.AirportId)?.Name; model.Supplier = db.Offer.Find(model.OfferId)?.FuelSupplier?.Name; model.Status = ReplyStatus.Pending.ToString(); model.Price = "" + Double.Parse(model.Quantity) * AirportOffer.Price; model.PriceUnit = AirportOffer.PriceUnit; model.requestDate = request.SendDate; model.Id = request.Id; return(new Response <RequestModel>(Constants.SUCCESS_CODE, model)); } else { return(new Response <bool>(Constants.INVALID_INPUT_CODE, false, Constants.INVALID_INPUT)); } } catch (Exception e) { return(new Response <bool>(Constants.SOMETHING_WRONG_CODE, false, GetExceptionMessage(e))); } }
public async Task Offers_ShouldReturnOffer() { //Prepare var allegroApi = new AllegroApi(NullLoggerFactory.Instance); string token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJhbGxlZ3JvX2FwaSJdLCJleHAiOjE1Njk0NTUyNjcsImp0aSI6ImI2ZjVjZDQ2LTY3ZjYtNDM1MC04MDhiLTdlOGNmYTM5NThiMSIsImNsaWVudF9pZCI6ImZjNDc1YWE4ZGZlNDQyNGZiMTUwN2JlYmVhNTljOTI0In0.wkKM1xb4wb7YIFtll0pFYHUbAxDOGgRqHRPpMKKjZvCw-4SS1f_in6kAWPURebivN1DW6JtXQQGdGLTX7hBW1mzDDzECWJlKhVm7KW01kyap4URPZEuS1KBGVF5zvfzfBzbTUPeAPugY0mO6Brhd-FdIxBMJ3wNf24WK3bxxAbPMggQOV0tZWLFe3Gb6hSRZz4U97k8HdA2Vlnduq62zlFROPxY7p0GbGnm5PKpnAI2PZTPlMHx-5Ge5dwvcEMV6g091-QjvN9QjxKnWLdMhcbN4AXqj91GhZID164kCfr09Nk2Q3hGTYKrPn3OHWEwoBWskEl2P-MEmDz2Hztq_YA"; var requestOffer = new RequestOffers(Endpoints.URL, token, "xiaomi"); //Execute var offers = await allegroApi.Offers(requestOffer); //Assert Assert.NotNull(offers); }
public async Task <IActionResult> Create(RequestViewModel model) { var user = (await GetCurrentUserAsync()); try { model.Req.SendDate = DateTime.UtcNow; if (user.Customer.Id != model.Req.CustomerId) { return(BadRequest()); } if (ModelState.IsValid) { // set up email notification var contentAppName = db.ContentManagement.Where(cm => cm.Name == "app_name") .FirstOrDefault(); string AppName = contentAppName == null ? "Fuel Services" : contentAppName.DisplayName; EmailBodyDefaultParams emailBodyDefaultParams = db.EmailBodyDefaultParams .Where(e => e.EmailTypeName == "supplier_request_notification").FirstOrDefault(); string body = EmailSender.CreateEmailBody(emailBodyDefaultParams); // db.Request.Add(model.Req); model.SelectedOffers.ForEach(offerId => { var selectedOffer = db.Offer.Find(offerId); var selectedOfferParty = selectedOffer.AirportOffers.Where(x => x.AirportId == model.Req.AirportId).FirstOrDefault(); RequestOffers requestOffers = new RequestOffers() { OfferId = offerId, RequestId = model.Req.Id, AirportOfferId = selectedOfferParty.Id, RStatus = ReplyStatus.Pending, }; db.Add(requestOffers); db.SaveChanges(); #region send email //get supllier var supplierEmail = selectedOffer.FuelSupplier.User.Email; var callbackUrl = Url.AbsoluteAction("Details", "Requests", new { Area = "Supplier", id = model.Req.Id }); body = body.Replace("{callbackurl}", HtmlEncoder.Default.Encode(callbackUrl)); var simpleResponse = EmailSender.SendEmailNotification(supplierEmail, AppName, body); #endregion }); //model.Req. return(RedirectToAction(nameof(Details), new { id = model.Req.Id })); } } catch (Exception e) { Serilog.Log.Error(GetExceptionMessage(e)); ModelState.AddModelError("", GetExceptionMessage(e)); //throw; } model.Req.Airport = db.Airport.Find(model.Req.AirportId); model.Req.Airport.AirportOffer = db.AirportOffers.Where(x => !x.IsDeleted).Where(x => x.AirportId == model.Req.AirportId).ToList(); ViewBag.CustomerId = db.Customer.Where(c => c.UserId == user.Id).FirstOrDefault().Id; ViewBag.OfferFuelTypes = new SelectList(db.FuelType.ToList(), "Id", "Name"); var AirportOffer = db.AirportOffers.Where(x => !x.IsDeleted).Where(x => x.AirportId == model.Req.AirportId).ToList(); var offers = AirportOffer.Where(x => !x.Offer.IsDeleted) .Where(q => q.Offer.EndDate > DateTime.Now) .Select(q => new Select2ResultDTO() { id = q?.OfferId?.ToString(), text = q?.Offer?.FuelSupplier?.Name }) .ToList(); ViewBag.Offers = offers; return(View(model)); }
public async Task <ListingResponse> Offers(RequestOffers requestOffers) { return(await SendAsync <ListingResponse, RequestOffers>(requestOffers)); }