public ActionResult CreateTransaction(FormCollection collection) { var pathToTemplates = Server.MapPath("/Modules/Teeyoot.Module/Content/message-templates/"); var pathToMedia = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/'); var setting = _paymentSettingsService.GetAllSettigns() .FirstOrDefault(s => s.CountryRecord.Id == _countryService.GetCountryByCulture(_cultureUsed).Id); var gateway = new BraintreeGateway { Environment = Braintree.Environment.SANDBOX, PublicKey = setting.PublicKey, PrivateKey = setting.PrivateKey, MerchantId = setting.MerchantId }; var countryId = Convert.ToInt32(collection["Country"]); var country = _countryRepository.Get(countryId); //Result<Transaction> result; //var nonceId = Request.Form["payment_method_nonce"]; switch (collection["paumentMeth"]) { case "2": { var requestPayPal = new TransactionRequest { Amount = 1000.0M, PaymentMethodNonce = "fake-valid-nonce", Options = new TransactionOptionsRequest { SubmitForSettlement = false, StoreInVault = true } }; gateway.Transaction.Sale(requestPayPal); break; } case "1": { var requestCard = new TransactionRequest { Amount = 1000.0M, //Здесь указывается сумма транзакции в USD CreditCard = new TransactionCreditCardRequest { Number = collection["number"], CVV = collection["cvv"], ExpirationMonth = collection["month"], ExpirationYear = collection["year"] }, Options = new TransactionOptionsRequest { StoreInVault = true, SubmitForSettlement = false } }; gateway.Transaction.Sale(requestCard); break; } case "4": //Отправляем сообщение админу break; case "3": { var method = collection["Bank"]; var meth1 = collection["paumentMeth"]; var id1 = int.Parse(collection["OrderId"]); var orderMol = _orderService.GetOrderById(id1); var campId = orderMol.Products.First().CampaignProductRecord.CampaignRecord_Id; orderMol.Email = collection["Email"]; orderMol.FirstName = collection["FirstName"]; orderMol.LastName = collection["LastName"]; orderMol.StreetAddress = collection["StreetAddress"] + " " + collection["StreetAddress2"]; orderMol.City = collection["City"]; orderMol.State = collection["State"]; orderMol.PostalCode = collection["PostalCode"]; orderMol.Country = country.Name; orderMol.PhoneNumber = collection["PhoneNumber"]; orderMol.Reserved = DateTime.UtcNow; orderMol.OrderStatusRecord = _orderStatusRepository .Get(int.Parse(OrderStatus.Unapproved.ToString("d"))); if (orderMol.SellerCountry == country) { var deliverySetting = _deliverySettingRepository.Table .First(s => s.State == collection["State"]); orderMol.Delivery = deliverySetting.PostageCost; } else { var deliverySetting = _deliveryInternationalSettingRepository.Table .First(s => s.CountryTo == country); orderMol.Delivery = deliverySetting.DeliveryPrice; } /* if (orderMol.TotalPriceWithPromo > 0) { orderMol.TotalPriceWithPromo = orderMol.TotalPriceWithPromo + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost; } orderMol.TotalPrice = orderMol.TotalPrice + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost - orderMol.Promotion; */ orderMol.IsActive = true; if (collection["PromoId"] != null) { var promotion = _promotionService.GetPromotionByPromoId(collection["PromoId"]); promotion.Redeemed = promotion.Redeemed + 1; } // _teeyootMessagingService.SendNewOrderMessageToAdmin(orderMol.Id, pathToMedia, pathToTemplates); //_teeyootMessagingService.SendNewOrderMessageToBuyer(orderMol.Id, pathToMedia, pathToTemplates); var url = Molpay( _orderService.GetOrderById(int.Parse(collection["OrderId"])), country.Name, collection["FirstName"], collection["LastName"], collection["Email"], collection["State"], collection["PhoneNumber"], orderMol.Delivery); return Redirect(url); } default: throw new ArgumentOutOfRangeException(); } var meth = collection["paumentMeth"]; var id = int.Parse(collection["OrderId"]); var order = _orderService.GetOrderById(id); var campaignId = order.Products.First().CampaignProductRecord.CampaignRecord_Id; order.Email = collection["Email"]; order.FirstName = collection["FirstName"]; order.LastName = collection["LastName"]; order.StreetAddress = collection["StreetAddress"] + " " + collection["StreetAddress2"]; order.City = collection["City"]; order.State = collection["State"]; order.PostalCode = collection["PostalCode"]; order.Country = country.Name; order.PhoneNumber = collection["PhoneNumber"]; order.Reserved = DateTime.UtcNow; if (order.SellerCountry == country) { var deliverySetting = _deliverySettingRepository.Table .First(s => s.State == collection["State"]); order.Delivery = collection["paumentMeth"] == "4" ? deliverySetting.CodCost : deliverySetting.PostageCost; } else { var deliverySetting = _deliveryInternationalSettingRepository.Table .First(s => s.CountryTo == country); order.Delivery = deliverySetting.DeliveryPrice; } /* if (order.TotalPriceWithPromo > 0) { order.TotalPriceWithPromo = order.TotalPriceWithPromo + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost; } */ order.OrderStatusRecord = _orderStatusRepository.Table .First(s => s.Name == OrderStatus.Approved.ToString()); /* order.TotalPrice = order.TotalPrice + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost - order.Promotion; */ order.IsActive = true; /* var users = _userRepository.Table.ToList(); */ _teeyootMessagingService.SendNewOrderMessageToAdmin(order.Id, pathToMedia, pathToTemplates); _teeyootMessagingService.SendOrderStatusMessage(pathToTemplates, pathToMedia, order.Id, OrderStatus.Approved.ToString()); var campaign = _campaignService.GetCampaignById(campaignId); var sendMessage = campaign.ProductCountSold <= campaign.ProductMinimumGoal - 1; if (campaign.ProductCountSold > campaign.ProductCountGoal - 1) { campaign.ProductCountSold += order.Products.Sum(p => (int?) p.Count) ?? 0; _campaignService.UpdateCampaign(campaign); } else { campaign.ProductCountSold += order.Products.Sum(p => (int?) p.Count) ?? 0; _campaignService.UpdateCampaign(campaign); if ((campaign.ProductCountSold > campaign.ProductMinimumGoal - 1) && sendMessage) { _teeyootMessagingService.SendCampaignMetMinimumMessageToBuyers(campaign.Id); _teeyootMessagingService.SendCampaignMetMinimumMessageToSeller(campaign.Id); } } //_orderService.UpdateOrder(order, OrderStatus.Approved); if (collection["PromoId"] != null) { var promotion = _promotionService.GetPromotionByPromoId(collection["PromoId"]); promotion.Redeemed = promotion.Redeemed + 1; } //Transaction transaction = result.Target; //ViewData["TransactionId"] = transaction.Id; //_notifier.Information(T("The transaction is successful")); var commonSettings = _commonSettingsRepository.Table .FirstOrDefault(s => s.CountryRecord.Id == _countryService.GetCountryByCulture(_cultureUsed).Id); if (commonSettings == null) { _commonSettingsRepository.Create(new CommonSettingsRecord() { DoNotAcceptAnyNewCampaigns = false, CountryRecord = _countryService.GetCountryByCulture(_cultureUsed) }); commonSettings = _commonSettingsRepository.Table .First(s => s.CountryRecord.Id == _countryService.GetCountryByCulture(_cultureUsed).Id); } if (commonSettings.DoNotAcceptAnyNewCampaigns) { var request = new CheckoutCampaignRequest { RequestUtcDate = DateTime.UtcNow, Email = order.Email }; _checkoutRequestRepository.Create(request); } return RedirectToAction("ReservationComplete", new {campaignId = campaign.Id, sellerId = campaign.TeeyootUserId}); //} //else //{ // _notifier.Information(T("The transaction is failed")); // return RedirectToAction("Payment", new { orderId = collection["OrderPublicId"], promo = collection["PromoId"] }); //} }
public ActionResult Oops(OopsViewModel viewModel) { var commonSettings = _commonSettingsRepository.Table.Where(s => s.CommonCulture == cultureUsed).FirstOrDefault(); if (commonSettings == null) { _commonSettingsRepository.Create(new CommonSettingsRecord() { DoNotAcceptAnyNewCampaigns = false, CommonCulture = cultureUsed }); commonSettings = _commonSettingsRepository.Table.Where(s => s.CommonCulture == cultureUsed).First(); } if (!commonSettings.DoNotAcceptAnyNewCampaigns) { return RedirectToAction("Oops"); } if (!ModelState.IsValidField("Email")) { TempData[InvalidEmailKey] = true; return RedirectToAction("Oops"); } var request = new CheckoutCampaignRequest {RequestUtcDate = DateTime.UtcNow, Email = viewModel.Email}; _checkoutCampaignRequestRepository.Create(request); TempData[SendEmailRequestAcceptedKey] = true; return RedirectToAction("Oops"); }