This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

Binary file not shown.

View file

@ -0,0 +1,86 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
namespace Kreta.Naplo.Domain.V3.Adatszotar
{
[Serializable]
public class Adatszotar<T> where T : System.Enum
{
private string _leiras;
public Adatszotar(int id)
{
Uid = new AdatszotarUid(id, GetEnumName(id));
}
public Adatszotar(int id, string leiras)
{
Uid = new AdatszotarUid(id, GetEnumName(id));
Leiras = leiras;
}
public Adatszotar(string leiras)
{
Uid = new AdatszotarUid(0, GetEnumName(0));
Leiras = leiras;
}
public Adatszotar(string nev, string leiras)
{
Uid = new AdatszotarUid(0, nev);
Leiras = leiras;
}
public string EnumTypeFullName => typeof(T).Name;
public string EnumTypeName => EnumTypeFullName.Replace("Enum", string.Empty).Replace("enum", string.Empty);
public static bool IsAdatszotarElem(int id) => id >= Constant.EgyedilegFelvettAdatSzotarElemStartIndex && string.IsNullOrWhiteSpace(System.Enum.GetName(typeof(T), id));
public string Leiras { get => _leiras ?? GetDisplayNameAttribute(); private set => _leiras = value; }
public AdatszotarUid Uid { get; private set; }
private string GetEnumName(int id) => id == 0 ? $"{typeof(T)}_{nameof(Enum.Adatszotar.IsmeretlenErtek)}"
: IsAdatszotarElem(id) ? nameof(Enum.Adatszotar.AdatszotarElem)
: System.Enum.GetName(typeof(T), id);
public override bool Equals(object obj) => obj is Adatszotar<T> @enum && Uid.Id == @enum.Uid.Id;
public T GetEnum() => (T)System.Enum.Parse(typeof(T), Uid.Nev);
public override int GetHashCode() => 2_108_858_624 + Uid.Id.GetHashCode();
private string GetDisplayNameAttribute()
{
if (string.IsNullOrWhiteSpace(Uid.Nev))
{
return null;
}
var fieldInfo = typeof(T).GetField(Uid.Nev);
if (fieldInfo != null)
{
var attributes = (DisplayAttribute)fieldInfo.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault();
if (attributes != null)
{
return attributes.GetName();
}
}
return null;
}
public static implicit operator Adatszotar<T>(int id) => new Adatszotar<T>(id);
public static implicit operator Adatszotar<T>(T enumValue) => new Adatszotar<T>(Convert.ToInt32(enumValue));
public static bool operator !=(Adatszotar<T> lhsWrapper, T rhsEnum) => IsAdatszotarElem(lhsWrapper.Uid.Id) || !lhsWrapper.GetEnum().Equals(rhsEnum);
public static bool operator ==(Adatszotar<T> lhsWrapper, T rhsEnum) => !IsAdatszotarElem(lhsWrapper.Uid.Id) && lhsWrapper.GetEnum().Equals(rhsEnum);
}
}

View file

@ -0,0 +1,16 @@
namespace Kreta.Naplo.Domain.V3.Common
{
public class ApiSecurity
{
public ApiSecurity(string accessTokenRaw, string securityKey)
{
AccessTokenRaw = accessTokenRaw;
SecurityKey = securityKey;
Signature = AccessTokenRaw.Split('.')[2];
}
public string AccessTokenRaw { get; private set; }
public string SecurityKey { get; private set; }
public string Signature { get; private set; }
}
}

View file

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using Kreta.DataAccessManual.Interfaces;
using Kreta.Naplo.Dao.V3.Naplo;
using Kreta.Naplo.Domain.V3.Enum;
namespace Kreta.Naplo.Domain.V3.Common
{
public class DefaultConnectionParameters
{
public string IntezmenyAzonosito { get; }
public int IntezmenyId { get; }
public int TanevId { get; }
public int TanevSorszam { get; }
public int FelhasznaloId { get; }
public IEnumerable<FelhasznaloSzerepkor> JogosultsagLista { get; }
public IDalHandler DalHandler { get; set; }
public string UserName { get; }
public Guid UserIdpUniqueId { get; }
public Guid InstituteUniqueId { get; }
public DefaultConnectionParameters(MobileUser mobileUser, IntezmenyAdatokDao intezmenyAdatok, string intezmenyAzonosito)
{
IntezmenyAzonosito = intezmenyAzonosito;
FelhasznaloId = mobileUser.UserId;
JogosultsagLista = mobileUser.Roles;
UserName = mobileUser.UserName;
UserIdpUniqueId = mobileUser.UserIdpUniqueId;
TanevId = intezmenyAdatok.TanevId;
TanevSorszam = intezmenyAdatok.TanevSorszam;
IntezmenyId = intezmenyAdatok.IntezmenyId;
InstituteUniqueId = mobileUser.InstituteUniqueId;
}
}
}

View file

@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using Kreta.Naplo.Domain.V3.Enum;
namespace Kreta.Naplo.Domain.V3.Common
{
public class MobileUser
{
private const int MinimumIdentifierValue = 1;
public MobileUser(string instituteCode, int userId, string userName, IEnumerable<FelhasznaloSzerepkor> roles, int schoolYearId, Guid userIdpUniqueId, Guid instituteUniqueId)
{
if (string.IsNullOrWhiteSpace(instituteCode))
{
throw new ArgumentException($"{nameof(instituteCode)} cannot be null or whitespace");
}
InstituteCode = instituteCode;
if (userId < MinimumIdentifierValue)
{
throw new ArgumentException($"{nameof(userId)} must be greater or equal to {MinimumIdentifierValue}");
}
UserId = userId;
if (string.IsNullOrWhiteSpace(userName))
{
throw new ArgumentException($"{nameof(userName)} cannot be null or whitespace");
}
UserName = userName;
if (roles == null)
{
throw new ArgumentNullException(nameof(roles));
}
Roles = roles;
if (schoolYearId < MinimumIdentifierValue)
{
throw new ArgumentException($"{nameof(schoolYearId)} must be greater or equal to {MinimumIdentifierValue}");
}
SchoolYearId = schoolYearId;
UserIdpUniqueId = userIdpUniqueId;
InstituteUniqueId = instituteUniqueId;
}
public string InstituteCode { get; }
public int SchoolYearId { get; }
public IEnumerable<FelhasznaloSzerepkor> Roles { get; }
public int UserId { get; }
public string UserName { get; }
public Guid UserIdpUniqueId { get; }
public Guid InstituteUniqueId { get; }
}
}

View file

