public ActionResult _EnrollSmartPit(FormCollection fc) { Response.ContentType = "application/json"; var ReturnCode = new TransactionReturnType() { StatusCode = (int)ErrorCodes.UnknownError, StatusMessage = MyUtility.getErrorMessage(ErrorCodes.UnknownError) }; try { if (!Request.IsAjaxRequest()) { ReturnCode.StatusCode = (int)ErrorCodes.IsInvalidRequest; ReturnCode.StatusMessage = "Your request is invalid."; return Json(ReturnCode, JsonRequestBehavior.AllowGet); } if (!GlobalConfig.IsSmartPitReloadEnabled) { ReturnCode.StatusCode = (int)ReloadError.SMARTPIT_RELOAD_IS_DISABLED; ReturnCode.StatusMessage = "SmartPit reloading is currently disabled."; return Json(ReturnCode, JsonRequestBehavior.AllowGet); } if (User.Identity.IsAuthenticated) { var registDt = DateTime.Now; var context = new IPTV2Entities(); System.Guid userId = new System.Guid(User.Identity.Name); User user = context.Users.FirstOrDefault(u => u.UserId == userId); Offering offering = context.Offerings.FirstOrDefault(o => o.OfferingId == GlobalConfig.offeringId); if (user != null) { if (offering != null) { if (user.HasPendingGomsChangeCountryTransaction(offering)) { ReturnCode.StatusCode = (int)ErrorCodes.HasPendingChangeCountryTransaction; ReturnCode.StatusMessage = "We are processing your recent change in location. Please try again after a few minutes."; return Json(ReturnCode, JsonRequestBehavior.AllowGet); } if (user.HasExceededMaximumReloadTransactionsForTheDay(GlobalConfig.reloadTransactionMaximumThreshold, registDt)) { ReturnCode.StatusCode = (int)ErrorCodes.MaximumTransactionsExceeded; ReturnCode.StatusMessage = String.Format("You have exceeded the maximum number of transactions ({0}) allowed per day. Please try again later.", GlobalConfig.paymentTransactionMaximumThreshold); return Json(ReturnCode, JsonRequestBehavior.AllowGet); } } if (String.Compare(user.CountryCode, GlobalConfig.JapanCountryCode, true) != 0) { ReturnCode.StatusCode = (int)ErrorCodes.UnauthorizedCountry; ReturnCode.StatusMessage = "You are not allowed to use this feature."; return Json(ReturnCode, JsonRequestBehavior.AllowGet); } if (!String.IsNullOrEmpty(user.SmartPitId)) { ReturnCode.StatusCode = (int)ErrorCodes.IsAlreadyEnrolledToSmartPit; ReturnCode.StatusMessage = "You already have an enrolled SmartPit Card Number."; return Json(ReturnCode, JsonRequestBehavior.AllowGet); } var SmartPitCardNumber = String.IsNullOrEmpty(fc["SmartPitCardNumber"]) ? String.Empty : fc["SmartPitCardNumber"]; string ErrorMessage = String.Empty; var service = new GomsTfcTv(); try { var response = service.EnrollSmartPit(context, user.UserId, SmartPitCardNumber); if (response.IsSuccess) { user.SmartPitId = response.SmartPitCardNo; user.SmartPitRegistrationDate = registDt; if (context.SaveChanges() > 0) { ReturnCode.StatusCode = (int)ErrorCodes.Success; ReturnCode.StatusMessage = String.Format("You have successfully {0} a SmartPit Card Number.", String.IsNullOrEmpty(SmartPitCardNumber) ? "generated" : "enrolled"); ReturnCode.info = response.SmartPitCardNo; } else { ReturnCode.StatusCode = (int)ErrorCodes.EntityUpdateError; ReturnCode.StatusMessage = "The system encountered an unspecified error. Please contact Customer Support."; } } else { ReturnCode.StatusCode = (int)ErrorCodes.UnknownError; ReturnCode.StatusMessage = response.StatusMessage; } } catch (Exception e) { MyUtility.LogException(e); ReturnCode.StatusCode = (int)ErrorCodes.UnknownError; ReturnCode.StatusMessage = e.Message; } } } else { ReturnCode.StatusCode = (int)ErrorCodes.NotAuthenticated; ReturnCode.StatusMessage = "Your session has expired. Please login again."; } } catch (Exception e) { MyUtility.LogException(e); ReturnCode.StatusCode = (int)ErrorCodes.UnknownError; ReturnCode.StatusMessage = e.Message; } return Json(ReturnCode, JsonRequestBehavior.AllowGet); }
public ActionResult _CreateSmartPit(FormCollection fc) { Dictionary<string, object> collection = new Dictionary<string, object>(); ErrorCodes errorCode = ErrorCodes.UnknownError; string errorMessage = MyUtility.getErrorMessage(ErrorCodes.UnknownError); collection = MyUtility.setError(errorCode, errorMessage); if (!MyUtility.isUserLoggedIn()) { collection = MyUtility.setError(ErrorCodes.NotAuthenticated); return Content(MyUtility.buildJson(collection), "application/json"); } var context = new IPTV2Entities(); var userId = new Guid(User.Identity.Name); User user = context.Users.FirstOrDefault(u => u.UserId == userId); if (user == null) { collection = MyUtility.setError(ErrorCodes.UnknownError, "User does not exist"); return Content(MyUtility.buildJson(collection), "application/json"); } if (user.Country == null) { collection = MyUtility.setError(ErrorCodes.UnknownError, "User's country is missing."); return Content(MyUtility.buildJson(collection), "application/json"); } if (user.Country.Code != GlobalConfig.JapanCountryCode) { collection = MyUtility.setError(ErrorCodes.UnknownError, "User is not authorized."); return Content(MyUtility.buildJson(collection), "application/json"); } if (!String.IsNullOrEmpty(user.SmartPitId)) { collection = MyUtility.setError(ErrorCodes.UnknownError, "User is already enrolled."); return Content(MyUtility.buildJson(collection), "application/json"); } DateTime registDt = DateTime.Now; var smartpitcardno = String.IsNullOrEmpty(fc["SmartPitCardNumber"]) ? String.Empty : fc["SmartPitCardNumber"]; var service = new GomsTfcTv(); try { var response = service.EnrollSmartPit(context, userId, smartpitcardno); if (response.IsSuccess) { user.SmartPitId = response.SmartPitCardNo; user.SmartPitRegistrationDate = registDt; if (context.SaveChanges() > 0) { collection = MyUtility.setError(ErrorCodes.Success, response.StatusMessage); collection.Add("spcno", response.SmartPitCardNo); } else collection = MyUtility.setError(ErrorCodes.EntityUpdateError, "Unable to process your request. Please try again later."); } else collection = MyUtility.setError(ErrorCodes.EntityUpdateError, response.StatusMessage); } catch (Exception e) { Trace.TraceError(e.Message); collection = MyUtility.setError(ErrorCodes.UnknownError, String.Format("{0} {1}", e.Message, e.InnerException == null ? String.Empty : e.InnerException.Message)); } return Content(MyUtility.buildJson(collection), "application/json"); }
//[RequireHttps] public ActionResult _EnrollSmartPitCardNumber(FormCollection fc) { var ReturnCode = new TransactionReturnType() { StatusCode = (int)ErrorCodes.UnknownError, StatusMessage = String.Empty, info = "SmartPit", TransactionType = "Load" }; string url = Url.Action("Index", "Load").ToString(); try { DateTime registDt = DateTime.Now; Dictionary<string, string> tmpCollection = fc.AllKeys.ToDictionary(k => k, v => fc[v]); bool isMissingRequiredFields = false; foreach (var x in tmpCollection) { if (String.IsNullOrEmpty(x.Value)) { isMissingRequiredFields = true; break; } } if (!isMissingRequiredFields) // process form { if (GlobalConfig.IsSmartPitReloadEnabled) { if (User.Identity.IsAuthenticated) { var context = new IPTV2Entities(); System.Guid userId = new System.Guid(User.Identity.Name); User user = context.Users.FirstOrDefault(u => u.UserId == userId); if (user != null) { var offering = context.Offerings.FirstOrDefault(o => o.OfferingId == GlobalConfig.offeringId); if (offering != null) { if (user.HasPendingGomsChangeCountryTransaction(offering)) ReturnCode.StatusMessage = "We are processing your recent change in location. Please try again after a few minutes."; else if (user.HasExceededMaximumReloadTransactionsForTheDay(GlobalConfig.reloadTransactionMaximumThreshold, registDt)) ReturnCode.StatusMessage = String.Format("You have exceeded the maximum number of transactions ({0}) allowed per day. Please try again later.", GlobalConfig.reloadTransactionMaximumThreshold); else if (String.Compare(user.CountryCode, GlobalConfig.JapanCountryCode, true) != 0) ReturnCode.StatusMessage = "This payment mode is not available in your country."; else if (!String.IsNullOrEmpty(user.SmartPitId)) ReturnCode.StatusMessage = "You already have enrolled a SmartPit Card Number."; else { var SmartPitCardNumber = String.IsNullOrEmpty(fc["SmartPitCardNumber"]) ? String.Empty : fc["SmartPitCardNumber"]; var service = new GomsTfcTv(); var response = service.EnrollSmartPit(context, user.UserId, SmartPitCardNumber); if (response.IsSuccess) { user.SmartPitId = response.SmartPitCardNo; user.SmartPitRegistrationDate = registDt; if (context.SaveChanges() > 0) { ReturnCode.StatusCode = (int)ErrorCodes.Success; ReturnCode.StatusHeader = "You have successfully enrolled!"; ReturnCode.StatusMessage = String.Format("You have successfully {0} SmartPit Card Number {1}.", String.IsNullOrEmpty(SmartPitCardNumber) ? "generated" : "enrolled", response.SmartPitCardNo); ReturnCode.StatusMessage2 = "You can now start reloading your E-Wallet using your SmartPit Card Number."; TempData["ErrorMessage"] = ReturnCode; return RedirectToAction("Index", "Home"); // successful reload } else ReturnCode.StatusMessage = "The system encountered an unspecified error. Please contact Customer Support."; } else { ReturnCode.StatusCode = (int)ErrorCodes.UnknownError; ReturnCode.StatusMessage = response.StatusMessage; } } } else ReturnCode.StatusMessage = "Service not found. Please contact support."; } else ReturnCode.StatusMessage = "User does not exist."; } else ReturnCode.StatusMessage = "Your session has already expired. Please login again."; } else ReturnCode.StatusMessage = "Prepaid Card/ePIN payment is currenty disabled."; } else ReturnCode.StatusMessage = "Please fill in all required fields."; TempData["ErrorMessage"] = ReturnCode; url = Request.UrlReferrer.AbsolutePath; } catch (Exception e) { MyUtility.LogException(e); ReturnCode.StatusMessage = e.Message; TempData["ErrorMessage"] = ReturnCode; } return Redirect(url); }