public ActionResult PaymentProvider()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	      pr.PaymentProviderID,
	      pr.ExternalPaymentProviderGuid,
	      pr.Name,
	      pr.Updated,
	      pr.Created
      FROM MobilePaywall.core.PaymentProvider AS pr
      LEFT OUTER JOIN MobilePaywall.core.PaymentConfiguration AS pc ON pc.PaymentProviderID=pr.PaymentProviderID
      LEFT OUTER JOIN MobilePaywall.core.ServiceOffer AS so ON so.PaymentConfigurationID=pc.PaymentConfigurationID
      LEFT OUTER JOIN MobilePaywall.core.UserSession AS us ON so.ServiceID=us.ServiceID
      WHERE us.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult Customer()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@" SELECT 
            c.CustomerID,
            c.CustomerGuid,
            c.ExternalCustomerGuid,
            cs.Name AS 'CustomerStatus',
            mo.MobileOperatorID,
            mo.ExternalMobileOperatorID,
            mo.Name AS 'MobileOperator',
            c.Msisdn,
            c.EncryptedMsisdn,
            c.Username,
            c.Updated,
            c.Created
        FROM MobilePaywall.core.Customer AS c
        LEFT OUTER JOIN MobilePaywall.core.CustomerStatus AS cs ON c.CustomerStatusID=cs.CustomerStatusID
        LEFT OUTER JOIN MobilePaywall.core.MobileOperator AS mo ON c.MobileOperatorID=mo.MobileOperatorID
        LEFT OUTER JOIN MobilePaywall.core.UserSession AS us ON us.CustomerID=c.CustomerID
        WHERE us.UserSessionID=" + uid + "; ");
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult ContentAccessPolicy()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	      c.ContentAccessPolicyID,
	      bm.Name AS 'BusinessModel',
	      tsam.Name AS 'TemporarySetupAccessModelID',
	      c.TemporaryAccessInSeconds,
	      c.NumberOfItems,
	      c.NumberOfItemDownloads,
	      c.NumberOfTotalDownloads,
	      c.IntervalInSeconds,
	      c.Updated,
	      c.Created
      FROM MobilePaywall.core.ContentAccessPolicy AS c
      LEFT OUTER JOIN MobilePaywall.core.Service AS s ON c.ServiceID=s.ServiceID
      LEFT OUTER JOIN MobilePaywall.core.UserSession AS us ON us.ServiceID=s.ServiceID
      LEFT OUTER JOIN MobilePaywall.core.BusinessModel AS bm ON c.BusinessModelID=bm.BusinessModelID
      LEFT OUTER JOIN MobilePaywall.core.TemporarySetupAccessMode AS tsam ON c.TemporarySetupAccessModeID=tsam.TemporarySetupAccessModeID
      WHERE us.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
