예제 #1
0
        public double HoursPerDay(string DayYear, string Year)
        {
            TimeSpan DayTot = new TimeSpan();

            DaysWorked day = ManageData.getDay(DayYear, Year);

            if (day != null)
            {
                var idDay = day.IdDaysWorked;
                var f     = ManageData.getClosedDayHours(idDay.ToString());

                if (f != null)
                {
                    //fetch della lista
                    foreach (var interval in f)
                    {
                        var start = interval.CheckIn;
                        var end   = interval.CheckOut;

                        DateTime startDT = Convert.ToDateTime(start);
                        DateTime endDT   = Convert.ToDateTime(end);


                        TimeSpan hours = endDT - startDT;
                        DayTot = DayTot + hours;
                    }

                    // se c'è una pausa, verifico la durata minima
                    if (f.Count == 2)
                    {
                        //Timespan della pausa
                        DateTime CO1 = DateTime.Parse(f[0].CheckOut);
                        DateTime CI2 = DateTime.Parse(f[1].CheckIn);
                        TimeSpan BR  = CI2 - CO1;

                        //Timespan minimo richiesto dai settings
                        TimeSpan MinReq = getMinBreak();

                        if (BR < MinReq)
                        {
                            DayTot = DayTot - (MinReq - BR);
                        }
                    }
                }
            }

            double Tot = DayTot.TotalHours;

            if (Tot < 0)
            {
                return(0);
            }
            else
            {
                return(DayTot.TotalHours);
            }
        }
예제 #2
0
        public async void DelRow(DaysWorked p1)
        {
            var result = await UserDialogs.Instance.ConfirmAsync(new ConfirmConfig
            {
                Message    = Traduzioni.Setting_confirmMessage,
                OkText     = Traduzioni.Setting_confirm_yes,
                CancelText = Traduzioni.Setting_confirm_no
            });

            if (result)
            {
                DaysWorked day = ManageData.getDay(p1.YearDay, p1.Year);
                ManageData.delDayHours(day.IdDaysWorked);
                UserDialogs.Instance.ShowSuccess(Traduzioni.Settings_SaveSetOk);
                functions.changePage(new MainPage());
            }
        }
예제 #3
0
        public async void insertWorkedDay()
        {
            await Task.Delay(2000);

            var message = Common.functions.idiotMessage();

            UserDialogs.Instance.ShowLoading(message, MaskType.Black);

            DateTime weekStartDT = DateTime.Now.AddDays(-(DayOfWeek - 1));
            DateTime weekEndDT   = DateTime.Now.AddDays((7 - DayOfWeek));


            //var t = ManageData.getAllDays();
            //ManageData.delDays();

            //TODO: vedere come gestire gli anni bisestili. O con il bool leap o meglio facendo il ciclo su un elemento datetime invece che int!

            for (DateTime i = weekStartDT; i <= weekEndDT; i = i.AddDays(1))
            {
                string h      = i.ToString();
                int    wstart = i.DayOfYear;
                string ws     = wstart.ToString();
                string y      = i.Year.ToString();
                var    d      = ManageData.getDay(ws, y);
                if (d == null)
                {
                    DaysWorked dati  = new DaysWorked();
                    int        wdint = (int)i.DayOfWeek;
                    dati.Datetime = i.ToString();
                    dati.WeekDay  = wdint.ToString();
                    dati.YearDay  = i.DayOfYear.ToString();
                    dati.Year     = i.Year.ToString();

                    var ins = ManageData.InsertDay(dati);
                }
            }
            UserDialogs.Instance.HideLoading();
        }
예제 #4
0
파일: vmEntryPage.cs 프로젝트: camo81/Tess
        public vmEntryPage(DaysWorked day)
        {
            var iu = ManageData.getAllHours();


            var i = ManageData.getDay(day.YearDay, day.Year);
            var p = ManageData.getDayHours(i.IdDaysWorked.ToString());

            SelectedDay = day;

            if (p != null)
            {
                switch (p.Count)
                {
                case 1:
                    DateTime in1D = DateTime.Parse(p[0].CheckIn);
                    In1 = in1D.TimeOfDay;

                    DateTime out1D;
                    if (!DateTime.TryParse(p[0].CheckOut, out out1D))
                    {
                        Out1 = TimeSpan.Zero;
                    }
                    else
                    {
                        Out1 = out1D.TimeOfDay;
                    }

                    break;

                case 2:

                    in1D = DateTime.Parse(p[0].CheckIn);
                    In1  = in1D.TimeOfDay;

                    if (!DateTime.TryParse(p[0].CheckOut, out out1D))
                    {
                        Out1 = TimeSpan.Zero;
                    }
                    else
                    {
                        Out1 = out1D.TimeOfDay;
                    }


                    DateTime in2D = DateTime.Parse(p[1].CheckIn);
                    In2 = in2D.TimeOfDay;

                    DateTime out2D;
                    if (!DateTime.TryParse(p[1].CheckOut, out out2D))
                    {
                        out2D = DateTime.Now;
                    }
                    else
                    {
                        Out2 = out2D.TimeOfDay;
                    }


                    break;

                default:
                    break;
                }
            }
        }
예제 #5
0
 public EntryPage(DaysWorked day)
 {
     InitializeComponent();
     this.BindingContext = new ViewModel.vmEntryPage(day);
 }
예제 #6
0
        public void EditRow(DaysWorked p1)
        {
            DaysWorked day = ManageData.getDay(p1.YearDay, p1.Year);

            functions.pageAsync(new EntryPage(day));
        }