128 lines
5.1 KiB
C#
128 lines
5.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using BeWo.Data;
|
|
using BeWo.Data.Access;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Service.DCEntityMapper;
|
|
using BeWo.Service.Plugins;
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
|
|
namespace DomizielAnsbach.Service
|
|
{
|
|
public class CustomOperationService : OperationService
|
|
{
|
|
private ServiceDescription standardLeistung;
|
|
private ServiceDescription pausenLeistung;
|
|
|
|
public override String CreateDefaultCustomerServiceRecords(DateTime start, DateTime end, IList<long> cb2scOids)
|
|
{
|
|
var vs = PluginLoader.FindClass<VacationService>();
|
|
ReturnMessage = "";
|
|
|
|
DateTimeSpan span = new DateTimeSpan();
|
|
span.StartDateTime = start;
|
|
span.EndDateTime = end.AddDays(1).AddTicks(-1);
|
|
|
|
var c2sList = DAOFactory.GenericDAO.LoadByIDs<CostBearer2SupportConcept>(cb2scOids);
|
|
|
|
foreach (var c2s in c2sList)
|
|
{
|
|
SetzeStandardLeistungen(c2s);
|
|
if (standardLeistung == null)
|
|
{
|
|
return "Es konnte keine passende Leistung ermittelt werden.";
|
|
}
|
|
|
|
|
|
var srList = DAOFactory.SearchDAO.FindServiceRecordsInSpan(c2s.Oid.Value, span).ToList();
|
|
|
|
if (srList.Count == 0)
|
|
{
|
|
srList = ErstelleStundenplanEintraege(span.StartDateTime.Date, span.EndDate.Date, c2s, vs);
|
|
|
|
DAOFactory.GenericDAO.Insert(srList);
|
|
|
|
ReturnMessage += String.Format("Es wurden {0} Einträge erstellt.", srList.Count);
|
|
}
|
|
else
|
|
{
|
|
var anzEintraege = 0;
|
|
foreach (var sr in srList)
|
|
{
|
|
if (standardLeistung != null)
|
|
{
|
|
if (sr.ServiceDescription.ServiceCategory == standardLeistung.ServiceCategory || sr.ServiceDescription.ServiceCategory == pausenLeistung.ServiceCategory)
|
|
anzEintraege += 1;
|
|
}
|
|
}
|
|
if (anzEintraege > 1)
|
|
{
|
|
ReturnMessage = String.Format("In dem ausgewählten Zeitraum sind bereits {0} Einträge vorhanden, daher können keine weiteren Einträge automatisch erstellt werden.", srList.Count);
|
|
}
|
|
else if (anzEintraege == 1)
|
|
{
|
|
ReturnMessage = String.Format("In dem ausgewählten Zeitraum ist bereits ein Eintrag vorhanden, daher können keine weiteren Einträge automatisch erstellt werden.");
|
|
}
|
|
else
|
|
{
|
|
srList = ErstelleStundenplanEintraege(span.StartDateTime.Date, span.EndDate.Date, c2s, vs);
|
|
|
|
DAOFactory.GenericDAO.Insert(srList);
|
|
|
|
ReturnMessage += String.Format("Es wurden {0} Einträge erstellt.", srList.Count);
|
|
}
|
|
}
|
|
}
|
|
|
|
return ReturnMessage;
|
|
}
|
|
|
|
//public override List<ServiceRecord> ErstelleStundenplanEintraege(DateTime start, DateTime ende, CostBearer2SupportConcept c2s, VacationService vs)
|
|
// {
|
|
// return base.ErstelleStundenplanEintraege(start, ende, c2s, vs);
|
|
// }
|
|
|
|
protected override IList<ServiceRecord> CreateServiceRecords(Arbeitszeit arbeitszeit, DateTime datum, CostBearer2SupportConcept c2s, ServiceDescription defaultSd)
|
|
{
|
|
return base.CreateServiceRecords(arbeitszeit, datum, c2s, defaultSd);
|
|
}
|
|
public override ServiceRecord CreateServiceRecord(ArbeitszeitEintrag ae, DateTime datum, CostBearer2SupportConcept c2s, ServiceDescription defaultSd)
|
|
{
|
|
var sr = base.CreateServiceRecord(ae, datum, c2s, standardLeistung);
|
|
|
|
if (ae.Notice == "Pause")
|
|
{
|
|
double dauer = Convert.ToDouble(sr.RoundedDuration);
|
|
sr.Start = new DateTime(sr.Start.Value.Year, sr.Start.Value.Month, sr.Start.Value.Day, 0, 0, 1);
|
|
sr.End = sr.Start.Value.AddMinutes(dauer);
|
|
sr.ServiceDescription = pausenLeistung;
|
|
}
|
|
return sr;
|
|
}
|
|
|
|
public void SetzeStandardLeistungen(CostBearer2SupportConcept c2s)
|
|
{
|
|
foreach (var ap in c2s.ApprovalPeriodList)
|
|
{
|
|
if (ap.ServiceCategory.Name == "Zuverdienst - Arbeitszeit")
|
|
{
|
|
var desc = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(ap.ServiceCategory.Oid.Value);
|
|
|
|
standardLeistung = desc.Where(a => a.Name == "Beschäftigungszeit").FirstOrDefault();
|
|
pausenLeistung = desc.Where(a => a.Name == "Pause").FirstOrDefault();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public override ServiceDescription GetDefaultServiceDescription(CostBearer2SupportConcept c2s)
|
|
{
|
|
return standardLeistung;
|
|
}
|
|
}
|
|
} |