Files
BeWoPlaner/BeWoPlanerMobil/Models/CustomerModel.cs

247 lines
9.3 KiB
C#

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 DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Models
{
public class CustomerModel : AbstractModel, ISignable, IAbsenceTimeModel, IDocumentsModel
{
public bool HasRightToEdit => HasRightToEditCustomers;
public bool HasRightToDelete => HasRightToEditCustomers;
public bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime) => HasRightToDelete;
public long? ObjectOid => SelectedCustomerOid;
public TableID ObjectTid => TableID.Customer;
public string HtmlPrefix => "customer";
public long? AbsenteeOid => SelectedCustomerOid;
public IAbsenceTime AbsenceTimeObject
{
get => SelectedCustomer;
set => SelectedCustomer = (CustomerDC) value;
}
public CustomerModel()
{
SessionModel = new CustomerSessionModel();
}
public CustomerSessionModel CustomerSessionModel => SessionModel as CustomerSessionModel;
[Display(Name = "Klient")]
public long? SelectedCustomerOid
{
get => CustomerSessionModel.SelectedAbsenceTimeObjectOid;
set => CustomerSessionModel.SelectedAbsenceTimeObjectOid = value;
}
public CustomerDC SelectedCustomer { get; set; }
public IEnumerable<SelectListItem> CustomerListItems
{
get
{
var result = new List<SelectListItem> { new SelectListItem { Value = "-1", Text = "&nbsp;" } };
result.AddRange(Customers.Select(item => new SelectListItem { Value = item.CustomerOid.ToString(), Text = item.SimpleDescription }).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 => CustomerSessionModel.SelectedCustomerFilter;
set => CustomerSessionModel.SelectedCustomerFilter = value;
}
public List<SelectListItem> CustomerFilter
{
get
{
var result = new List<SelectListItem>();
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> { 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<BeWoFolderDC> FolderTree { get; set; }
public List<CustomerReportType> ReportTypes { get; set; }
[Display(Name = "Bericht")]
public CustomerReportType SelectedReportType
{
get => CustomerSessionModel.SelectedReportType;
set => CustomerSessionModel.SelectedReportType = value;
}
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<BargeldkassenDC> Bargeldkassen { get; set; } = new List<BargeldkassenDC>();
[Display(Name = "Kategorie")]
public long? SelectedAbsenceReasonOid
{
get => CustomerSessionModel.SelectedAbsenceReasonOid;
set => CustomerSessionModel.SelectedAbsenceReasonOid = value;
}
public List<AbsenceReasonDC> AllAbsenceReasons { get; set; }
public List<SelectListItem> AbsenceReasonItems
{
get
{
var result = new List<SelectListItem> { 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 => 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 => CustomerSessionModel.SelectedBargeldkasseOid;
set => CustomerSessionModel.SelectedBargeldkasseOid = value;
}
public BargeldkassenDC SelectedBargeldkasse { get; set; }
[Display(Name = "Auszahlunsintervall")]
public int SelectedAuszahlungsintervall
{
get => CustomerSessionModel.SelectedAuszahlungsintervall;
set => CustomerSessionModel.SelectedAuszahlungsintervall = value;
}
public List<SelectListItem> Auszahlungsintervalle =>
new List<SelectListItem>
{
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 => CustomerSessionModel.SelectedBargeldtransaktionOid;
set => CustomerSessionModel.SelectedBargeldtransaktionOid = value;
}
public BargeldtransaktionDC SelectedBargeldtransaktion { get; set; }
[Display(Name = "Art")]
public int SelectedTransaktionsart
{
get => CustomerSessionModel.SelectedTransaktionsart;
set => CustomerSessionModel.SelectedTransaktionsart = value;
}
public List<SelectListItem> Transaktionsarten =>
new List<SelectListItem>
{
new SelectListItem { Value = ((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung" },
new SelectListItem { Value = ((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung" }
};
public List<BargeldtransaktionshistoryDC> BargeldtransaktionshistoryEntries { get; set; } = new List<BargeldtransaktionshistoryDC>();
public Dictionary<long, bool> TransaktionsOid2HasHistoryEntries { get; set; } = new Dictionary<long, bool>();
public string SignaturePopupTitle { get; set; }
}
}