示例#1
0
        public async Task <IActionResult> MakeOrder(NewOrderDto dto)
        {
            var solutionResponse = await _solutionApiClient.GetByFilterAsync(new SolutionFilter { SolutionId = dto.SolutionId });

            var sol  = solutionResponse.Data.FirstOrDefault();
            var plan = sol.Plans.Where(p => p.Id == dto.PlanId).FirstOrDefault();

            dto.CustomerId = User.Claims.FirstOrDefault(c => c.Type.Contains("nameidentifier")).Value;
            var balanceResponse = await _billingApiClient.GetBalanceByFilterAsync(new BalanceFilter { UserId = dto.CustomerId });

            var balance = balanceResponse.Data.FirstOrDefault();

            if (balance.BalanceValue < plan.Price)
            {
                return(Redirect("~/Home/Login"));
            }
            var response = await _billingApiClient.AddOrderAsync(dto);

            if (response.HasErrors)
            {
                return(View("Error", new ErrorViewModel {
                    RequestId = "Ошибка при обработке заказа"
                }));
            }



            await _billingApiClient.UpdateBalanceAsync(new UpdateBalanceDto { UserId = dto.CustomerId, BalanceValue = balance.BalanceValue - plan.Price });

            return(Redirect("~/Home/Login"));
        }
示例#2
0
        /// <summary>
        /// Страница маркетплейса
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> MarketPlace([FromQuery] long?category, [FromQuery] int page = 1)
        {
            ViewData["Category"] = category;
            ViewData["Page"]     = page;
            var response = await _solutionApiClient.GetAllCategoriesAsync();

            ViewBag.Categories = response.Data;


            var sols = await _solutionApiClient.GetByFilterAsync(new SolutionFilter { Size = 6, CategoryId = category, Page = page });

            ViewBag.Solutions = sols.Data;


            string userid = User.Claims.FirstOrDefault(c => c.Type.Contains("nameidentifier")).Value;
            var    bal    = await _billingApiClient.GetBalanceByFilterAsync(new BalanceFilter { UserId = userid });

            ViewBag.Balance = bal.Data.FirstOrDefault().BalanceValue;

            return(View());
        }
示例#3
0
        public async Task <IActionResult> GetProductById(long id)
        {
            var response = await _solutionApiClient.GetByFilterAsync(new SolutionFilter
            {
                SolutionId = id
            });

            var dto = response.Data.FirstOrDefault();

            if (dto.Reviews.Any())
            {
                IDictionary <string, string> id_name = new Dictionary <string, string>();
                foreach (ReviewDto rd in dto.Reviews)
                {
                    if (id_name.ContainsKey(rd.AuthorId))
                    {
                        continue;
                    }

                    var user = await _identityClient.GetUserInfoAsync(rd.AuthorId);

                    var userData = user.Data;

                    if (userData != null)
                    {
                        id_name.Add(rd.AuthorId, userData.Email);
                    }
                    else
                    {
                        id_name.Add(rd.AuthorId, "User deleted");
                    }
                }
                ViewBag.ReviewAuthors = id_name;
            }

            return(View(dto));
        }
        public async Task <IActionResult> GetCollectionInfo(int id)
        {
            var col = await _collectionApiClient.GetByFilterAsync(new CollectionFilter { Id = id });

            var model = col.Data;



            List <SolutionDto> slist = new List <SolutionDto>();

            foreach (TruncSolutionDto t in model.First().Solutions)
            {
                var tempResponse = await _solutionApiClient.GetByFilterAsync(new SolutionFilter { SolutionId = t.SolutionId });

                slist.Add(tempResponse.Data.FirstOrDefault());
            }

            ViewBag.Solutions = slist;

            return(View(model.First()));
        }