Esempio n. 1
0
        public IHttpActionResult UpdateInspectionOrder(List <ReorderData> data)
        {
            var ua = UserAccess.GetUserAccess(User.Identity.Name);

            ReorderData.Save(data);
            return(Ok(Inspection.GetInspections(ua)));
        }
        public void Reorder(ReorderData data, int userId)
        {
            var sheet = this.context.QuestionSheets
                        .SingleOrDefault(x => x.Id == data.SheetId && x.IsGlobal == false);

            if (sheet == null)
            {
                throw new ServiceException("Sheet to Reorder Does not Exist!");
            }

            var user = this.context.Users
                       .SingleOrDefault(x => x.Id == userId);

            if (user == null)
            {
                throw new ServiceException(Constants.UserNotFoundMessage);
            }

            if (user.Id != sheet.UserId)
            {
                throw new ServiceException("Sheet Does Not Belong To You!");
            }

            var questions = this.context.PersonalQuestionPackages
                            .Where(x => x.QuestionSheetId == sheet.Id)
                            .ToArray();

            var sentIds = data.Orderings.Select(x => x[0]).ToArray();

            if (sentIds.Length != sentIds.Distinct().ToArray().Length)
            {
                throw new ServiceException("Invalid Reorder Data!");
            }

            if (questions.Length != sentIds.Length)
            {
                throw new ServiceException("Invalid Reorder Data!");
            }

            if (questions.Select(x => x.Id).Any(x => !sentIds.Contains(x)))
            {
                throw new Exception("Invalid Reorder Data!");
            }

            for (int i = 0; i < questions.Length; i++)
            {
                var question = questions[i];
                var ordering = data.Orderings.Single(x => x[0] == question.Id);
                var order    = ordering[1];
                var col      = ordering[2];

                question.Order  = order;
                question.Column = col;
            }

            context.SaveChanges();
        }
 public IActionResult ReorderGlobal([FromBody] ReorderData data)
 {
     try
     {
         questionService.ReorderGlobal(data);
         return(Ok());
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Esempio n. 4
0
 public IActionResult ReorderVodeos([FromBody] ReorderData data)
 {
     try
     {
         var userData = jwtService.ParseData(this.User);
         navService.ReorderVideos(data, userData.UserId);
         return(Ok());
     }
     catch (ServiceException e)
     {
         return(BadRequest(e.Message));
     }
 }
 public IActionResult ReorderPersonal([FromBody] ReorderData data)
 {
     try
     {
         var userData = jwtService.ParseData(this.User);
         questionService.Reorder(data, userData.UserId);
         return(Ok());
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
        public void ReorderVideos(ReorderData data, int userId)
        {
            var dir = this.context.Directories
                      .SingleOrDefault(x => x.Id == data.DirId);

            if (dir == null)
            {
                throw new ServiceException("Dir to Reorder Does not Exist!");
            }

            var user = this.context.Users
                       .SingleOrDefault(x => x.Id == userId);

            if (user == null)
            {
                throw new ServiceException("User Not Found!");
            }

            if (user.Id != dir.UserId)
            {
                throw new ServiceException("Dir Does Not Belong To You!");
            }

            //TODO: make it so it only updates the the changes again

            var orderings = data.Orderings
                            .Select((x, i) => new { id = x[0], newOrder = i, oldOrder = x[1] })
                            .OrderBy(x => x.id)
                            .ToArray();

            var dbVideos = this.context.Videos
                           .Where(x => x.DirectoryId == dir.Id)
                           .OrderBy(x => x.Id)
                           .ToArray();

            var dbIds        = dbVideos.Select(x => x.Id).OrderBy(x => x);
            var orderingsIds = orderings.Select(x => x.id).OrderBy(x => x);

            if (!dbIds.SequenceEqual(orderingsIds))
            {
                throw new ServiceException("Reorder Video Data Invalid!");
            }

            for (int i = 0; i < orderings.Length; i++)
            {
                var ordering = orderings[i];
                var dbVideo  = dbVideos.Single(x => x.Id == ordering.id);
                dbVideo.Order = ordering.newOrder;
            }
            context.SaveChanges();
        }
        public void ReorderGlobal(ReorderData data)
        {
            var sheet = this.context.QuestionSheets
                        .SingleOrDefault(x => x.Id == data.SheetId && x.IsGlobal == true);

            if (sheet == null)
            {
                throw new ServiceException("Sheet to Reorder Does not Exist!");
            }

            var questions = this.context.GlobalQuestionPackages
                            .Where(x => x.QuestionSheetId == sheet.Id)
                            .ToArray();

            var sentIds = data.Orderings.Select(x => x[0]).ToArray();

            if (sentIds.Length != sentIds.Distinct().ToArray().Length)
            {
                throw new ServiceException("Invalid Reorder Data!");
            }

            if (questions.Length != sentIds.Length)
            {
                throw new ServiceException("Invalid Reorder Data!");
            }

            if (questions.Select(x => x.Id).Any(x => !sentIds.Contains(x)))
            {
                throw new Exception("Invalid Reorder Data!");
            }

            for (int i = 0; i < questions.Length; i++)
            {
                var question = questions[i];
                var ordering = data.Orderings.Single(x => x[0] == question.Id);
                var order    = ordering[1];
                var col      = ordering[2];

                question.Order  = order;
                question.Column = col;
            }

            context.SaveChanges();
        }
        public void ReorderDirectories(ReorderData data, int userId)
        {
            var user = context.Users.SingleOrDefault(x => x.Id == userId);

            if (user == null)
            {
                throw new ServiceException("User Not Found!");
            }

            var parentDir = context.Directories
                            .SingleOrDefault(x => x.Id == data.DirId);

            if (parentDir == null)
            {
                throw new ServiceException("Dir Parent Sheet Not Found!");
            }

            if (parentDir.UserId != user.Id)
            {
                throw new ServiceException("Dir does not belong to you!");
            }

            this.ReorderDirectories(data.DirId, data.Orderings);
        }
Esempio n. 9
0
        public void ReorderGlobal(ReorderData data)
        {
            var sheet = this.context.QuestionSheets
                        .SingleOrDefault(x => x.Id == data.SheetId && x.IsGlobal == true);

            if (sheet == null)
            {
                throw new ServiceException("Sheet to Reorder Does not Exist!");
            }

            //TODO: make it so it only updates the the changes again

            var orderings = data.Orderings
                            .Select((x, i) => new { id = x[0], newOrder = i, oldOrder = x[1] })
                            .OrderBy(x => x.id)
                            .ToArray();

            var dbQuestions = this.context.GlobalQuestionPackages
                              .Where(x => x.QuestionSheetId == sheet.Id)
                              .OrderBy(x => x.Id)
                              .ToArray();

            bool shouldReorderAll = false;

            for (int i = 0; i < dbQuestions.Length; i++)
            {
                var dbQuestion = dbQuestions[i];
                var ordering   = orderings[i];
                if (dbQuestion.Id != ordering.id)
                {
                    shouldReorderAll = true;
                    break;
                }
            }

            if (dbQuestions.Length != orderings.Length)
            {
                shouldReorderAll = true;
            }

            if (!shouldReorderAll)
            {
                for (int i = 0; i < dbQuestions.Length; i++)
                {
                    var dbQuestion = dbQuestions[i];
                    var ordering   = orderings[i];
                    if (dbQuestion.Id != ordering.id)
                    {
                        shouldReorderAll = true;
                        break;
                    }

                    dbQuestion.Order = ordering.newOrder;
                }
            }
            else
            {
                var thereIsDiscrepency = false;

                dbQuestions = dbQuestions.OrderBy(x => x.Order).ToArray();
                for (int i = 0; i < dbQuestions.Length; i++)
                {
                    if (dbQuestions[i].Order != i)
                    {
                        thereIsDiscrepency = true;
                        break;
                    }
                }
                if (thereIsDiscrepency)
                {
                    for (int i = 0; i < dbQuestions.Length; i++)
                    {
                        dbQuestions[i].Order = i;
                    }
                }
            }

            context.SaveChanges();
        }