protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                Profiles profile = db.Profiles.Where(
                    p => p.Userid == _session.UserData.UserID &&
                    p.Profileid == _session.UserData.ProfileID &&
                    p.Nick == p.Nick).First();

                Users user = db.Users.Where(
                    u => u.Userid == _session.UserData.UserID).First();

                Subprofiles subprofile = db.Subprofiles.Where(
                    s => s.Profileid == _session.UserData.ProfileID &&
                    s.Namespaceid == _session.UserData.NamespaceID &&
                    s.Uniquenick == _session.UserData.UniqueNick).First();

                if (_request.HasPublicMaskFlag)
                {
                    profile.Publicmask = (int)_request.PublicMask;
                }
                if (_request.HasFirstNameFlag)
                {
                    profile.Firstname = _request.FirstName;
                }
                if (_request.HasLastNameFlag)
                {
                    profile.Lastname = _request.LastName;
                }
                if (_request.HasICQFlag)
                {
                    profile.Icquin = _request.ICQUIN;
                }
                if (_request.HasHomePageFlag)
                {
                    profile.Homepage = _request.HomePage;
                }
                if (_request.HasBirthdayFlag)
                {
                    profile.Birthday   = _request.BirthDay;
                    profile.Birthmonth = _request.BirthMonth;
                    profile.Birthyear  = _request.BirthYear;
                }
                if (_request.HasSexFlag)
                {
                    profile.Sex = _request.Sex;
                }

                if (_request.HasZipCode)
                {
                    profile.Zipcode = _request.ZipCode;
                }
                if (_request.HasCountryCode)
                {
                    profile.Countrycode = _request.CountryCode;
                }

                db.Update(profile);
            }
        }
Пример #2
0
        private void DatabaseOperationByType()
        {
            using (var db = new retrospyContext())
            {
                switch (_newUserStatus.CheckAccount)
                {
                case _newUserStatus.CheckAccount:
                    var users = db.Users.Where(u => u.Email == _request.Email)
                                .Select(u => u);
                    if (users.Count() == 0)
                    {
                        goto case _newUserStatus.AccountNotExist;
                    }
                    else if (users.Count() == 1)
                    {
                        _user = users.First();
                        goto case _newUserStatus.AccountExist;
                    }
                    else
                    {
                        // double user in database
                        _errorCode = GPError.DatabaseError;
                        LogWriter.ToLog(LogEventLevel.Error, "There are two same records in User table!");
                        break;
                    }

                case _newUserStatus.AccountNotExist:
                    _user = new Users {
                        Email = _request.Email, Password = _request.Password
                    };
                    db.Users.Add(_user);
                    db.SaveChanges();
                    goto case _newUserStatus.CheckProfile;

                case _newUserStatus.AccountExist:

                    if (_user.Password != _request.Password)
                    {
                        _errorCode = GPError.NewUserBadPasswords;
                        break;
                    }
                    else
                    {
                        goto case _newUserStatus.CheckProfile;
                    }

                case _newUserStatus.CheckProfile:
                    var profiles = db.Profiles.Where(p => p.Userid == _user.Userid && p.Nick == _request.Nick);
                    if (profiles.Count() == 0)
                    {
                        goto case _newUserStatus.ProfileNotExist;
                    }
                    else if (profiles.Count() == 1)
                    {
                        //same nick name can not register two profiles
                        _profile = profiles.First();
                        goto case _newUserStatus.ProfileExist;
                    }
                    else
                    {
                        //there are two profiles we stop
                        _errorCode = GPError.DatabaseError;
                        LogWriter.ToLog(LogEventLevel.Error, "There are two same records in Profile table!");
                        break;
                    }

                case _newUserStatus.ProfileNotExist:
                    _profile = new Profiles {
                        Userid = _user.Userid, Nick = _request.Nick
                    };
                    db.Profiles.Add(_profile);
                    db.SaveChanges();
                    goto case _newUserStatus.CheckSubProfile;

                case _newUserStatus.ProfileExist:
                //we do nothing here

                case _newUserStatus.CheckSubProfile:
                    var subProfiles = db.Subprofiles
                                      .Where(s => s.Profileid == _profile.Profileid &&
                                             s.Namespaceid == _request.NamespaceID);
                    if (subProfiles.Count() == 0)
                    {
                        goto case _newUserStatus.SubProfileNotExist;
                    }
                    else if (subProfiles.Count() == 1)
                    {
                        _subProfile = subProfiles.First();
                        goto case _newUserStatus.SubProfileExist;
                    }
                    else
                    {
                        _errorCode = GPError.DatabaseError;
                        LogWriter.ToLog(LogEventLevel.Error, "There are two same records in SubProfile table!");
                        break;
                    }

                case _newUserStatus.SubProfileNotExist:
                    //we create subprofile and return
                    _subProfile = new Subprofiles
                    {
                        Profileid   = _profile.Profileid,
                        Uniquenick  = _request.Uniquenick,
                        Namespaceid = _request.NamespaceID
                    };

                    db.Subprofiles.Add(_subProfile);
                    db.SaveChanges();
                    break;

                case _newUserStatus.SubProfileExist:
                    _errorCode = GPError.NewUserUniquenickInUse;
                    break;
                }
            }
        }
