Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public AbsencePolicy CreateAbsencePolicy(int organisationId, AbsencePolicy absencePolicy)
 {
     using (var context = _databaseFactory.Create(organisationId))
     {
         var result = context.AbsencePolicies.Add(absencePolicy);
         context.SaveChanges();
         return(result);
     }
 }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
 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();
     }
 }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }