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 Customers { get; set; } public IEnumerable CustomerListItems { get { var result = new List { 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 ICD10Diagnosen { get; set; } public JsonCustomer SelectedJsonCustomer => SelectedCustomer != null ? new JsonCustomer(SelectedCustomer, FolderTree, ICD10Diagnosen) : null; [Display(Name = "Filter")] public CustomerFilterEnum SelectedCustomerFilter { get; set; } public List CustomerFilter { get { var result = new List(); 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.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 FolderTree { get; set; } public List ReportTypes { get; set; } [Display(Name = "Bericht")] public CustomerReportType SelectedReportType { get; set; } public List ReportTypeItems { get { var result = new List(); foreach(var reportType in ReportTypes ?? new List()) { result.Add(new SelectListItem { Value = ((int) reportType).ToString(), Text = reportType == CustomerReportType.Bedarfsmedikation ? "Bedarfsmedikation" : reportType == CustomerReportType.Medikamentenliste ? "Aktuelle Medikamentenverordnung" : "Historie" }); } return result; } } public List OldMedLists { get { var result = new List(); 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 string ReportName { get; set; } public List Bargeldkassen { get; set; } [Display(Name = "Kategorie")] public long? SelectedAbsenceReason { get; set; } public List AllAbsenceReasons { get; set; } public List AbsenceReasonItems { get { var result = new List(); foreach(var absenceReason in AllAbsenceReasons) { if(absenceReason.AbsenceReasonOid is null) { continue; } result.Add(new SelectListItem { Value = absenceReason.AbsenceReasonOid.Value.ToString(), Text = absenceReason.Description }); } return result; } } } }