@ -0,0 +1,15 @@
namespace Kreta.Naplo.Domain.V3
{
public static class Constant
{
public static readonly char UidInnerDelimiter = ',';
public static readonly string UidNullValue = "null";
public static readonly string UidNanValue = "HibasUid";
public static readonly char UidDelimiter = ';';
public static readonly int EgyedilegFelvettAdatSzotarElemStartIndex = 100_000;
}
}

View file

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using Kreta.Naplo.Domain.V3.Orarend;
namespace Kreta.Naplo.Domain.V3.Csatolmany
{
public class CsatolmanyListRequest
{
public DateTime DatumTol { get; set; }
public DateTime DatumIg { get; set; }
public IEnumerable<OrarendElemSimplified> OrarendElemek { get; set; }
}
}

View file

@ -0,0 +1,15 @@
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.Csatolmany
{
public class CsatolmanyResponse : IEqualityComparer<CsatolmanyResponse>
{
public int Id { get; set; }
public string Nev { get; set; }
public bool Equals(CsatolmanyResponse x, CsatolmanyResponse y) => x.Id.Equals(y.Id);
public int GetHashCode(CsatolmanyResponse obj) => obj.Id.GetHashCode();
}
}

View file

@ -0,0 +1,8 @@
namespace Kreta.Naplo.Domain.V3.Enum
{
public enum Adatszotar
{
IsmeretlenErtek,
AdatszotarElem
}
}

View file

@ -0,0 +1,7 @@
namespace Kreta.Naplo.Domain.V3.Enum
{
public class EnumRequest
{
public string EnumTipus { get; set; }
}
}

View file

@ -0,0 +1,11 @@
namespace Kreta.Naplo.Domain.V3.Enum
{
public class EnumResponse
{
public int Id { get; set; }
public string Nev { get; set; }
public string Leiras { get; set; }
}
}

View file

@ -0,0 +1,14 @@
using System.ComponentModel.DataAnnotations;
namespace Kreta.Naplo.Domain.V3.Enum
{
public enum ErtekelesLekeresTipusEnum
{
[Display(Name = "Nem bizonyítvány típusú értékelések")]
NemBizonyitvanyErtekelesTipus,
[Display(Name = "Bizonyítvány típusú értékelések")]
BizonyitvanyErtekelesTipus,
[Display(Name = "Minden értékelés típus")]
MindenErtekelesTipus
}
}

View file

@ -0,0 +1,8 @@
namespace Kreta.Naplo.Domain.V3.Enum
{
public enum FelhasznaloSzerepkor
{
Tanar,
Adminisztrator
}
}

View file

@ -0,0 +1,8 @@
namespace Kreta.Naplo.Domain.V3.Enum
{
public enum MockUserName
{
None,
Farkase
}
}

View file

@ -0,0 +1,14 @@
using Kreta.Enums;
using Kreta.Naplo.Domain.V3.Adatszotar;
namespace Kreta.Naplo.Domain.V3.Ertekeles
{
public class ErtekelesRequest
{
public Adatszotar<OsztalyzatTipusEnum> OsztalyzatTipus { get; set; }
public string Szazalek { get; set; }
public string Szoveg { get; set; }
}
}

View file

@ -0,0 +1,13 @@
namespace Kreta.Naplo.Domain.V3.Ertekeles
{
public class ErtekelesResponse
{
public int? OsztalyzatTipus { get; set; }
public int? Szazalek { get; set; }
public string Szoveg { get; set; }
public int TipusId { get; set; }
}
}

View file

@ -0,0 +1,21 @@
using System;
namespace Kreta.Naplo.Domain.V3.Ertekeles
{
public class TanuloMentessegResponse
{
public bool ErtekelesAloliFelmentes { get; set; }
public bool TanoraLatogatasaAloliFelmentes { get; set; }
public bool SzovegesenErtekelheto { get; set; }
public string FelmentesOka { get; set; }
public bool IsMaganTanulo { get; set; }
public bool IsSzakmaiGyakorlatonLevo { get; set; }
public bool IsJogviszonySzunetelteto { get; set; }
}
}

View file

@ -0,0 +1,19 @@
using System;
using System.ComponentModel.DataAnnotations;
using Kreta.Naplo.Domain.V3.Utility.ValidationAttributes;
namespace Kreta.Naplo.Domain.V3.Felmentes
{
public class FelmentesRequest
{
[Required]
public int OsztalyCsoportId { get; set; }
[Required]
public DateTime Datum { get; set; }
public int? TanuloId { get; set; }
public int? TantargyId { get; set; }
}
}

