Files
BeWoPlaner/BeWoPlanerMobil/Models/ReportViewerModel.cs
Lyndon Jetten a75991e805 MoK: Reports werden alle in einem einzigen PartialView angezeigt und das AbstractModel von dem alle Model erben, hat die Report- und ReportTitle-Eigenschaften.
ServiceRecords werden wie im FaC validiert, d.h. dass Arbeitszeiten und Pausenzeiten keine Überschneidungswarnung bekommen.
2024-07-24 16:45:56 +02:00

189 lines
6.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web.Mvc;
using BeWo.Report;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace BeWoPlanerMobil.Models
{
public class ReportViewerModel : AbstractModel
{
public List<CompactEmployeeDC> AllEmployees { get; set; }
public List<CompactTeamDC> AllTeams { get; set; }
public List<QueryDC> Queries { get; set; }
public AbstractReportCreator ReportCreator { get; set; }
[Display(Name = "Monat")]
public int? SelectedMonth { get; set; }
public List<SelectListItem> Months
{
get
{
var result = new List<SelectListItem>();
for(var i = 1; i < 13; i++)
{
result.Add(new SelectListItem
{
Value = i.ToString(),
Text = new DateTime(DateTime.Now.Year, i, 1).ToString("MMMM")
});
}
return result;
}
}
[Display(Name = "Jahr")]
public int? SelectedYear { get; set; }
public List<SelectListItem> Years
{
get
{
var result = new List<SelectListItem>();
for(var i = DateTime.Today.Year; i > DateTime.Today.Year - 11; i--)
{
result.Add(new SelectListItem
{
Value = i.ToString(),
Text = i.ToString()
});
}
return result;
}
}
[Display(Name="Bericht")]
public ReportType SelectedReportType { get; set; }
public List<SelectListItem> ReportTypes { get; set; }
[Display(Name = "Bericht")]
public long? SelectedCustomReport { get; set; }
public List<SelectListItem> CustomReports
{
get
{
var result = new List<SelectListItem>();
if(Queries is null)
{
return result;
}
result.Add(new SelectListItem { Text = "", Value = "0_0" });
foreach(var query in Queries)
{
var hasParameters = query.Parameter != null && query.Parameter.Count > 0;
result.Add(new SelectListItem { Text = query.Title, Value = $"{query.Oid}_{(hasParameters ? "1" : "0")}" });
}
return result;
}
}
[Display(Name="Mitarbeiter")]
public long? SelectedEmployeeOid { get; set; }
public List<SelectListItem> Employees
{
get
{
var result = new List<SelectListItem>();
if(AllEmployees is null)
{
return result;
}
if(HasRightMitarbeiterstundenkontoViewSelf && !HasRightMitarbeiterstundenkontoViewAll)
{
result.Add(new SelectListItem{ Text = Employee.LastNameFirstName, Value = Employee.EmployeeOid.ToString()});
return result;
}
result.Add(new SelectListItem { Text = string.Empty, Value = "0" });
foreach(var employee in AllEmployees.OrderBy(e => e.SimpleDescription))
{
result.Add(new SelectListItem { Text = employee.SimpleDescription, Value = employee.EmployeeOid.ToString() });
}
return result;
}
}
[Display(Name = "Team")]
public long? SelectedTeamOid { get; set; }
public List<SelectListItem> Teams
{
get
{
var result = new List<SelectListItem>();
if(AllTeams is null)
{
return result;
}
result.Add(new SelectListItem { Text = string.Empty, Value = "0" });
foreach(var team in AllTeams.OrderBy(t => t.Name))
{
result.Add(new SelectListItem { Text = team.Name, Value = team.TeamOid.ToString() });
}
return result;
}
}
public List<CompactEmployeeDC> SelectedEmployees { get; set; }
public List<CompactTeamDC> SelectedTeams { get; set; }
public QueryDC SelectedQuery { get; set; }
public List<SupportConceptDC> SupportConcepts { get; set; }
public CostBearer2SupportConceptRelListObject SelectedCostBearer2SupportConceptRelListObject { get; set; }
public IEnumerable<CostBearer2SupportConceptRelListObject> CostBearer2SupportConceptRelListObjects
{
get
{
var allCostBearerRelations = new List<CostBearer2SupportConceptRelListObject> { new CostBearer2SupportConceptRelListObject("Hilfeplan auswählen", "", "-1", false, false), new CostBearer2SupportConceptRelListObject("Ohne Hilfeplan", "", "-2", false, false) };
foreach(var sc in SupportConcepts.OrderBy(sc => sc.Customer.LastName))
{
allCostBearerRelations.AddRange(sc.CostBearerRelations.Select(
cb => new CostBearer2SupportConceptRelListObject(
$"{sc.Customer.SimpleDescription} {(sc.Customer.DateOfBirth.HasValue ? "*" + sc.Customer.DateOfBirth.Value.ToString("dd.MM.yyyy") : string.Empty)}",
$"{cb.AuswahlBezeichnung} {cb.StartDate?.ToShortDateString().Remove(6, 2) ?? string.Empty}-{cb.EndDate?.ToShortDateString().Remove(6, 2) ?? string.Empty} {cb.CostBearer.Name}{GetIsNotApproved(cb)}",
cb.CostBearer2SupportConceptOid.ToString(),
cb.SupportConcept.IsAboutToExpire,
cb.SupportConcept.ExpiresIn3MonthOrLess))
);
}
return allCostBearerRelations;
}
}
public SelectListItem SelectedMonthForBericht { get; set; }
public int? SelectedYearForBericht { get; set; }
}
public enum ReportType
{
Berichte = 0,
Mitarbeiterstundenkonto = 1
}
}