Ejemplo n.º 1
0
        public TFCtvResponse UnassociateTVEverywhere(ReqUnassociateTVEverywhere req)
        {
            TFCtvResponse resp = null;
            DateTime registDt = DateTime.Now;
            string ip = ConfigurationManager.AppSettings["IpWhiteList"];
            string[] IpAddresses = ip.Split(';');
            bool isWhitelisted = IpAddresses.Contains(HttpContext.Current.Request.UserHostAddress);
            if (!isWhitelisted)
            {
                resp = new TFCtvResponse() { Code = -3001, Message = "Ip address is unauthorized." }; return resp;
            }

            if (!HttpContext.Current.Request.IsLocal)
            {
                //Check SoapHeader
                if (Credentials.Username.ToLower() != SoapHeaderUsername || Credentials.Password != SoapHeaderPassword)
                { resp = new TFCtvResponse() { Code = -3002, Message = "Call is unauthorized." }; return resp; }
            }

            if (req == null)
                resp = new TFCtvResponse() { Code = -3003, Message = "Request parameter is empty." };
            else
            {
                if (req.GomsCustomerId == null || req.GomsTransactionDate == null || req.GomsTransactionId == null)
                {
                    resp = new TFCtvResponse() { Code = -3004, Message = "Missing required fields." };
                    return resp;
                }

                var context = new IPTV2Entities();
                if (isProduction)
                    context.Database.Connection.ConnectionString = IPTV2EntitiesAzureConnectionString;


                var user = context.Users.FirstOrDefault(u => u.GomsCustomerId == req.GomsCustomerId);
                if (user == null)
                {
                    resp = new TFCtvResponse() { Code = -1001, Message = "User does not exist." };
                    return resp;
                }

                if (user.Country == null)
                {
                    resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                    return resp;
                }
                //else // Do we need to check for Japan/US only?
                //{
                //    var countries = TVECountryWhitelist.Split(',');
                //    if (!countries.Contains(user.Country.Code))
                //    {
                //        resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                //        return resp;
                //    }
                //}

                var product = context.Products.FirstOrDefault(p => p.GomsProductId == req.GomsProductId && p.GomsProductQuantity == req.GomsProductQuantity);
                if (product == null)
                {
                    resp = new TFCtvResponse() { Code = -1007, Message = "GOMS Product does not exist." };
                    return resp;
                }

                if (user.IsTVEverywhere == null)
                {
                    resp = new TFCtvResponse() { Code = -1003, Message = "User is not TFC.tv Everywhere associated." };
                    return resp;
                }
                else
                {
                    if (user.IsTVEverywhere == false)
                    {
                        resp = new TFCtvResponse() { Code = -1003, Message = "User is not TFC.tv Everywhere associated." };
                        return resp;
                    }
                }

                //if (user.Transactions.Count(t => t.GomsTransactionId == req.GomsTransactionId) > 0)
                //{
                //    resp = new TFCtvResponse() { Code = -1006, Message = "Transaction already exists in TFC.tv." };
                //    return resp;
                //}


                if (user != null)
                {

                    var productPackage = context.ProductPackages.FirstOrDefault(p => p.ProductId == product.ProductId);
                    if (productPackage == null)
                    {
                        resp = new TFCtvResponse() { Code = -1006, Message = "TFC.tv package does not exist." };
                        return resp;
                    }

                    var entitlement = user.PackageEntitlements.FirstOrDefault(p => p.PackageId == productPackage.Package.PackageId);
                    if (entitlement != null)
                        entitlement.EndDate = (DateTime)req.GomsTransactionDate;

                    //user.LastUpdated = registDt;
                    user.LastUpdated = (DateTime)req.GomsTransactionDate;
                    user.IsTVEverywhere = false; // Set to false

                    string CurrencyCode = DefaultCurrencyCode;
                    Country country = context.Countries.FirstOrDefault(c => c.Code == user.CountryCode);
                    if (country != null)
                    {
                        Currency currency = context.Currencies.FirstOrDefault(c => c.Code == country.CurrencyCode);
                        if (currency != null) CurrencyCode = currency.Code;
                    }

                    var transaction = user.Transactions.LastOrDefault(t => t.GetType() != typeof(TfcEverywhereTransaction) && t.GomsTransactionId == req.GomsTransactionId);
                    if (transaction == null)
                    {
                        resp = new TFCtvResponse() { Code = -1004, Message = "TFC.tv Everywhere transaction not found." };
                        return resp;
                    }
                    var cancellation = new CancellationTransaction()
                    {
                        CancellationRemarks = req.Reference,
                        GomsTransactionId = -1000,
                        GomsTransactionDate = req.GomsTransactionDate,
                        OriginalTransactionId = transaction.TransactionId,
                        StatusId = 1,
                        OfferingId = offeringId,
                        Date = (DateTime)req.GomsTransactionDate,
                        Amount = 0,
                        Currency = CurrencyCode,
                        Reference = req.Reference
                    };

                    user.Transactions.Add(cancellation);
                }

                try
                {
                    if (context.SaveChanges() > 0)
                        resp = new TFCtvResponse() { Code = 0, Message = String.Format("Successfully unassociated TFC.tv Everywhere from GomsCustomerId {0}.", req.GomsCustomerId) };
                    else
                        resp = new TFCtvResponse() { Code = -1005, Message = "Unable to unassociate TFC.tv Everywhere." };
                }
                catch (Exception e)
                {
                    resp = new TFCtvResponse() { Code = -3000, Message = e.InnerException.Message };
                }

            }
            return resp;
        }