View file

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.HaziFeladat
{
public class HaziFeladatCreateRequest : IValidatableObject, IModelValidacio<HaziFeladatCreateRequest>
{
public string Szoveg { get; set; }
public DateTime BeadasiHatarido { get; set; }
public DateTime OraDatum { get; set; }
public int? Oraszam { get; set; }
public int TantargyId { get; set; }
public int OsztalyCsoportId { get; set; }
public Dictionary<Predicate<HaziFeladatCreateRequest>, string> ModelValidaciok => new Dictionary<Predicate<HaziFeladatCreateRequest>, string>
{
{ x => string.IsNullOrWhiteSpace(x.Szoveg), "Házi feladat szövege nem lehet üres!" },
{ x => x.BeadasiHatarido < DateTime.Today.AddDays(1), "Házi feladat nem rögzíthető korábbi határidővel, mint a holnapi!" },
{ x => x.BeadasiHatarido < x.OraDatum, "Házi feladat határideje nem lehet korábban, mint az óra dátuma!" }
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using Kreta.Naplo.Domain.V3.Csatolmany;
namespace Kreta.Naplo.Domain.V3.HaziFeladat
{
public class HaziFeladatResponse
{
public int Id { get; set; }
public string Szoveg { get; set; }
public DateTime? HataridoDatuma { get; set; }
public int TantargyId { get; set; }
public string TantargyNev { get; set; }
public IEnumerable<CsatolmanyResponse> Csatolmanyok { get; set; }
}
}

View file

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.HaziFeladat
{
public class HaziFeladatUpdateRequest : IValidatableObject, IModelValidacio<HaziFeladatUpdateRequest>
{
public string Szoveg { get; set; }
public DateTime HataridoDatuma { get; set; }
public int? CsatolmanyId { get; set; }
public Dictionary<Predicate<HaziFeladatUpdateRequest>, string> ModelValidaciok => new Dictionary<Predicate<HaziFeladatUpdateRequest>, string>
{
{ x => string.IsNullOrWhiteSpace(x.Szoveg), "Házi feladata szöveg nem lehet üres!" },
{ x => x.HataridoDatuma < DateTime.Today.AddDays(1), "Házi feladat nem rögzíthető korábbi határidővel, mint a holnapi!" }
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.SqlTypes;
using System.Linq;
using Kreta.Enums;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.Igazolas
{
public class IgazolasCreateRequest : IValidatableObject, IModelValidacio<IgazolasCreateRequest>
{
[Required]
public int TanuloId { get; set; }
[Required]
public int OsztalyCsoportId { get; set; }
[Required]
public DateTime IgazolasKezdete { get; set; }
[Required]
public DateTime IgazolasVege { get; set; }
[Required]
public int IgazolasTipus { get; set; }
public string IgazolasMegjegyzes { get; set; }
public Dictionary<Predicate<IgazolasCreateRequest>, string> ModelValidaciok => new Dictionary<Predicate<IgazolasCreateRequest>, string>
{
{ x => x.IgazolasVege < x.IgazolasKezdete, $"A {nameof(IgazolasKezdete)} és a {nameof(IgazolasVege)} paraméterek meg vannak adva, de a {nameof(IgazolasKezdete)} nagyobb, mint a {nameof(IgazolasVege)} értek!" },
{ x => (x.IgazolasVege - x.IgazolasKezdete).Days > 20, $"A {nameof(IgazolasKezdete)} és a {nameof(IgazolasVege)} paraméterek meg vannak adva, de maximum 20 napos intervallum adható meg!" },
{ x => x.IgazolasKezdete < (DateTime)SqlDateTime.MinValue || x.IgazolasKezdete > (DateTime)SqlDateTime.MaxValue, $"A {nameof(IgazolasKezdete)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" },
{ x => x.IgazolasVege < (DateTime)SqlDateTime.MinValue || x.IgazolasVege > (DateTime)SqlDateTime.MaxValue, $"A {nameof(IgazolasVege)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" },
{ x => !System.Enum.IsDefined(typeof(IgazolasTipusEnum), x.IgazolasTipus), "Az igazolás típusa nem megfelelő!" }
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,21 @@
using System;
namespace Kreta.Naplo.Domain.V3.Igazolas
{
public class IgazolasResponse
{
public int Id { get; set; }
public DateTime Kezdete { get; set; }
public DateTime Vege { get; set; }
public int Tipusa { get; set; }
public string Megjegyzes { get; set; }
public string Rogzito { get; set; }
public bool Torolheto { get; set; }
}
}

View file

@ -0,0 +1,50 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.Indexers
{
public class UidsCollection<T> : IEnumerable<T> where T : class, IReadonlyUidRaw
{
private readonly List<T> _uids = new List<T>();
public UidsCollection(string uidsRaw, Converter<string[], T> uidsConverter)
{
if (string.IsNullOrWhiteSpace(uidsRaw))
{
return;
}
string[] uidArray = uidsRaw.Split(Constant.UidDelimiter);
if (uidArray.Length > 50)
{
throw new BlException(BlExceptionType.ListaTobbMint50ElemetTartalmaz);
}
_uids = new List<T>(uidArray.Length);
for (int i = 0; i < uidArray.Length; i++)
{
_uids.Add(GetUid(uidArray[i]));
}
T GetUid(string uidRaw)
{
string[] compositeKey = uidRaw.Split(Constant.UidInnerDelimiter);
T uid = uidsConverter.Invoke(compositeKey);
return uid;
}
}
public T this[int index] => _uids[index];
public IEnumerator GetEnumerator() => throw new NotImplementedException();
IEnumerator<T> IEnumerable<T>.GetEnumerator() => _uids.GetEnumerator();
}
}

View file

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.Interfaces
{
public interface IModelValidacio<T>
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
Dictionary<Predicate<T>, string> ModelValidaciok { get; }
}
}

View file

@ -0,0 +1,7 @@
namespace Kreta.Naplo.Domain.V3.Interfaces
{
public interface IReadonlyUidRaw
{
string UidRaw { get; }
}
}

View file

@ -0,0 +1,9 @@
namespace Kreta.Naplo.Domain.V3.Interfaces
{
public interface IRequestUidFilter<T> where T : class, IReadonlyUidRaw
{
T Uid { get; set; }
bool IsCallerGetOnlyOneItem { get; set; }
}
}

View file

@ -0,0 +1,9 @@
using Kreta.Naplo.Domain.V3.Indexers;
namespace Kreta.Naplo.Domain.V3.Interfaces
{
public interface IRequestUidsFilter<T> where T : class, IReadonlyUidRaw
{
UidsCollection<T> Uids { get; }
}
}

View file

@ -0,0 +1,7 @@
namespace Kreta.Naplo.Domain.V3.Interfaces
{
public interface ISortable
{
int SortIndex { get; set; }
}
}

View file

@ -0,0 +1,20 @@
using System.Collections.Generic;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
namespace Kreta.Naplo.Domain.V3.Intezmeny
{
public class IntezmenyAdatok : IEqualityComparer<IntezmenyAdatok>
{
public IntezmenyUid Uid { get; set; }
public string Azonosito { get; set; }
public string TeljesNev { get; set; }
public string RovidNev { get; set; }
public bool Equals(IntezmenyAdatok x, IntezmenyAdatok y) => x.Uid.Equals(x.Uid, y.Uid);
public int GetHashCode(IntezmenyAdatok obj) => obj.Uid.UidRaw.GetHashCode();
}
}

View file

@ -0,0 +1,19 @@
using System;
namespace Kreta.Naplo.Domain.V3.Iskolaor
{
public class IskolaorResponse
{
public Guid Uid { get; set; }
public string Nev { get; set; }
public int FeladatEllatasiHelyId { get; set; }
public string FeladatEllatasiHelyNev { get; set; }
public string EmailCim { get; set; }
public string Telefonszam { get; set; }
}
}

View file

@ -0,0 +1,40 @@
using System;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.Logic
{
public static class UidLogic
{
public static T GetUid<T>(string uidRaw, Converter<string[], T> uidConverter) where T : class, IReadonlyUidRaw
{
if (string.IsNullOrWhiteSpace(uidRaw))
{
return null;
}
string[] compositeKey = uidRaw.Split(Constant.UidInnerDelimiter);
T uid = uidConverter.Invoke(compositeKey);
return uid;
}
public static string[] GetCompositeKeyElements(string uidRaw) => string.IsNullOrWhiteSpace(uidRaw) ? null : uidRaw.Split(Constant.UidInnerDelimiter);
public static string Concat(params object[] compositeKeyElements)
{
for (int i = 0; i < compositeKeyElements.Length; i++)
{
if (compositeKeyElements[i] == null)
{
compositeKeyElements[i] = Constant.UidNullValue;
}
else if (string.IsNullOrWhiteSpace(compositeKeyElements[i].ToString()))
{
compositeKeyElements[i] = Constant.UidNanValue;
}
}
return string.Join(Constant.UidInnerDelimiter.ToString(), compositeKeyElements);
}
}
}

View file

@ -0,0 +1,10 @@

namespace Kreta.Naplo.Domain.V3.Ora
{
public class FeljegyzesResponse
{
public int Id { get; set; }
public int Tipus { get; set; }
}
}

View file

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kreta.Naplo.Domain.V3.Ora
{
public class OraFeljegyzesRequest
{
public int TanoraId { get; set; }
}
}

View file

@ -0,0 +1,11 @@
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.Ora
{
public class OraFeljegyzesResponse
{
public int TanuloId { get; set; }
public List<FeljegyzesResponse> FeljegyzesLista { get; set; }
}
}

View file

@ -0,0 +1,15 @@
using System.ComponentModel.DataAnnotations;
namespace Kreta.Naplo.Domain.V3.Ora
{
public class TanuloJelenletRequest
{
public TanuloJelenletRequest(int tanoraId)
{
TanoraId = tanoraId;
}
[Required]
public int TanoraId { get; set; }
}
}

View file

@ -0,0 +1,11 @@
namespace Kreta.Naplo.Domain.V3.Ora
{
public class TanuloJelenletResponse
{
public int TanuloId { get; set; }
public int MulasztasTipus { get; set; }
public int? Keses { get; set; }
}
}

View file

@ -0,0 +1,23 @@
using System;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class FelmentesResponse
{
public int TanuloId { get; set; }
public string TantargyNev { get; set; }
public bool ErtekelesAloliFelmentes { get; set; }
public bool TanoraLatogatasaAloliFelmentes { get; set; }
public bool SzovegesenErtekelheto { get; set; }
public string FelmentesOka { get; set; }
public DateTime? FelmentesKezdete { get; set; }
public DateTime? FelmentesVege { get; set; }
}
}

View file

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.SqlTypes;
using System.Linq;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class HetirendListRequest : IValidatableObject, IModelValidacio<HetirendListRequest>
{
public Dictionary<Predicate<HetirendListRequest>, string> ModelValidaciok => new Dictionary<Predicate<HetirendListRequest>, string>
{
{
x => x.OrarendElemVegNapDatuma < x.OrarendElemKezdoNapDatuma, $"A(z) {nameof(OrarendElemKezdoNapDatuma)} nagyobb, mint a(z) {nameof(OrarendElemVegNapDatuma)} érték!"
},
{ x => (x.OrarendElemVegNapDatuma - x.OrarendElemKezdoNapDatuma).Days > 21,
$"A {nameof(OrarendElemKezdoNapDatuma)} és a {nameof(OrarendElemVegNapDatuma)} paraméterek meg vannak adva, de maximum 3 hetes intervallum kérdezhető le!"
},
{
x => x.OrarendElemKezdoNapDatuma < (DateTime)SqlDateTime.MinValue || x.OrarendElemKezdoNapDatuma > (DateTime)SqlDateTime.MaxValue, $"A {nameof(OrarendElemKezdoNapDatuma)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!"
},
{
x => x.OrarendElemVegNapDatuma < (DateTime)SqlDateTime.MinValue || x.OrarendElemVegNapDatuma > (DateTime)SqlDateTime.MaxValue, $"A {nameof(OrarendElemVegNapDatuma)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!"
}
};
public DateTime OrarendElemKezdoNapDatuma { get; set; }
public DateTime OrarendElemVegNapDatuma { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,17 @@
using System;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class HetirendListResponse
{
public int Id { get; set; }
public DateTime KezdoNapDatuma { get; set; }
public DateTime VegNapDatuma { get; set; }
public int HetSorszama { get; set; }
public string Hetirend { get; set; }
}
}

View file

@ -0,0 +1,11 @@
using Kreta.Enums;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class MulasztasForOraNaplozasRequest
{
public MulasztasTipusEnum Tipus { get; set; }
public int? Keses { get; set; }
}
}

View file

@ -0,0 +1,123 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.BusinessLogic.Logic.Naplozas;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
using Kreta.Resources;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class OraNaplozasRequest : IValidatableObject
{
public OraNaplozasRequest(OrarendElemUid orarendElemUid, string tema, bool isElmaradt, List<TanuloForOraNaplozasListRequest> tanuloLista, string hazifeladat, DateTime? hazifeladatHatarido, int? hazifeladatId)
{
OrarendElemUid = orarendElemUid;
Tema = tema;
IsElmaradt = isElmaradt;
TanuloLista = tanuloLista;
Hazifeladat = hazifeladat;
HazifeladatHatarido = hazifeladatHatarido;
HazifeladatId = hazifeladatId;
foreach (var tanulo in TanuloLista)
{
if (OccurrenceNumberByPrimaryKey.ContainsKey(tanulo.Id))
{
OccurrenceNumberByPrimaryKey[tanulo.Id]++;
}
else
{
OccurrenceNumberByPrimaryKey.Add(tanulo.Id, 1);
}
}
}
public OrarendElemUid OrarendElemUid { get; set; }
public string Tema { get; set; }
public bool IsElmaradt { get; set; }
public List<TanuloForOraNaplozasListRequest> TanuloLista { get; set; }
public string Hazifeladat { get; set; }
public DateTime? HazifeladatHatarido { get; set; }
public int? HazifeladatId { get; set; }
public Dictionary<int, int> OccurrenceNumberByPrimaryKey = new Dictionary<int, int>();
public void ConvertTo(NaplozasMobilCo co)
{
co.OraAdat.Datum = OrarendElemUid.Datum;
co.OraAdat.IsElmaradt = IsElmaradt;
co.OraAdat.Tema = Tema;
co.OraAdat.OrarendiOraId = OrarendElemUid.Tipus == CalendarOraTypeEnum.OrarendiOra ? OrarendElemUid.Id : (int?)null;
co.OraAdat.TanitasiOraId = OrarendElemUid.Tipus == CalendarOraTypeEnum.TanitasiOra ? OrarendElemUid.Id : (int?)null;
co.Hazifeladat.Id = HazifeladatId;
co.Hazifeladat.Szoveg = Hazifeladat;
co.Hazifeladat.Hatarido = HazifeladatHatarido;
foreach (var tanulo in TanuloLista)
{
var tanuloMulasztas = new NaplozasMobilCo.MulasztasModel
{
TanuloId = tanulo.Id,
MulasztasTipus = (int)tanulo.Mulasztas.Tipus,
Keses = tanulo.Mulasztas.Keses
};
foreach (var esemenyTipus in tanulo.FeljegyzesTipusLista)
{
switch (esemenyTipus)
{
case (int)EsemenyTipusEnum.HaziFeladatHiany:
tanuloMulasztas.HazifeladatHiany = true;
break;
case (int)EsemenyTipusEnum.Felszereleshiany:
tanuloMulasztas.FelszerelesHiany = true;
break;
case (int)EsemenyTipusEnum.Dicseret:
tanuloMulasztas.TanoraiDicseret = true;
break;
case (int)EsemenyTipusEnum.SzakmaiMentessegNemHivatalos:
tanuloMulasztas.Felmentes = true;
break;
}
}
co.MulasztasList.Add(tanuloMulasztas);
}
}
public Dictionary<Predicate<OraNaplozasRequest>, string> ModelValidaciok => new Dictionary<Predicate<OraNaplozasRequest>, string>
{
{
x => x.HazifeladatHatarido < x.OrarendElemUid.Datum.Date.AddDays(1),
ErrorResource.HazifeladatNemrogzithetoHataridoKorabbiMintAzOraDatuma
},
{
x => x.HazifeladatHatarido < DateTime.Today.AddDays(1),
ErrorResource.HazifeladatNemrogzithetoHataridoKorabbiMintAHolnapiNap
},
{
x => x.HazifeladatId.HasValue && string.IsNullOrWhiteSpace(x.Hazifeladat),
OrarendResource.HazifeladatSzovegKotelezo
},
{
x => x.TanuloLista.Any(y => (int)y.Mulasztas.Tipus == (int)MulasztasTipusEnum.keses && y.Mulasztas.Keses <= 0),
"A késés értéke nem lehet 0 vagy negatív szám!"
},
{
x => x.OccurrenceNumberByPrimaryKey.Any(y => y.Value > 1),
$"A következő tanulók többször szerepelnek: {string.Join(", ", OccurrenceNumberByPrimaryKey.Where(x => x.Value > 1).Select(y => y.Key))}"
}
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,42 @@
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<OraNaplozasTorlesRequest>
{
public OraNaplozasTorlesRequest(string orarendElemUid)
{
OrarendElemUid = new OrarendElemUid(orarendElemUid);
}
public OraNaplozasTorlesRequest(CalendarOraTypeEnum tipus, int id, DateTime datum)
{
OrarendElemUid = new OrarendElemUid(id, tipus, datum);
}
public Dictionary<Predicate<OraNaplozasTorlesRequest>, string> ModelValidaciok => new Dictionary<Predicate<OraNaplozasTorlesRequest>, string>
{
{ x => x.OrarendElemUid != null && x.OrarendElemUid.Tipus != CalendarOraTypeEnum.TanitasiOra, ErrorResource.ATorolniKivantOraNemTanitasiOra }
};
[Required]
public OrarendElemUid OrarendElemUid { get; set; }
public IEnumerable<ValidationResult> 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;
}
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Enums.ManualEnums;
using Kreta.Naplo.Domain.V3.Interfaces;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class OrarendElemRequest : IValidatableObject, IModelValidacio<OrarendElemRequest>
{
public OrarendElemRequest(string orarendElemUid)
{
OrarendElemUid = new OrarendElemUid(orarendElemUid);
}
public OrarendElemRequest(CalendarOraTypeEnum tipus, int id, DateTime datum)
{
OrarendElemUid = new OrarendElemUid(id, tipus, datum);
}
public Dictionary<Predicate<OrarendElemRequest>, string> ModelValidaciok => new Dictionary<Predicate<OrarendElemRequest>, string>
{
{ x => x.OrarendElemUid != null
&& x.OrarendElemUid.Tipus != CalendarOraTypeEnum.OrarendiOra
&& x.OrarendElemUid.Tipus != CalendarOraTypeEnum.TanitasiOra
&& x.OrarendElemUid.Tipus != CalendarOraTypeEnum.UresOra
, "Csak órarendi, tanítási és elmaradt óra kérhető le!" }
};
[Required]
public OrarendElemUid OrarendElemUid { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using Kreta.Naplo.Domain.V3.Csatolmany;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class OrarendElemResponse
{
public OrarendElemUid Uid { get; set; }
public string Nev { get; set; }
public bool HasOrarendiOra { get; set; }
public int OsztalyCsoportId { get; set; }
public string OsztalyCsoportNev { get; set; }
public int TantargyId { get; set; }
public string TantargyNev { get; set; }
public string Terem { get; set; }
public DateTime Kezdete { get; set; }
public DateTime Vege { get; set; }
public string Tema { get; set; }
public int? Oraszam { get; set; }
public int Allapot { get; set; }
public Guid TanarUid { get; set; }
public string TanarNev { get; set; }
public Guid? HelyettesitoTanarUid { get; set; }
public string HelyettesitoTanarNev { get; set; }
public int? EvesOraSorszam { get; set; }
public int? HaziFeladatId { get; set; }
public int? BejelentettSzamonkeresId { get; set; }
public string BejelentettSzamonkeresMod { get; set; }
public string BejelentettSzamonkeresTema { get; set; }
public List<CsatolmanyResponse> Csatolmanyok { get; set; }
public DateTime? ElozoNaplozottOraDatum { get; set; }
public string ElozoNaplozottOraTema { get; set; }
public bool Naplozart { get; set; }
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using Kreta.Enums.ManualEnums;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class OrarendElemSimplified : IEqualityComparer<OrarendElemSimplified>
{
public OrarendElemSimplified()
{
}
public OrarendElemSimplified(int id, int orarendiOraId, int orarendiOraGroupId, CalendarOraTypeEnum tipus, DateTime datum)
{
Id = id;
OrarendiOraId = orarendiOraId;
OrarendiOraGroupId = orarendiOraGroupId;
Tipus = tipus;
Datum = datum;
}
public int Id { get; set; }
public int OrarendiOraId { get; set; }
public int OrarendiOraGroupId { get; set; }
public CalendarOraTypeEnum Tipus { get; set; }
public DateTime Datum { get; set; }
public bool Equals(OrarendElemSimplified x, OrarendElemSimplified y) => x == y || (x.Id == y.Id && x.Tipus == y.Tipus && x.Datum == y.Datum);
public int GetHashCode(OrarendElemSimplified obj) => obj.Id.GetHashCode();
}
}

View file

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.SqlTypes;
using System.Linq;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class OrarendRequest : IValidatableObject, IModelValidacio<OrarendRequest>
{
public OrarendRequest(DateTime datumTol, DateTime datumIg)
{
DatumTol = datumTol;
DatumIg = datumIg;
}
public DateTime DatumTol { get; set; }
public DateTime DatumIg { get; set; }
public Dictionary<Predicate<OrarendRequest>, string> ModelValidaciok => new Dictionary<Predicate<OrarendRequest>, string>
{
{ x => x.DatumIg < x.DatumTol, $"A {nameof(DatumTol)} és a {nameof(DatumIg)} paraméterek meg vannak adva, de a {nameof(DatumTol)} nagyobb, mint a {nameof(DatumIg)} értek!" },
{ x => (x.DatumIg - x.DatumTol).Days > 31, $"A {nameof(DatumTol)} és a {nameof(DatumIg)} paraméterek meg vannak adva, de maximum 1 hónap intervallum kérdezhető le!" },
{ x => x.DatumTol < (DateTime)SqlDateTime.MinValue || x.DatumTol > (DateTime)SqlDateTime.MaxValue, $"A {nameof(DatumTol)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" },
{ x => x.DatumIg < (DateTime)SqlDateTime.MinValue || x.DatumIg > (DateTime)SqlDateTime.MaxValue, $"A {nameof(DatumIg)} paraméter nem lehet kisebb, mint 1753. január 1. és nagyobb, mint 9999. december 31.!" },
{ x => x.DatumTol.Millisecond > 0 || x.DatumIg.Millisecond > 0 , $"A {nameof(DatumTol)} és a {nameof(DatumIg)} paraméterek csak másodperc pontossággal megadhatóak!" }
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
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 SzamonkeresRequest : IValidatableObject, IModelValidacio<SzamonkeresRequest>
{
public SzamonkeresRequest(string orarendElemUid)
{
OrarendElemUid = new OrarendElemUid(orarendElemUid);
}
public OrarendElemUid OrarendElemUid { get; set; }
public int ErtekelesMod { get; set; }
public string Tema { get; set; }
public bool ForceSave { get; set; }
public Dictionary<Predicate<SzamonkeresRequest>, string> ModelValidaciok => new Dictionary<Predicate<SzamonkeresRequest>, string>
{
{ x => x.OrarendElemUid != null && x.OrarendElemUid.Tipus != CalendarOraTypeEnum.OrarendiOra, OrarendResource.CsakOrarendiOraAdhatoMeg },
{ x => x.OrarendElemUid.Datum.Date <= DateTime.Now.Date, OrarendResource.SzamonkeresLeghamarabbAHolnapiNaptolRogzitheto }
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,11 @@
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class TanuloForOraNaplozasListRequest
{
public int Id { get; set; }
public MulasztasForOraNaplozasRequest Mulasztas { get; set; }
public List<int> FeljegyzesTipusLista { get; set; }
}
}

View file

@ -0,0 +1,23 @@
using System;
using System.ComponentModel.DataAnnotations;
using Kreta.Enums.ManualEnums;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class TanuloJelenletRequest
{
public TanuloJelenletRequest(string orarendElemUid)
{
OrarendElemUid = new OrarendElemUid(orarendElemUid);
}
public TanuloJelenletRequest(CalendarOraTypeEnum tipus, int id, DateTime datum)
{
OrarendElemUid = new OrarendElemUid(id, tipus, datum);
}
[Required]
public OrarendElemUid OrarendElemUid { get; set; }
}
}

View file

@ -0,0 +1,29 @@
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.Orarend
{
public class TanuloJelenletResponse
{
public TanuloJelenletResponse(int tanuloId, int allapot, int? keses, string szoveg, bool hasMulasztasGomb)
{
TanuloId = tanuloId;
Allapot = allapot;
MulasztasTipus = allapot;
Keses = keses;
Szoveg = szoveg;
HasMulasztasGomb = hasMulasztasGomb;
}
public int TanuloId { get; set; }
public int Allapot { get; set; }
public int MulasztasTipus { get; set; }
public int? Keses { get; set; }
public string Szoveg { get; set; }
public bool HasMulasztasGomb { get; set; }
}
}

View file

@ -0,0 +1,14 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class BejelentettSzamonkeresekRequest
{
[Required]
public int OsztalyCsoportId { get; set; }
[Required]
public DateTime Datum { get; set; }
}
}

View file

@ -0,0 +1,23 @@
using System;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class BejelentettSzamonkeresekResponse
{
public int Id { get; set; }
public string Tema { get; set; }
public int ErtekelesMod { get; set; }
public int? OraSzam { get; set; }
public int TantargyId { get; set; }
public string TantargyNev { get; set; }
public Guid TanarUid { get; set; }
public string TanarNev { get; set; }
}
}

View file

@ -0,0 +1,13 @@
using System.ComponentModel.DataAnnotations;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class MondatbankRequest
{
[Required]
public int TantargyId { get; set; }
[Required]
public int OsztalyCsoportId { get; set; }
}
}

View file

@ -0,0 +1,9 @@
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class MondatbankResponse
{
public string RovidNev { get; set; }
public string Nev { get; set; }
}
}

View file

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using Kreta.Enums;
using Kreta.Naplo.Domain.V3.Adatszotar;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportErtekelesRequest
{
public DateTime Datum { get; set; }
public Adatszotar<ErtekelesModEnum> Mod { get; set; }
public string Tema { get; set; }
public int OsztalyCsoportId { get; set; }
public int TantargyId { get; set; }
public List<TanuloForOsztalyCsoportErtekelesRequest> TanuloLista { get; set; }
}
}

View file

@ -0,0 +1,20 @@
using System;
using System.ComponentModel.DataAnnotations;
using Kreta.Naplo.Domain.V3.Utility.ValidationAttributes;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportErtekelesekRequest
{
[Required]
public int TantargyId { get; set; }
[Required]
public int OsztalyCsoportId { get; set; }
[Required, ShortDateTime]
public DateTime Datum { get; set; }
public int? TanuloId { get; set; }
}
}

View file

@ -0,0 +1,20 @@
using System;
using Kreta.Naplo.Domain.V3.Ertekeles;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportErtekelesekResponse
{
public int TanuloId { get; set; }
public TanuloMentessegResponse TanuloErtekelesFelmentes { get; set; }
public decimal? TanuloTantargyiAtlag { get; set; }
public int TanuloErtekelesSzam { get; set; }
public ErtekelesResponse TanuloUtolsoErtekeles { get; set; }
public DateTime? TanuloUtolsoErtekelesDatum { get; set; }
}
}

View file

@ -0,0 +1,17 @@
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportGondviseloResponse
{
public int Id { get; set; }
public string Nev { get; set; }
public string RokonsagiFok { get; set; }
public string Telefonszam { get; set; }
public string Email { get; set; }
public bool IsTorvenyesKepviselo { get; set; }
}
}

View file

@ -0,0 +1,9 @@
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportResponse
{
public int OsztalyCsoportId { get; set; }
public string OsztalyCsoportNev { get; set; }
}
}

View file

@ -0,0 +1,11 @@
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportTanuloAdatokResponse : OsztalyCsoportTanuloResponse
{
public List<OsztalyCsoportResponse> OsztalyCsoportok { get; set; }
public List<OsztalyCsoportGondviseloResponse> Gondviselok { get; set; }
}
}

View file

@ -0,0 +1,13 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportTanuloRequest
{
[Required]
public int OsztalyCsoportId { get; set; }
public DateTime? Datum { get; set; }
}
}

View file

@ -0,0 +1,15 @@
using System;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyCsoportTanuloResponse
{
public int TanuloId { get; set; }
public string TanuloNev { get; set; }
public DateTime TanuloSzuletesiDatum { get; set; }
public string TanuloAnyjaNeve { get; set; }
}
}

View file

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class OsztalyokCsoportokResponse
{
public int OsztalyCsoportId { get; set; }
public string OsztalyCsoportNev { get; set; }
public bool IsTanitom { get; set; }
public Guid? OsztalyfonokCsoportvezetoUid { get; set; }
public string OsztalyfonokCsoportvezetoNev { get; set; }
public Guid? OsztalyfonokHelyettesUid { get; set; }
public string OsztalyfonokHelyettesNev { get; set; }
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Naplo.Domain.V3.Interfaces;
using Kreta.Resources;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class TanuloErtekelesMentesRequest : IValidatableObject, IModelValidacio<TanuloErtekelesMentesRequest>
{
public DateTime ErtekelesDatum { get; set; }
public int ErtekelesModId { get; set; }
public string ErtekelesTema { get; set; }
public int? ErtekelesOsztalyzatId { get; set; }
public string ErtekelesSzoveg { get; set; }
public int? ErtekelesSzazalek { get; set; }
public Dictionary<Predicate<TanuloErtekelesMentesRequest>, string> ModelValidaciok => new Dictionary<Predicate<TanuloErtekelesMentesRequest>, string>
{
{ x => x.ErtekelesOsztalyzatId == null && string.IsNullOrWhiteSpace(x.ErtekelesSzoveg) && x.ErtekelesSzazalek == null, TanuloErtekelesResource.EgyErtekelesFajtaMegadasaKotelezo },
{ x => (x.ErtekelesOsztalyzatId != null && (!string.IsNullOrWhiteSpace(x.ErtekelesSzoveg) || x.ErtekelesSzazalek != null)) ||
(!string.IsNullOrWhiteSpace(x.ErtekelesSzoveg) && (x.ErtekelesOsztalyzatId != null || x.ErtekelesSzazalek != null)) ||
(x.ErtekelesSzazalek != null && (x.ErtekelesOsztalyzatId != null || !string.IsNullOrWhiteSpace(x.ErtekelesSzoveg))),
TanuloErtekelesResource.HibasanMegadottErtekelesEgyszerreCsakEgyFajtaErtekelesAdhatoMeg
},
{ x => x.ErtekelesSzazalek != null && (x.ErtekelesSzazalek < 0 || x.ErtekelesSzazalek > 100), TanuloErtekelesResource.SzazalekosErtekNincsAMegengedettTartomanyban }
};
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => ModelValidaciok.Where(x => x.Key.Invoke(this)).AsEnumerable().Select(x => new ValidationResult(x.Value));
}
}

View file

@ -0,0 +1,16 @@
using System.ComponentModel.DataAnnotations;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class TanuloErtekelesekRequest
{
[Required]
public int TanuloId { get; set; }
[Required]
public int TantargyId { get; set; }
[Required]
public int OsztalyCsoportId { get; set; }
}
}

