コード例 #1
0
        public ServiceResult AddLog(AffiliateLog access)
        {
            if (access == null)
            {
                return(ServiceResponse.Error("No data sent."));
            }

            if (string.IsNullOrWhiteSpace(access.Name))
            {
                return(ServiceResponse.Error("Target name not set."));
            }

            NetworkHelper network = new NetworkHelper();

            access.ClientIp = network.GetClientIpAddress(this.Request);

            AffliateManager affliateManager = new AffliateManager(Globals.DBConnectionKey);

            var logRes = affliateManager.Insert(access);

            if (CurrentUser == null || string.IsNullOrWhiteSpace(CurrentUser.UUParentID) == false)
            {
                return(logRes);
            }

            UserManager um            = new UserManager(Globals.DBConnectionKey, this.GetAuthorizationToken(this.Request));
            User        referringUser = new User();
            string      type          = access.NameType?.ToUpper();

            switch (type)
            {
            case "USER":
                referringUser = um.Search(access.Name, false).FirstOrDefault(x => x.Name.EqualsIgnoreCase(access.Name));
                if (referringUser == null)
                {
                    return(logRes);
                }
                break;
                //default:
                //    referringUser = um.Search(access.Name, false).FirstOrDefault(x => x.Name.EqualsIgnoreCase(access.Name));
                //    if (referringUser == null)
                //        return logRes;
                //    break;
            }
            var userRes = um.GetUser(CurrentUser.UUID, false);

            if (userRes.Code == 200)
            {
                var targetUser = (User)userRes.Result;
                targetUser.UUParentID     = referringUser.UUID;
                targetUser.UUParentIDType = referringUser.UUIDType;
                um.Update(targetUser);
            }
            return(logRes);
        }
コード例 #2
0
        public ServiceResult AddLog(AffiliateLog access)
        {
            if (access == null)
            {
                return(ServiceResponse.Error("No data sent."));
            }

            NetworkHelper network = new NetworkHelper();

            access.ClientIp = network.GetClientIpAddress(this.Request);
            AffiliateManager affliateManager = new AffiliateManager(Globals.DBConnectionKey, this.GetAuthToken(this.Request));

            access.DateCreated = DateTime.UtcNow;
            var logRes = affliateManager.InsertLog(access);

            if (CurrentUser == null)
            {
                CurrentUser = this.GetUser(this.GetAuthToken(this.Request));
            }

            if (CurrentUser == null)
            {
                return(logRes);
            }

            UserManager um            = new UserManager(Globals.DBConnectionKey, this.GetAuthToken(this.Request));
            User        referringUser = new User();
            string      type          = access.NameType?.ToUpper();

            switch (type)
            {
            case "USER":
                referringUser = um.Search(access.Name, false).FirstOrDefault(x => x.Name.EqualsIgnoreCase(access.Name) || x.UUID == access.Name);
                if (referringUser == null)
                {
                    return(logRes);
                }
                var userRes = um.GetUser(CurrentUser.UUID, false);
                if (userRes.Code == 200)
                {
                    var targetUser = (User)userRes.Result;

                    if (string.IsNullOrWhiteSpace(access.ClientUserUUID))
                    {
                        access.ClientUserUUID = CurrentUser.UUID;
                    }

                    access.ReferringUUID     = referringUser.UUID;
                    access.ReferringUUIDType = referringUser.UUIDType;
                    affliateManager.UpdateLog(access);

                    if (referringUser.UUID == CurrentUser.UUID)
                    {
                        return(logRes);
                    }

                    // if the user doesn't have a referring member set, then this user get it.
                    if (string.IsNullOrWhiteSpace(targetUser.ReferringMember))
                    {
                        targetUser.ReferringMember = referringUser.UUID;
                        targetUser.ReferralDate    = DateTime.UtcNow;
                        um.Update(targetUser);
                    }
                }
                break;

            case "ACCOUNT":   //this is most likely out bound
            case "EVENT":     //this is most likely out bound
                if (string.IsNullOrWhiteSpace(access.ClientUserUUID))
                {
                    access.ClientUserUUID = CurrentUser.UUID;
                }

                var usr = um.Get(CurrentUser.UUID);
                if (usr.Code == 200)
                {
                    access.ReferringUUID = ((User)usr.Result).ReferringMember;    // CurrentUser.ReferringMember; //whomever signed up this user (if any), gets the referral to the outbound link
                }
                affliateManager.UpdateLog(access);
                break;

            case "PROFILE":

                break;
                //default:
                //    referringUser = um.Search(access.Name, false).FirstOrDefault(x => x.Name.EqualsIgnoreCase(access.Name));
                //    if (referringUser == null)
                //        return logRes;
                //    break;
            }

            return(logRes);
        }