Exemplo n.º 4
0
        public static PremiumSubscriptionModel GetModel(MobilePaywallDirect db, AndroidPremiumCustomer customer)
        {
            DirectContainer container = db.LoadContainer(string.Format(@"
        SELECT s.ServiceID, s.Name AS ServiceName, c.TwoLetterIsoCode, sce.Keyword, sce.Shortcode FROM MobilePaywall.core.TemplateServiceInfo AS i
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON i.ServiceID=s.ServiceID
        LEFT OUTER JOIN MobilePaywall.core.Country AS c ON s.FallbackCountryID=c.CountryID
        LEFT OUTER JOIN MobilePaywall.core.ServiceConfiguration AS sc ON s.ServiceConfigurationID=sc.ServiceConfigurationID
        LEFT OUTER JOIN MobilePaywall.core.ServiceConfigurationEntry AS sce ON sce.ServiceConfigurationID=sc.ServiceConfigurationID
		    LEFT OUTER JOIN MobilePaywall.core.AndroidPremiumCustomerServiceMap AS apcsm ON apcsm.ServiceID=s.ServiceID
        WHERE i.IsPremiumSms=1 AND sce.Shortcode != '' AND sce.Keyword != '' AND i.Progress IN (5) 
              AND (apcsm.AndroidPremiumCustomerID IS NULL OR apcsm.AndroidPremiumCustomerID!={0} OR (apcsm.AndroidPremiumCustomerID={0} AND apcsm.PaymentRequestID IS NULL)) AND c.CountryID={1}", customer.ID, customer.Country.ID));

            if (!container.HasValue || container.ColumnCount == 0)
            {
                return(null);
            }

            return(new PremiumSubscriptionModel()
            {
                ServiceID = container.GetString("ServiceID"),
                ServiceName = container.GetString("ServiceName"),
                TwoLetterIsoCode = container.GetString("TwoLetterIsoCode"),
                Keyword = container.GetString("Keyword"),
                Shortcode = container.GetString("Shortcode")
            });
        }
        public ActionResult Product()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	        p.ProductID,
	        p.ProductGuid,
	        p.ExternalProductGuid,
	        i.Name,
	        p.Name,
	        p.Description,
	        p.Updated,
	        p.Created
        FROM MobilePaywall.core.Product AS p
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON s.ProductID=p.ProductID
        LEFT OUTER JOIN MobilePaywall.core.Instance AS i ON p.InstanceID=i.InstanceID
        LEFT OUTER JOIN MobilePaywall.core.UserSession AS us ON us.ServiceID=s.ServiceID
        WHERE us.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult Merchant()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	      m.MerchantID,
	      m.Name,
	      m.Address,
	      m.Phone,
	      m.Email,
	      m.RegistrationNo,
	      m.VatNo,
	      t.Name AS 'Template',
	      m.Updated,
	      m.Created
      FROM MobilePaywall.core.Merchant AS m
      LEFT OUTER JOIN MobilePaywall.core.Service AS s ON s.MerchantID=m.MerchantID
      LEFT OUTER JOIN MobilePaywall.core.Template AS t ON m.TemplateID=t.TemplateID
      LEFT OUTER JOIN MobilePaywall.core.UserSession AS us ON us.ServiceID=s.ServiceID
      WHERE us.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult PaymentAccessPolicy()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	      pcapm.PaymentContentAccessPolicyMapID,
	      pcapm.ContentID,
	      pcapm.TransactionID,
	      pcapm.IsValid,
	      pcapm.IsTemporary,
	      pcapm.ValidTo,
	      pcapm.Updated,
	      pcapm.Created
      FROM MobilePaywall.core.PaymentContentAccessPolicyMap AS pcapm
      LEFT OUTER JOIN MobilePaywall.core.Payment AS p ON pcapm.PaymentID=p.PaymentID
      LEFT OUTER JOIN MobilePaywall.core.PaymentRequest AS pr ON pr.PaymentRequestID=p.PaymentRequestID
      WHERE pr.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult Application()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	      a.ApplicationID,
	      a.Name,
	      a.ApplicationName,
	      i.Name AS 'Instance',
	      at.Name AS 'ApplicationType',
	      rt.Name AS 'RuntimeType',
	      rt.TypeName AS 'RuntimeType',
	      a.Updated,
	      a.Created
      FROM MobilePaywall.core.Application AS a 
      LEFT OUTER JOIN MobilePaywall.core.Service AS s ON s.ApplicationID=a.ApplicationID
      LEFT OUTER JOIN MobilePaywall.core.UserSession AS us ON us.ServiceID=s.ServiceID
      LEFT OUTER JOIN MobilePaywall.core.Instance AS i ON a.InstanceID=i.InstanceID
      LEFT OUTER JOIN MobilePaywall.core.RuntimeType AS rt ON a.RuntimeTypeID=rt.RuntimeTypeID
      LEFT OUTER JOIN MobilePaywall.core.ApplicationType AS at ON a.ApplicationTypeID=at.ApplicationTypeID
      WHERE us.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult Transaction()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	        t.TransactionID,
	        t.TransactionGuid,
	        t.ExternalTransactionGuid,
	        t.ExternalTransactionGroupGuid,
	        ts.Name AS 'TransactionStatus',
	        tt.Name AS 'TransactionType',
	        t.Updated,
	        t.Created
        FROM MobilePaywall.core.[Transaction] AS t 
        LEFT OUTER JOIN MobilePaywall.core.TransactionStatus AS ts ON t.TransactionStatusID=ts.TransactionStatusID
        LEFT OUTER JOIN MobilePaywall.core.TransactionType AS tt ON t.TransactionTypeID=tt.TransactionTypeID
        LEFT OUTER JOIN MobilePaywall.core.Payment AS p ON t.PaymentID=p.PaymentID
        LEFT OUTER JOIN MobilePaywall.core.PaymentRequest AS pr ON pr.PaymentRequestID=p.PaymentRequestID
        WHERE pr.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult PaymentRequest()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT
	      pr.PaymentRequestID,
	      pr.PaymentRequestGuid,
	      pr.ExternalPaymentRequestGuid,
	      pt.Name AS 'PaymentType',
	      prs.Name AS 'PaymentRequestStatus',
	      bmet.Name AS 'BusinessModelType',
	      pr.PaymentRedirectUrl,
	      pr.Updated,
	      pr.Created
      FROM MobilePaywall.core.PaymentRequest AS pr
      LEFT OUTER JOIN MobilePaywall.core.PaymentType as pt ON pr.PaymentTypeID=pt.PaymentTypeID
      LEFT OUTER JOIN MobilePaywall.core.PaymentRequestStatus AS prs ON pr.PaymentRequestStatusID=prs.PaymentRequestStatusID
      LEFT OUTER JOIN MobilePaywall.core.BusinessModelEntry AS bme ON pr.BusinessModelEntryID=bme.BusinessModelEntryID
      LEFT OUTER JOIN MobilePaywall.core.BusinessModelType AS bmet ON bme.BusinessModelTypeID=bmet.BusinessModelTypeID
      WHERE pr.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult GetClickInformations(string uid)
        {
            int _uid = -1;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content(""));
            }

            MobilePaywallDirect db    = MobilePaywallDirect.Instance;
            DirectContainer     cache = db.LoadContainer(@"SELECT c.ServiceName, c.CountryCode, c.MobileOperatorName, c.SessionCreated, p.PaymentStatusID, p.PaymentID
        FROM MobilePaywall.core.OLCache AS c
        LEFT OUTER JOIN MobilePaywall.core.Payment AS p ON c.PaymentID=p.PaymentID
        WHERE c.UserSessionID=" + uid);

            if (!cache.HasValue)
            {
                return(this.Content(""));
            }

            ClickInformationModel model = new ClickInformationModel();

            model.UserSessionID = uid;
            model.Logo          = string.Format("http://{0}/logo", cache.GetString("ServiceName"));
            model.Country       = string.Format("../images/_flagsx/{0}.png", cache.GetString("CountryCode"));

            return(PartialView("~/Views/Report/_ClickInformations.cshtml", model));
        }
Exemplo n.º 12
0
        public static async void Test()
        {
            MobilePaywallDirect db = MobilePaywallDirect.Instance;
            int?id = db.LoadInt("SELECT TOP 1 ServiceID FROM MobilePaywall.core.Service", DirectTime.Now);

            Console.ReadKey();
        }
Exemplo n.º 13
0
        // GET: Entrance call from apk, first thing that will be called
        public ActionResult Call()
        {
            string uniqueID        = Request["uniqueID"] != null ? Request["uniqueID"].ToString() : string.Empty;
            string msisdn          = Request["msisdn"] != null ? Request["msisdn"].ToString() : string.Empty;
            string referrer        = Request["referrer"] != null ? Request["referrer"].ToString() : string.Empty;
            string applicationName = Request["applicationName"] != null ? Request["applicationName"].ToString() : string.Empty;

            // Check values
            if (string.IsNullOrEmpty(uniqueID))
            {
                Log.Error("Primium.Entrance:: No uniqueID");
                return(this.Json(new { status = false }, JsonRequestBehavior.AllowGet));
            }

            if (string.IsNullOrEmpty(applicationName))
            {
                Log.Error("Primium.Entrance:: No application name");
                return(this.Json(new { status = false }, JsonRequestBehavior.AllowGet));
            }

            AndroidPremiumCustomer customer = this.GetCustomer(uniqueID, applicationName, Request.UserHostAddress, msisdn, referrer);

            // Find suitable service for subscription
            MobilePaywallDirect      db = MobilePaywallDirect.Instance;
            PremiumSubscriptionModel subscriptionModel = PremiumSubscriptionModel.GetModel(db, customer);

            if (subscriptionModel == null)
            {
                Log.Debug("Primium.Entrance:: There is no suitable PSMS service for country=" + customer.Country.TwoLetterIsoCode);
                return(this.Json(new { status = false, customerID = customer.ID }, JsonRequestBehavior.AllowGet));
            }

            string textmessage = string.Format("{0} /ac={1}", subscriptionModel.Keyword, customer.ID);

            AndroidPremiumCustomerServiceMap map = new AndroidPremiumCustomerServiceMap(-1,
                                                                                        customer,
                                                                                        null,
                                                                                        Int32.Parse(subscriptionModel.ServiceID),
                                                                                        subscriptionModel.Shortcode,
                                                                                        textmessage,
                                                                                        null,
                                                                                        DateTime.Now, DateTime.Now);

            map.Insert();

            int minuteWait = (new Random()).Next(2, 7);

            Log.Debug(string.Format("Primium.Entrance:: Customer:{0}, Service:{1}, Shortcode:{2}, Keyword:{3}, Wait: {4}",
                                    customer.ID, subscriptionModel.ServiceName, subscriptionModel.Shortcode, subscriptionModel.Keyword, minuteWait));

            return(this.Json(new
            {
                status = true,
                minute = minuteWait,
                customerID = customer.ID,
                shortcode = subscriptionModel.Shortcode,
                textmessage = textmessage,
            }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 14
0
        public CodeManager(FilterModel filter)
        {
            MobilePaywallDirect directInstance = MobilePaywallDirect.Instance;

            CreateSql(filter);
            this._conteiner = directInstance.LoadContainer(_sqlCommand);
            _homeModel      = new HomeModel(this._conteiner);
        }
Exemplo n.º 15
0
        // GET: Detail
        public ActionResult ViewDetails(int id, string tableName)
        {
            MobilePaywallDirect directInstance = MobilePaywallDirect.Instance;
            string          sqlCommand         = "SELECT * FROM MobilePaywall.log." + tableName + " WHERE " + tableName + "ID=" + id;
            DirectContainer conteiner          = directInstance.LoadContainer(sqlCommand);

            WebLogInspector.Models.Home.LogResultModel model = new Models.Home.LogResultModel(conteiner.Rows.First());
            return(View(model));
        }
Exemplo n.º 16
0
        public ActionResult GetCashflowNewLog(WebLogTableData data)
        {
            MobilePaywallDirect db      = MobilePaywallDirect.Instance;
            CashflowLogManager  manager = new CashflowLogManager();

            manager.QueryByReferenceIntID(data);
            return(View("~/Views/Report/_LogBlock.cshtml", new LogModel()
            {
                Tables = manager.Result
            }));
        }
        public ActionResult ClickinformationsAction_CancelPayment(string uid)
        {
            if (string.IsNullOrEmpty(uid))
            {
                return(this.Json(new { status = false, message = "There is no uid param" }));
            }

            MobilePaywallDirect db = MobilePaywallDirect.Instance;

            DirectContainer container = db.LoadContainer(string.Format(@"
        SELECT ol.PaymentID, p.PaymentStatusID FROM MobilePaywall.core.OLCache AS ol
        LEFT OUTER JOIN MobilePaywall.core.Payment AS p ON ol.PaymentID=p.PaymentID
        WHERE UserSessionID={0}", uid));

            if (!container.HasValue)
            {
                return(this.Json(new { status = false, message = "There is no entry for this UserSession" }));
            }

            int?paymentID     = container.GetInt("PaymentID");
            int?paymentStatus = container.GetInt("PaymentStatusID");

            if (!paymentID.HasValue)
            {
                return(this.Json(new { status = false, message = "This UserSession has no payment" }));
            }
            if (!paymentStatus.HasValue)
            {
                return(this.Json(new { status = false, message = "InternalError. There is no status for payment on this US" }));
            }

            if (paymentStatus.Value == 1)
            {
                return(this.Json(new { status = false, message = "Payment status is initialized. You cannot cancel this status" }));
            }
            if (paymentStatus.Value == 2)
            {
                return(this.Json(new { status = false, message = "Payment status is pending. You cannot cancel this status" }));
            }
            if (paymentStatus.Value == 4)
            {
                return(this.Json(new { status = false, message = "Payment status is failed. You cannot cancel this payment" }));
            }
            if (paymentStatus.Value == 5)
            {
                return(this.Json(new { status = false, message = "This payment is allready canceled" }));
            }

            db.Execute("UPDATE MobilePaywall.core.Payment SET PaymentStatusID=5 WHERE PaymentID=" + paymentID.Value);
            return(this.Json(new { status = true, message = "Payment is cancelled" }));
        }
Exemplo n.º 18
0
        /// SUMMARY: Get suatable services for specific country (Based on ServiceInfo ordered by 'Live and Active' and 'Active but no active')
        ///          in witch this customer has not made any PaymentReqeust
        ///          ONLY WAP PAYMENT
        public static SuitableServiceResponse GetWapService(AndroidClientSession session)
        {
            MobilePaywallDirect db = MobilePaywallDirect.Instance;

            // First we get filter list of all services in which this session has made payment request in past time (7days)
            List <string> servicesWithPaymentRequest = db.LoadContainer(string.Format(@"
        SELECT s.Name FROM MobilePaywall.core.AndroidClientSession AS acs
        LEFT OUTER JOIN MobilePaywall.core.AndroidClientSessionOLCacheMap AS acmap ON acmap.AndroidClientSessionID=acs.AndroidClientSessionID
        LEFT OUTER JOIN MobilePaywall.core.OLCache AS cache ON cache.OLCacheID=acmap.OLCacheID
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON s.ServiceID=cache.ServiceID
        WHERE acs.AndroidClientSessionID={0} AND cache.PaymentRequestID IS NOT NULL AND cache.IsSubseguent=0  AND cache.SessionCreated >= DATEADD(day,-{1}, GETDATE());", session.ID, DAYS_FOR_PAYMENT_REQUEST_CHECK)).GetStringList("Name");

            // Then we filter services in which this session has any access in past day
            List <string> servicesWithAnyAccess = db.LoadContainer(string.Format(@"
        SELECT s.Name FROM MobilePaywall.core.AndroidClientSession AS acs
        LEFT OUTER JOIN MobilePaywall.core.AndroidClientSessionOLCacheMap AS acmap ON acmap.AndroidClientSessionID=acs.AndroidClientSessionID
        LEFT OUTER JOIN MobilePaywall.core.OLCache AS cache ON cache.OLCacheID=acmap.OLCacheID
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON s.ServiceID=cache.ServiceID
        WHERE acs.AndroidClientSessionID={0} AND cache.SessionCreated >= DATEADD(day,-{1}, GETDATE());", session.ID, DAYS_FOR_ACCESS_CHECK)).GetStringList("Name");

            // This is the list of all services that are listed as LIVE AND ACTIVE
            List <string> suitableActiveServices = db.LoadContainer(string.Format(@" 
        SELECT s.Name AS 'Name' FROM MobilePaywall.core.TemplateServiceInfo AS tsi
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON tsi.ServiceID=s.ServiceID
        WHERE s.FallbackCountryID={0} AND tsi.Progress=5 AND tsi.Color = 2 AND IsPremiumSms=0", session.Country.ID)).GetStringList("Name");

            // This is filter list for all services that are listed as NOT LIVE BUT ACTIVE
            List <string> suitableNonActiveServices = db.LoadContainer(string.Format(@" 
        SELECT s.Name AS 'Name' FROM MobilePaywall.core.TemplateServiceInfo AS tsi
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON tsi.ServiceID=s.ServiceID
        WHERE s.FallbackCountryID={0} AND tsi.Progress=5 AND tsi.Color = 1 AND IsPremiumSms=0", session.Country.ID)).GetStringList("Name");

            // randomize active and non active services in one single list
            Random        rand             = new Random();
            List <string> suitableServices = suitableActiveServices.OrderBy(c => rand.Next()).ToList();

            suitableServices.AddRange(suitableNonActiveServices.OrderBy(c => rand.Next()).ToList());

            foreach (string service in suitableServices)
            {
                if (!servicesWithPaymentRequest.Contains(service) && !servicesWithAnyAccess.Contains(service))
                {
                    return(new SuitableServiceResponse(service, false));
                }
            }

            return(null);
        }
Exemplo n.º 19
0
        public ActionResult CloseAccessPolicy(string uid)
        {
            //Client client = ClientHelper.GetClient(Request);
            //if (client == null)
            //  return this.Json(new { status = false, message = "Login error" });

            int _uid = -1;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Json(new { status = false, message = "Parse error" }, JsonRequestBehavior.AllowGet));
            }

            MobilePaywallDirect db = MobilePaywallDirect.Instance;
            int?paymentID          = db.LoadInt("SELECT PaymentID FROM MobilePaywall.core.OLCache WHERE UserSessionID=" + uid);

            if (!paymentID.HasValue)
            {
                return(this.Json(new { status = false, message = "Payment is missing from cache" }));
            }

            DirectContainer pcapm = db.LoadContainer("SELECT PaymentContentAccessPolicyMapID FROM MobilePaywall.core.PaymentContentAccessPolicyMap WHERE PaymentID=" + paymentID.Value + " AND IsValid=1 AND ValidTo>getdate();");

            if (!pcapm.HasValue)
            {
                return(this.Json(new { status = false, message = "There are no active Access policies" }));
            }

            IPaymentContentAccessPolicyMapManager pcapManager = PaymentContentAccessPolicyMap.CreateManager();

            foreach (DirectContainerRow row in pcapm.Rows)
            {
                int?pcapmID = row.GetInt("PaymentContentAccessPolicyMapID");
                if (!pcapmID.HasValue)
                {
                    continue;
                }

                PaymentContentAccessPolicyMap map = pcapManager.Load(pcapmID.Value);
                if (map == null)
                {
                    continue;
                }
            }

            return(null);
        }
Exemplo n.º 20
0
        public DevicesEntryManager(LoadInputData data)
        {
            this._data = data;
            this.Validate();
            if (this._error)
            {
                return;
            }

            this._result = new List <DeviceEntry>();
            MobilePaywallDirect db = new MobilePaywallDirect();
            string command         = "";

            #region # sql command #

            command = " SELECT TOP " + data.top + " "
                      + " acs.AndroidClientSessionID, "
                      + " ad.Name, "
                      + " c.TwoLetterIsoCode, "
                      + " acs.Device, "
                      + " acs.Company, "
                      + " acs.Msisdn, "
                      + " acs.Created "
                      + " FROM MobilePaywall.core.AndroidClientSession AS acs "
                      + " LEFT OUTER JOIN MobilePaywall.core.AndroidDistribution AS ad ON acs.AndroidDistributionID=ad.AndroidDistributionID "
                      + " LEFT OUTER JOIN MobilePaywall.core.Country AS c ON acs.CountryID=c.CountryID "
                      + " WHERE "
                      + (!string.IsNullOrEmpty(data.country) ? " c.TwoLetterIsoCode='" + data.country + "' AND " : "")
                      + (!string.IsNullOrEmpty(data.appID) && !data.appID.Equals("-1") ? " ad.AndroidDistributionID=" + data.appID + " AND " : "")
                      + string.Format(" acs.LastPing >= '{0}' AND acs.LastPing <= '{1}' ", db.Date(this._data.DT_From), db.Date(this._data.DT_To))
                      + " ORDER BY acs.LastPing DESC; ";

            #endregion

            DataTable table = db.Load(command);
            if (table == null)
            {
                return;
            }

            foreach (DataRow row in table.Rows)
            {
                this._result.Add(new DeviceEntry(row));
            }
        }
Exemplo n.º 21
0
        // SUMMARY: Report -> Get cashflow logs for specific log
        public ActionResult GetCashflowLog(WebLogTableData data)
        {
            MobilePaywallDirect db      = MobilePaywallDirect.Instance;
            CashflowLogManager  manager = new CashflowLogManager();

            Guid?subscriptionRequestGuid = db.LoadGuid("SELECT ExternalPaymentRequestGuid FROM MobilePaywall.core.PaymentRequest WHERE ExternalPaymentRequestGuid IS NOT NULL AND UserSessionID=" + data.SessionID);

            if (subscriptionRequestGuid.HasValue)
            {
                data.SessionID = subscriptionRequestGuid.Value.ToString();
                manager.QueryBySubscriptionRequestGuid(data);
                return(View("~/Views/Report/_LogBlock.cshtml", new LogModel()
                {
                    Tables = manager.Result
                }));
            }

            Guid?identificationSession = db.LoadGuid("SELECT IdentificationSessionGuid FROM MobilePaywall.core.LookupSession WHERE IdentificationSessionGuid IS NOT NULL AND UserSessionID=" + data.SessionID);

            if (identificationSession.HasValue)
            {
                data.SessionID = identificationSession.Value.ToString();
                manager.QueryByIdentificationSessionGuid(data);
                return(View("~/Views/Report/_LogBlock.cshtml", new LogModel()
                {
                    Tables = manager.Result
                }));
            }

            Guid?referenceGuid = db.LoadGuid("SELECT UserSessionGuid FROM MobilePaywall.core.UserSession WHERE UserSessionID=" + data.SessionID);

            if (referenceGuid.HasValue)
            {
                data.SessionID = referenceGuid.ToString();
                manager.QueryByReferenceGuid(data);
                return(View("~/Views/Report/_LogBlock.cshtml", new LogModel()
                {
                    Tables = manager.Result
                }));
            }

            return(this.Content("Could not find referenceID"));
        }
Exemplo n.º 22
0
        // SUMMARY: Find all suitable tasks and run them
        public static void Start()
        {
            MobilePaywallDirect database = MobilePaywallDirect.Instance;

            for (;;)
            {
                System.Threading.Thread.Sleep(1500);

                foreach (DeamonTaskData task in DeamonTaskData.GetCurrentData())
                {
                    if (!task.ShouldThisTaskBeExecuted)
                    {
                        continue;
                    }

                    StartTask(task);
                }
            }
        }
        public ActionResult UserSession()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT    
            us.UserSessionID,
            us.UserSessionGuid,
            olCache.OLCacheID,
            ustype.Name AS 'UserSessionType',
            ustype.TypeName AS 'UserSessionTypeName',
            country.Globalname AS 'Country',
            mo.MobileOperatorID,
            mo.ExternalMobileOperatorID,
            mo.Name AS 'MobileOperator',
            us.FingerprintID,
            us.HasVerifiedAge,
            us.IsWelcomeShown,
            us.IPAddress,
            us.UserAgent,
            us.EntranceUrl, 
            us.Referrer,
            us.ValidUntil AS 'UserSessionValidUntil',
            us.Created AS 'UserSessionCreated'
         FROM MobilePaywall.core.UserSession AS us  
         LEFT OUTER JOIN MobilePaywall.core.UserSessionType AS ustype ON us.UserSessionTypeID=ustype.UserSessionTypeID 
         LEFT OUTER JOIN MobilePaywall.core.OLCache AS olCache ON olCache.UserSessionID=us.UserSessionID
         LEFT OUTER JOIN MobilePaywall.core.Country AS country ON us.CountryID=country.CountryID
         LEFT OUTER JOIN MobilePaywall.core.MobileOperator AS mo ON us.MobileOperatorID=mo.MobileOperatorID
         WHERE us.UserSessionID=" + uid + "; ");
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
        public ActionResult ClickinformationsAction_CancelAccessPolicy(string uid)
        {
            if (string.IsNullOrEmpty(uid))
            {
                return(this.Json(new { status = false, message = "There is no uid param" }));
            }

            MobilePaywallDirect db = MobilePaywallDirect.Instance;

            int?paymentID = db.LoadInt(string.Format(@"
        SELECT ol.PaymentID FROM MobilePaywall.core.OLCache AS ol
        WHERE UserSessionID={0}", uid));

            if (!paymentID.HasValue)
            {
                return(this.Json(new { status = false, message = "This UserSession has no Payment" }));
            }

            db.Execute("UPDATE MobilePaywall.core.PaymentContentAccessPolicyMap SET IsValid=0 WHERE PaymentID=" + paymentID.Value);
            return(this.Json(new { status = true, message = "AccessPolicy is closed" }));
        }
        public ActionResult Service()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@"SELECT 
	      s.ServiceID,
	      s.Name,
	      s.Description,
	      ss.Name AS 'Status',
	      st.Name AS 'Type',
	      l.GlobalName AS 'FallbackLanguage',
	      c.GlobalName AS 'FallbackCountry',
	      ar.Name AS 'FallbackAgeRating',
	      bm.Name AS 'BusinessModel',
	      t.Name AS 'Template',
	      s.Updated,
	      s.Created
      FROM MobilePaywall.core.Service AS s
      LEFT OUTER JOIN MobilePaywall.core.UserSession AS us ON us.ServiceID=s.ServiceID
      LEFT OUTER JOIN MobilePaywall.core.ServiceStatus AS ss ON s.ServiceStatusID=ss.ServiceStatusID
      LEFT OUTER JOIN MobilePaywall.core.ServiceType AS st ON s.ServiceTypeID=st.ServiceTypeID
      LEFT OUTER JOIN MobilePaywall.core.Language AS l ON s.FallbackLanguageID=l.LanguageID
      LEFT OUTER JOIN MobilePaywall.core.Country AS c ON s.FallbackCountryID=c.CountryID
      LEFT OUTER JOIN MobilePaywall.core.Template AS t ON s.TemplateID=t.TemplateID
      LEFT OUTER JOIN MobilePaywall.core.AgeRating AS ar ON s.FallbackAgeRatingID=ar.AgeRatingID
      LEFT OUTER JOIN MobilePaywall.core.BusinessModel AS bm ON s.BusinessModelID=bm.BusinessModelID
      WHERE us.UserSessionID=" + uid);
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
Exemplo n.º 26
0
        public ManagerModel()
        {
            this._countries = new List <CountryModel>();
            MobilePaywallDirect md        = new MobilePaywallDirect();
            DirectContainer     container = md.LoadContainer(string.Format(@"SELECT DISTINCT c.CountryID,c.GlobalName FROM MobilePaywall.core.Country c 
                                                                    JOIN MobilePaywall.core.AndroidPremiumCustomer AS a ON c.CountryID = a.CountryID"));

            foreach (DirectContainerRow row in container.Rows)
            {
                int?   id   = row.GetInt("CountryID");
                string name = row.GetString("GlobalName");

                CountryModel c = new CountryModel(id.Value, name);
                this.Countries.Add(c);
            }

            if (container == null)
            {
                this._countries = new List <CountryModel>();
            }

            this._customers = new List <AndroidPremiumCustomer>();
        }
Exemplo n.º 27
0
        public TemplateServiceCapModel()
        {
            MobilePaywallDirect db   = MobilePaywallDirect.Instance;
            List <int>          sids = db.LoadArrayInt(string.Format(@"
        SELECT s.ServiceID, s.FallbackCountryID
        FROM MobilePaywall.core.Service AS s
        INNER JOIN (SELECT ServiceID FROM MobilePaywall.core.TemplateServiceCap WHERE IsActive=1 GROUP BY ServiceID) AS m ON m.ServiceID=s.ServiceID
        ORDER BY s.FallbackCountryID"));

            IServiceManager sManager = Service.CreateManager();

            this._services  = new List <Service>();
            this._countries = new List <Country>();
            foreach (int sid in sids)
            {
                Service s = Service.CreateManager().Load(sid);
                if (!this._countries.Contains(s.FallbackCountry))
                {
                    this._countries.Add(s.FallbackCountry);
                }
                this._services.Add(s);
            }
        }
        public ActionResult LookupSession()
        {
            int    _uid = -1;
            string uid  = Request["uid"] != null ? Request["uid"].ToString() : string.Empty;

            if (!Int32.TryParse(uid, out _uid))
            {
                return(this.Content("Could not parse UID"));
            }

            #region load method
            DirectContainer container = new MobilePaywallDirect().LoadContainer(@" SELECT 
	      ls.LookupSessionID,
	      ls.LookupSessionGuid,
	      lss.Name AS 'Status',
	      ls.IdentificationSessionGuid,
	      ls.LookupUrl,
	      lsr.LookupSessionResultID,
	      lsr.IsSuccessful,
	      lsr.IsFinalResult,
	      lsr.IdentificationResultGuid,
	      lsr.MobileOperatorID,
	      lsr.Msisdn,
	      lsr.EncryptedMsisdn,
	      lsr.Created AS 'ResultCreated',
	      ls.Created AS 'LookupSessionCreated'
      FROM MobilePaywall.core.LookupSession AS ls
      LEFT OUTER JOIN MobilePaywall.core.LookupSessionStatus AS lss ON ls.LookupSessionStatusID=lss.LookupSessionStatusID
      LEFT OUTER JOIN MobilePaywall.core.LookupSessionResult AS lsr ON lsr.LookupSessionID=ls.LookupSessionID
      WHERE ls.UserSessionID=" + uid +
                                                                                "ORDER BY LookupSessionID DESC");
            #endregion

            InformationsBaseTableModel model = new InformationsBaseTableModel(container);
            return(PartialView("~/Views/Report/_InformationsBaseTable.cshtml", model));
        }
Exemplo n.º 29
0
        /// SUMMARY: Get suatable services for specific country (Based on ServiceInfo ordered by 'Live and Active' and 'Active but no active')
        ///          in witch this customer has not made any PaymentReqeust
        ///          ONLY PSMS PAYMENT
        public static SuitableServiceResponse GetPsmsService(AndroidClientSession session)
        {
            MobilePaywallDirect db = MobilePaywallDirect.Instance;

            // First we create filter list for every service in which this session has requested PSMS payment
            List <string> servicesWithPaymentRequest = db.LoadContainer(string.Format(@"
        SELECT s.Name FROM MobilePaywall.core.AndroidPremiumSmsRequest AS psms
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON psms.ServiceID=s.ServiceID
        WHERE AndroidClientSessionID=1 AND psms.Created >= DATEADD(day,-1, GETDATE());", session.ID, DAYS_FOR_PAYMENT_REQUEST_CHECK)).GetStringList("Name");

            List <string> suitableActiveServices = db.LoadContainer(string.Format(@" 
        SELECT s.Name AS 'Name' FROM MobilePaywall.core.TemplateServiceInfo AS tsi
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON tsi.ServiceID=s.ServiceID
        WHERE s.FallbackCountryID={0} AND tsi.Progress=5 AND tsi.Color = 2 AND IsPremiumSms=0", session.Country.ID)).GetStringList("Name");

            List <string> suitableNonActiveServices = db.LoadContainer(string.Format(@" 
        SELECT s.Name AS 'Name' FROM MobilePaywall.core.TemplateServiceInfo AS tsi
        LEFT OUTER JOIN MobilePaywall.core.Service AS s ON tsi.ServiceID=s.ServiceID
        WHERE s.FallbackCountryID={0} AND tsi.Progress=5 AND tsi.Color = 1 AND IsPremiumSms=0", session.Country.ID)).GetStringList("Name");

            // randomize active and non active services in one single list
            Random        rand             = new Random();
            List <string> suitableServices = suitableActiveServices.OrderBy(c => rand.Next()).ToList();

            suitableServices.AddRange(suitableNonActiveServices.OrderBy(c => rand.Next()).ToList());

            foreach (string service in suitableServices)
            {
                if (!servicesWithPaymentRequest.Contains(service))
                {
                    return(new SuitableServiceResponse(service, true));
                }
            }

            return(null);
        }
Exemplo n.º 30
0
 public EntranceTableManager()
 {
     this._database = new MobilePaywallDirect();
 }