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));
        }
示例#3
0
        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 }));
        }
示例#4
0
        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));
        }
示例#5
0
        public async Task <IEnumerable <DestinationPortalModel> > GetUserGroupPortals(GroupPayModel model)
        {
            var result = await _requestManagerService.Post <ServiceResponse <IEnumerable <DestinationPortalModel> > >("/dportal_get", model);

            return(result.DataModel);
        }