public async Task <IActionResult> PayGroupSubmit(GroupPayModel model) { model.ID = User.Claims.GetUserId(); model.Hash = User.Claims.GetUserHash(); string mechantId = "dd5c225c-bbf5-11e9-9621-000c295eb8fc"; var portals = await _destinationPortalService.GetUserGroupPortals(model); var price = model.Price.HasValue ? model.Price.Value : portals.Sum(x => x.Price); var title = portals.FirstOrDefault().Group; var payment = new Zarinpal.Payment(mechantId, (int)price); var retUrl = string.Format("{0}://{1}/{2}", Request.Scheme, Request.Host, $"DestinationPortals/PayReturn"); var requestResult = await payment.PaymentRequest(title, retUrl); if (requestResult.Status == 100) { await _paymentService.CreateRequest(new CreateRequest { Status = requestResult.Status, Authority = requestResult.Authority, Link = requestResult.Link, GroupId = model.GroupId, Description = title, Price = price.ToString() }); return(Redirect(requestResult.Link)); } return(View("PayGroup", model)); }
public async Task <IActionResult> PayGroup([FromRoute] GroupPayModel model) { model.ID = User.Claims.GetUserId(); model.Hash = User.Claims.GetUserHash(); var result = await _destinationPortalService.GetUserGroupPortals(model); ViewBag.GroupId = model.GroupId; return(View(result)); }
public async Task <IActionResult> Pay(GroupPayModel model) { User user = await _userManager.GetUserAsync(User); Group group = await _context.Groups.FindAsync(model.Group); if (group == null) { return(await RedirectBack($"Error: Could not find the group {model.Group}")); } if (!await group.HasPermissionAsync(user, "eco")) { return(await RedirectBack($"Error: You don't have eco permissions!")); } if (model.Amount > group.Credits) { return(await RedirectBack($"Error: The group doesn't have that much money!")); } Entity target = await _context.Users.FirstOrDefaultAsync(x => x.UserName.ToLower() == model.User.ToLower()); if (target == null) { await _context.Groups.FirstOrDefaultAsync(x => x.Name.ToLower() == model.User.ToLower()); } if (target == null) { return(await RedirectBack($"Error: Could not find {model.User}")); } TaskResult result = await new TransactionRequest(group.Id, target.Id, model.Amount, "Group Direct Payment", ApplicableTax.None, false).Execute(); if (!result.Succeeded) { return(await RedirectBack(result.Info)); } StatusMessage = "Successfully sent direct payment."; return(RedirectToAction("View", new { groupid = model.Group })); }
public async Task <IActionResult> Pay(string groupid) { User user = await _userManager.GetUserAsync(User); Group group = await _context.Groups.FindAsync(groupid); if (group == null) { return(await RedirectBack($"Could not find the group {groupid}")); } if (!await group.HasPermissionAsync(user, "eco")) { return(await RedirectBack($"You don't have eco permissions!")); } GroupPayModel model = new GroupPayModel() { Group = groupid }; return(View(model)); }
public async Task <IEnumerable <DestinationPortalModel> > GetUserGroupPortals(GroupPayModel model) { var result = await _requestManagerService.Post <ServiceResponse <IEnumerable <DestinationPortalModel> > >("/dportal_get", model); return(result.DataModel); }