protected override void Because_of()
 {
     ShiftSchedule shiftSchedule = new ShiftSchedule();
     shiftSchedule.Weeks.Add(_weekToTest.Id, _weekToTest);
     AssessorArgs args = new AssessorArgs() { EmployeeId = _shiftRule.EmployeeId, ItemToAssess = shiftSchedule };
     _result = _shiftRule.Assess(args, out _errors);
 }
        public virtual bool IsValid(ShiftSchedule item, out List<string> hardErrors, out List<string> softErrors)
        {
            bool result = true;
            bool softResult = true;

            hardErrors = new List<string>();
            softErrors = new List<string>();

            ShiftRuleCollection hardRules = null;
            ShiftRuleCollection softRules = null;

            LogSession.Main.EnterMethod(this, "IsValid");
            try
            {
                /*--------- Your code goes here-------*/
                List<Employee> employeeList = this.ShiftRuleFactory.DataAccess.GetEmployees();

                foreach (var employee in employeeList)
                {
                    LogSession.Main.LogMessage(string.Format("Assessing schedule for employee {0}", employee.id));
                    hardRules = this.ShiftRuleFactory.GetHardRules(employee.id);
                    softRules = this.ShiftRuleFactory.GetSoftRules(employee.id);

                    #region LogRules
                    foreach (var hardRule in hardRules)
                    {
                        LogSession.Main.LogObject(string.Format("Hard Rule {0} for employee {1}", hardRule.Name, employee.id), hardRule);
                    }
                    foreach (var softRule in softRules)
                    {
                        LogSession.Main.LogObject(string.Format("Soft Rule {0} for employee {1}", softRule.Name, employee.id), softRule);
                    }
                    #endregion

                    AssessorArgs args = new AssessorArgs() { EmployeeId = employee.id, ItemToAssess = item };

                    //Assess hard rules first
                    List<string> hardRulesErrors = null;
                    result = result & AssessRules(args, hardRules, out hardRulesErrors);
                    if (hardRulesErrors != null)
                        hardErrors.AddRange(hardRulesErrors);

                    //Assess soft rules
                    List<string> softRulesErrors = null;
                    softResult = softResult & AssessRules(args, softRules, out softRulesErrors);
                    if (softRulesErrors != null)
                        softErrors.AddRange(softRulesErrors);

                    LogSession.Main.LogSeparator();
                }
                /*------------------------------------*/
            }
            catch (Exception ex)
            {
                LogSession.Main.LogException(ex);
                throw ex;
            }
            finally
            {
                LogSession.Main.LeaveMethod(this, "IsValid");
            }

            return result;
        }
Exemplo n.º 3
0
        private void PopulateMock(ShiftSchedule schedule)
        {
            List<JsonWeek> jsonSchedule = GetJsonSchedule();
            DateTime initDate = new DateTime(2015, 06, 01);

            int w = 23;
            foreach (var jweek in jsonSchedule)
            {
                Week newWeek = new Week() { Id = w, Start_Date = initDate };

                for (int wday = 1; wday < 8; wday++)
                {
                    WorkingDay workingDay = new WorkingDay() { Id = wday, Week = w };
                    workingDay.Shifts.Add(1, new Shift() { Id = 1, Week = w, WorkingDay = wday });
                    foreach (int employeeId in jsonSchedule[w - 23].Week[wday - 1].AE)
                    {
                        workingDay.Shifts[1].AssignedEmployees.Add(employeeId, new Employee() { id = employeeId, name = "John Doe" });
                    }
                    newWeek.WorkingDays.Add(workingDay.Id, workingDay);
                }
                schedule.Weeks.Add(newWeek.Id, newWeek);
                newWeek.Start_Date = initDate;
                initDate = initDate.AddDays(7);
                LogSession.Main.LogMessage("Week[{0}]: Start date: {1}", newWeek.Id, newWeek.Start_Date);
                w++;
            }
        }
        protected override void Because_of()
        {
            List<string> errors = null;
            AssessorArgs args = null;
            ShiftSchedule shiftSchedule = new ShiftSchedule();
            Week week = new Week();
            week.Id = 50;
            week.Start_Date = new DateTime(2015,07,12);
            WorkingDay wDay = new WorkingDay();
            wDay.Id = 1;
            wDay.Week = week.Id;
            wDay.Shifts.Add(1,_shift);
            week.WorkingDays.Add(wDay.Id, wDay);

            shiftSchedule.Weeks.Add(week.Id, week);
            args = new AssessorArgs() { EmployeeId = _shiftRule.EmployeeId, ItemToAssess = shiftSchedule };
            _result = _shiftRule.Assess(args, out errors);
        }