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.XtraReports.UI; namespace BeWoPlanerMobil.Models { public class CustomerModel : AbstractModel { public CustomerModel() { SessionModel = new CustomerSessionModel(); } public CustomerSessionModel CustomerSessionModel { get { return SessionModel as CustomerSessionModel; } } [Display(Name = "Klient")] public long? SelectedCustomerOid { get { return CustomerSessionModel.SelectedCustomerOid; } set { CustomerSessionModel.SelectedCustomerOid = value; } } public CustomerDC SelectedCustomer { get; set; } public IEnumerable CustomerListItems { get { var result = new List { new SelectListItem { Value = "-1", Text = " " } }; result.AddRange(Customers.Select(item => new SelectListItem { Value = item.CustomerOid.ToString(), Text = item.SimpleDescription }).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 { return CustomerSessionModel.SelectedCustomerFilter; } set { CustomerSessionModel.SelectedCustomerFilter = value; } } public List CustomerFilter { get { var result = new List(); var user = 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.HasRight(UserRightType.Customer_ViewMyTeams)) { result.Add(new SelectListItem {Text = myTeamsCustomersOnly, Value = myTeamsCustomersValue }); } } else if(user.HasRight(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 { return CustomerSessionModel.SelectedReportType; } set { CustomerSessionModel.SelectedReportType = value; } } 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 Bargeldkassen { get; set; } = new List(); [Display(Name = "Kategorie")] public long? SelectedAbsenceReasonOid { get { return CustomerSessionModel.SelectedAbsenceReasonOid; } set { CustomerSessionModel.SelectedAbsenceReasonOid = value; } } public List AllAbsenceReasons { get; set; } public List AbsenceReasonItems { get { var result = new List { new SelectListItem { Value = "-1", Text = string.Empty } }; 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; } } public long? SelectedAbsenceTimeOid { get { return CustomerSessionModel.SelectedAbsenceTimeOid; } set { CustomerSessionModel.SelectedAbsenceTimeOid = value; } } public AbsenceTimeDC SelectedAbsenceTime { get; set; } //{ // get { return selectedAbsenceTime; } // set // { // selectedAbsenceTime = value; // SelectedAbsenceTimeOid = selectedAbsenceTime != null ? selectedAbsenceTime.AbsenceTimeOid : null; // } //} public long? SelectedBargeldkasseOid { get { return CustomerSessionModel.SelectedBargeldkasseOid; } set { CustomerSessionModel.SelectedBargeldkasseOid = value; } } public BargeldkassenDC SelectedBargeldkasse { get; set; } [Display(Name="Auszahlunsintervall")] public int SelectedAuszahlungsintervall { get { return CustomerSessionModel.SelectedAuszahlungsintervall; } set { CustomerSessionModel.SelectedAuszahlungsintervall = value; } } public List Auszahlungsintervalle => new List { new SelectListItem{Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein"}, new SelectListItem{Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich"}, new SelectListItem{Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich"}, new SelectListItem{Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich"}, }; public XtraReport BargeldkassenReportObject { get; set; } public string BargeldkassenReportName { get; set; } public XtraReport ZahlungsbelegsReportObject { get; set; } public long? SelectedBargeldtransaktionOid { get { return CustomerSessionModel.SelectedBargeldtransaktionOid; } set { CustomerSessionModel.SelectedBargeldtransaktionOid = value; } } public BargeldtransaktionDC SelectedBargeldtransaktion { get; set; } [Display(Name = "Art")] public int SelectedTransaktionsart { get { return CustomerSessionModel.SelectedTransaktionsart; } set { CustomerSessionModel.SelectedTransaktionsart = value; } } public List Transaktionsarten => new List { new SelectListItem{Value=((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung"}, new SelectListItem{Value=((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung"} }; public List BargeldtransaktionshistoryEntries { get; set; } = new List(); public Dictionary TransaktionsOid2HasHistoryEntries { get; set; } = new Dictionary(); } }