View file

@ -0,0 +1,53 @@
using System;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class TanuloErtekelesekResponse
{
public int ErtekelesId { get; set; }
public int TantargyId { get; set; }
public string TantargyNev { get; set; }
public string Ertekeles { get; set; }
public int? ErtekelesOsztalyzatId { get; set; }
public string ErtekelesOsztalyzatNev { get; set; }
public string ErtekelesSzoveg { get; set; }
public int? ErtekelesSzazalek { get; set; }
public int ErtekelesFajtaId { get; set; }
public string ErtekelesFajtaNev { get; set; }
public int? ErtekelesModId { get; set; }
public string ErtekelesModNev { get; set; }
public int ErtekelesTipusId { get; set; }
public string ErtekelesTipusNev { get; set; }
public string ErtekelesTema { get; set; }
public DateTime ErtekelesDatum { get; set; }
public int? ErtekelesSuly { get; set; }
public DateTime ErtekelesRogzitesDatum { get; set; }
public Guid TanarUid { get; set; }
public int OsztalyCsoportId { get; set; }
public int FeladatEllatasiHelyId { get; set; }
public string FeladatEllatasiHelyNev { get; set; }
public bool Naplozart { get; set; }
}
}

View file

@ -0,0 +1,11 @@
using Kreta.Naplo.Domain.V3.Ertekeles;
namespace Kreta.Naplo.Domain.V3.OsztalyCsoport
{
public class TanuloForOsztalyCsoportErtekelesRequest
{
public ErtekelesRequest Ertekeles { get; set; }
public int TanuloId { get; set; }
}
}

