private void TakvimOlustur() { if (acilanTarih.Month != takvimTarih.Month || !firstResize || lastYerIndex != YER_KODU.SelectedIndex || activate) { lastYerIndex = YER_KODU.SelectedIndex; acilanTarih = takvimTarih; activate = false; pnlTakvim.Controls.Clear(); List <string> dayList = new List <string>(); dayList.Add("Pazartesi"); dayList.Add("Salı"); dayList.Add("Çarşamba"); dayList.Add("Perşembe"); dayList.Add("Cuma"); dayList.Add("Cumartesi"); dayList.Add("Pazar"); List <DayOfWeek> dayListEn = new List <DayOfWeek>(); dayListEn.Add(DayOfWeek.Monday); dayListEn.Add(DayOfWeek.Tuesday); dayListEn.Add(DayOfWeek.Wednesday); dayListEn.Add(DayOfWeek.Thursday); dayListEn.Add(DayOfWeek.Friday); dayListEn.Add(DayOfWeek.Saturday); dayListEn.Add(DayOfWeek.Sunday); int weekCount = ArsLibrary.MonthWeekCount(takvimTarih); int pnlWidth = pnlTakvim.Width / 7; int pnlHeight = (pnlTakvim.Height - 30) / weekCount; for (int i = 0; i < 7; i++) { Panel pnlDay = new Panel(); pnlDay.Size = new Size(pnlWidth, 30); pnlDay.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; pnlDay.Location = new Point(i * pnlWidth, 0); Label lblGun = new Label(); lblGun.Text = dayList[i]; lblGun.Font = new Font("Arial", 9, FontStyle.Bold); lblGun.TextAlign = ContentAlignment.MiddleCenter; pnlDay.Controls.Add(lblGun); lblGun.Dock = DockStyle.Fill; pnlTakvim.Controls.Add(pnlDay); } DateTime date = takvimTarih; int month = date.Month; int year = date.Year; int daysThisMonth = DateTime.DaysInMonth(year, month); DateTime beginingOfThisMonth = new DateTime(year, month, 1); int basGun = -1; for (int i = 0; i < 7; i++) { if (beginingOfThisMonth.DayOfWeek == dayListEn[i]) { basGun = i; break; } } beginingOfThisMonth = beginingOfThisMonth.AddDays(-basGun); ArsSQLQry qrySaatAdet = new ArsSQLQry(); qrySaatAdet.SQLText = "SELECT COUNT(*) AS SAAT_ADET FROM [TBLREZERVASYONSAAT] WHERE /*WS*/"; if (YER_KODU.GetString() != "-1") { qrySaatAdet.SQLText += "YER_KODU = '" + YER_KODU.GetString() + "'/*WE*/"; } else { qrySaatAdet.SQLText += "1=1/*WE*/"; } qrySaatAdet.Open(); int saatAdet = qrySaatAdet.GetInt("SAAT_ADET"); ArsSQLQry qryDoluluk = new ArsSQLQry(); qryDoluluk.SQLText = "SELECT COUNT(*) AS DOLULUK, TARIH FROM [TBLREZERVASYONHAR] WHERE /*WS*/1=1 "; if (YER_KODU.GetString() != "-1") { qryDoluluk.SQLText += "AND YER_KODU = '" + YER_KODU.GetString() + "' "; } qryDoluluk.SQLText += "AND TARIH BETWEEN '" + beginingOfThisMonth.AddDays(-1).ToString("MM.dd.yyyy") + "' AND '" + beginingOfThisMonth.AddDays((weekCount * 7) + 1).ToString("MM.dd.yyyy") + "' AND ISNULL(REZ_OPS, 1) = 1/*WE*/ "; qryDoluluk.SQLText += "GROUP BY TARIH"; qryDoluluk.Open(); ArsSQLQry qryOpsiyon = new ArsSQLQry(); qryOpsiyon.SQLText = "SELECT COUNT(*) AS OPSIYON, TARIH FROM [TBLREZERVASYONHAR] WHERE /*WS*/1=1 "; if (YER_KODU.GetString() != "-1") { qryOpsiyon.SQLText += "AND YER_KODU = '" + YER_KODU.GetString() + "' "; } qryOpsiyon.SQLText += "AND TARIH BETWEEN '" + beginingOfThisMonth.AddDays(-1).ToString("MM.dd.yyyy") + "' AND '" + beginingOfThisMonth.AddDays((weekCount * 7) + 1).ToString("MM.dd.yyyy") + "' AND ISNULL(REZ_OPS, 1) = 2 AND OPSIYON_BITIS_TARIHI > '" + DateTime.Now.ToString("MM.dd.yyyy") + "'/*WE*/ "; qryOpsiyon.SQLText += "GROUP BY TARIH"; qryOpsiyon.Open(); for (int i = 0; i < weekCount; i++) { for (int j = 0; j < 7; j++) { int doluluk = 0; int opsiyon = 0; if (qryDoluluk.Found()) { for (int k = 0; k < qryDoluluk.DataCount(); k++) { if (qryDoluluk.GetDate("TARIH") == beginingOfThisMonth.ToString("dd.MM.yyyy")) { doluluk = qryDoluluk.GetInt("DOLULUK"); break; } qryDoluluk.Next(); } } if (qryOpsiyon.Found()) { for (int k = 0; k < qryOpsiyon.DataCount(); k++) { if (qryOpsiyon.GetDate("TARIH") == beginingOfThisMonth.ToString("dd.MM.yyyy")) { opsiyon = qryOpsiyon.GetInt("OPSIYON"); break; } qryOpsiyon.Next(); } } Panel pnlDay = new Panel(); pnlDay.Size = new Size(pnlWidth, pnlHeight); pnlDay.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; pnlDay.Location = new Point(j * pnlWidth, (i * pnlHeight) + 30); if (saatAdet == doluluk) { pnlDay.BackColor = Color.Red; } else if (saatAdet == opsiyon) { pnlDay.BackColor = Color.Orange; } pnlDay.MouseEnter += TakvimMouseEnter; pnlDay.MouseLeave += TakvimMouseLeave; pnlDay.DoubleClick += TakvimClick; pnlTakvim.ContextMenuStrip = msTakvim; ArsLabel lblTarih = new ArsLabel(); lblTarih.Text = beginingOfThisMonth.ToString("dd.MM.yyyy"); lblTarih.Font = new Font("Arial", 9, FontStyle.Bold); lblTarih.TextAlign = ContentAlignment.MiddleCenter; lblTarih.ArTag = 99; lblTarih.Visible = false; pnlDay.Controls.Add(lblTarih); Label lblGun = new Label(); lblGun.Text = beginingOfThisMonth.Day.ToString(); lblGun.Font = new Font("Arial", 18, FontStyle.Bold); lblGun.Size = new Size(pnlWidth, 26); if (beginingOfThisMonth.ToString("dd.MM.yyyy") == DateTime.Now.ToString("dd.MM.yyyy")) { lblGun.ForeColor = Color.FromArgb(50, 160, 220); } else if (beginingOfThisMonth.Month == month) { lblGun.ForeColor = Color.Gray; } else { lblGun.ForeColor = Color.FromArgb(205, 205, 205); } if (saatAdet == doluluk || saatAdet == opsiyon) { lblGun.ForeColor = Color.White; } lblGun.TextAlign = ContentAlignment.TopRight; pnlDay.Controls.Add(lblGun); lblGun.Location = new Point(0, 0); beginingOfThisMonth = beginingOfThisMonth.AddDays(1); pnlTakvim.Controls.Add(pnlDay); } } dtTarihBilgi.Value = takvimTarih; } }