using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using Kreta.BusinessLogic.Logic.Naplozas; using Kreta.Enums.ManualEnums; using Kreta.Naplo.Domain.V3.Interfaces; using Kreta.Naplo.Domain.V3.UniqueIdentifier; using Kreta.Resources; namespace Kreta.Naplo.Domain.V3.Orarend { public class OraNaplozasTorlesRequest : IValidatableObject, IModelValidacio { public OraNaplozasTorlesRequest(string orarendElemUid) { OrarendElemUid = new OrarendElemUid(orarendElemUid); } public OraNaplozasTorlesRequest(CalendarOraTypeEnum tipus, int id, DateTime datum) { OrarendElemUid = new OrarendElemUid(id, tipus, datum); } public Dictionary, string> ModelValidaciok => new Dictionary, string> { { x => x.OrarendElemUid != null && x.OrarendElemUid.Tipus != CalendarOraTypeEnum.TanitasiOra, ErrorResource.ATorolniKivantOraNemTanitasiOra } }; [Required] public OrarendElemUid OrarendElemUid { get; set; } public IEnumerable Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value)); public void ConvertTo(NaplozasMobilCo co) { co.OraAdat.Datum = OrarendElemUid.Datum; co.OraAdat.OrarendiOraId = OrarendElemUid.Tipus == CalendarOraTypeEnum.OrarendiOra ? OrarendElemUid.Id : (int?)null; co.OraAdat.TanitasiOraId = OrarendElemUid.Tipus == CalendarOraTypeEnum.TanitasiOra ? OrarendElemUid.Id : (int?)null; } } }