コード例 #1
0
        public GetMemberResponse Get(string id)
        {
            /* 宣告指令的輸出結果 */
            var response = new GetMemberResponse();
            /* Step1 連接MongoDB伺服器 */
            MongoClient client = new MongoClient("mongodb://localhost:27017");
            /* Step2 取得MongoDB資料庫(Database)和集合(Collection) */
            /* Step2-1 取得ntut資料庫(Database) */
            MongoDatabaseBase db = client.GetDatabase("ntut") as MongoDatabaseBase;
            /* Step2-2 取得members 集合(Collection) */
            var colMembers = db.GetCollection <MembersDocument>("members");
            /* Step3 取得指定會員的資訊 */
            /* Step3-1 設定查詢式 */
            var query = Builders <MembersDocument> .Filter.Eq(e => e.uid, id);

            /* Step3-2 進行查詢的操作,並取得會員資訊 */
            var doc = colMembers.Find(query).ToListAsync().Result.FirstOrDefault();

            /* Step4 設定指令的輸出結果 */
            if (doc != null)
            {
                /* Step4-1 當資料庫中存在該會員時,設定Response的data欄位 */
                response.data.uid   = doc.uid;
                response.data.name  = doc.name;
                response.data.phone = doc.phone;
            }
            else
            {
                /* Step4-2 當資料庫中沒有該會員時,設定Response 的ok 欄位與errMsg 欄位 */
                response.ok     = false;
                response.errMsg = "沒有此會員";
            }
            return(response);
        }
コード例 #2
0
        public static BaseResponse GetOffer(returntype sfgReturn)
        {
            string       className    = "SFGWrapper.GateKeeperTranslators.GetOffer()";
            BaseResponse baseResponse = new BaseResponse();

            foreach (var item in sfgReturn.error)
            {
                Message ahError = new Message(item.errno, MessageSources.Gatekeeper);
                foreach (string message in item.errmsg)
                {
                    ahError.SfgMessages.Add(message);
                }
                baseResponse.Messages.Add(ahError);
            }
            GetMemberResponse getOfferResponse = new GetMemberResponse();

            foreach (RenewalOffer item in GetRenewalOffers(sfgReturn.response.SUB_OFFERS))
            {
                getOfferResponse.RenewalOffers.Add(item);
            }
            baseResponse.TypedResponse               = getOfferResponse;
            baseResponse.TypedResponse.Success       = sfgReturn.success;
            baseResponse.TypedResponse.Info          = Utilities.GetInfo(sfgReturn.response.INFO);
            baseResponse.TypedResponse.MemoryUsed    = sfgReturn.response.MEMORY_USED;
            baseResponse.TypedResponse.Protocol      = sfgReturn.response.PROTOCOL;
            baseResponse.TypedResponse.RoundtripTime = sfgReturn.response.ROUNDTRIP_TIME;
            baseResponse.TypedResponse.Server        = sfgReturn.response.SERVER;
            baseResponse.TypedResponse.TimeElapsed   = sfgReturn.response.TIME_ELAPSED;
            baseResponse.TypedResponse.Version       = sfgReturn.response.VERSION;

            return(baseResponse);
        }
