public async Task <ActionResult> Index(DateTime ReportDate, int?id) { DailyReportVM drVM = new DailyReportVM(); // current user Id Logged In var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; // tournament Id assigned to current user Id int?TournamentId = _context.UserTournaments.Where(u => u.UserId == userId).Select(t => t.TournamentId).FirstOrDefault(); var user = await _userManager.FindByIdAsync(userId); // if id not null and user is viewer we set tournament id to new id else still tournament id that assign to current user // this condition if id != 0 and user role is viewer (general or 3a2id abou daher ) ==> request from general or 3a2id abou daher if (await _userManager.IsInRoleAsync(user, "Viewer") || await _userManager.IsInRoleAsync(user, "SuperAdmin")) { TournamentId = id != 0 ? id : TournamentId; } if (TournamentId == 0) { drVM.ReportDate = ReportDate; TempData["message"] = NotificationSystem.AddMessage("لا يوجد دورة ", NotificationType.Danger.Value); return(View(drVM)); } drVM.TournamentId = (int)TournamentId; // select today daily incidents drVM.DailyIncidents = _context.DailyIncidents.Where(t => t.TournamentId == TournamentId && (ReportDate.Date >= t.StartDate.Value.Date && ReportDate.Date <= t.EndDate.Value.Date)).Include(o => o.Officer).Include(r => r.ReasonOfIncident).ToList(); // select today daily Notes drVM.DailyNotes = _context.DailyNotes.Where(t => t.CreationDate == ReportDate).Include(o => o.Officer).ToList(); // select current today report DailyReport dr = new DailyReport(); dr = _context.DailyReports.Where(t => t.ReportDate.Date == ReportDate.Date && t.TournamentId == TournamentId).FirstOrDefault(); int basenumber = _context.Officers.Where(t => t.TournamentId == TournamentId).Count(); drVM.ReportDate = ReportDate; drVM.BaseNumber = dr != null ? dr.BaseNumber : basenumber; drVM.ReadyNumber = dr != null ? dr.ReadyNumber : drVM.BaseNumber; drVM.NotReadyNumber = drVM.BaseNumber - drVM.ReadyNumber; if (dr == null) { TempData["message"] = NotificationSystem.AddMessage("لا يوجد تقرير يومي في هذا التاريخ ", NotificationType.Danger.Value); return(View(drVM)); } return(View(drVM)); }
public ActionResult DailyReport() { ViewBag.msg = "ViewModel Demo"; DailyReportVM drvm = new DailyReportVM(); //db simulate to fetch new members drvm.NewMember.Add(new Member() { ID = 101, FirstName = "Kiranpreet", LastName = "Kaur" }); drvm.NewMember.Add(new Member() { ID = 3, FirstName = "Nidhi", LastName = "Shukla" }); drvm.TopRatedGame = new Game() { Id = 1, Title = "Contra", Rating = 9 }; return(View(drvm)); }
public ActionResult Action8() { ViewBag.Message = "simulating Passing multiple views using ViewModel"; // simulate db query, newly joined members List <Member> Members = new List <Member>(); Members.Add(new Member() { MembershipID = 98, FirstName = "Amandeep", LastName = "Patti" }); Members.Add(new Member() { MembershipID = 99, FirstName = "John", LastName = "Smith" }); // simulate db query, most popular games for the day List <Game> Games = new List <Game>(); Games.Add(new Game() { ID = 111, Title = "WWII" }); Games.Add(new Game() { ID = 123, Title = "Age of Empires" }); DailyReportVM drvm = new DailyReportVM(); drvm.NewMembers = Members; drvm.PopularGamesForTheDay = Games; return(View(drvm)); }
public ActionResult AdministrationDailyReportNote(DateTime?currentdate = null) { currentdate = currentdate != null ? currentdate : DateTime.Today.Date; DailyReportVM dailyReportVM = new DailyReportVM(); // current user Id Logged In var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; // tournament Id assigned to current user Id int TournamentId = _context.UserTournaments.Where(u => u.UserId == userId).Select(t => t.TournamentId).FirstOrDefault(); // get tdy report DailyReport dailyReport = _context.DailyReports.Where(t => t.TournamentId == TournamentId && (currentdate == t.ReportDate)).FirstOrDefault(); dailyReportVM.ReportId = dailyReport != null && dailyReport.Id != 0 ? dailyReport.Id : 0; dailyReportVM.TournamentId = TournamentId; dailyReportVM.DailyIncidents = _context.DailyIncidents.Where(t => t.StartDate.Value <= currentdate && t.EndDate.Value >= currentdate && t.TournamentId == TournamentId).Include(o => o.Officer).Include(r => r.ReasonOfIncident).ToList();; dailyReportVM.DailyNotes = _context.DailyNotes.Where(t => t.CreationDate == currentdate && t.TournamentId == TournamentId).Include(o => o.Officer).ToList(); dailyReportVM.ReportDate = (DateTime)currentdate; return(View(dailyReportVM)); }
public async Task <ActionResult> AdministrationDailyReportNote(DailyReportVM dailyReportVM, string SubmitButton) { DailyReport dailyReport = null; switch (SubmitButton) { case "search": // current user Id Logged In var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; // tournament Id assigned to current user Id int TournamentId = _context.UserTournaments.Where(u => u.UserId == userId).Select(t => t.TournamentId).FirstOrDefault(); // get daily report by day posted dailyReport = _context.DailyReports.Where(t => t.TournamentId == dailyReportVM.TournamentId && (dailyReportVM.ReportDate.Date == t.ReportDate.Date)).FirstOrDefault(); dailyReportVM.ReportId = dailyReport != null && dailyReport.Id != 0 ? dailyReport.Id : 0; // get daily incident by day posted dailyReportVM.DailyIncidents = _context.DailyIncidents.Where(t => t.StartDate.Value <= dailyReportVM.ReportDate && t.EndDate.Value >= dailyReportVM.ReportDate && t.TournamentId == TournamentId).Include(o => o.Officer).ToList();; // get daily note by day posted dailyReportVM.DailyNotes = _context.DailyNotes.Where(t => t.CreationDate == dailyReportVM.ReportDate && t.TournamentId == TournamentId).Include(o => o.Officer).ToList(); return(View(dailyReportVM)); case "delete": if (dailyReportVM.ReportId != 0) { DailyReport dr = _context.DailyReports.Find(dailyReportVM.ReportId); if (dailyReportVM.WantToDelete) { dr = _context.DailyReports.Find(dailyReportVM.ReportId); _context.DailyReports.Remove(dr); dailyReportVM.ReportId = 0; } } if (dailyReportVM.DailyIncidents != null) { foreach (var item in dailyReportVM.DailyIncidents) { if (item.WantToDelete) { _context.DailyIncidents.Remove(item); } } } if (dailyReportVM.DailyNotes != null) { foreach (var item in dailyReportVM.DailyNotes) { if (item.WantToDelete) { _context.DailyNotes.Remove(item); } } } await _context.SaveChangesAsync(); return(RedirectToAction("AdministrationDailyReportNote", new { currentdate = dailyReportVM.ReportDate })); } return(View(dailyReportVM)); }
public ActionResult Create(DailyReportVM drVM, string SubmitButton) { // check why model state is false var errors = ModelState .Where(x => x.Value.Errors.Count > 0) .Select(x => new { x.Key, x.Value.Errors }) .ToArray(); if (ModelState.IsValid) { drVM.ReportDate = drVM.ReportDate != null ? drVM.ReportDate : DateTime.Today.Date; switch (SubmitButton) { case "بحث": return(RedirectToAction("Create", new { currentReportdate = drVM.ReportDate })); case "اضافة": if (drVM.BaseNumber == 0) { TempData["message"] = NotificationSystem.AddMessage("لا يوجد ضباط ", NotificationType.Danger.Value); return(View(drVM)); } // daily report /// check if report exist today cz Report Date only inserted one time DailyReport dr_today = _context.DailyReports.Where(t => t.TournamentId == drVM.TournamentId && (drVM.ReportDate.Date == t.ReportDate.Date)).FirstOrDefault(); if (dr_today == null) { DailyReport dr = new DailyReport() { TournamentId = drVM.TournamentId, IsActive = true, CreationDate = DateTime.Today.Date, ReportDate = drVM.ReportDate, BaseNumber = drVM.BaseNumber, ReadyNumber = drVM.ReadyNumber, NotReadyNumber = drVM.NotReadyNumber }; _context.DailyReports.Add(dr); } else { dr_today.ReadyNumber = drVM.ReadyNumber; dr_today.NotReadyNumber = dr_today.NotReadyNumber; _context.DailyReports.Update(dr_today); } // count of incidents already in database and today int counttodayincidents = 0; // loop in old record incidents if (drVM.TodayDailyIncidents != null && drVM.TodayDailyIncidents.Count > 0) { counttodayincidents = drVM.TodayDailyIncidents.Count; foreach (var item in drVM.TodayDailyIncidents) { // find existed daily incident DailyIncident di = _context.DailyIncidents.Find(item.Id); // if the daily incident of officer is finished , we need to update enddate to today if (item.IsFinish) { if (di == null) { TempData["message"] = NotificationSystem.AddMessage("حصل خطأ في احد وقوعات الضباط ", NotificationType.Danger.Value); return(View(drVM)); } // count day between start date and report date , cz when i finish some incident enddate updated to current report date int countdaybetween = GetCountdaysBetween((DateTime?)item.StartDate, (DateTime?)drVM.ReportDate); // this incident will finish in current date posted di.EndDate = drVM.ReportDate; di.CountDaysOfIncident = countdaybetween; } di.Explanation = item.Explanation; _context.DailyIncidents.Update(di); //di.ReasonOfIncidentId = item.ReasonOfIncidentId; } } // loop in Daily Notes int CountDailyNotePosted = 0; if (drVM.DailyNotes != null) { foreach (var item in drVM.DailyNotes) { if (item.OfficerId != null || !String.IsNullOrEmpty(item.Note)) { DailyNote dn = new DailyNote() { CreationDate = drVM.ReportDate, OfficerId = item.OfficerId, Note = item.Note, IsActive = true, IsImportant = item.IsImportant, IsPositive = item.IsPositive, TournamentId = drVM.TournamentId }; CountDailyNotePosted++; _context.DailyNotes.Add(dn); } } } drVM.CountDailyNotePosted = CountDailyNotePosted; // take the records needed from Basenumber record if (drVM.NotReadyNumber - counttodayincidents > 0) { drVM.DailyIncidents = drVM.DailyIncidents.Take(drVM.NotReadyNumber - counttodayincidents).ToList(); // loop in new Inserted Record of Daily Incident foreach (var item in drVM.DailyIncidents) { if (item.OfficerId != null) { if (item.EndDate >= item.StartDate) { int countdaybetween = GetCountdaysBetween((DateTime?)item.StartDate, (DateTime?)item.EndDate); DailyIncident di = new DailyIncident() { CreationDate = DateTime.Today, ReasonOfIncidentId = item.ReasonOfIncidentId, Explanation = item.Explanation, StartDate = item.StartDate.Value.Date, EndDate = item.EndDate.Value.Date, IsActive = true, OfficerId = item.OfficerId, CountDaysOfIncident = countdaybetween, TournamentId = drVM.TournamentId }; _context.DailyIncidents.Add(di); } else { // if an error exist , i need to call ddlreson cz each user has reson so id need ddlreason data drVM.DDLReason = new SelectList(_context.ReasonOfIncidents.ToList().OrderBy(n => n.Name), "Id", "Name"); TempData["message"] = NotificationSystem.AddMessage("يجب التأكد من التاريخ ", NotificationType.Danger.Value); return(View(drVM)); } } else { // if an error exist , i need to call ddlreson cz each user has reson so id need ddlreason data drVM.DDLReason = new SelectList(_context.ReasonOfIncidents.ToList().OrderBy(n => n.Name), "Id", "Name"); TempData["message"] = NotificationSystem.AddMessage("يوجد وقوعات دون ضابط ", NotificationType.Danger.Value); return(View(drVM)); } } } _context.SaveChanges(); TempData["message"] = NotificationSystem.AddMessage("تم اضافة التقرير اليومي بنجاح", NotificationType.Success.Value); return(RedirectToAction("Index", new { currentreportdate = drVM.ReportDate })); } } TempData["message"] = NotificationSystem.AddMessage("حصل خطأ ما", NotificationType.Danger.Value); return(View(drVM)); }
public ActionResult Create(DateTime?currentReportdate) { DailyReportVM drVM = new DailyReportVM(); drVM.ReportDate = currentReportdate != null ? (DateTime)currentReportdate : DateTime.Today.Date; if (ModelState.IsValid) { // current user Id Logged In var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; // tournament Id assigned to current user Id int TournamentId = _context.UserTournaments.Where(u => u.UserId == userId).Select(t => t.TournamentId).FirstOrDefault(); Tournament tournament = TournamentId != 0 ? _context.Tournaments.Where(t => t.Id == TournamentId).First():null; if (tournament == null) { TempData["message"] = NotificationSystem.AddMessage("لا يوجد دورة ", NotificationType.Danger.Value); return(View(drVM)); } drVM.TournamentId = TournamentId; drVM.TournamentName = tournament.Name; drVM.BaseNumber = _context.Officers.Where(t => t.TournamentId == tournament.Id).Count(); if (drVM.BaseNumber == 0) { drVM.ReportDate = drVM.ReportDate; TempData["message"] = NotificationSystem.AddMessage("لا يوجد ضباط ", NotificationType.Danger.Value); return(View(drVM)); } // get today daily incident by date drVM.TodayDailyIncidents = _context.DailyIncidents.Include(o => o.Officer).Include(r => r.ReasonOfIncident) .Where(t => t.TournamentId == drVM.TournamentId && (drVM.ReportDate >= t.StartDate.Value.Date && drVM.ReportDate <= t.EndDate.Value.Date)).ToList(); foreach (var item in drVM.TodayDailyIncidents) { item.OfficerName = item.Officer.Name; } // get distinct daily incident group by officer Id int CountDistinctdailyIncidents = _context.DailyIncidents.Where(t => t.TournamentId == tournament.Id && (drVM.ReportDate >= t.StartDate.Value.Date && drVM.ReportDate <= t.EndDate.Value.Date)).Select(o => o.OfficerId).Distinct().Count(); drVM.ReadyNumber = drVM.BaseNumber - CountDistinctdailyIncidents; drVM.NotReadyNumber = CountDistinctdailyIncidents; drVM.ReportDate = drVM.ReportDate; // check if has a daily report in this date DailyReport dr_today = _context.DailyReports.Where(t => t.TournamentId == drVM.TournamentId && (drVM.ReportDate.Date == t.ReportDate.Date)).FirstOrDefault(); // get reasons from database drVM.DDLReason = new SelectList(_context.ReasonOfIncidents.ToList().OrderBy(n => n.Name), "Id", "Name"); if (dr_today == null) { TempData["message"] = NotificationSystem.AddMessage("لا يوجد تقرير يومي في هذا التاريخ ", NotificationType.Danger.Value); return(View(drVM)); } } return(View(drVM)); }