public BpiSubscriber AddSubscriber( string firstName, string lastName, string userName, string password, string companyName, int companyTypeId, string terms, string cardholderName, string cardholderZip, string cardNumber, string cvv, string expiryMonth, string expiryYear) { //// STEP 1: ADD TO SUBSCRIBER TABLE //// MAKE INACTIVE SO THEY CANT LOGIN //// THEY NEED TO BE APPROVED FIRST //// SET SUBSCRIBERTYPEID = 1 [BpiSubscriber] IGenericBlipShip<Subscriber> subscriberRepo = GetGenericBlipShipRepository<Subscriber>(); Subscriber newSubscriber = new Subscriber() { AddedOn = DateTime.Now, FirstName = firstName, FullName = firstName + " " + lastName, IsActive = false, LastName = lastName, LastUpdatedOn = DateTime.Now, Password = password, SubscriberTypeId = 1, UserName = userName, GatewayCustomerId = "" }; subscriberRepo.Add(newSubscriber); //// STEP 3: ADD THE COMPANY //// ALL ITEMS SHOULD BE PASSED IN IGenericBlipShip<SubscriberCompany> compRepo = GetGenericBlipShipRepository<SubscriberCompany>(); SubscriberCompany newCompany = new SubscriberCompany() { CompanyName = companyName, CompanyTypeId = companyTypeId, SubscriberId = newSubscriber.SubscriberId }; compRepo.Add(newCompany); //// STEP 4: ADD THE SUBSCRIPTION var newSubscription = AddSubscription(newSubscriber.SubscriberId, companyTypeId, terms, companyTypeId == 1 ? companyName : ""); BpiSubscriptionType subscriptionType = new BpiSubscriptionType(); switch (companyTypeId) { case 1: subscriptionType = GetSubscriptionByInstitution(companyName).Where(x => x.IsYearly == (terms.Contains(Constants.TERMS_ANNUAL) ? true : false)).FirstOrDefault(); break; case 3: subscriptionType = GetSubsciptionForConsultant().Where(x => x.IsYearly == (terms.Contains(Constants.TERMS_ANNUAL) ? true : false)).FirstOrDefault(); break; } //// STEP 5: ADD THE ORDER TO THE GATEWAY //// THE RETURNS THE GATEWAY USER ID WHICH NEEDS TO BE SAVED TO SUBSCRIBER TABLE var order = new BpiOrder { Amount = (decimal)subscriptionType.ChargeAmount, CardHolderFirstName = cardholderName, CreditCardNumber = cardNumber, Cvv = cvv, ExpirationMonth = expiryMonth, ExpirationYear = expiryYear, PlanName = subscriptionType.SubscriptionTypeName, CardholderPostalCode = cardholderZip }; new PaymentGateway().CreateTransaction(order); newSubscriber.GatewayCustomerId = order.GatewayCustomerId; subscriberRepo.Attach(newSubscriber); return Mapper.DynamicMap<BpiSubscriber>(newSubscriber); #region commented code //// STEP 2: ADD THE ADDRESS //// FILL IN THE COUNTRY TYPE INFO //// FILL IN THE ADDRESS TYPE INFO //// SET ADDRESSTYPEID = 1 [Billing] ////IRepository<SubscriberAddress> addressRepo = GetGenericBlipShipRepository<SubscriberAddress>(); ////SubscriberAddress newAddress = new SubscriberAddress() { //// AddedOn = DateTime.Now, //// AddressLine1 = subscriber.Address.AddressLine1, //// AddressLine2 = subscriber.Address.AddressLine2 ?? string.Empty, //// AddressTypeId = 1, //// City = subscriber.Address.City, //// CountryTypeId = subscriber.Address.CountryId, //// IsActive = true, //// LastUpdatedOn = DateTime.Now, //// StateProvince = subscriber.Address.StateProvince, //// ZipPostal = subscriber.Address.ZipPostal, //// SubscriberId = newSubscriber.SubscriberId ////}; ////addressRepo.Add(newAddress); ////newSubscriber.SubscriberAddresses.Add(newAddress); //newSubscriber.SubscriberCompanies.Add(newCompany); //// STEP 4: ADD THE JOB TYPE //// ALL ITEMS SHOULD BE PASSED IN //IRepository<SubscriberJobFunction> jobRepo = GetGenericBlipShipRepository<SubscriberJobFunction>(); //SubscriberJobFunction newJob = new SubscriberJobFunction() { // JobFunctionTypeId = subscriber.JobType, // SubscriberId = newSubscriber.SubscriberId //}; //jobRepo.Add(newJob); //newSubscriber.SubscriberJobFunctions.Add(newJob); //// STEP 5: ADD THE PHONENUMBER //// SET PHONETYPEID = 1 [Work - Cell] //IRepository<SubscriberPhone> phoneRepo = GetGenericBlipShipRepository<SubscriberPhone>(); //SubscriberPhone newPhone = new SubscriberPhone() { // PhoneNumber = subscriber.PhoneNumber, // PhoneTypeId = 1, // SubscriberId = newSubscriber.SubscriberId //}; //phoneRepo.Add(newPhone); //newSubscriber.SubscriberPhones.Add(newPhone); //// STEP 6: ADD THE SUBSCRIPTION //// GET THE CONFIG FOR A FREETRIAL [SubscriptionType = 5] //// ADD THE SUBSCRIPTION BUT DONT ACTIVATE IT //IGenericBlipShip<Subscription> subscRepo = GetGenericBlipShipRepository<Subscription>(); //Subscription newSubscription = new Subscription() //{ // AddedOn = DateTime.Now, // ApiKey = Guid.NewGuid(), // FriendlyName = newSubscriber.FullName, // IsActive = false, // LastUpdatedOn = DateTime.Now, // SubscriberId = newSubscriber.SubscriberId, // SubscriptionTypeId = 5, // GatewaySubscriptionId = subscriber.SubscriptionModel.GatewaySubscriptionId //}; //subscRepo.Add(newSubscription); //// STEP 7: ADD THE FEATURES //// GET ALL THE FEATURES FROM THE CONFIG FOR THE SPECIFIC SUBSCRIPTION //// USE FREETRIAL CONFIG [SubscriptionType = 5] //IRepository<SubscriptionTypeConfig> configRepo = GetGenericBlipShipRepository<SubscriptionTypeConfig>(); //List<int> featureIds = configRepo.Find(x => x.IsActive && x.SubscriptionTypeId == 5).Select(x => x.FeatureTypeId).ToList(); //IRepository<SubscriptionFeature> subFeatRepo = GetGenericBlipShipRepository<SubscriptionFeature>(); //foreach (var featureId in featureIds) { // subFeatRepo.Add(new SubscriptionFeature() { // AddedOn = DateTime.Now, // FeatureTypeId = featureId, // IsActive = true, // LastUpdateOn = DateTime.Now, // SubscriptionId = newSubscription.SubscriptionId // }); //} //// [TODO] RETURN THE FULLY POPULATED BPISUBSCRIBER //// UNNECESSARY RIGHT NOW BECAUSE THEY MUST BE APPROVED BY ADMIN //BpiSubscriber returnSubscriber = new BpiSubscriber(); #endregion }
public BpiSubscription AddSubscription(int subscriberId,int companyTypeId, string terms,string fdicCert = "") { var repo = GetGenericBlipShipRepository<Subscription>(); BpiSubscriptionType subType = new BpiSubscriptionType(); switch (companyTypeId) { case 1: var subs = GetSubscriptionByInstitution(fdicCert); var isYearly = terms == Constants.TERMS_ANNUAL ? true : false; subType = subs.Where(x => x.IsYearly == isYearly).FirstOrDefault(); break; case 3: var cons = GetSubsciptionForConsultant(); var yearly = terms == Constants.TERMS_ANNUAL ? true : false; subType = cons.Where(x => x.IsYearly == yearly).FirstOrDefault(); break; } var newSubscription = new Subscription { AddedOn = DateTime.Now, ApiKey = Guid.NewGuid(), FriendlyName = subType.FriendlyName, GatewaySubscriptionId = "", IsActive = false, LastUpdatedOn = DateTime.Now, SubscriberId = subscriberId, SubscriptionTypeId = subType.SubscriptionTypeId }; repo.Add(newSubscription); return Mapper.DynamicMap<BpiSubscription>(newSubscription); }