Ejemplo n.º 2
0
        public TFCtvResponse TogglePpc(ReqActivatePpc req)
        //public TFCtvResponse ActivatePpc(string PpcStart, string PpcEnd, string ActivatedBy, DateTime ActivatedOn, int StatusId)
        {
            //ReqActivatePpc req = new ReqActivatePpc()
            //{
            //    PpcEnd = PpcEnd,
            //    PpcStart = PpcStart,
            //    ActivatedOn = ActivatedOn,
            //    ActivatedBy = ActivatedBy,
            //    StatusId = StatusId
            //};

            TFCtvResponse resp = null;

            string ip = ConfigurationManager.AppSettings["IpWhiteList"];
            string[] IpAddresses = ip.Split(';');
            bool isWhitelisted = IpAddresses.Contains(HttpContext.Current.Request.UserHostAddress);
            if (!isWhitelisted)
            {
                resp = new TFCtvResponse() { Code = -3001, Message = "Ip address is unauthorized." }; return resp;
            }

            if (!HttpContext.Current.Request.IsLocal)
            {
                //Check SoapHeader
                if (Credentials.Username.ToLower() != SoapHeaderUsername || Credentials.Password != SoapHeaderPassword)
                { resp = new TFCtvResponse() { Code = -3002, Message = "Call is unauthorized." }; return resp; }
            }

            if (req == null)
                resp = new TFCtvResponse() { Code = -3003, Message = "Request parameter is empty." };
            else
            {
                //Check for Ppc details
                if (String.IsNullOrEmpty(req.PpcStart) || String.IsNullOrEmpty(req.PpcEnd) || String.IsNullOrEmpty(req.ActivatedBy) || req.StatusId == null)
                {
                    resp = new TFCtvResponse() { Code = -3004, Message = "Missing required fields." };
                    return resp;
                }

                var context = new IPTV2Entities();
                var ppcs = context.Ppcs.Where(p => String.Compare(p.SerialNumber, req.PpcStart.Replace(" ", "")) >= 0 && String.Compare(p.SerialNumber, req.PpcEnd.Replace(" ", "")) <= 0);
                foreach (var item in ppcs)
                {
                    if (item.StatusId == req.StatusId)
                    {
                        resp = new TFCtvResponse() { Code = -1000, Message = String.Format("Unable to {1} {0}. Pls. check Ppc range.", item.SerialNumber, req.StatusId == 1 ? "activate" : "deactivate") };
                        return resp;
                    }
                    if (req.StatusId == 1)
                    {
                        item.ActivatedBy = req.ActivatedBy;
                        item.ActivatedOn = req.ActivatedOn == null ? DateTime.Now : req.ActivatedOn;
                    }
                    else
                    {
                        item.ActivatedBy = null;
                        item.ActivatedOn = null;
                    }
                    item.StatusId = (int)req.StatusId;
                }
                try
                {
                    if (context.SaveChanges() > 0)
                        resp = new TFCtvResponse() { Code = 0, Message = String.Format("Ppcs have been successfully {0}.", req.StatusId == 1 ? "activated" : "deactivated") };
                    else
                        resp = new TFCtvResponse() { Code = -1002, Message = String.Format("Unable to {0} Ppcs.", req.StatusId == 1 ? "activate" : "deactivate") };
                }
                catch (Exception e)
                {
                    resp = new TFCtvResponse() { Code = -3000, Message = e.InnerException.Message };
                }
            }
            return resp;
        }