View file

@ -0,0 +1,7 @@
namespace Kreta.Naplo.Domain.V3.Tanar
{
public class BeallitasokRequest
{
public bool ElozoOranHianyzoAjanlasa { get; set; }
}
}

View file

@ -0,0 +1,13 @@
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.Tanar
{
public class BeallitasokResponse
{
public bool ElozoOranHianyzoAjanlasa { get; set; }
public int NapiSzamonkeresLimit { get; set; }
public List<int> LimitaltSzamonkeresekTipusai { get; set; }
}
}

View file

@ -0,0 +1,25 @@
using System;
namespace Kreta.Naplo.Domain.V3.Tanar
{
public class ProfilResponse
{
public Guid Uid { get; set; }
public string Nev { get; set; }
public string IntezmenyNev { get; set; }
public int FeladatEllatasiHelyId { get; set; }
public string FeladatEllatasiHelyNev { get; set; }
public string PublikusEmailCim { get; set; }
public string PublikusTelefonszam { get; set; }
public string MunkahelyiEmailCim { get; set; }
public string MunkahelyiTelefonszam { get; set; }
}
}

View file

@ -0,0 +1,17 @@
namespace Kreta.Naplo.Domain.V3.Tanar
{
public class TantargyFelosztasResponse
{
public int OsztalyCsoportId { get; set; }
public string OsztalyCsoportNev { get; set; }
public int TantargyId { get; set; }
public string TantargyNev { get; set; }
public int FeladatellatasiHelyId { get; set; }
public string FeladatellatasiHely { get; set; }
}
}

