using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Diplom_O.DataBase { public class CorrStaj { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } [ForeignKey("Chel")] public int ChelId { get; set; } public Chel Chel { get; set; } [ForeignKey("TypeStaj")] public int TypeStajId { get; set; } public TypeStaj TypeStaj { get; set; } public int Year { get; set; } public int Month { get; set; } public int Day { get; set; } public bool AddFlag { get; set; } } public static partial class FuncDB { public static void CorrStajValid(CorrStaj obj) { try { if (obj == null) throw new Exception("Ошибка инициализации стажа."); } catch { throw; } } public static CorrStaj CorrStajGetById(int id) { try { using (var db = new MainDB()) { var corrstaj = from a in db.CorrStajy where a.Id == id select a; try { return corrstaj.Single(); } catch { return null; } } } catch { throw; } } public static CorrStaj CorrStaj(int chelId, string name) { try { using (var db = new MainDB()) { var ts = TypeStajGetByName(name); if (ts == null) return null; var corrstaj = from a in db.CorrStajy where a.TypeStajId == ts.Id && a.ChelId == chelId select a; try { return corrstaj.Single(); } catch { return null; } } } catch { throw; } } public static void CorrStajAdd(CorrStaj obj) { try { CorrStajValid(obj); using (var db = new MainDB()) { db.CorrStajy.Add(obj); db.SaveChanges(); } } catch { throw; } } public static void CorrStajChange(CorrStaj obj) { try { CorrStajValid(obj); var localObjById = CorrStajGetById(obj.Id); var localObjByName = CorrStaj(obj.ChelId, TypeStajGetById(obj.TypeStajId).Name); if (localObjById == null) throw new Exception("Корректировка стажа не существует."); if (localObjByName != null && localObjByName.Id != localObjById.Id) throw new Exception("Корректировка стажа существует."); using (var db = new MainDB()) { db.CorrStajy.Update(obj); db.SaveChanges(); } } catch { throw; } } public static void CorrStajDelete(CorrStaj obj) { try { if (obj == null) return; var localObj = CorrStajGetById(obj.Id); if (localObj == null) throw new Exception("Корректироваки стажа не существует."); using (var db = new MainDB()) { db.CorrStajy.Remove(localObj); db.SaveChanges(); } } catch { throw; } } public static CorrStaj[] CorrStajList(int chelId) { try { using (var db = new MainDB()) { var res = ( from a in db.CorrStajy where a.ChelId == chelId select a ).ToList(); return res.ToArray(); } } catch { throw; } } } }