示例#1
0
        ActionOutput<UserDetails> IHomeManager.FacebookLogin(FaceBookUser Login, string DeviceToken, int DeviceType)
        {
            if (string.IsNullOrEmpty(Login.Email))
            {
                Login.Email = Login.FacebookUserID + "@yourdomain.com";
            }
            int roleid = (int)UserRoles.User;
            int[] registervia = { (int)RegisterVia.AndroidFacebook, (int)RegisterVia.IPhoneFacebook, (int)RegisterVia.WebsiteFacebook };
            // Check for duplicate Email
            var old = Context.Users.Where(m => m.Email == Login.Email).FirstOrDefault();
            if (old != null && old.FacbookUserID != Login.FacebookUserID && !registervia.Contains(old.RegisterVia))
            {
                return new ActionOutput<UserDetails>
                {
                    Message = "User with same email is already exists with normal registration.",
                    Status = ActionStatus.Error,
                    Object = null
                };
            }
            UserDetails user = Context.Users.Where(m => m.FacbookUserID == Login.FacebookUserID && m.RoleID == roleid && registervia.Contains(m.RegisterVia))
                                            .Select(m => new UserDetails
                                            {
                                                UserID = m.UserID,
                                                RoleID = m.RoleID,
                                                RegisterVia = m.RegisterVia,
                                                RegistrationIP = m.RegistrationIP,
                                                Email = m.Email,
                                                FullName = m.Name,
                                                DisplayName = m.DisplayName,
                                                ProfilePicture = m.ProfilePicture,
                                                CountryID = m.CountryID,
                                                StateID = m.StateID,
                                                OtherState = m.OtherState,
                                                City = m.CityID,
                                                OtherCity = m.OtherCity,
                                                ZipCode = m.ZipCode,
                                                FailedLoginAttempts = m.FailedAttempts,
                                                CreatedOn = m.DateCreated,
                                                IsLoggedIn = true
                                                //SubscriptionStatus = m.EmailSubscriptions.Any() ? m.EmailSubscriptions.FirstOrDefault().Status : Unsubscribe
                                            })
                                            .FirstOrDefault();
            if (user == null)
            {
                // Register the user if not found in database
                User userNew = new User
                {
                    RoleID = (int)UserRoles.User,
                    FacbookUserID = Login.FacebookUserID,
                    RegisterVia = Login.RegisterVia,
                    RegistrationIP = Login.RegistrationIP,
                    Email = Login.Email,
                    Password = null,
                    ResetPassword = false,
                    PasswordResetCode = null,
                    Name = Login.FullName,
                    DisplayName = Login.DisplayName,
                    ProfilePicture = Login.PictureUrl,
                    CountryID = Login.CountryID,
                    StateID = null,
                    OtherState = Login.OtherState,
                    CityID = null,
                    OtherCity = Login.OtherCity,
                    ZipCode = null,
                    FailedAttempts = 0,
                    DateCreated = DateTime.UtcNow
                };
                Context.Users.Add(userNew);
                SaveChanges();
                Login.UserID = userNew.UserID;

                user = new UserDetails
                {
                    UserID = Login.UserID,
                    RoleID = (int)UserRoles.User,
                    RegisterVia = Login.RegisterVia,
                    RegistrationIP = Login.RegistrationIP,
                    Email = Login.Email,
                    FullName = Login.FullName,
                    DisplayName = Login.DisplayName,
                    ProfilePicture = Login.PictureUrl,
                    CreatedOn = DateTime.UtcNow,
                    IsLoggedIn = true,
                    OtherCity = Login.OtherCity,
                    OtherState = Login.OtherState,
                    CountryID = Login.CountryID
                    //CountryName = userNew.Country != null ? userNew.Country.CountryName : ""
                };
            }
            //user.ProfilePicture = Config.UserImages + user.UserID + "/" + user.ProfilePicture;
            // Save User into Login Sessions
            Guid Guid = Guid.NewGuid();
            var OldSession = Context.UserLoginSessions.Where(m => m.UserID == user.UserID && !m.SessionExpired).FirstOrDefault();
            if (OldSession == null)
            {
                Context.UserLoginSessions.Add(new UserLoginSession
                {
                    LoggedInTime = DateTime.UtcNow,
                    LoggedOutTime = null,
                    SessionExpired = false,
                    UserID = user.UserID,
                    UserLoginSessionID = Guid,
                    LoggedInDeviceToken = DeviceToken,
                    DeviceType = DeviceType
                });
                user.SessionId = Guid;
                SaveChanges();
            }
            else
            {
                user.SessionId = OldSession.UserLoginSessionID;
                OldSession.LoggedInDeviceToken = DeviceToken;
                OldSession.DeviceType = DeviceType;
                SaveChanges();
            }
            return new ActionOutput<UserDetails>
            {
                Message = "User logged in successfuly.",
                Status = ActionStatus.Successfull,
                Object = user
            };
        }
