using BS.Shared; using BS.Shared.DataContracts; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; namespace BeWoPlanerMobil.Models { public class EmployeeModel : AbstractModel, IAbsenceTimeModel { public bool HasRightToEdit => HasRightToEditEmployeeAbsenceTimes; public bool HasRightToDelete => HasRightToEditEmployeeAbsenceTimes; public bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime) { if (!HasRightToDelete) { return false; } if (absenceTime.IsInThePast) { return CheckRight(UserRightType.Employee_AllowDeleteAbsenceTimesAfterExpiry); } return true; } public string HtmlPrefix => "employee"; public EmployeeSessionModel EmployeeSessionModel => SessionModel as EmployeeSessionModel; public EmployeeDC SelectedEmployee { get; set; } public IAbsenceTime AbsenceTimeObject { get => SelectedEmployee; set => SelectedEmployee = (EmployeeDC) value; } public AbsenceTimeDC SelectedAbsenceTime { get; set; } [Display(Name = "Mitarbeiter")] public long? SelectedEmployeeOid { get => EmployeeSessionModel.SelectedAbsenceTimeObjectOid; set => EmployeeSessionModel.SelectedAbsenceTimeObjectOid = value; } public long? AbsenteeOid => SelectedEmployeeOid; public EmployeeModel() { SessionModel = new EmployeeSessionModel(); } 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; } } [Display(Name = "Kategorie")] public long? SelectedAbsenceReasonOid { get => EmployeeSessionModel.SelectedAbsenceReasonOid; set => EmployeeSessionModel.SelectedAbsenceReasonOid = value; } public long? SelectedAbsenceTimeOid { get => EmployeeSessionModel.SelectedAbsenceTimeOid; set => EmployeeSessionModel.SelectedAbsenceTimeOid = value; } } }