コード例 #3
0
        public static BaseResponse GetMemberByMemberId(returntype sfgReturn)
        {
            string       className    = "SFGWrapper.GateKeeperTranslators.GetMemberByMemberId()";
            BaseResponse baseResponse = new BaseResponse();

            foreach (var item in sfgReturn.error)
            {
                Message ahError = new Message(item.errno, MessageSources.Gatekeeper);
                foreach (string message in item.errmsg)
                {
                    ahError.SfgMessages.Add(message);
                }
                baseResponse.Messages.Add(ahError);
            }

            GetMemberResponse getMemberResponse = new GetMemberResponse();

            getMemberResponse.Authenticated = (sfgReturn.response.AUTH == "Y");
            getMemberResponse.MemberFound   = (sfgReturn.response.CUST_FOUND == "Y");
            if (getMemberResponse.MemberFound)
            {
                //    baseResponse.Messages.Add(new Message("MemberNotFoundException"));
                getMemberResponse.WebAccountFound            = (sfgReturn.response.USER_FOUND == "Y");
                getMemberResponse.ShipToAddress              = GetAddress(sfgReturn.response.SHIP_TO);
                getMemberResponse.SubscriptionValidationData = GetSubscriptionValidation(sfgReturn.response);
                getMemberResponse.MemberData          = GetMember(sfgReturn.response.CUSTOMER_INFO);
                getMemberResponse.MemberData.UserName = sfgReturn.response.USERID;
                foreach (Subscription sub in GetSubscriptions(sfgReturn.response.ORDER_HISTORY))
                {
                    getMemberResponse.MemberData.Subscriptions.Add(sub);
                }
                foreach (RenewalOffer item in GetRenewalOffers(sfgReturn.response.SUB_OFFERS))
                {
                    getMemberResponse.RenewalOffers.Add(item);
                }
            }
            baseResponse.TypedResponse = getMemberResponse;

            baseResponse.TypedResponse.Success       = sfgReturn.success;
            baseResponse.TypedResponse.Info          = Utilities.GetInfo(sfgReturn.response.INFO);
            baseResponse.TypedResponse.MemoryUsed    = sfgReturn.response.MEMORY_USED;
            baseResponse.TypedResponse.Protocol      = sfgReturn.response.PROTOCOL;
            baseResponse.TypedResponse.RoundtripTime = sfgReturn.response.ROUNDTRIP_TIME;
            baseResponse.TypedResponse.Server        = sfgReturn.response.SERVER;
            baseResponse.TypedResponse.TimeElapsed   = sfgReturn.response.TIME_ELAPSED;
            baseResponse.TypedResponse.Version       = sfgReturn.response.VERSION;

            return(baseResponse);
        }
コード例 #4
0
        private bool SyncMembership(string enc_username)
        {
            tbl_Customer customer          = new tbl_Customer(Cryptography.Decrypt256FromHEX(enc_username), true);
            GetMemberByMemberIdRequest req = new GetMemberByMemberIdRequest(customer.SfgId.ToString(), false);
            BaseResponse res = Gatekeeper.GetMemberByMemberId(req);

            if (res.Messages.Count() <= 0 && res.TypedResponse != null)
            {
                GetMemberResponse tres = (GetMemberResponse)res.TypedResponse;
                if (tres.MemberData != null &&
                    tres.MemberData.Subscriptions != null &&
                    tres.MemberData.Subscriptions.Count() > 0)
                {
                    Subscription current = null;
                    foreach (Subscription sub in tres.MemberData.Subscriptions)
                    {
                        if (current == null)
                        {
                            current = sub;
                        }
                        else if ((sub.StatusFlag == "P" || sub.StatusFlag == "O") && !sub.IsDonor)
                        {
                            try
                            {
                                if (DateTime.Parse(sub.ExpireDate).CompareTo(DateTime.Parse(current.ExpireDate)) > 0)
                                {
                                    current = sub;
                                }
                            }
                            catch { }
                        }
                    }
                    //update netmembership, with latest from sfg
                    tbl_NetMembership currentmembership = tbl_NetMembership.GetCurrentNetMembership(customer.cusID);
                    if (currentmembership == null)
                    {
                        currentmembership = new tbl_NetMembership();
                    }
                    currentmembership.cusID          = customer.cusID;
                    currentmembership.mtyCode        = HarperLINQ.SFG_ProdCode.GetFromExtCode(current.PublicationCode).IntCode;
                    currentmembership.nmbDateCreated = DateTime.Now;
                    currentmembership.nmbDateEnd     = DateTime.Parse(current.ExpireDate);
                    currentmembership.nmbDateStart   = DateTime.Parse(current.DateEntered);
                    currentmembership.Save();
                    return(true);
                }
            }
            return(false);
        }
