Exemple #1
0
        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)));
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
 }