Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }