public async Task <IActionResult> ReservedAudit(MyViewModelSearch model)
        {
            model.EventsMod.PersoneId = _userManager.FindByNameAsync(_userManager.GetUserName(User)).Result.Id;
            TempData["Success"]       = true;
            db.Eventsees.Add(model.EventsMod);
            await db.SaveChangesAsync();

            return(RedirectToAction("Occupy"));
        }
        public async Task <IActionResult> ReservedAudit(int?id)
        {
            if (id != null)
            {
                MyViewModelSearch model = new MyViewModelSearch();
                model.Location = await db.Audiences.FirstOrDefaultAsync(p => p.Id == id);

                model.SearchAuditMod.Building = (string)TempData["Building"];
                model.SearchAuditMod.min      = (int)TempData["min"];
                model.SearchAuditMod.max      = (int)TempData["max"];
                model.SearchAuditMod.Data     = (DateTime)TempData["Data"];
                return(PartialView(model));
            }

            return(NotFound());
        }
        public async Task <IActionResult> Occupy(MyViewModelSearch model)
        {
            List <Audience> freeAudits = new List <Audience>();

            MyViewModelEmployees modelforsearch = new MyViewModelEmployees {
                AEmployes = await db.Employments.ToListAsync(),
                Locations = await db.Audiences.ToListAsync(),
                Events    = await db.Eventsees.ToListAsync()
            };

            bool chetnost, free;
            int  Weekday          = (int)model.SearchAuditMod.Data.DayOfWeek;
            GregorianCalendar cal = new GregorianCalendar();
            int weekNumber        = cal.GetWeekOfYear(model.SearchAuditMod.Data, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);

            if (weekNumber % 2 == 1)
            {
                chetnost = true;
            }
            else
            {
                chetnost = false;
            }

            bool Intersection(int eMin, int eMax, int sMin, int sMax)
            {
                SortedSet <int> evente = new SortedSet <int>();
                SortedSet <int> search = new SortedSet <int>();

                for (int i = eMin; i <= eMax; i++)
                {
                    evente.Add(i);
                }
                for (int i = sMin; i <= sMax; i++)
                {
                    search.Add(i);
                }
                return(search.Intersect(evente).Count() == 0 ? false : true);
            }

            foreach (Audience audience in modelforsearch.Locations)
            {
                if (String.Equals(audience.Building, model.SearchAuditMod.Building))
                {
                    free = true;
                    foreach (EmploymentAudienceViewModel employ in modelforsearch.AEmployes)
                    {
                        if (String.Equals(audience.Building, employ.Building) &&
                            audience.Number == employ.Number &&
                            employ.Chetnost == chetnost &&
                            (int)employ.Weekdays == Weekday &&
                            Intersection(employ.PairNum, employ.PairNum, model.SearchAuditMod.min, model.SearchAuditMod.max))
                        {
                            free = false;
                        }
                    }

                    foreach (EventsViewModel even in modelforsearch.Events)
                    {
                        if (String.Equals(audience.Building, even.Building) &&
                            audience.Number == even.Numer &&
                            even.Date == model.SearchAuditMod.Data &&
                            Intersection(even.min, even.max, model.SearchAuditMod.min, model.SearchAuditMod.max))
                        {
                            free = false;
                        }
                    }

                    if (free)
                    {
                        freeAudits.Add(audience);
                    }
                }
            }
            TempData["min"]      = model.SearchAuditMod.min;
            TempData["max"]      = model.SearchAuditMod.max;
            TempData["Data"]     = model.SearchAuditMod.Data;
            TempData["Building"] = model.SearchAuditMod.Building;

            ViewBag.Success    = TempData["Success"];
            model.AudiencesMod = freeAudits.ToList();
            return(View(model));
        }