AppsActionsController.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using Microsoft.AspNetCore.Identity;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.EntityFrameworkCore;
  4. using VolgaIT.Data;
  5. using VolgaIT.Models;
  6. namespace VolgaIT.Controllers
  7. {
  8. public class AppsActionsController : Controller
  9. {
  10. private DataContext _db;
  11. private UserManager<IdentityUser> _userManager;
  12. public AppsActionsController(DataContext context, UserManager<IdentityUser> userManager)
  13. {
  14. _db = context;
  15. _userManager = userManager;
  16. }
  17. [HttpGet]
  18. public async Task<IActionResult> Settings(string id)
  19. {
  20. App app = await _db.Apps.FindAsync(id);
  21. return View(app);
  22. }
  23. [HttpGet]
  24. public async Task<IActionResult> StatisticsApp(string id)
  25. {
  26. StatisticsAppViewModel statModel = await GetStatisticsApp(id);
  27. return View(statModel);
  28. }
  29. [HttpPost]
  30. public async Task<IActionResult> DeleteApp(App app)
  31. {
  32. App appNew = await _db.Apps.FindAsync(app.Id);
  33. List<RequestUser> requests = await _db.RequestUsers.Where(x => x.AppId == appNew.Id).ToListAsync();
  34. UserApps userApps = await _db.UserApps.FirstOrDefaultAsync(x => x.AppId == appNew.Id);
  35. _db.Apps.Remove(appNew);
  36. _db.RequestUsers.RemoveRange(requests);
  37. _db.UserApps.Remove(userApps);
  38. await _db.SaveChangesAsync();
  39. return RedirectToAction("ListApp", "UserActions");
  40. }
  41. [HttpPost]
  42. public async Task<IActionResult> UpdateApp(App app)
  43. {
  44. //App updateApp = new App { Id = app.Id, Name = app.Name, DateCreate = app.DateCreate };
  45. if (ModelState.IsValid)
  46. {
  47. try
  48. {
  49. App appUpdate = await _db.Apps.FindAsync(app.Id);
  50. appUpdate.Name = app.Name;
  51. _db.Apps.Update(appUpdate);
  52. await _db.SaveChangesAsync();
  53. ViewBag.resultUpdateApp = "Успешно сохранено";
  54. }
  55. catch
  56. {
  57. ModelState.AddModelError("", "Ошибка сохранения");
  58. }
  59. }
  60. return View("Settings", app);
  61. }
  62. [HttpGet]
  63. public async Task<IActionResult> TimeFilter(string timeFilter, string id)
  64. {
  65. StatisticsAppViewModel app = await GetStatisticsApp(id);
  66. switch (timeFilter)
  67. {
  68. case "week":
  69. DateTime rqstUserWeek = DateTime.Now.AddDays(-7);
  70. app.RequestUsers = app.RequestUsers.Where(x => x.CreatedDate > rqstUserWeek).ToList();
  71. break;
  72. case "month":
  73. DateTime rqstUserMonth = DateTime.Now.AddDays(-31);
  74. app.RequestUsers = app.RequestUsers.Where(x => x.CreatedDate > rqstUserMonth).ToList();
  75. break;
  76. case "year":
  77. DateTime rqstUserYear = DateTime.Now.AddDays(-365);
  78. app.RequestUsers = app.RequestUsers.Where(x => x.CreatedDate > rqstUserYear).ToList();
  79. break;
  80. }
  81. return PartialView("PartialTableStat", app);
  82. }
  83. public async Task<StatisticsAppViewModel> GetStatisticsApp(string id)
  84. {
  85. App thisApp = await _db.Apps.FindAsync(id);
  86. StatisticsAppViewModel app = new StatisticsAppViewModel
  87. {
  88. App = thisApp,
  89. Events = await _db.Events.ToListAsync(),
  90. RequestUsers = await _db.RequestUsers.Where(x => x.AppId == thisApp.Id).ToListAsync()
  91. };
  92. return app;
  93. }
  94. }
  95. }