コード例 #5
0
        public static BaseResponse GetMemberByMemberId(returntype sfgReturn)
        {
            string className = "SFGWrapper.GateKeeperTranslators.GetMemberByMemberId()";
            BaseResponse baseResponse = new BaseResponse();
            foreach (var item in sfgReturn.error)
            {
                Message ahError = new Message(item.errno, MessageSources.Gatekeeper);
                foreach (string message in item.errmsg)
                {
                    ahError.SfgMessages.Add(message);
                }
                baseResponse.Messages.Add(ahError);
            }

            GetMemberResponse getMemberResponse = new GetMemberResponse();
            getMemberResponse.Authenticated = (sfgReturn.response.AUTH == "Y");
            getMemberResponse.MemberFound = (sfgReturn.response.CUST_FOUND == "Y");
            if (getMemberResponse.MemberFound)
            {
                //    baseResponse.Messages.Add(new Message("MemberNotFoundException"));
                getMemberResponse.WebAccountFound = (sfgReturn.response.USER_FOUND == "Y");
                getMemberResponse.ShipToAddress = GetAddress(sfgReturn.response.SHIP_TO);
                getMemberResponse.SubscriptionValidationData = GetSubscriptionValidation(sfgReturn.response);
                getMemberResponse.MemberData = GetMember(sfgReturn.response.CUSTOMER_INFO);
                getMemberResponse.MemberData.UserName = sfgReturn.response.USERID;
                foreach (Subscription sub in GetSubscriptions(sfgReturn.response.ORDER_HISTORY))
                {
                    getMemberResponse.MemberData.Subscriptions.Add(sub);
                }
                foreach (RenewalOffer item in GetRenewalOffers(sfgReturn.response.SUB_OFFERS))
                {
                    getMemberResponse.RenewalOffers.Add(item);
                }
            }
            baseResponse.TypedResponse = getMemberResponse;

            baseResponse.TypedResponse.Success = sfgReturn.success;
            baseResponse.TypedResponse.Info = Utilities.GetInfo(sfgReturn.response.INFO);
            baseResponse.TypedResponse.MemoryUsed = sfgReturn.response.MEMORY_USED;
            baseResponse.TypedResponse.Protocol = sfgReturn.response.PROTOCOL;
            baseResponse.TypedResponse.RoundtripTime = sfgReturn.response.ROUNDTRIP_TIME;
            baseResponse.TypedResponse.Server = sfgReturn.response.SERVER;
            baseResponse.TypedResponse.TimeElapsed = sfgReturn.response.TIME_ELAPSED;
            baseResponse.TypedResponse.Version = sfgReturn.response.VERSION;

            return baseResponse;
        }
コード例 #6
0
        public OfferResponseObject GetOffer(string keycode)
        {
            GetOfferRequest     request       = new GetOfferRequest(keycode, false);
            OfferResponseObject response      = new OfferResponseObject();
            BaseResponse        base_response = Gatekeeper.GetOffer(request);

            if (base_response.Messages.Count > 0)
            {
                response.ResponseCode = 100;
            }
            if (response.ResponseCode == 0)
            {
                GetMemberResponse member_response = base_response.TypedResponse as GetMemberResponse;
                response.RenewalOffers = member_response.RenewalOffers;
            }
            return(response);
        }
        public void Arrange()
        {
            _teamMemberResponse = new GetMemberResponse
            {
                TeamMember = new TeamMember()
                {
                    Email = "*****@*****.**"
                }
            };

            _mediator      = new Mock <IMediator>();
            _configuration = new EmployerApprenticeshipsServiceConfiguration();

            _orchestrator = new EmployerTeamOrchestrator(_mediator.Object, _configuration);

            _mediator.Setup(x => x.SendAsync(It.IsAny <GetMemberRequest>()))
            .ReturnsAsync(_teamMemberResponse);
        }
コード例 #8
0
        public static GetMemberResponse Unmarshall(UnmarshallerContext context)
        {
            GetMemberResponse getMemberResponse = new GetMemberResponse();

            getMemberResponse.HttpResponse = context.HttpResponse;
            getMemberResponse.RequestId    = context.StringValue("GetMember.RequestId");
            getMemberResponse.LedgerId     = context.StringValue("GetMember.LedgerId");
            getMemberResponse.MemberId     = context.StringValue("GetMember.MemberId");
            getMemberResponse.AliUid       = context.StringValue("GetMember.AliUid");
            getMemberResponse.KeyType      = context.StringValue("GetMember.KeyType");
            getMemberResponse.PublicKey    = context.StringValue("GetMember.PublicKey");
            getMemberResponse.Role         = context.StringValue("GetMember.Role");
            getMemberResponse.State        = context.StringValue("GetMember.State");
            getMemberResponse.CreateTime   = context.LongValue("GetMember.CreateTime");
            getMemberResponse.UpdateTime   = context.LongValue("GetMember.UpdateTime");

            return(getMemberResponse);
        }
