public static void GenerateCalendar(int Year, int Month)
        {
            //Check if calendar for next month wasn't already created
            if (CalendarAlreadyCreated(Year, Month))
            {
                throw new Exception("Calendar already created for next month");
            }

            //Create list of working days for clinic
            List <int> daysInMonth = WorkingDaysInMonth(Year, Month);

            //Create Calendar
            int calendarId = ClassSqlCalendar.CreateCalendar(Year, Month);

            //Create querry
            string querry = "";

            foreach (int day in daysInMonth)
            {
                querry += String.Format("({0},'{1}','{2}',{3}),", day, new TimeSpan(7, 0, 0), new TimeSpan(20, 0, 0), calendarId);
            }
            if (querry.Length == 0)
            {
                return;
            }
            querry = Login.ClassHelpers.RemoveLastCharOfString(querry);

            //Create calendar days
            ClassSqlCalendar.CreateCalendarDays(querry);
        }
        public static void ShareCalendar(ClassCalendar calendar)
        {
            int Year       = calendar.Year;
            int Month      = calendar.Month;
            int calendarId = calendar.CalendarId;

            //List of Active doctors
            List <ClassDoctor> DoctorList = ListOfActiveDoctors();

            //List of calendar days
            List <ClassCalendarDay> dayList = ClassSqlCalendar.ListOfCalendarDays(calendarId);

            string querry = "";

            foreach (ClassDoctor dct in DoctorList)
            {
                //Create calendar doctor
                int calendarDoctorId = ClassSqlCalendar.CreateCalendarDoctor(dct.Doctor_id, calendarId);

                //Querry for terms for doctor
                querry += QuerryTermsForDoctor(Year, Month, calendarDoctorId, calendarId, dct, dayList);
            }
            if (querry.Length == 0)
            {
                return;
            }
            querry = Login.ClassHelpers.RemoveLastCharOfString(querry);
            //Add new terms
            ClassSqlCalendar.CreateTerms(querry);

            //Update calendar status
            ClassSqlCalendar.UpdateCalendarStatus(ClassSqlCalendar.SelectStatusId(EnumStatus.SharedForDoctors), calendarId);
        }
        public static int CreateCalendar(int Year, int Month)
        {
            string querry = "USE [db_Clinic] INSERT INTO [dbo].[tbl_Calendar](Year,Month,Status_id) " +
                            String.Format("VALUES({0}, {1}, {2})", Year, Month, ClassSqlCalendar.SelectStatusId(EnumStatus.New));
            SqlDataReader dr = ClassQuerry.ExecuteQuerry(querry);

            ClassQuerry.CloseConnection();
            return(SelectCalendarId(Year, Month));
        }
        private static bool CalendarAlreadyCreated(int Year, int Month)
        {
            List <ClassCalendar> calendarList = ClassSqlCalendar.AlreadyCreatedCalendars();

            foreach (ClassCalendar item in calendarList)
            {
                if (item.Year == Year && item.Month == Month)
                {
                    return(true);
                }
            }
            return(false);
        }
        private static string QuerryTermsForDoctor(int Year, int Month, int calendarDoctorId, int calendarId, ClassDoctor dct, List <ClassCalendarDay> dayList)
        {
            string querry = "";

            foreach (ClassCalendarDay d in dayList)
            {
                DateTime data = new DateTime(Year, Month, d.Day);
                foreach (var item in ClassSqlCalendar.ListFixedTermsForSpecifiedDoctor(dct.Doctor_id))
                {
                    if ((int)data.DayOfWeek == item.Day)
                    {
                        if (item.Start >= d.StartTime && item.End <= d.EndTime)
                        {
                            querry += String.Format("('{0}','{1}','{2}',{3},{4},{5},{6}),", item.Start, item.End, String.Format("{0}-{1}-{2}", data.Year, data.Month, data.Day), calendarDoctorId, ClassSqlCalendar.SelectCalendarDayId(d.Day, calendarId), dct.OfficeNumber, dct.Doctor_id);
                        }
                        break;
                    }
                }
            }
            return(querry);
        }