public UserInfoModel GetUserInfo( [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { var responseMsg = this.PerformOperationAndHandleExceptions(() => { var user = this.Data.Users.All().FirstOrDefault( x => x.SessionKey == sessionKey); if (user == null || sessionKey == string.Empty) { throw new InvalidOperationException("Invalid sessionKey"); } var model = new UserInfoModel() { Id = user.Id, Name = user.Name, Role = user.UserRole.Role, Level = user.Level.Name }; return model; }); return responseMsg; }
public HttpResponseMessage PostLevelUpUser( [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var user = this.Data.Users.All().FirstOrDefault( x => x.SessionKey == sessionKey); if (user == null || sessionKey == string.Empty) { throw new InvalidOperationException("Invalid sessionKey"); } var records = this.Data.Records.All().Where(x => x.UserId == user.Id).ToList(); foreach (Record record in records) { this.Data.Records.Delete(record); } this.Data.SaveChanges(); var levelRank = user.Level.Rank; var upLevel = this.Data.Levels.All().Where(x => x.Rank == levelRank + 1).FirstOrDefault(); if (upLevel == null) { throw new InvalidOperationException("There are no more levels"); } user.Level = upLevel; this.Data.SaveChanges(); var model = new UserInfoModel() { Id = user.Id, Name = user.Name, Role = user.UserRole.Role, Level = user.Level.Name }; var response = this.Request.CreateResponse(HttpStatusCode.OK, model); return response; }); return responseMsg; }