170 lines
5.0 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
} |