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