示例#2
0
        ActionOutput<UserDetails> IHomeManager.SaveOrUpdateUser(UserDetails User)
        {
            if (User.UserID > 0)
            {
                var existingDisplayName = Context.Users.Where(m => m.UserID != User.UserID && m.DisplayName == User.DisplayName).FirstOrDefault();
                if (existingDisplayName != null)
                    return new ActionOutput<UserDetails>
                    {
                        Message = "Please choose different displayname, It's already taken by another user.",
                        Status = ActionStatus.Error,
                        Object = User
                    };
                var existing = Context.Users.Where(m => m.UserID == User.UserID).FirstOrDefault();
                if (existing != null)
                {
                    existing.Name = User.FullName;
                    existing.DisplayName = User.DisplayName;
                    if (!string.IsNullOrEmpty(User.ProfilePicture))
                        existing.ProfilePicture = User.ProfilePicture;
                    existing.CountryID = User.CountryID;
                    existing.StateID = User.StateID;
                    existing.OtherState = User.OtherState;
                    existing.CityID = User.City;
                    existing.OtherCity = User.OtherCity;
                    existing.ZipCode = User.ZipCode;
                    SaveChanges();

                    if (User.ProfilePicture != null && !User.ProfilePicture.Contains("graph.facebook.com"))
                        User.ProfilePicture = Config.UserImages + User.UserID + "/" + User.ProfilePicture;
                    return new ActionOutput<UserDetails>
                    {
                        Message = "User successfully updated.",
                        Status = ActionStatus.Successfull,
                        Object = User
                    };
                }
                return new ActionOutput<UserDetails>
                {
                    Message = "Invalid UserID. User does not exists.",
                    Status = ActionStatus.Error,
                    Object = User
                };
            }
            else
            {
                // Check for duplicate Email
                User old = Context.Users.Where(m => m.Email == User.Email).FirstOrDefault();
                if (old != null)
                {
                    return new ActionOutput<UserDetails>
                    {
                        Message = "Email already exists.",
                        Status = ActionStatus.Error,
                        Object = new UserDetails { }
                    };
                }
                // Check for duplicate Username
                old = Context.Users.Where(m => m.DisplayName == User.DisplayName).FirstOrDefault();
                if (old != null)
                {
                    return new ActionOutput<UserDetails>
                    {
                        Message = "Username already exists.",
                        Status = ActionStatus.Error,
                        Object = new UserDetails { }
                    };
                }
                if (string.IsNullOrEmpty(User.ProfilePicture))
                    User.ProfilePicture = Constants.DefaultUserPic;
                User user = new User
                {
                    RoleID = User.RoleID,
                    RegisterVia = User.RegisterVia,
                    RegistrationIP = User.RegistrationIP,
                    Email = User.Email,
                    Password = User.Password,
                    ResetPassword = User.ResetPassword,
                    PasswordResetCode = User.PasswordResetCode,
                    Name = User.FullName,
                    DisplayName = User.DisplayName,
                    ProfilePicture = User.ProfilePicture,
                    CountryID = User.CountryID,
                    StateID = User.StateID,
                    OtherState = User.OtherState,
                    CityID = User.City,
                    OtherCity = User.OtherCity,
                    ZipCode = User.ZipCode,
                    FailedAttempts = User.FailedLoginAttempts,
                    DateCreated = DateTime.UtcNow
                };
                Context.Users.Add(user);
                SaveChanges();
                User.UserID = user.UserID;

                if (!System.IO.Directory.Exists(HostingEnvironment.MapPath(Config.UserImages + user.UserID)))
                    System.IO.Directory.CreateDirectory(HostingEnvironment.MapPath(Config.UserImages + user.UserID));

                if (!User.ProfilePicture.EndsWith("default-user.png"))
                    System.IO.File.Move(HostingEnvironment.MapPath(Config.UserImages + "0/" + User.ProfilePicture), HostingEnvironment.MapPath(Config.UserImages + user.UserID + "/" + User.ProfilePicture));

                User.ProfilePicture = Config.UserImages + user.UserID + "/" + user.ProfilePicture;
                return new ActionOutput<UserDetails>
                {
                    Message = "User successfully registered",
                    Status = ActionStatus.Successfull,
                    Object = User
                };
            }
        }