Files
BeWoPlaner/BeWoPlanerMobil/Models/CustomerModel.cs
Lyndon Jetten de6e33b349 MoK:
NullPointerException beim Laden von eigenen Teams behoben.
Der Default-Wert für das Session-Timeout von 0 auf 20 gesetzt.
Der Default-Wert der Einheit der Zeiterfassung war versehentlich auf 20 gesetzt. Ist jetzt 0 (Enum).
2023-06-20 15:00:09 +02:00

172 lines
6.0 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web.Mvc;
using BeWo.View.Navigation.Filter;
using BeWoPlanerMobil.Controllers;
using BeWoPlanerMobil.Service;
using BeWoPlanerMobil.Util;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DevExpress.XtraPrinting.Native;
using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Models
{
public class CustomerModel : AbstractModel
{
[Display(Name = "Klient")]
public long? SelectedCustomerOid { get; set; }
public CustomerDC SelectedCustomer { get; set; }
public List<CompactCustomerDC> Customers { get; set; }
public IEnumerable<SelectListItem> CustomerListItems
{
get
{
var result = new List<SelectListItem> { new SelectListItem { Value = "-1", Text = string.Empty } };
result.AddRange(Customers.Select(item => new SelectListItem { Value = item.CustomerOid.ToString(), Text = string.Format("{1}, {0}", item.FirstName, item.LastName) }).ToList());
return result;
}
}
public Dictionary<string, string> ICD10Diagnosen { get; set; }
public JsonCustomer SelectedJsonCustomer => SelectedCustomer != null ? new JsonCustomer(SelectedCustomer, FolderTree, ICD10Diagnosen) : null;
[Display(Name = "Filter")]
public CustomerFilterEnum SelectedCustomerFilter { get; set; }
public List<SelectListItem> CustomerFilter
{
get
{
var result = new List<SelectListItem>();
var user = MobileSessionFacade.LoggedInUser;
const string allCustomers = "Alle Klienten anzeigen";
const string myCustomersOnly = "Nur meine Klienten anzeigen";
const string myTeamsCustomersOnly = "Nur Klienten meiner Teams anzeigen";
const string allCustomersValue = "0";
const string myCustomersValue = "1";
const string myTeamsCustomersValue = "2";
if(user != null)
{
if(user.CheckForAtLeastOneRight(new List<UserRightType> { UserRightType.ViewAll, UserRightType.CustomerView_View}))
{
result.Add(new SelectListItem { Text = allCustomers, Value = allCustomersValue });
result.Add(new SelectListItem { Text = myCustomersOnly, Value = myCustomersValue });
if(user.CheckForRight(UserRightType.Customer_ViewMyTeams))
{
result.Add(new SelectListItem {Text = myTeamsCustomersOnly, Value = myTeamsCustomersValue });
}
}
else if(user.CheckForRight(UserRightType.Customer_ViewMyTeams))
{
result.Add(new SelectListItem { Text = myCustomersOnly, Value = myCustomersValue });
result.Add(new SelectListItem { Text = myTeamsCustomersOnly, Value = myTeamsCustomersValue });
}
}
return result;
}
}
public List<BeWoFolderDC> FolderTree { get; set; }
public List<CustomerReportType> ReportTypes { get; set; }
[Display(Name = "Bericht")]
public CustomerReportType SelectedReportType { get; set; }
public List<SelectListItem> ReportTypeItems
{
get
{
var result = new List<SelectListItem>();
foreach(var reportType in ReportTypes ?? new List<CustomerReportType>())
{
result.Add(new SelectListItem
{
Value = ((int) reportType).ToString(),
Text = reportType == CustomerReportType.Bedarfsmedikation ? "Bedarfsmedikation" : reportType == CustomerReportType.Medikamentenliste ? "Aktuelle Medikamentenverordnung" : "Historie"
});
}
return result;
}
}
public List<SelectListItem> OldMedLists
{
get
{
var result = new List<SelectListItem>();
var ungueltigeListen = SelectedCustomer.Medikamentenverordnungslisten.Where(w => !w.Gueltig).OrderBy(x => x.ErstellDatum).ToList();
foreach(var list in ungueltigeListen)
{
result.Add(new SelectListItem
{
Value = list.MedikamentenverordnungslistenOid.Value.ToString(),
Text = $"{(list.MedListType ? "Medikamentenverordnungsliste" : "Bedarfsmedikamentenverordnungsliste")} vom {list.ErstellDatum}"
});
}
return result;
}
}
public XtraReport Report { get; set; }
public double ReportRatio
{
get
{
if(Report is null)
{
return 0d;
}
var width = 1f;
var height = 1f;
foreach(PSPage page in Report.Pages)
{
var size = page.Size;
if(size.Width > width)
{
width = size.Width;
}
if(size.Height > height)
{
height = size.Height;
}
}
// US Letter: 0,77 bzw. 1,29
// DIN A4: 0,71 bzw. 1,33
var ratio = width < height ? width / height : height / width;
#if DEBUG
var landscape = width > height;
ratio = landscape ? 210f / 279f : 297f / 210f;
#endif
return Math.Round(ratio, 2);
}
}
}
}