public AbsencePolicy CloneAbsencePolicy(int organisationId, int absencePolicyId) { var absencePolicy = RetrieveAbsencePolicy(organisationId, absencePolicyId); var absencePolicyEntitlements = absencePolicy.AbsencePolicyEntitlements; var absencePolicyPeriods = absencePolicy.AbsencePolicyPeriods; var cloneAbsencePolicy = new AbsencePolicy() { Name = string.Format("{0} {1}", absencePolicy.Name, DateTime.UtcNow.ToString("HH:mm:ss")), OrganisationId = organisationId }; //Clone Absence Policy var clonedAbsencePolicy = CreateAbsencePolicy(organisationId, cloneAbsencePolicy); if (clonedAbsencePolicy.Succeeded) { //Clone Working Pattern if (absencePolicy.WorkingPattern != null) { var absencePolicyWorkingPatternDays = absencePolicy.WorkingPattern.WorkingPatternDays; var workingPatternDays = absencePolicyWorkingPatternDays.Select(item => new WorkingPatternDay() { AM = item.AM, DayOfWeek = item.DayOfWeek, PM = item.PM }).ToList(); //Clone Working Pattern. _hrDataService.CreateAbsencePolicyWorkingPattern(organisationId, clonedAbsencePolicy.Entity, workingPatternDays); } //Clone Absence Policy Entitlement. if (absencePolicyEntitlements.Any()) { _hrDataService.Create <AbsencePolicyEntitlement>(organisationId, absencePolicyEntitlements.Select(item => new AbsencePolicyEntitlement() { OrganisationId = organisationId, AbsenceTypeId = item.AbsenceTypeId, FrequencyId = item.FrequencyId, IsPaid = item.IsPaid, IsUnplanned = item.IsUnplanned, HasEntitlement = item.HasEntitlement, MaximumCarryForward = item.MaximumCarryForward, AbsencePolicyId = clonedAbsencePolicy.Entity.AbsencePolicyId, Entitlement = item.Entitlement })); } //Clone Absence Policy Periods. if (absencePolicyPeriods.Any()) { _hrDataService.Create <AbsencePolicyPeriod>(organisationId, absencePolicyPeriods.Select(item => new AbsencePolicyPeriod() { OrganisationId = organisationId, AbsencePeriodId = item.AbsencePeriodId, AbsencePolicyId = clonedAbsencePolicy.Entity.AbsencePolicyId })); } } return(clonedAbsencePolicy.Entity); }
public AbsencePolicy CreateAbsencePolicy(int organisationId, AbsencePolicy absencePolicy) { using (var context = _databaseFactory.Create(organisationId)) { var result = context.AbsencePolicies.Add(absencePolicy); context.SaveChanges(); return(result); } }
public WorkingPattern CreateAbsencePolicyWorkingPattern(int organisationId, AbsencePolicy absencePolicy, IEnumerable <WorkingPatternDay> workingPatternDays) { using (var context = _databaseFactory.Create(organisationId)) { var workingPattern = context.WorkingPatterns.Add(new WorkingPattern { WorkingPatternDays = workingPatternDays.ToList() }); var absencePolicyData = context.AbsencePolicies.FirstOrDefault(e => e.AbsencePolicyId == absencePolicy.AbsencePolicyId); absencePolicyData.WorkingPatternId = workingPattern.WorkingPatternId; absencePolicyData.Name = absencePolicy.Name; context.SaveChanges(); return(RetrieveAbsencePolicy(organisationId, absencePolicy.AbsencePolicyId).WorkingPattern); } }
public void CloneAbsencePolicy(int organisationId, AbsencePolicy absencePolicy) { using (var context = _databaseFactory.Create(organisationId)) { //Clone Working Pattern if (absencePolicy.WorkingPattern != null) { context.WorkingPatterns.Add(absencePolicy.WorkingPattern); } //Clone Absence Policy Entitlement. if (absencePolicy.AbsencePolicyEntitlements.Any()) { context.AbsencePolicyEntitlements.AddRange(absencePolicy.AbsencePolicyEntitlements); } //Clone Absence Policy Period. if (absencePolicy.AbsencePolicyPeriods.Any()) { context.AbsencePolicyPeriods.AddRange(absencePolicy.AbsencePolicyPeriods); } context.SaveChanges(); } }
public ActionResult Create([Bind(Include = "AbsencePolicyId,Name")] AbsencePolicy absencePolicy) { if (ModelState.IsValid) { absencePolicy.OrganisationId = UserOrganisationId; var result = HRBusinessService.CreateAbsencePolicy(UserOrganisationId, absencePolicy); if (result.Succeeded) { return(RedirectToAction("Edit", new { id = result.Entity.AbsencePolicyId })); } foreach (var error in result.Errors) { ModelState.AddModelError("", error); } } var viewModel = new AbsencePolicyViewModel { AbsencePolicy = new AbsencePolicy() }; return(View(viewModel)); }
public ValidationResult <WorkingPattern> CreateAbsencePolicyWorkingPattern(int organisationId, AbsencePolicy absencePolicy, List <WorkingPatternDay> workingPatternDays) { var validationResult = new ValidationResult <WorkingPattern> { Succeeded = true }; try { validationResult.Entity = _hrDataService.CreateAbsencePolicyWorkingPattern(organisationId, absencePolicy, workingPatternDays); } catch (Exception ex) { validationResult.Succeeded = false; validationResult.Errors = new List <string> { ex.InnerMessage() }; validationResult.Exception = ex; } return(validationResult); }
public ValidationResult <WorkingPattern> UpdateAbsencePolicy(int organisationId, AbsencePolicy absencePolicy, List <WorkingPatternDay> workingPatternDays) { var validationResult = new ValidationResult <WorkingPattern> { Succeeded = true }; var absencePolicyAlreadyExists = AbsencePolicyAlreadyExists(organisationId, absencePolicy.AbsencePolicyId, absencePolicy.Name); if (!absencePolicyAlreadyExists.Succeeded) { validationResult.Succeeded = false; validationResult.Errors = new List <string> { absencePolicyAlreadyExists.Errors.FirstOrDefault() }; return(validationResult); } if (!validationResult.Succeeded) { return(validationResult); } try { _hrDataService.UpdateOrganisationEntityEntry(organisationId, absencePolicy); _hrDataService.UpdateAbsencePolicyWorkingPattern(organisationId, absencePolicy.WorkingPatternId.Value, workingPatternDays); validationResult.Entity = _hrDataService.RetrieveAbsencePolicy(organisationId, absencePolicy.AbsencePolicyId).WorkingPattern; } catch (Exception ex) { validationResult.Succeeded = false; validationResult.Errors = new List <string> { ex.InnerMessage() }; validationResult.Exception = ex; } return(validationResult); }
public ValidationResult <AbsencePolicy> CreateAbsencePolicy(int organisationId, AbsencePolicy absencePolicy) { var validationResult = AbsencePolicyAlreadyExists(organisationId, null, absencePolicy.Name); if (!validationResult.Succeeded) { return(validationResult); } try { validationResult.Entity = _hrDataService.CreateAbsencePolicy(organisationId, absencePolicy); } catch (Exception ex) { validationResult.Succeeded = false; validationResult.Errors = new List <string> { ex.InnerMessage() }; validationResult.Exception = ex; } return(validationResult); }