コード例 #9
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            GetMemberResponse response = new GetMemberResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("Member", targetDepth))
                {
                    var unmarshaller = MemberUnmarshaller.Instance;
                    response.Member = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
コード例 #10
0
        public void Arrange()
        {
            _teamMemberResponse = new GetMemberResponse
            {
                TeamMember = new TeamMember
                {
                    AccountId = 1,
                    Email     = TeamMemberEmail,
                    Role      = Role.Owner
                }
            };

            _mediator = new Mock <IMediator>();

            _orchestrator = new EmployerTeamOrchestrator(_mediator.Object, Mock.Of <ICurrentDateTime>());

            _mediator.Setup(x => x.SendAsync(It.IsAny <GetMemberRequest>()))
            .ReturnsAsync(_teamMemberResponse);
        }
コード例 #11
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            GetMemberResponse response = new GetMemberResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("accountId", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.AccountId = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("administratorAccountId", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.AdministratorAccountId = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("arn", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.Arn = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("email", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.Email = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("invitedAt", targetDepth))
                {
                    var unmarshaller = DateTimeUnmarshaller.Instance;
                    response.InvitedAt = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("masterAccountId", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.MasterAccountId = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("relationshipStatus", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.RelationshipStatus = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("tags", targetDepth))
                {
                    var unmarshaller = new DictionaryUnmarshaller <string, string, StringUnmarshaller, StringUnmarshaller>(StringUnmarshaller.Instance, StringUnmarshaller.Instance);
                    response.Tags = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("updatedAt", targetDepth))
                {
                    var unmarshaller = DateTimeUnmarshaller.Instance;
                    response.UpdatedAt = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
コード例 #12
0
        public static BaseResponse GetOffer(returntype sfgReturn)
        {
            string className = "SFGWrapper.GateKeeperTranslators.GetOffer()";
            BaseResponse baseResponse = new BaseResponse();
            foreach (var item in sfgReturn.error)
            {
                Message ahError = new Message(item.errno, MessageSources.Gatekeeper);
                foreach (string message in item.errmsg)
                {
                    ahError.SfgMessages.Add(message);
                }
                baseResponse.Messages.Add(ahError);
            }
            GetMemberResponse getOfferResponse = new GetMemberResponse();            
            foreach (RenewalOffer item in GetRenewalOffers(sfgReturn.response.SUB_OFFERS))
            {
                getOfferResponse.RenewalOffers.Add(item);
            }
            baseResponse.TypedResponse = getOfferResponse;
            baseResponse.TypedResponse.Success = sfgReturn.success;
            baseResponse.TypedResponse.Info = Utilities.GetInfo(sfgReturn.response.INFO);
            baseResponse.TypedResponse.MemoryUsed = sfgReturn.response.MEMORY_USED;
            baseResponse.TypedResponse.Protocol = sfgReturn.response.PROTOCOL;
            baseResponse.TypedResponse.RoundtripTime = sfgReturn.response.ROUNDTRIP_TIME;
            baseResponse.TypedResponse.Server = sfgReturn.response.SERVER;
            baseResponse.TypedResponse.TimeElapsed = sfgReturn.response.TIME_ELAPSED;
            baseResponse.TypedResponse.Version = sfgReturn.response.VERSION;

            return baseResponse;
        }
コード例 #13
0
        public void GetReferredMembers()
        {
            List <string> referred = new List <string>();

            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");
            referred.Add("*****@*****.**");

            MembershipLogic target   = new MembershipLogic();
            List <string>   found    = new List <string>();
            int             notfound = 0;

            foreach (string referral in referred)
            {
                BaseResponse actual = target.GetMemberByUserName(referral);
                if (actual != null && actual.TypedResponse != null && actual.TypedResponse.Success)
                {
                    try
                    {
                        GetMemberResponse res = actual.TypedResponse as GetMemberResponse;
                        if (res.MemberFound)
                        {
                            if (res.MemberData != null &&
                                res.MemberData.Subscriptions != null &&
                                res.MemberData.Subscriptions.Count > 0)
                            {
                                System.Diagnostics.Debug.WriteLine(string.Format("SFG ID {0} Subscription count: {1}", res.MemberData.MemberId, res.MemberData.Subscriptions.Count));
                                found.Add(string.Format("{0}, {1}, {2}", referral, res.MemberData.MemberId, res.MemberData.Subscriptions.Count));
                            }
                            else
                            {
                                notfound++;
                            }
                        }
                        else
                        {
                            found.Add(string.Format("{0}, {1}, {2}", referral, string.Empty, null));
                            notfound++;
                        }
                    }
                    catch
                    {
                        notfound++;
                    }
                }
                else
                {
                    notfound++;
                }
                System.Diagnostics.Debug.WriteLine(string.Format("Found: {0}", found.Count));
                System.Diagnostics.Debug.WriteLine(string.Format("NOT Found: {0}", notfound));
            }
        }
コード例 #14
0
        public BaseResponse CreateReferral(string cusid, string membername, string memberemail, string keycode,
                                           string pubcode, string friendname, string friendemailaddress, bool ccmember)
        {
            methodName = "CreateReferral";

            List <Message> errors   = new List <Message>();
            Referral       referral = new Referral();

            try
            {
                tbl_Customer member = new tbl_Customer(int.Parse(cusid), false);

                #region validate input
                if (member == null)
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.memberDoesNotExistError, cusid, "", null));
                }
                if (member.SfgId == null)
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.invalidMemberIdError, "", "", null));
                }
                if (string.IsNullOrEmpty(membername))
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.missingMemberNameError, "", "", null));
                }
                if (ccmember && string.IsNullOrEmpty(memberemail))
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.missingMemberEmailError, "", "", null));
                }
                if (string.IsNullOrEmpty(keycode))
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.missingKeycodeError, "", "", null));
                }
                if (string.IsNullOrEmpty(pubcode))
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.missingPubcodeError, "", "", null));
                }
                if (string.IsNullOrEmpty(friendname))
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.missingFriendNameError, "", "", null));
                }
                if (string.IsNullOrEmpty(friendemailaddress))
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralInputValidationException", BusinessLogicStrings.missingFriendEmailError, "", "", null));
                }
                #endregion

                #region enforce business rules
                tbl_Customer friend = new tbl_Customer(friendemailaddress, false);
                try
                {
                    Referral existing_referral = new Referral(friendemailaddress);

                    if (memberemail == friendemailaddress)
                    {
                        errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralBusinessRuleException", BusinessLogicStrings.cannotReferSelfError, "", "", null));
                    }
                    else if (friend.cusID > 0)
                    {
                        errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralBusinessRuleException", BusinessLogicStrings.existingMemberError, "", "", null));
                    }
                    else if (existing_referral.dateredeemed == null)
                    {
                        if (existing_referral.id > 0 && existing_referral.dateexpires.CompareTo(DateTime.Now) >= 0)
                        {
                            errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralBusinessRuleException", BusinessLogicStrings.existingReferralError, "", "", null));
                        }
                    }
                    if (errors.Count <= 0)
                    {
                        GetMemberResponse checkFriend = (GetMemberByUserName(friendemailaddress).TypedResponse as GetMemberResponse);
                        if (checkFriend != null && (checkFriend.MemberFound || checkFriend.WebAccountFound))
                        {
                            errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralBusinessRuleException", BusinessLogicStrings.freindEmailInUseSFGError, "", "", null));
                        }
                    }
                }
                catch (HarperLINQ.DataLoadException dle)
                {
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "CreateReferralBusinessRuleException", BusinessLogicStrings.freindEmailInUseAHError, "", "", null));
                }
                if (errors.Count() > 0)
                {
                    string errstring = string.Empty;
                    foreach (Message msg in errors)
                    {
                        string sfgmessages = string.Empty;
                        if (msg.SfgMessages != null)
                        {
                            foreach (string sfgmsg in msg.SfgMessages)
                            {
                                sfgmessages += string.Format("SFGMessage: {0}", sfgmsg);
                            }
                        }
                        errstring += string.Format("AhMessage: {0}|| {1}", new object[] { msg.AhMessage, sfgmessages });
                    }
                    throw new Exception(string.Format("Error creating referral: [{0}]", errstring));
                }
                #endregion

                ReferralOffer offer = new ReferralOffer(keycode, pubcode);


                #region save referral
                referral = new Referral(int.Parse(cusid), membername, memberemail, keycode, pubcode, friendname, friendemailaddress, ccmember, offer.triallengthinmonths, offer.offerexpiresmonths);
                referral.Save();
                #endregion

                #region send email
                //create mailer and sent mail
                Mailer mailer = new Mailer();

                string ccEmail = memberemail;

                if (!ccmember)
                {
                    ccEmail = string.Empty;
                }

                mailer.SendEmail(ConfigurationManager.AppSettings["mailserviceuser"],
                                 ConfigurationManager.AppSettings["mailservicepwd"],
                                 string.Format("Membership Invitation from {0}", membername),
                                 ConfigurationManager.AppSettings["referemailfrom"],
                                 friendemailaddress,
                                 ccEmail,
                                 string.Empty,
                                 referral.GetReferralEmailBody(),
                                 true,
                                 ConfigurationManager.AppSettings["smtpserver"]);
                #endregion
            }
            catch (Exception ex)
            {
                LogMethodError(methodName, ex);
            }
            if (baseResponse != null && baseResponse.Messages != null)
            {
                foreach (Message error in errors)
                {
                    baseResponse.Messages.Add(error);
                }
            }
            if (baseResponse.Messages.Count() <= 0 && referral != null && referral.id >= 0)
            {
                #region create typed response
                baseResponse.TypedResponse         = new ReferralResponse();
                baseResponse.TypedResponse.Success = true;
                (baseResponse.TypedResponse as ReferralResponse).referralid = referral.id;
                #endregion
            }
            else
            {
                baseResponse.TypedResponse         = new ReferralResponse();
                baseResponse.TypedResponse.Success = false;
            }

            return(baseResponse);
        }
