public ActionResult AddRules(AcademicCalanderViewModel obj)
        {
            //if (!ModelState.IsValid)
            //{
            //    var vm = new AcademicCalanderViewModel()
            //    {
            //        CalanderRules = _context.AcademicCalander.ToList(),
            //        AcademicCalanderEvents = _context.AcademicCalanderEvents.ToList(),

            //    };
            //    return View("Index", vm);
            //}

            if (obj.AcademicCalander.StartDate > obj.AcademicCalander.EndDate)
            {
                ModelState.AddModelError("RangeError", "Date Range Not Correct");
                return(View("Index", obj));
            }

            // if attendance already exists......



            //obj.AcademicCalander.AcademicCalanderEventId = ;

            _context.AcademicCalander.Add(obj.AcademicCalander);

            _context.SaveChanges();



            return(RedirectToAction(nameof(Index)));
        }
        // GET: AcademicCalander
        public ActionResult Index()
        {
            var vm = new AcademicCalanderViewModel()
            {
                CalanderRules          = _context.AcademicCalander.ToList(),
                AcademicCalanderEvents = _context.AcademicCalanderEvents.ToList(),
            };


            return(View(vm));
        }
        public ActionResult DeleteRule(int id)
        {
            var rule = _context.AcademicCalander.FirstOrDefault(a => a.Id == id);

            if (rule == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var startDate = rule.StartDate;
            var endDate   = rule.EndDate;

            // here doublt about the overriding Rules.....
            // if that attendace dont come under the

            bool isThisRuleUsed = false;
            // Covering  some Edge Cases
            // check if some attendace is taken during that date time
            var dates = new List <DateTime>();


            dates.Add(startDate);

            while (dates[dates.Count() - 1] != endDate)
            {
                startDate = startDate.AddDays(1);
                dates.Add(startDate);
            }


            var allRules = _context.AcademicCalander.ToList();

            foreach (var date in dates)
            {
                var attendanceondate = _context.Attendances.FirstOrDefault(a => a.AttendanceOfDate == date);

                if (attendanceondate != null)
                {
                    var rules = allRules.Where(r => r.StartDate <= date && r.EndDate >= date);
                    // finding rule for it

                    var rulesList = rules.ToList();
                    //var latestRule = rulesList[rulesList.Count() - 1];
                    //Applying The First Rule..in Array
                    var latestRule = rulesList[0];


                    var flaggedRuleList = rules.Where(r => r.flag == true).ToList();

                    if (flaggedRuleList.Count >= 1)
                    {
                        if (flaggedRuleList.Count == 1)
                        {
                            latestRule = flaggedRuleList[0];
                        }

                        else
                        {
                            latestRule = flaggedRuleList[flaggedRuleList.Count() - 1];
                        }
                    }

                    if (latestRule.Id == rule.Id)
                    {
                        isThisRuleUsed = true;
                        break;
                    }
                }

                //  var appliedRuleId= _context.AcademicCalander.fir
            }



            if (isThisRuleUsed == false)
            {
                _context.AcademicCalander.Remove(rule);
                _context.SaveChanges();
            }


            else
            {
                ModelState.AddModelError("WrongDelete", "Cant Delete Rule As Attendace Is There For It ");

                var vm = new AcademicCalanderViewModel()
                {
                    CalanderRules          = _context.AcademicCalander.ToList(),
                    AcademicCalanderEvents = _context.AcademicCalanderEvents.ToList(),
                };



                return(View(nameof(Index), vm));
            }

            //var attendance = _context.Attendances.Where(a => );

            return(RedirectToAction(nameof(Index)));
        }