Files
LeanderShiftPlannerV2/LeanderShiftPlannerV2/Service/PersonService.cs
T

170 lines
5.0 KiB
C#

using System;
using LeanderShiftPlannerV2.FileIO;
using LeanderShiftPlannerV2.Model;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using LeanderShiftPlannerV2.Util;
namespace LeanderShiftPlannerV2.Service
{
public class PersonService
{
private readonly AppService _appService;
private readonly ObservableCollection<Person> _persons;
private readonly List<Person> _randomTimeSheets;
private readonly List<Person> _googleTimeSheets;
private readonly List<Person> _randomGoogleTimeSheets;
public PersonService(AppService appService)
{
this._appService = appService;
_persons = new ObservableCollection<Person>();
_randomTimeSheets = new List<Person>();
_googleTimeSheets = new List<Person>();
_randomGoogleTimeSheets = new List<Person>();
LoadPersonsFromFile();
}
private void LoadPersonsFromFile()
{
foreach (Person person in LoadDataFromFile.LoadPersons())
{
_persons.Add(person);
AddToTimeSheetList(person);
}
}
public ObservableCollection<Person> GetPersonList()
{
return _persons;
}
public List<Person> GetRandomTimeSheetList()
{
return _randomTimeSheets;
}
public List<Person> GetGoogleTimeSheetList()
{
return _googleTimeSheets;
}
public List<Person> GetRandomGoogleTimeSheetList()
{
return _randomGoogleTimeSheets;
}
public Person AddNewPerson(string firstName, string surname, string hours, string timeSheetSource)
{
Person newPerson = new Person(firstName, surname, int.Parse(hours), timeSheetSource);
_persons.Add(newPerson);
AddToTimeSheetList(newPerson);
return newPerson;
}
public void EditPerson(Person person, string? firstName, string? surname, int? hours, string? timeSheetSource)
{
if (firstName != null)
{
person.FirstName = firstName;
}
if (surname != null)
{
person.Surname = surname;
}
if (hours != null)
{
person.Hours = (int)hours;
}
if (timeSheetSource != null)
{
person.TimeSheetSource = timeSheetSource;
}
AddToTimeSheetList(person);
}
private void AddToTimeSheetList(Person person)
{
if (person.TimeSheetSource == Constants.TimeSheetSourceRandom)
{
_randomTimeSheets.Add(person);
_googleTimeSheets.Remove(person);
_randomGoogleTimeSheets.Remove(person);
}
else if (person.TimeSheetSource == Constants.TimeSheetSourceGoogle)
{
_randomTimeSheets.Remove(person);
_googleTimeSheets.Add(person);
_randomGoogleTimeSheets.Remove(person);
}
else if (person.TimeSheetSource == Constants.TimeSheetSourceRandomGoogle)
{
_randomGoogleTimeSheets.Remove(person);
_googleTimeSheets.Remove(person);
_randomGoogleTimeSheets.Add(person);
}
}
public void DeletePerson(Person person)
{
_appService.ShiftService.RemovePerson(person);
_persons.Remove(person);
}
public void SetShiftsForPerson(Person person, IEnumerable<Shift> shifts)
{
foreach (Shift shift in person.Shifts)
shift.RemovePerson(person);
person.ClearShifts();
AddShiftsToPerson(person, shifts);
}
public void AddShiftToPerson(Person person, Shift shift)
{
person.AddShift(shift);
if (!shift.Persons.Contains(person))
{
_appService.ShiftService.AddPersonToShift(shift, person);
}
}
public void AddShiftsToPerson(Person person, IEnumerable<Shift> shifts)
{
foreach (Shift shift in shifts)
{
AddShiftToPerson(person, shift);
}
}
public void RemoveShiftFromPerson(Person person, Shift shift)
{
person.RemoveShift(shift);
if (shift.Persons.Contains(person))
{
_appService.ShiftService.RemovePersonFromShift(shift, person);
}
}
public void RemoveShiftsFromPerson(Person person, IEnumerable<Shift> shifts)
{
foreach (Shift shift in shifts)
{
RemoveShiftFromPerson(person, shift);
}
}
public void ClearTimeSheets()
{
foreach (Person person in _persons)
{
person.Timesheets.Clear();
}
}
}
}