Ejemplo n.º 3
0
        public TFCtvResponse UpdateSmartPit(ReqUpdateSmartPit req)
        {
            TFCtvResponse resp = null;
            DateTime registDt = DateTime.Now;
            string ip = ConfigurationManager.AppSettings["IpWhiteList"];
            string[] IpAddresses = ip.Split(';');
            bool isWhitelisted = IpAddresses.Contains(HttpContext.Current.Request.UserHostAddress);
            if (!isWhitelisted)
            {
                resp = new TFCtvResponse() { Code = -3001, Message = "Ip address is unauthorized." }; return resp;
            }

            if (!HttpContext.Current.Request.IsLocal)
            {
                //Check SoapHeader
                if (Credentials.Username.ToLower() != SoapHeaderUsername || Credentials.Password != SoapHeaderPassword)
                { resp = new TFCtvResponse() { Code = -3002, Message = "Call is unauthorized." }; return resp; }
            }

            if (req == null)
                resp = new TFCtvResponse() { Code = -3003, Message = "Request parameter is empty." };
            else
            {
                if (req.GomsCustomerId == null)
                {
                    resp = new TFCtvResponse() { Code = -3004, Message = "Missing required fields." };
                    return resp;
                }

                var context = new IPTV2Entities();
                if (isProduction)
                    context.Database.Connection.ConnectionString = IPTV2EntitiesAzureConnectionString;

                var user = context.Users.FirstOrDefault(u => u.GomsCustomerId == req.GomsCustomerId);
                if (user == null)
                {
                    resp = new TFCtvResponse() { Code = -1001, Message = "User does not exist." };
                    return resp;
                }
                if (user.Country == null)
                {
                    resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                    return resp;
                }
                else
                {
                    if (user.Country.Code != JapanCountryCode)
                    {
                        resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                        return resp;
                    }
                }

                user.SmartPitId = req.SmartPitCardNo;
                if (String.IsNullOrEmpty(req.SmartPitCardNo))
                    user.SmartPitRegistrationDate = null;
                try
                {
                    if (context.SaveChanges() > 0)
                        resp = new TFCtvResponse() { Code = 0, Message = String.Format("SmartPit successfully updated. CustomerId: {0}, SmartPit: {1}", req.GomsCustomerId, req.SmartPitCardNo) };
                    else
                        resp = new TFCtvResponse() { Code = -1005, Message = "Unable to update SmartPit Card." };
                }
                catch (Exception e)
                {
                    resp = new TFCtvResponse() { Code = -3000, Message = e.InnerException.Message };
                }
            }
            return resp;
        }
