public IQueryable <CategoryModel> GetAll() { var responseMsg = this.PerformOperationAndHandleExceptions(() => { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var context = new TeamAssessnmentContext(); var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } var categoryEntities = context.Categories; var models = (from categoryEntity in categoryEntities where categoryEntity.User.Id == user.Id select new CategoryModel() { Id = categoryEntity.Id, Name = categoryEntity.Name, Assignments = (from assEntity in categoryEntity.Assignments select new AssignmentsModel() { Name = assEntity.Name, MaxValue = assEntity.MaxValue }) }); return(models); }); return(responseMsg); }
public HttpResponseMessage PutLogoutUser() { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var responseMessage = this.PerformOperationAndHandleExceptions( () => { var context = new TeamAssessnmentContext(); using (context) { var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user.SessionKey == null) { throw new ArgumentNullException("User is already logout!"); } user.SessionKey = null; context.SaveChanges(); var response = this.Request.CreateResponse(HttpStatusCode.OK); return(response); } } ); return(responseMessage); }
public IQueryable <TeamAssignmentsResult> GetAll(int teamId) { var responseMsg = this.PerformOperationAndHandleExceptions(() => { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var context = new TeamAssessnmentContext(); var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } //var teamEntities = context.Teams.FirstOrDefault(team => team.Id == teamId); var models = (from resultEntity in context.Results where resultEntity.Team.Id == teamId && resultEntity.User.Id == user.Id select new TeamAssignmentsResult() { Id = resultEntity.Id, AssignmentId = resultEntity.Assignment.Id, Value = resultEntity.Value }); return(models); }); return(responseMsg); }
public HttpResponseMessage PostCategories(CreateAssignmentsWithCategories model) { var responseMessage = this.PerformOperationAndHandleExceptions(() => { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var dbContext = new TeamAssessnmentContext(); // dbContext.Configuration.ProxyCreationEnabled = false; using (dbContext) { var user = dbContext.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new ArgumentException("Users must be logged when create a new post!"); } List <Assignment> assignmentsList = new List <Assignment>(); foreach (var assignmentItem in model.Assignment) { var newAssignment = new Assignment() { User = user, Name = assignmentItem.Name, MaxValue = assignmentItem.MaxValue }; assignmentsList.Add(newAssignment); } var categoryEntity = new Category() { Assignments = assignmentsList, User = user, Name = model.CategoryName }; dbContext.Categories.Add(categoryEntity); dbContext.SaveChanges(); var categoryModel = new CategoryModel() { Id = categoryEntity.Id, Name = categoryEntity.Name }; var response = this.Request.CreateResponse(HttpStatusCode.Created, categoryModel); return(response); } }); return(responseMessage); }
public HttpResponseMessage PostRegisterUser(UserModel model) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var context = new TeamAssessnmentContext(); using (context) { this.ValidateUsername(model.Username); this.ValidateNickname(model.DisplayName); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var nicknameToLower = model.DisplayName.ToLower(); var user = context.Users.FirstOrDefault( usr => usr.Username == usernameToLower || usr.Nickname.ToLower() == nicknameToLower); if (user != null) { throw new InvalidOperationException("Users exists"); } user = new User() { Username = usernameToLower, Nickname = model.DisplayName, AuthCode = model.AuthCode }; context.Users.Add(user); context.SaveChanges(); user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); var loggedModel = new LoggedUserModel() { Nickname = user.Nickname, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return(response); } }); return(responseMsg); }
public HttpResponseMessage PostResultsOnTeam(int teamId, CreateResultModel model) { var responseMessage = this.PerformOperationAndHandleExceptions(() => { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var dbContext = new TeamAssessnmentContext(); // dbContext.Configuration.ProxyCreationEnabled = false; using (dbContext) { var user = dbContext.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new ArgumentException("Users must be logged when create a new comment!"); } var teamEntity = dbContext.Teams.FirstOrDefault(team => team.Id == teamId); foreach (var assignmentItem in model.AssignmentsResult) { var assignmentEntity = dbContext.Assignments.FirstOrDefault(ass => ass.Name == assignmentItem.Name); var newResult = new Result() { Team = teamEntity, Value = assignmentItem.Value, User = user, Assignment = assignmentEntity, }; dbContext.Results.Add(newResult); dbContext.SaveChanges(); } var response = this.Request.CreateResponse(HttpStatusCode.OK); return(response); } }); return(responseMessage); }
public IQueryable <TeamDetailsModel> GetById(int teamId) { var responseMsg = this.PerformOperationAndHandleExceptions(() => { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var context = new TeamAssessnmentContext(); var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } var models = this.GetAll().Where(tm => tm.Id == teamId); return(models); }); return(responseMsg); }
public HttpResponseMessage PostLoginUser(UserModel model) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var context = new TeamAssessnmentContext(); using (context) { this.ValidateUsername(model.Username); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var user = context.Users.FirstOrDefault( usr => usr.Username == usernameToLower && usr.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } if (user.SessionKey == null) { user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); } var loggedModel = new LoggedUserModel() { Nickname = user.Nickname, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return(response); } }); return(responseMsg); }
public IQueryable <TeamDetailsModel> GetAll() { var responseMsg = this.PerformOperationAndHandleExceptions(() => { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var context = new TeamAssessnmentContext(); var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } var teamEntities = context.Teams; var models = (from teamEntity in teamEntities where teamEntity.User.Id == user.Id select new TeamDetailsModel() { Id = teamEntity.Id, Teamname = teamEntity.Teamname, User = teamEntity.User.Nickname, ImageUrl = teamEntity.ImageURL, Members = (from membEntity in teamEntity.Members select membEntity.Name), Results = (from resultEntity in teamEntity.Results select new ResultsModel() { CategoryName = resultEntity.Assignment.Category.Name, AssignmentName = resultEntity.Assignment.Name, Value = resultEntity.Value }) }); return(models); }); return(responseMsg); }
public HttpResponseMessage PostTeams(CreateTeamsModel model) { var responseMessage = this.PerformOperationAndHandleExceptions(() => { var sessionKey = this.GetHeaderValue(Request.Headers, "sessionKey"); var dbContext = new TeamAssessnmentContext(); // dbContext.Configuration.ProxyCreationEnabled = false; using (dbContext) { var user = dbContext.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey); if (user == null) { throw new ArgumentException("Users must be logged when create a new post!"); } if (!(model.Teamnames == null)) { string[] teamList = model.Teamnames.Split(new char[] { '\r', '\n', '\t' }, StringSplitOptions.RemoveEmptyEntries); string[] membList1 = model.Members1.Split(new char[] { '\r', '\n', '\t' }, StringSplitOptions.RemoveEmptyEntries); string[] membList2 = model.Members2.Split(new char[] { '\r', '\n', '\t' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < teamList.Length; i++) { List <Member> newMember = new List <Member>(); var memberEntity = new Member() { Name = membList1[i].Trim() }; newMember.Add(memberEntity); memberEntity = new Member() { Name = membList2[i].Trim() }; newMember.Add(memberEntity); var teamEntity = new Team() { Teamname = teamList[i].Trim(), User = user, Members = newMember }; dbContext.Teams.Add(teamEntity); dbContext.SaveChanges(); } } var createdTeamsModel = this.GetAll(); // var ret = Request.CreateResponse(HttpStatusCode.OK); var ret = Request.CreateResponse(HttpStatusCode.Created, createdTeamsModel); return(ret); } }); return(responseMessage); }