View file

@ -0,0 +1,11 @@
namespace Kreta.Naplo.Domain.V3.Tanmenet
{
public class TanmenetItemListResponse
{
public int Id { get; set; }
public string Tema { get; set; }
public int EvesOraszam { get; set; }
}
}

View file

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
namespace Kreta.Naplo.Domain.V3.Tanmenet
{
public class TanmenetListResponse
{
public int OsztalyCsoportId { get; set; }
public int TantargyId { get; set; }
public Guid TanarUid { get; set; }
public List<TanmenetItemListResponse> Items { get; set; }
}
}

View file

@ -0,0 +1,13 @@
using System;
namespace Kreta.Naplo.Domain.V3.Tanmenet
{
public class TanmenetRequest
{
public int OsztalyCsoportId { get; set; }
public int TantargyId { get; set; }
public Guid TanarUid { get; set; }
}
}

View file

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using Kreta.Naplo.Domain.V3.Interfaces;
using Kreta.Naplo.Domain.V3.Logic;
namespace Kreta.Naplo.Domain.V3.UniqueIdentifier
{
[Serializable]
public class AdatszotarUid : IReadonlyUidRaw, IEqualityComparer<AdatszotarUid>
{
public AdatszotarUid(int id, string nev)
{
Id = id;
Nev = nev;
UidRaw = UidLogic.Concat(id, nev);
}
public AdatszotarUid(string uidRaw)
{
var compositeKeyElements = UidLogic.GetCompositeKeyElements(uidRaw);
Id = int.TryParse(compositeKeyElements[0], out int result) ? result : 0;
Nev = compositeKeyElements[1];
UidRaw = uidRaw;
}
public int Id { get; private set; }
public string Nev { get; private set; }
public string UidRaw { get; private set; }
public bool Equals(AdatszotarUid x, AdatszotarUid y) => x == y || x.UidRaw == y.UidRaw;
public int GetHashCode(AdatszotarUid obj) => obj.UidRaw.GetHashCode();
}
}

