public override EvaluateSource GetNewValues(EvaluateSource initValues) { ConfigCode scheduleCode = (ConfigCode)ArticleCodeCz.FACT_CONTRACT_TIMESHEET; Result <MonthScheduleValue, string> scheduleResult = InternalValues .FindResultValue <ArticleGeneralResult, MonthScheduleValue>( TargetFilters.TargetCodePlusPartFunc(scheduleCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsRealMonthValue())); if (scheduleResult.IsFailure) { return(ReturnFailureAndError(initValues, scheduleResult.Error)); } MonthScheduleValue scheduleValues = scheduleResult.Value; return(new EvaluateSource { // PROPERTIES SET AbsenceCode = initValues.AbsenceCode, DayFrom = initValues.DayFrom, DayStop = initValues.DayStop, SchedulePiece = initValues.SchedulePiece, ScheduleHours = initValues.ScheduleHours, ScheduleMonth = scheduleValues.HoursMonth.ToArray(), // PROPERTIES SET }); }
public override EvaluateSource GetNewValues(EvaluateSource initValues) { ConfigCode workCode = (ConfigCode)ArticleCodeCz.FACT_POSITION_SCHEDULE; Result <MonthScheduleValue, string> workFindResult = InternalValues .FindResultValue <ArticleGeneralResult, MonthScheduleValue>( TargetFilters.TargetCodePlusPartFunc(workCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsRealMonthValue())); MonthScheduleValue workValuesPrep = workFindResult.Value; ConfigCode termCode = (ConfigCode)ArticleCodeCz.FACT_POSITION_TERM; Result <MonthFromStopValue, string> termFindResult = InternalValues .FindResultValue <ArticleGeneralResult, MonthFromStopValue>( TargetFilters.TargetCodePlusHeadAndSeedFunc(termCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsMonthFromStopValue())); if (ResultMonadUtils.HaveAnyResultFailed(workFindResult, workFindResult)) { return(ReturnFailureAndError(initValues, ResultMonadUtils.FirstFailedResultError(workFindResult, workFindResult))); } MonthFromStopValue termValuesPrep = termFindResult.Value; return(new EvaluateSource { // PROPERTIES SET DayTermFrom = termValuesPrep.PeriodDayFrom, DayTermStop = termValuesPrep.PeriodDayStop, RealMonthHours = workValuesPrep.HoursMonth, // PROPERTIES SET }); }
public override EvaluateSource GetNewValues(EvaluateSource initValues) { ConfigCode scheduleCode = (ConfigCode)ArticleCodeCz.FACT_POSITION_TIMESHEET; ConfigCode absencesCode = (ConfigCode)ArticleCodeCz.FACT_POSITION_ABSENCE; Result <MonthScheduleValue, string> scheduleResult = InternalValues .FindResultValue <ArticleGeneralResult, MonthScheduleValue>( TargetFilters.TargetCodePlusPartFunc(scheduleCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsTermMonthValue())); Result <MonthScheduleValue, string> absencesResult = InternalValues .FindResultValue <ArticleGeneralResult, MonthScheduleValue>( TargetFilters.TargetCodePlusPartFunc(absencesCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsTermMonthValue())); if (ResultMonadUtils.HaveAnyResultFailed(scheduleResult, absencesResult)) { return(ReturnFailureAndError(initValues, ResultMonadUtils.FirstFailedResultError(scheduleResult, absencesResult))); } MonthScheduleValue scheduleValues = scheduleResult.Value; MonthScheduleValue absencesValues = absencesResult.Value; return(new EvaluateSource { // PROPERTIES SET ScheduleMonth = scheduleValues.HoursMonth, AbsencesMonth = absencesValues.HoursMonth, // PROPERTIES SET }); }
public override EvaluateSource GetNewValues(EvaluateSource initValues) { ConfigCode scheduledCode = (ConfigCode)ArticleCodeCz.FACT_POSITION_SCHEDULE; ConfigCode timesheetCode = (ConfigCode)ArticleCodeCz.FACT_POSITION_TIMESHEET; ConfigCode worksheetCode = (ConfigCode)ArticleCodeCz.FACT_POSITION_WORKING; Result <WeekScheduleValue, string> fullWeekResult = InternalValues .FindResultValue <ArticleGeneralResult, WeekScheduleValue>( TargetFilters.TargetCodePlusPartFunc(scheduledCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsFullWeeksValue())); Result <WeekScheduleValue, string> realWeekResult = InternalValues .FindResultValue <ArticleGeneralResult, WeekScheduleValue>( TargetFilters.TargetCodePlusPartFunc(scheduledCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsRealWeeksValue())); Result <MonthScheduleValue, string> timesheetResult = InternalValues .FindResultValue <ArticleGeneralResult, MonthScheduleValue>( TargetFilters.TargetCodePlusPartFunc(timesheetCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsRealMonthValue())); Result <MonthScheduleValue, string> worksheetResult = InternalValues .FindResultValue <ArticleGeneralResult, MonthScheduleValue>( TargetFilters.TargetCodePlusPartFunc(worksheetCode, InternalTarget.Head(), InternalTarget.Part()), (x) => (x.IsTermMonthValue())); if (ResultMonadUtils.HaveAnyResultFailed( fullWeekResult, realWeekResult, timesheetResult, worksheetResult)) { return(ReturnFailureAndError(initValues, ResultMonadUtils.FirstFailedResultError( fullWeekResult, realWeekResult, timesheetResult, worksheetResult))); } WeekScheduleValue fullWeekValues = fullWeekResult.Value; WeekScheduleValue realWeekValues = realWeekResult.Value; MonthScheduleValue timesheetValues = timesheetResult.Value; MonthScheduleValue worksheetValues = worksheetResult.Value; return(new EvaluateSource { // PROPERTIES SET MonthlyAmount = initValues.MonthlyAmount, ShiftLiable = PeriodUtils.TotalWeekHours(fullWeekValues.HoursWeek), ShiftWorked = PeriodUtils.TotalWeekHours(realWeekValues.HoursWeek), HoursLiable = PeriodUtils.TotalMonthHours(timesheetValues.HoursMonth), HoursWorked = PeriodUtils.TotalMonthHours(worksheetValues.HoursMonth), // PROPERTIES SET }); }
protected ResultMonad.Result <PositionEvaluateSource, string> BuildItem(TargetPart part, ResultItem resultTerm, ResultItem resultWork) { ArticleGeneralResult termResult = resultTerm as ArticleGeneralResult; ArticleGeneralResult workResult = resultWork as ArticleGeneralResult; if (MaybeMonadUtils.HaveAnyResultNullValue(termResult, workResult)) { return(Result.Fail <PositionEvaluateSource, string>(CONCEPT_RESULT_INVALID_TEXT)); } Maybe <PositionFromStopValue> termValues = termResult.ReturnPositionTermFromStopValue(); Maybe <MonthFromStopValue> daysValues = termResult.ReturnMonthFromStopValue(); Maybe <MonthScheduleValue> realValues = workResult.ReturnRealMonthValue(); Maybe <MonthScheduleValue> restValues = workResult.ReturnTermMonthValue(); if (MaybeMonadUtils.HaveAnyResultNoValues(termValues, daysValues, realValues, restValues)) { return(Result.Fail <PositionEvaluateSource, string>(CONCEPT_RESULT_INVALID_TEXT)); } PositionFromStopValue termPosition = termValues.Value; MonthFromStopValue daysPosition = daysValues.Value; MonthScheduleValue realSchedule = realValues.Value; MonthScheduleValue restSchedule = restValues.Value; PositionEvaluateSource buildResult = new PositionEvaluateSource { PositionPart = part, DateFrom = termPosition.DateFrom, DayPeriodFrom = daysPosition.PeriodDayFrom, DateStop = termPosition.DateStop, DayPeriodStop = daysPosition.PeriodDayStop, PositionType = termPosition.PositionType, ScheduleMonth = realSchedule.HoursMonth, ScheduleLimit = restSchedule.HoursMonth }; return(Result.Ok <PositionEvaluateSource, string>(buildResult)); }
private static ResultMonad.Result <PositionScheduleEvalDetail, string> BuildItem(TargetPart partCode, ResultItem termItem, ResultItem dataItem) { ArticleGeneralResult resultTerm = termItem as ArticleGeneralResult; ArticleGeneralResult resultData = dataItem as ArticleGeneralResult; if (MaybeMonadUtils.HaveAnyResultNullValue(resultTerm, resultData)) { return(Result.Fail <PositionScheduleEvalDetail, string>(RESULT_DETAILS_INVALID_TEXT)); } Maybe <PositionFromStopValue> termValues = resultTerm.ReturnPositionTermFromStopValue(); Maybe <MonthFromStopValue> daysValues = resultTerm.ReturnMonthFromStopValue(); Maybe <MonthScheduleValue> workValues = resultData.ReturnTermMonthValue(); if (MaybeMonadUtils.HaveAnyResultNoValues(termValues, daysValues, workValues)) { return(Result.Fail <PositionScheduleEvalDetail, string>(RESULT_DETAILS_INVALID_TEXT)); } PositionFromStopValue termPosition = termValues.Value; MonthFromStopValue daysPosition = daysValues.Value; MonthScheduleValue workSchedule = workValues.Value; PositionScheduleEvalDetail buildResult = new PositionScheduleEvalDetail { PositionPart = partCode, DateFrom = termPosition.DateFrom, DayPeriodFrom = daysPosition.PeriodDayFrom, DateStop = termPosition.DateStop, DayPeriodStop = daysPosition.PeriodDayStop, PositionType = termPosition.PositionType, ScheduleWorks = workSchedule.HoursMonth, }; return(Result.Ok <PositionScheduleEvalDetail, string>(buildResult)); }