コード例 #15
0
        public BaseResponse RedeemReferralSubscription(int referralid, string firstname, string lastname,
                                                       string emailaddress, string countrycode, string address1, string address2,
                                                       string city, string region, string postal, bool optin, string username, string password)
        {
            List <Message> errors    = new List <Message>();
            string         errortext = string.Empty;

            try
            {
                HarperLINQ.Referral referral;

                #region input validation
                using (AHT_MainDataContext context = new AHT_MainDataContext(ConfigurationManager.ConnectionStrings["AHT_MainConnectionString"].ConnectionString))
                {
                    referral = context.Referrals.SingleOrDefault(r => r.id == referralid);
                }
                if (referral == null)
                {
                    errortext = string.Format(BusinessLogicStrings.invalidReferralIdError, referralid);
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "RedeemReferralException", errortext, "", "", null));
                }
                else if (referral.dateredeemed != null || referral.friendid > 0)
                {
                    errortext = string.Format(BusinessLogicStrings.RedeemedReferralError, referralid);
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "RedeemReferralException", errortext, "", "", null));
                }
                else if (referral.dateexpires <= DateTime.Now)
                {
                    errortext = string.Format(BusinessLogicStrings.expiredReferralError, referralid);
                    errors.Add(new Message(MessageSources.AndrewHarper, 0, "RedeemReferralException", errortext, "", "", null));
                }
                #endregion

                else
                {
                    #region sub order insert
                    Member giftData = new Member();
                    giftData.FirstName = firstname;
                    giftData.LastName  = lastname;
                    giftData.OptIn     = optin;
                    giftData.Email     = emailaddress;

                    giftData.Address            = new Address();
                    giftData.Address.Address1   = address1;
                    giftData.Address.Address2   = address2;
                    giftData.Address.City       = city;
                    giftData.Address.State      = region;
                    giftData.Address.PostalCode = postal;
                    giftData.Address.Country    = countrycode;

                    SubscriptionServiceRequest request = new SubscriptionServiceRequest(referral, giftData);
                    baseResponse = SubOrderInsert.RedeemReferralSubscription(request);
                    foreach (Message err in baseResponse.Messages)
                    {
                        errors.Add(err);
                    }
                    #endregion

                    MembershipLogic memberlogic    = new MembershipLogic();
                    BaseResponse    memberResponse = null;
                    if (errors.Count <= 0)
                    {
                        memberResponse = memberlogic.GetMemberByUserName(emailaddress);
                    }

                    if (!(errors.Count > 0 ||
                          memberResponse == null ||
                          memberResponse.TypedResponse == null ||
                          memberResponse.TypedResponse.Success == false))
                    {
                        using (AHT_MainDataContext context = new AHT_MainDataContext(ConfigurationManager.ConnectionStrings["AHT_MainConnectionString"].ConnectionString))
                        {
                            GetMemberResponse getMemberResponse = memberResponse.TypedResponse as GetMemberResponse;
                            if (getMemberResponse.MemberFound && getMemberResponse.MemberData != null)
                            {
                                string newMemberId = getMemberResponse.MemberData.MemberId;

                                #region create the user at AH
                                object[] create_response = tbl_Customer.CreateCustomer(address1, address2, "", city, region,
                                                                                       countrycode, postal, "Z1", password, "PERSONAL", "",
                                                                                       firstname, "", lastname, "", emailaddress, username, newMemberId, referral.pubcode, DateTime.Now.AddMonths(referral.subscriptionlength).ToShortDateString(), DateTime.Now.ToShortDateString(), username, "");
                                tbl_Customer customer = (tbl_Customer)create_response[1];
                                #endregion

                                #region referral data at AH
                                referral = context.Referrals.SingleOrDefault(r => r.id == referralid);
                                referral.dateredeemed = DateTime.Now;
                                referral.friendid     = customer.cusID;
                                context.SubmitChanges();
                                #endregion

                                #region send email
                                Mailer mailer = new Mailer();

                                mailer.SendEmail(
                                    ConfigurationManager.AppSettings["mailserviceuser"],
                                    ConfigurationManager.AppSettings["mailservicepwd"],
                                    "Welcome to the Andrew Harper Community!",
                                    ConfigurationManager.AppSettings["referemailfrom"],
                                    referral.friendemail,
                                    string.Empty,
                                    string.Empty,
                                    referral.GetReferralUserCreatedEmailBody(),
                                    true,
                                    ConfigurationManager.AppSettings["smtpserver"]);
                                #endregion
                            }
                        }
                    }
                    else
                    {
                        errortext = string.Format(BusinessLogicStrings.RetrieveMemeberError, new object[] { referralid, emailaddress });
                        errors.Add(new Message(MessageSources.AndrewHarper, 0, "RedeemReferralException", errortext, "", "", null));
                    }
                }

                baseResponse.TypedResponse = new AHResponse();
                if (errors.Count == 0)
                {
                    baseResponse.TypedResponse.Success = true;
                }
                else
                {
                    baseResponse.TypedResponse.Success = false;
                }
            }

            catch (Exception ex)
            {
                baseResponse.TypedResponse.Success = false;
                errortext = string.Format(BusinessLogicStrings.UnknownReferralError, ex.Message);
                errors.Add(new Message(MessageSources.AndrewHarper, 0, "RedeemReferralException", errortext, "", "", null));
            }
            foreach (Message error in errors)
            {
                if (baseResponse == null)
                {
                    baseResponse = new BaseResponse();
                }
                baseResponse.Messages.Add(error);

                StringBuilder error_text = new StringBuilder();
                error_text.AppendLine("REFERRAL ERROR LOGGED");
                error_text.AppendLine(string.Format("REFERRALID {0}", referralid));
                baseResponse.Messages.Add(error);
                error_text.AppendLine(string.Format("ERROR: ", new object[] { }));
                EventLogger.LogError("SubscriptionLogic.RedeemReferralSubscription", error_text.ToString(), true);
            }
            return(baseResponse);
        }