View file

@ -0,0 +1,28 @@
using System.Collections.Generic;
using Kreta.Naplo.Domain.V3.Interfaces;
namespace Kreta.Naplo.Domain.V3.UniqueIdentifier
{
public class IntezmenyUid : IReadonlyUidRaw, IEqualityComparer<IntezmenyUid>
{
public IntezmenyUid(int id)
{
Id = id;
UidRaw = id.ToString();
}
public IntezmenyUid(string uidRaw)
{
Id = int.Parse(uidRaw);
UidRaw = uidRaw;
}
public int Id { get; private set; }
public string UidRaw { get; private set; }
public bool Equals(IntezmenyUid x, IntezmenyUid y) => x == y || x.UidRaw == y.UidRaw;
public int GetHashCode(IntezmenyUid obj) => obj.UidRaw.GetHashCode();
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using Kreta.Enums.ManualEnums;
using Kreta.Naplo.Domain.V3.Interfaces;
using Kreta.Naplo.Domain.V3.Logic;
namespace Kreta.Naplo.Domain.V3.UniqueIdentifier
{
public class OrarendElemUid : IReadonlyUidRaw, IEqualityComparer<OrarendElemUid>
{
public OrarendElemUid()
{
}
public OrarendElemUid(int id, CalendarOraTypeEnum tipus, DateTime datum)
{
Id = id;
Tipus = tipus;
Datum = datum;
UidRaw = UidLogic.Concat(id, tipus, datum);
}
public OrarendElemUid(string uidRaw)
{
var compositeKeyElements = UidLogic.GetCompositeKeyElements(uidRaw);
Id = int.Parse(compositeKeyElements[0]);
Tipus = (CalendarOraTypeEnum)System.Enum.Parse(typeof(CalendarOraTypeEnum), compositeKeyElements[1]);
Datum = DateTime.Parse(compositeKeyElements[2]).ToLocalTime().Date;
UidRaw = uidRaw;
}
public int Id { get; set; }
public string UidRaw { get; private set; }
public CalendarOraTypeEnum Tipus { get; set; }
public DateTime Datum { get; set; }
public bool Equals(OrarendElemUid x, OrarendElemUid y) => x == y || x.UidRaw == y.UidRaw;
public int GetHashCode(OrarendElemUid obj) => obj.UidRaw.GetHashCode();
}
}

View file

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Globalization;
namespace Kreta.Naplo.Domain.V3.Utility
{
public static class Extensions
{
/// UTC: 2016-10-30T20:00:00Z
/// Local: 2016-10-30T23:00:00+01:00
/// Unspecified: 2016-10-30T22:00:00
public static DateTime ToIso8601Utc(this DateTime dt)
=> new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Kind).ToUniversalTime();
/// UTC: 2016-10-30T20:00:00Z
/// Local: 2016-10-30T23:00:00+01:00
/// Unspecified: 2016-10-30T22:00:00
public static string ToIso8601UtcString(this DateTime dt)
=> dt.ToString("yyyy-MM-dd'T'HH:mm:ssK", CultureInfo.InvariantCulture);
public static IEnumerable<TOutput> ConvertAll<TInput, TOutput>(this IEnumerable<TInput> collection, Converter<TInput, TOutput> converter)
{
foreach (TInput item in collection)
{
yield return converter.Invoke(item);
}
}
}
}

View file

@ -0,0 +1,23 @@
using System;
using System.ComponentModel;
using System.Linq;
namespace Kreta.Naplo.Domain.V3.Utility.ValidationAttributes
{
[AttributeUsage(AttributeTargets.Property)]
public class EnumToDescriptionAttribute : DescriptionAttribute
{
public override string Description => base.Description;
public EnumToDescriptionAttribute(string description, Type enumType)
{
DescriptionValue = description + " (" + GetEnumsFromGenerated(enumType) + ")";
}
private string GetEnumsFromGenerated(Type enumType)
{
var enumNames = System.Enum.GetNames(enumType).ToList();
return string.Join(", ", enumNames);
}
}
}

View file

@ -0,0 +1,16 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace Kreta.Naplo.Domain.V3.Utility.ValidationAttributes
{
[AttributeUsage(AttributeTargets.Property)]
internal sealed class ShortDateTimeAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime? timePropertyValue = value as DateTime?;
return !timePropertyValue.HasValue || timePropertyValue.Value - timePropertyValue.Value.Date == new TimeSpan(0);
}
}
}