123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System;
- using System.Collections.Generic;
- using InABox.Clients;
- using InABox.Core;
- using Comal.Classes;
- using Xamarin.Forms;
- using System.Linq;
- using System.Threading.Tasks;
- using XF.Material.Forms.UI.Dialogs;
- namespace comal.timesheets
- {
- public class TimesheetModel {
- public DateTime Date { get; set; }
- public TimeSpan Start { get; set; }
- public TimeSpan Finish { get; set; }
- public TimeSpan Duration { get; set; }
- }
- public partial class Timesheets : ContentPage
- {
- int DaysFilter = -7;
- public Guid EmployeeID { get; set; }
- public Timesheets()
- {
- InitializeComponent();
- Title = "Timesheets";
- }
- protected override async void OnAppearing()
- {
- base.OnAppearing();
- await LoadData();
- }
- private async Task LoadData()
- {
- using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Loading Data"))
- {
- List<TimesheetModel> records = new List<TimesheetModel>();
- CoreTable timesheets = new Client<TimeSheet>().Query(
- new Filter<TimeSheet>(x => x.EmployeeLink.ID).IsEqualTo(EmployeeID)
- .And(x => x.Processed).IsEqualTo(DateTime.MinValue)
- .And(x => x.Date).IsLessThanOrEqualTo(DateTime.Now)
- .And(x => x.Date).IsGreaterThanOrEqualTo(DateTime.Now.AddDays(DaysFilter)),
- new Columns<TimeSheet>(X => X.Date, X => X.Start, X => X.Finish, X => X.Duration),
- new SortOrder<TimeSheet>(X => X.Date, SortDirection.Descending)
- );
- foreach (CoreRow row in timesheets.Rows)
- {
- DateTime date = row.Get<TimeSheet, DateTime>(x => x.Date);
- TimeSpan start = row.Get<TimeSheet, TimeSpan>(x => x.Start);
- TimeSpan finish = row.Get<TimeSheet, TimeSpan>(x => x.Finish);
- TimeSpan duration = row.Get<TimeSheet, TimeSpan>(x => x.Duration);
- var model = records.Where(x => x.Date.Equals(date)).FirstOrDefault();
- if (model == null)
- {
- model = new TimesheetModel() { Date = date, Start = start, Finish = finish, Duration = duration };
- records.Add(model);
- }
- else
- {
- model.Start = model.Start.CompareTo(start).Equals(1) ? start : model.Start;
- model.Finish = model.Finish.CompareTo(finish).Equals(-1) ? finish : model.Finish;
- model.Duration = model.Duration.Add(duration);
- }
- }
- Device.BeginInvokeOnMainThread(() =>
- {
- TimesheetList.ItemsSource = null;
- TimesheetList.ItemsSource = records;
- });
- }
- }
- private async void FilterBtn_Clicked(object sender, EventArgs e)
- {
- string chosenOption = await DisplayActionSheet("Choose filter", "Cancel", null, "Last 7 Days", "Last 14 Days", "Last 30 Days", "Last 90 Days");
- switch (chosenOption)
- {
- case "Cancel":
- return;
- break;
- default:
- return;
- break;
- case "Last 7 Days":
- DaysFilter = -7;
- break;
- case "Last 14 Days":
- DaysFilter = -14;
- break;
- case "Last 30 Days":
- DaysFilter = -30;
- break;
- case "Last 90 Days":
- DaysFilter = -90;
- break;
- }
- LoadData();
- filterBtn.Text = "Filter: " + chosenOption;
- }
- }
- }
|