using System; using System.Collections.Generic; using System.Linq; using Comal.Classes; using InABox.Core; namespace Comal.Stores { public class EmployeeStore : SchedulableStore { protected override void BeforeSave(Employee entity) { //entity.HasAttachments = entity.Attachments.Count > 0; base.BeforeSave(entity); } private void LoadStandardLeaves(Employee entity) { var updates = new List(); var leaves = Provider.Load(); foreach (var leave in leaves) { var request = new LeaveRequest().LoadFrom(leave); request.EmployeeLink.ID = entity.ID; request.Status = LeaveRequestStatus.Approved; updates.Add(request); } FindSubStore().Save(updates, "Auto Generated on Employee Creation"); } protected override void AfterSave(Employee entity) { base.AfterSave(entity); if (entity.HasOriginalValue(x => x.ID)) { var origid = entity.GetOriginalValue(x => x.ID); if (origid == Guid.Empty) LoadStandardLeaves(entity); } var orig = entity.HasOriginalValue(x => x.FinishDate) ? entity.GetOriginalValue(x => x.FinishDate) : entity.FinishDate; if (entity.UserLink.IsValid() && orig.IsEmpty() != entity.FinishDate.IsEmpty()) { var user = Provider.Load(new Filter(x => x.ID).IsEqualTo(entity.UserLink.ID)).FirstOrDefault(); if (user != null && user.Disabled == entity.FinishDate.IsEmpty()) { user.Disabled = !entity.FinishDate.IsEmpty(); Provider.Save(user); } } } } }