using System;

using BeWo.Report;
using BeWo.Report.ReportObjects;

using DevExpress.XtraPrinting;
using DevExpress.XtraReports.UI;

namespace SPZRatingen
{
    public partial class Stundenzettel : XtraReport, IBeWoReport<ServicesOverviewRO>
    {
        public Stundenzettel()
        {
            InitializeComponent();
        }

        public void SetReportDataSource(ServicesOverviewRO pRO)
        {
            bindingSource1.DataSource = pRO;
            
            if (pRO.CustomerBirthday.HasValue)
                geburtstagsFeld.Text = string.Format("*{0}", pRO.CustomerBirthday.Value.ToShortDateString());

            monatsFeld.Text = DateTime.Parse(string.Format("01.{0}.{1}", pRO.Month, pRO.Year)).Month.ToString();

            var einzelTermine = new int[31];
            var gruppenTermine = new int[31];
            foreach (var leistung in pRO.Services)
            {
                if (leistung.CustomerCount == 1)
                    einzelTermine[leistung.StartDate.Day - 1] += Convert.ToInt32(leistung.Minutes);
                else
                    gruppenTermine[leistung.StartDate.Day - 1] += Convert.ToInt32(leistung.Minutes);
            }

            ek1.Text = einzelTermine[0] == 0 ? string.Empty : einzelTermine[0].ToString();
            ek2.Text = einzelTermine[1] == 0 ? string.Empty : einzelTermine[1].ToString();
            ek3.Text = einzelTermine[2] == 0 ? string.Empty : einzelTermine[2].ToString();
            ek4.Text = einzelTermine[3] == 0 ? string.Empty : einzelTermine[3].ToString();
            ek5.Text = einzelTermine[4] == 0 ? string.Empty : einzelTermine[4].ToString();
            ek6.Text = einzelTermine[5] == 0 ? string.Empty : einzelTermine[5].ToString();
            ek7.Text = einzelTermine[6] == 0 ? string.Empty : einzelTermine[6].ToString();
            ek8.Text = einzelTermine[7] == 0 ? string.Empty : einzelTermine[7].ToString();
            ek9.Text = einzelTermine[8] == 0 ? string.Empty : einzelTermine[8].ToString();
            ek10.Text = einzelTermine[9] == 0 ? string.Empty : einzelTermine[9].ToString();
            ek11.Text = einzelTermine[10] == 0 ? string.Empty : einzelTermine[10].ToString();
            ek12.Text = einzelTermine[11] == 0 ? string.Empty : einzelTermine[11].ToString();
            ek13.Text = einzelTermine[12] == 0 ? string.Empty : einzelTermine[12].ToString();
            ek14.Text = einzelTermine[13] == 0 ? string.Empty : einzelTermine[13].ToString();
            ek15.Text = einzelTermine[14] == 0 ? string.Empty : einzelTermine[14].ToString();
            ek16.Text = einzelTermine[15] == 0 ? string.Empty : einzelTermine[15].ToString();
            ek17.Text = einzelTermine[16] == 0 ? string.Empty : einzelTermine[16].ToString();
            ek18.Text = einzelTermine[17] == 0 ? string.Empty : einzelTermine[17].ToString();
            ek19.Text = einzelTermine[18] == 0 ? string.Empty : einzelTermine[18].ToString();
            ek20.Text = einzelTermine[19] == 0 ? string.Empty : einzelTermine[19].ToString();
            ek21.Text = einzelTermine[20] == 0 ? string.Empty : einzelTermine[20].ToString();
            ek22.Text = einzelTermine[21] == 0 ? string.Empty : einzelTermine[21].ToString();
            ek23.Text = einzelTermine[22] == 0 ? string.Empty : einzelTermine[22].ToString();
            ek24.Text = einzelTermine[23] == 0 ? string.Empty : einzelTermine[23].ToString();
            ek25.Text = einzelTermine[24] == 0 ? string.Empty : einzelTermine[24].ToString();
            ek26.Text = einzelTermine[25] == 0 ? string.Empty : einzelTermine[25].ToString();
            ek27.Text = einzelTermine[26] == 0 ? string.Empty : einzelTermine[26].ToString();
            ek28.Text = einzelTermine[27] == 0 ? string.Empty : einzelTermine[27].ToString();
            ek29.Text = einzelTermine[28] == 0 ? string.Empty : einzelTermine[28].ToString();
            ek30.Text = einzelTermine[29] == 0 ? string.Empty : einzelTermine[29].ToString();
            ek31.Text = einzelTermine[30] == 0 ? string.Empty : einzelTermine[30].ToString();

            ga1.Text = gruppenTermine[0] == 0 ? string.Empty : gruppenTermine[0].ToString();
            ga2.Text = gruppenTermine[1] == 0 ? string.Empty : gruppenTermine[1].ToString();
            ga3.Text = gruppenTermine[2] == 0 ? string.Empty : gruppenTermine[2].ToString();
            ga4.Text = gruppenTermine[3] == 0 ? string.Empty : gruppenTermine[3].ToString();
            ga5.Text = gruppenTermine[4] == 0 ? string.Empty : gruppenTermine[4].ToString();
            ga6.Text = gruppenTermine[5] == 0 ? string.Empty : gruppenTermine[5].ToString();
            ga7.Text = gruppenTermine[6] == 0 ? string.Empty : gruppenTermine[6].ToString();
            ga8.Text = gruppenTermine[7] == 0 ? string.Empty : gruppenTermine[7].ToString();
            ga9.Text = gruppenTermine[8] == 0 ? string.Empty : gruppenTermine[8].ToString();
            ga10.Text = gruppenTermine[9] == 0 ? string.Empty : gruppenTermine[9].ToString();
            ga11.Text = gruppenTermine[10] == 0 ? string.Empty : gruppenTermine[10].ToString();
            ga12.Text = gruppenTermine[11] == 0 ? string.Empty : gruppenTermine[11].ToString();
            ga13.Text = gruppenTermine[12] == 0 ? string.Empty : gruppenTermine[12].ToString();
            ga14.Text = gruppenTermine[13] == 0 ? string.Empty : gruppenTermine[13].ToString();
            ga15.Text = gruppenTermine[14] == 0 ? string.Empty : gruppenTermine[14].ToString();
            ga16.Text = gruppenTermine[15] == 0 ? string.Empty : gruppenTermine[15].ToString();
            ga17.Text = gruppenTermine[16] == 0 ? string.Empty : gruppenTermine[16].ToString();
            ga18.Text = gruppenTermine[17] == 0 ? string.Empty : gruppenTermine[17].ToString();
            ga19.Text = gruppenTermine[18] == 0 ? string.Empty : gruppenTermine[18].ToString();
            ga20.Text = gruppenTermine[19] == 0 ? string.Empty : gruppenTermine[19].ToString();
            ga21.Text = gruppenTermine[20] == 0 ? string.Empty : gruppenTermine[20].ToString();
            ga22.Text = gruppenTermine[21] == 0 ? string.Empty : gruppenTermine[21].ToString();
            ga23.Text = gruppenTermine[22] == 0 ? string.Empty : gruppenTermine[22].ToString();
            ga24.Text = gruppenTermine[23] == 0 ? string.Empty : gruppenTermine[23].ToString();
            ga25.Text = gruppenTermine[24] == 0 ? string.Empty : gruppenTermine[24].ToString();
            ga26.Text = gruppenTermine[25] == 0 ? string.Empty : gruppenTermine[25].ToString();
            ga27.Text = gruppenTermine[26] == 0 ? string.Empty : gruppenTermine[26].ToString();
            ga28.Text = gruppenTermine[27] == 0 ? string.Empty : gruppenTermine[27].ToString();
            ga29.Text = gruppenTermine[28] == 0 ? string.Empty : gruppenTermine[28].ToString();
            ga30.Text = gruppenTermine[29] == 0 ? string.Empty : gruppenTermine[29].ToString();
            ga31.Text = gruppenTermine[30] == 0 ? string.Empty : gruppenTermine[30].ToString();

            if (DateTime.DaysInMonth(pRO.StartDate.Year, pRO.StartDate.Month) == 28)
            {
                ek28.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Bottom;
                ga28.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Bottom;
                xrTableCell64.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Top | BorderSide.Bottom;

                xrTableCell65.Visible = false;
                xrTableCell66.Visible = false;
                xrTableCell67.Visible = false;

                ek29.Visible = false;
                ek30.Visible = false;
                ek31.Visible = false;

                ga29.Visible = false;
                ga30.Visible = false;
                ga31.Visible = false;
            }
            else if (DateTime.DaysInMonth(pRO.StartDate.Year, pRO.StartDate.Month) == 29)
            {
                ek29.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Bottom;
                ga29.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Bottom;
                xrTableCell65.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Top | BorderSide.Bottom;

                xrTableCell66.Visible = false;
                xrTableCell67.Visible = false;

                ek30.Visible = false;
                ek31.Visible = false;

                ga30.Visible = false;
                ga31.Visible = false;
            }
            else if (DateTime.DaysInMonth(pRO.StartDate.Year, pRO.StartDate.Month) == 30)
            {
                ek30.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Bottom;
                ga30.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Bottom;
                xrTableCell66.Borders = BorderSide.Right | BorderSide.Left | BorderSide.Top | BorderSide.Bottom;

                xrTableCell67.Visible = false;
                ek31.Visible = false;
                ga31.Visible = false;
            }
        }
    }
}
