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); } }
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; } } }
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); } } }