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")); }
/// <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()); }
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())); }