Пример #3
0
        protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                try
                {
                    switch (_newUserStatus.CheckAccount)
                    {
                    case _newUserStatus.CheckAccount:
                        int count = db.Users.Where(u => u.Email == _recv["email"]).Select(u => u).Count();
                        if (count == 0)
                        {
                            goto case _newUserStatus.AccountNotExist;
                        }
                        else
                        {
                            goto case _newUserStatus.AccountExist;
                        }

                    case _newUserStatus.AccountNotExist:
                        _users = new Users {
                            Email = _recv["email"], Password = _recv["passenc"]
                        };
                        db.Users.Add(_users);
                        db.SaveChanges();
                        goto case _newUserStatus.CheckProfile;

                    case _newUserStatus.AccountExist:
                        //we have to check password correctness
                        _users = db.Users.Where(u => u.Email == _recv["email"] && u.Password == _recv["passenc"]).FirstOrDefault();
                        if (_users == null)
                        {
                            _errorCode = GPErrorCode.NewUserBadPasswords;
                            break;
                        }
                        else
                        {
                            goto case _newUserStatus.CheckProfile;
                        }

                    case _newUserStatus.CheckProfile:
                        _profiles = db.Profiles.Where(p => p.Userid == _users.Userid && p.Nick == _recv["nick"]).FirstOrDefault();
                        if (_profiles == null)
                        {
                            goto case _newUserStatus.ProfileNotExist;
                        }
                        else
                        {
                            goto case _newUserStatus.ProfileExist;
                        }

                    case _newUserStatus.ProfileNotExist:
                        _profiles = new Profiles {
                            Userid = _users.Userid, Nick = _recv["nick"]
                        };
                        db.Profiles.Add(_profiles);
                        db.SaveChanges();
                        goto case _newUserStatus.CheckSubProfile;

                    case _newUserStatus.ProfileExist:
                    //we do nothing here

                    case _newUserStatus.CheckSubProfile:
                        _subProfiles = db.Subprofiles
                                       .Where(s => s.Profileid == _profiles.Profileid &&
                                              s.Uniquenick == _uniquenick &&
                                              s.Namespaceid == _namespaceid).FirstOrDefault();
                        if (_subProfiles == null)
                        {
                            goto case _newUserStatus.SubProfileNotExist;
                        }
                        else
                        {
                            goto case _newUserStatus.SubProfileExist;
                        }

                    case _newUserStatus.SubProfileNotExist:
                        //we create subprofile and return
                        _subProfiles = new Subprofiles
                        {
                            Profileid   = _profiles.Profileid,
                            Uniquenick  = _uniquenick,
                            Namespaceid = _namespaceid
                        };

                        db.Subprofiles.Add(_subProfiles);
                        db.SaveChanges();
                        break;

                    case _newUserStatus.SubProfileExist:
                        _errorCode = GPErrorCode.NewUserUniquenickInUse;
                        break;
                    }
                }
                catch (Exception)
                {
                    _errorCode = GPErrorCode.DatabaseError;
                }

                //update other information
                if (_errorCode != GPErrorCode.DatabaseError)
                {
                    UpdateOtherInfo(_recv);
                }
            }
        }