Ejemplo n.º 4
0
        public TFCtvResponse CreateTFCtvEverywhereEntitlement(ReqCreateTFCtvEverywhereEntitlement req)
        {
            TFCtvResponse resp = null;
            DateTime registDt = DateTime.Now;
            string ip = ConfigurationManager.AppSettings["IpWhiteList"];
            string[] IpAddresses = ip.Split(';');
            bool isWhitelisted = IpAddresses.Contains(HttpContext.Current.Request.UserHostAddress);
            if (!isWhitelisted)
            {
                resp = new TFCtvResponse() { Code = -3001, Message = "Ip address is unauthorized." }; return resp;
            }

            if (!HttpContext.Current.Request.IsLocal)
            {
                //Check SoapHeader
                if (Credentials.Username.ToLower() != SoapHeaderUsername || Credentials.Password != SoapHeaderPassword)
                { resp = new TFCtvResponse() { Code = -3002, Message = "Call is unauthorized." }; return resp; }
            }

            if (req == null)
                resp = new TFCtvResponse() { Code = -3003, Message = "Request parameter is empty." };
            else
            {
                if (req.GomsCustomerId == null || req.GomsTransactionDate == null || req.GomsTransactionId == null || req.GomsProductId == null || req.GomsProductQuantity == null || req.GomsTFCEverywhereEndDate == null || req.GomsTFCEverywhereStartDate == null || req.EmailAddress == null)
                {
                    resp = new TFCtvResponse() { Code = -3004, Message = "Missing required fields." };
                    return resp;
                }

                if (req.GomsProductId != null)
                    if (req.GomsProductId <= 0)
                    {
                        resp = new TFCtvResponse() { Code = -1000, Message = "GomsProductId is not applicable." };
                        return resp;
                    }

                var context = new IPTV2Entities();
                if (isProduction)
                    context.Database.Connection.ConnectionString = IPTV2EntitiesAzureConnectionString;


                var product = context.Products.FirstOrDefault(p => p.GomsProductId == req.GomsProductId && p.GomsProductQuantity == req.GomsProductQuantity);
                if (product == null)
                {
                    resp = new TFCtvResponse() { Code = -1007, Message = "Product does not exist." };
                    return resp;
                }

                var user = context.Users.FirstOrDefault(u => u.GomsCustomerId == req.GomsCustomerId && String.Compare(u.EMail, req.EmailAddress, true) == 0);
                if (user == null)
                {
                    resp = new TFCtvResponse() { Code = -1001, Message = "User does not exist." };
                    return resp;
                }

                //if (String.Compare(user.EMail, req.EmailAddress, true) != 0)
                //{
                //    resp = new TFCtvResponse() { Code = -1001, Message = "User does not exist." };
                //    return resp;
                //}

                if (user.Country == null)
                {
                    resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                    return resp;
                }
                //else // Do we need to check for Japan/US only?
                //{
                //    var countries = TVECountryWhitelist.Split(',');
                //    if (!countries.Contains(user.Country.Code))
                //    {
                //        resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                //        return resp;
                //    }
                //}

                if (user.IsTVEverywhere == null)
                {
                    resp = new TFCtvResponse() { Code = -1003, Message = "User is not applicable for TVEverywhere." };
                    return resp;
                }
                else
                {
                    if (user.IsTVEverywhere == false)
                    {
                        resp = new TFCtvResponse() { Code = -1003, Message = "User is not applicable for TVEverywhere." };
                        return resp;
                    }
                }

                var match = System.Text.RegularExpressions.Regex.Match(req.Reference, "Update|Deactivate|Activate|Change Plan", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                if (!match.Success)
                {
                    if (user.Transactions.Count(t => t.GomsTransactionId == req.GomsTransactionId) > 0)
                    {
                        resp = new TFCtvResponse() { Code = -1006, Message = "Transaction already exists in TFC.tv." };
                        return resp;
                    }
                }


                if (user != null)
                {
                    //user.LastUpdated = registDt;
                    user.LastUpdated = (DateTime)req.GomsTransactionDate;

                    if (user.IsTVEverywhere != null) // Check if set to true
                        if (user.IsTVEverywhere == false)
                            user.IsTVEverywhere = true;

                    ProductPrice productPrice;
                    try
                    {
                        productPrice = product.ProductPrices.FirstOrDefault(i => i.CurrencyCode == user.Country.CurrencyCode);
                    }
                    catch (Exception)
                    {
                        productPrice = product.ProductPrices.FirstOrDefault(i => i.CurrencyCode == DefaultCurrencyCode);
                    }

                    //Create Purchase
                    Purchase purchase = CreatePurchase((DateTime)req.GomsTransactionDate, "TFC Everywhere");
                    //Create Purchase Item
                    PurchaseItem purchaseItem = CreatePurchaseItem(user.UserId, product, productPrice);

                    var productPackage = context.ProductPackages.FirstOrDefault(p => p.ProductId == product.ProductId);
                    //Create Entitlement & EntitlementRequest
                    Entitlement entitlement = user.PackageEntitlements.FirstOrDefault(i => i.PackageId == productPackage.PackageId);

                    //DateTime endDate = registDt;
                    DateTime endDate = (DateTime)req.GomsTFCEverywhereEndDate;


                    if (entitlement != null)
                    {
                        //if (entitlement.EndDate > registDt)
                        //    entitlement.EndDate = entitlement.EndDate.Add(difference);
                        //else
                        //    entitlement.EndDate = registDt.Add(difference);

                        entitlement.EndDate = (DateTime)req.GomsTFCEverywhereEndDate;
                        EntitlementRequest request = new EntitlementRequest()
                        {
                            //DateRequested = registDt,
                            DateRequested = (DateTime)req.GomsTransactionDate,
                            StartDate = (DateTime)req.GomsTFCEverywhereStartDate,
                            EndDate = entitlement.EndDate,
                            Product = productPackage.Product,
                            Source = "TFC Everywhere",
                            ReferenceId = req.Reference
                        };

                        endDate = entitlement.EndDate;
                        user.EntitlementRequests.Add(request);
                        entitlement.LatestEntitlementRequest = request;
                    }
                    else
                    {
                        EntitlementRequest request = new EntitlementRequest()
                        {
                            //DateRequested = registDt,
                            DateRequested = (DateTime)req.GomsTransactionDate,
                            StartDate = (DateTime)req.GomsTFCEverywhereStartDate,
                            EndDate = (DateTime)req.GomsTFCEverywhereEndDate,
                            Product = productPackage.Product,
                            Source = "TFC Everywhere",
                            ReferenceId = req.Reference
                        };

                        PackageEntitlement pkg_entitlement = new PackageEntitlement()
                        {
                            EndDate = (DateTime)req.GomsTFCEverywhereEndDate,
                            Package = (IPTV2_Model.Package)productPackage.Package,
                            OfferingId = offeringId,
                            LatestEntitlementRequest = request
                        };

                        //endDate = item.LicenseEndDate;

                        user.PackageEntitlements.Add(pkg_entitlement);
                    }

                    //Create TFCtvEverywhereTransaction
                    TfcEverywhereTransaction transaction = new TfcEverywhereTransaction()
                    {
                        GomsTFCEverywhereEndDate = (DateTime)req.GomsTFCEverywhereEndDate,
                        GomsTFCEverywhereStartDate = (DateTime)req.GomsTFCEverywhereStartDate,
                        GomsTFCEverywhereSubscriptionId = "N/A",
                        GomsTFCEverywhereServiceId = "N/A",
                        GomsTransactionDate = req.GomsTransactionDate,
                        GomsTransactionId = req.GomsTransactionId,
                        Amount = productPrice.Amount,
                        Currency = productPrice.CurrencyCode,
                        //Date = registDt,
                        Date = (DateTime)req.GomsTransactionDate,
                        Reference = req.Reference,
                        OfferingId = offeringId,
                        StatusId = 1
                    };

                    user.Transactions.Add(transaction);
                }

                try
                {
                    if (context.SaveChanges() > 0)
                        resp = new TFCtvResponse() { Code = 0, Message = String.Format("Successfully created entitlement ending {0} to GomsCustomerId {1}.", req.GomsTFCEverywhereEndDate, req.GomsCustomerId) };
                    else
                        resp = new TFCtvResponse() { Code = -1005, Message = "Unable to create TFC.tv Everywhere entitlement." };
                }
                catch (Exception e)
                {
                    resp = new TFCtvResponse() { Code = -3000, Message = e.InnerException.Message };
                }

            }
            return resp;
        }
Ejemplo n.º 5
0
        public TFCtvResponse ReloadWalletViaSmartPit(ReqReloadWalletViaSmartPit req)
        {
            //ReqReloadWalletViaSmartPit req = new ReqReloadWalletViaSmartPit()
            //{
            //    Amount = 10,
            //    GomsCustomerId = 1073970,
            //    GomsTransactionDate = DateTime.Now,
            //    GomsTransactionId = 123456789,
            //    GomsWalletId = 16408
            //};

            TFCtvResponse resp = null;
            DateTime registDt = DateTime.Now;
            string ip = ConfigurationManager.AppSettings["IpWhiteList"];
            string[] IpAddresses = ip.Split(';');
            bool isWhitelisted = IpAddresses.Contains(HttpContext.Current.Request.UserHostAddress);
            if (!isWhitelisted)
            {
                resp = new TFCtvResponse() { Code = -3001, Message = "Ip address is unauthorized." }; return resp;
            }

            if (!HttpContext.Current.Request.IsLocal)
            {
                //Check SoapHeader
                if (Credentials.Username.ToLower() != SoapHeaderUsername || Credentials.Password != SoapHeaderPassword)
                { resp = new TFCtvResponse() { Code = -3002, Message = "Call is unauthorized." }; return resp; }
            }

            if (req == null)
                resp = new TFCtvResponse() { Code = -3003, Message = "Request parameter is empty." };
            else
            {
                if (req.GomsCustomerId == null || req.GomsTransactionDate == null || req.GomsTransactionId == null || req.GomsWalletId == null || req.Amount == null)
                {
                    resp = new TFCtvResponse() { Code = -3004, Message = "Missing required fields." };
                    return resp;
                }

                if (req.Amount != null)
                    if (req.Amount <= 0)
                    {
                        resp = new TFCtvResponse() { Code = -1000, Message = "Amount is not applicable." };
                        return resp;
                    }

                var context = new IPTV2Entities();
                if (isProduction)
                    context.Database.Connection.ConnectionString = IPTV2EntitiesAzureConnectionString;

                var user = context.Users.FirstOrDefault(u => u.GomsCustomerId == req.GomsCustomerId);
                if (user == null)
                {
                    resp = new TFCtvResponse() { Code = -1001, Message = "User does not exist." };
                    return resp;
                }
                if (user.Country == null)
                {
                    resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                    return resp;
                }
                else
                {
                    if (user.Country.Code != JapanCountryCode)
                    {
                        resp = new TFCtvResponse() { Code = -1002, Message = "User country is not valid." };
                        return resp;
                    }
                }

                if (String.IsNullOrEmpty(user.SmartPitId))
                {
                    resp = new TFCtvResponse() { Code = -1003, Message = "No Smart Pit Card attached to account." };
                    return resp;
                }

                if (user.Transactions.Count(t => t.GomsTransactionId == req.GomsTransactionId) > 0)
                {
                    resp = new TFCtvResponse() { Code = -1006, Message = "Transaction already exists in TFC.tv." };
                    return resp;
                }

                //var wallet = user.UserWallets.FirstOrDefault(u => u.GomsWalletId == req.GomsWalletId && u.IsActive == true);
                var wallet = user.UserWallets.FirstOrDefault(u => u.Currency == user.Country.CurrencyCode && u.IsActive == true && u.GomsWalletId == req.GomsWalletId);
                if (wallet == null)
                    resp = new TFCtvResponse() { Code = -1004, Message = "Wallet does not exist." };
                else
                {
                    SmartPitReloadTransaction transaction = new SmartPitReloadTransaction()
                    {
                        Currency = user.Country.CurrencyCode,
                        Reference = req.GomsTransactionId.ToString(),
                        UserWallet = wallet,
                        SmartPitId = user.SmartPitId,
                        Amount = (decimal)req.Amount,
                        //Date = registDt,
                        Date = (DateTime)req.GomsTransactionDate,
                        OfferingId = offeringId,
                        GomsTransactionDate = req.GomsTransactionDate,
                        GomsTransactionId = req.GomsTransactionId,
                        StatusId = 1
                    };

                    user.Transactions.Add(transaction);

                    wallet.Balance += (int)req.Amount;
                    //wallet.LastUpdated = registDt;
                    wallet.LastUpdated = (DateTime)req.GomsTransactionDate;

                    try
                    {
                        if (context.SaveChanges() > 0)
                            resp = new TFCtvResponse() { Code = 0, Message = String.Format("Successfully reloaded {0} to user's wallet.", req.Amount) };
                        else
                            resp = new TFCtvResponse() { Code = -1005, Message = "Unable to reload user wallet." };
                    }
                    catch (Exception e)
                    {
                        resp = new TFCtvResponse() { Code = -3000, Message = e.InnerException.Message };
                    }
                }
            }
            return resp;
        }