using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web.Mvc; using BeWoPlanerMobil.Util.ReportUtils; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; namespace BeWoPlanerMobil.Models { public class ReportModel : AbstractModel { [Display(Name = "Klient")] public long? SelectedCustomerOid => SelectedCustomer?.CustomerOid; public CompactCustomerDC SelectedCustomer { get; set; } public List Customers { get; set; } public IEnumerable CustomerListItems { get { var result = new List(); result.AddRange(Customers.Select(customer => new SelectListItem {Value = customer.CustomerOid.ToString(), Text = customer.ToString()})); return result; } } [Display(Name = "Monat")] public int SelectedMonth { get; set; } = 1; [Display(Name = "Jahr")] public int SelectedYear { get; set; } = 2021; public List Months { get { var result = new List(); 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; } } public List Years { get { var result = new List(); for(var i = DateTime.Today.Year; i > DateTime.Today.Year - 11; i--) { result.Add(new SelectListItem { Value = i.ToString(), Text = i.ToString() }); } return result; } } public List Days { get { var result = new List(); var month = SelectedMonth; var year = SelectedYear; var last = new DateTime(year, month, 1).AddMonths(1).AddDays(-1).Day; for(var i = 1; i <= last; i++) { result.Add(new SelectListItem { Value = i.ToString(), Text = i.ToString() }); } return result; } } [Display(Name = "Vom")] public int SelectedStartDay { get; set; } [Display(Name = "Bis")] public int SelectedEndDay { get; set; } public ConfirmationReceiptObject ConfirmationReceiptObject { get; set; } [Display(Name = "Mitarbeiter")] public long? SelectedEmployeeOid => SelectedEmployee?.EmployeeOid; public CompactEmployeeDC SelectedEmployee { get; set; } public List Employees { get; set; } = new List(); public List EmployeeItems { get { var result = new List(); foreach(var employee in Employees) { result.AddIfNotIn(new SelectListItem { Value = employee.EmployeeOid.ToString(), Text = employee.ToString() }); } return result; } } [Display(Name="Kostenträger")] public long? SelectedOrganisationOid => SelectedOrganisation?.OrganisationOid; public CompactOrganisationDC SelectedOrganisation { get; set; } public List Organisations { get; set; } = new List(); public List OrganisationItems { get { var result = new List(); foreach(var organisation in Organisations) { result.AddIfNotIn(new SelectListItem() { Value = organisation.OrganisationOid.ToString(), Text = organisation.Name }); } return result; } } [Display(Name="Leistungskategorie")] public long? SelectedServiceCategoryOid => SelectedServiceCategory?.ServiceCategoryOid; public ServiceCategoryDC SelectedServiceCategory { get; set; } public List ServiceCategories { get; set; } = new List(); public List ServiceCategoryItems { get { var result = new List(); foreach(var serviceCategory in ServiceCategories) { if(serviceCategory.ServiceCategoryOid == null) { continue; } result.AddIfNotIn(new SelectListItem { Value = serviceCategory.ServiceCategoryOid.ToString(), Text = serviceCategory.Name }); } return result; } } [Display(Name="Filter")] public QbFilterItem SelectedFilterItem { get; set; } public List QbFilters { get; set; } = new List(); public List QbFilterItems { get { var result = new List(); foreach(var qbFilter in QbFilters) { result.AddIfNotIn(new SelectListItem { Value = ((int) qbFilter.FilterEnum).ToString(), Text = qbFilter.Name }); } return result; } } [Display(Name = "Team")] public long? SelectedTeamOid => SelectedTeam?.TeamOid; public CompactTeamDC SelectedTeam { get; set; } public List AllTeams { get; set; } public List Teams { get { var result = new List(); foreach(var team in AllTeams) { result.Add(new SelectListItem { Value = team.TeamOid.ToString(), Text = team.Name }); } return result; } } public List ReportServiceRecordOids { get; set; } public List ConfirmationReceiptSignatures { get; set; } = new List(); public ConfirmationReceiptSignatureDC GetConfirmationReceiptSignatureByOid(long confirmationReceiptSignatureOid) { return ConfirmationReceiptSignatures.FirstOrDefault(crs => crs.ConfirmationReceiptSignatureOid == confirmationReceiptSignatureOid); } } }