Aspose.Tasks for C++
Calendar.h
1 #pragma once
2 //-----------------------------------------------------------------------
3 // <copyright file="Calendar.cs" company="Aspose Pty Ltd">
4 // Copyright (c) 2002-2024 Aspose Pty Ltd. All Rights Reserved.
5 // </copyright>
6 //-----------------------------------------------------------------------
7 
8 #include <system/string.h>
9 #include <system/nullable.h>
10 #include <system/iequatable.h>
11 #include <system/guid.h>
12 #include <system/date_time.h>
13 #include <cstdint>
14 
15 #include "aspose.tasks.cpp/NullableBool.h"
16 #include "aspose.tasks.cpp/aspose_tasks_api_defs.h"
17 
18 namespace Aspose
19 {
20 namespace Tasks
21 {
22 class AssignmentBaseline;
23 class AutoRecalculationState;
24 namespace Calculations
25 {
26 class ResourceAssignmentCalculator;
27 class ResourceAssignmentPeakCalculator;
28 class ResourceAssignmentRateByDateEnumerator;
29 class ResourceAssignmentVarianceCalculator;
30 class ResourceAssignmentWorkCalculator;
31 class ResourceCalculator;
32 class ResourceOverAllocationCalculator;
33 class SummaryTaskCalculator;
34 class TaskByAssignmentCalculator;
35 class TaskProgressCalculator;
36 class TaskSlackCalculator;
37 class TaskStatusCalculator;
38 class TaskVarianceCalculator;
39 class TimephasedDataCalculator;
40 class TimeScaledCalculator;
41 } // namespace Calculations
42 class CalendarCollection;
43 class CalendarDatesCalculator;
44 class CalendarException;
45 class CalendarExceptionCollection;
46 class CalendarExceptionCollectionWithCache;
47 class CalendarTDMaker;
48 namespace Connectivity
49 {
50 class MpdCalendarMapper;
51 class MspCalendarMapper;
52 class MspDbUtils;
53 class PmCalendarMapper;
54 class PrimaveraDbReader;
55 } // namespace Connectivity
56 class DailyCalendarRepetition;
57 class DailyWorkRepetition;
58 class DatesCalculator;
59 enum class DayType;
60 class Duration;
61 class EVCalculator;
62 namespace Filters
63 {
64 class CalendarRootFilter;
65 } // namespace Filters
66 class FixedDurationEffortDrivenTaskPlanner;
67 template <typename, typename> class IKeyValueCache;
68 namespace IO
69 {
70 namespace Html
71 {
72 class HtmlCalendarTableReader;
73 } // namespace Html
74 namespace Mpx
75 {
76 class MpxReader;
77 } // namespace Mpx
78 namespace MSProject
79 {
80 class Mpp12CalendarReader;
81 class Mpp12CalendarWriter;
82 class MPP12Reader;
83 class Mpp14CalendarReader;
84 class Mpp14CalendarWriter;
85 class MPP14Reader;
86 class MPP14ResourceWriter;
87 class Mpp15CalendarReader;
88 class Mpp15CalendarWriter;
89 class Mpp9CalendarReader;
90 class Mpp9CalendarWriter;
91 class MPP9Reader;
92 class MppCalendarReader;
93 class MPPProjectPropsReader;
94 class MPPProjectPropsWriter;
95 class MPPReader;
96 class MPPResourceReader;
97 class MPPTaskWriter;
98 class MPPTimephasedDataReader;
99 class MppTimephasedDataWriter;
100 class MppWeekDayReader;
101 } // namespace MSProject
102 namespace PrimaveraXml
103 {
104 class P6XmlUtils;
105 class PrimaveraCalendarNodeReader;
106 class PrimaveraReader;
107 class PrimaveraResourceNodeReader;
108 } // namespace PrimaveraXml
109 namespace Pwa
110 {
111 namespace InternalApi
112 {
113 class InternalApiProjectSerializer;
114 namespace Mapping
115 {
116 class CalendarToRawValuesMapper;
117 class ProjectCalendarsMapper;
118 class ProjectRootMapper;
119 } // namespace Mapping
120 } // namespace InternalApi
121 } // namespace Pwa
122 namespace Xer
123 {
124 class XerAssignmentReader;
125 class XerCalendarReader;
126 class XerPrimaveraReader;
127 class XerProjectNormalizer;
128 } // namespace Xer
129 namespace Xml
130 {
131 class CalendarFactory;
132 class CalendarNodeReader;
133 class CalendarNodeWriter;
134 class ResourceNodeReader;
135 class TaskNodeReader;
136 class TimephasedDataNodeReader;
137 class WeekDayNodeReader;
138 class XmlReader;
139 class XmlWriter;
140 } // namespace Xml
141 } // namespace IO
142 class IReadOnlyWorkingTimeCollection;
143 namespace Leveling
144 {
145 class LevelingAlgorithm;
146 } // namespace Leveling
147 class ManualState;
148 class MonthlyRepetitionBase;
149 class NullableBool;
150 class PercentCompleteCalculator;
151 class ProjDateDiff;
152 class ProjDateSub;
153 class Project;
154 class ProjectIntegrityValidator;
155 class ProjectState;
156 class ProjectWorkUpdater;
157 namespace Recalculation
158 {
159 class TaskSplitCalculator;
160 class TimephasedDataCalculationUtil;
161 } // namespace Recalculation
162 namespace Recurring
163 {
164 namespace Calculators
165 {
166 class CalendarDayRecurrenceDateCalculator;
167 class DefaultRecurrenceDateCalculator;
168 class RecurrenceDateCalculatorBase;
169 } // namespace Calculators
170 } // namespace Recurring
171 class Resource;
172 class ResourceAssignment;
173 namespace Saving
174 {
175 class HtmlCalendarTable;
176 class MpxWriter;
177 class PrimaveraCalendarNodeWriter;
178 class XerCalendarTable;
179 } // namespace Saving
180 namespace Scheduling
181 {
182 class ConstraintSolver;
183 class FromStartScheduler;
184 class TopsortCriticalPath;
185 } // namespace Scheduling
186 class SplitPart;
187 class SplitsCalculator;
188 class Task;
189 class TaskBaseline;
190 class TaskPlanner;
191 class TaskPlannerAssignmentManager;
192 class TaskWarningCalculator;
193 namespace Timephased
194 {
195 class TimephasedDataByScaledEnumerator;
196 class TimeScaledWorkContourBuilder;
197 } // namespace Timephased
198 class TimephasedDataMaker;
199 class TimephasedWorkCostSelector;
200 class TimeScaledExceptions;
201 class TimeScaledParentWorkUnit;
202 namespace Util
203 {
204 class CalendarHelper;
205 class PrimaveraSummaryTasksCalculator;
206 class PrimaveraTasksProcessor;
207 } // namespace Util
208 namespace Validators
209 {
210 class RecurringTaskParametersValidator;
211 } // namespace Validators
212 class WeekDay;
213 class WeekDayCollection;
214 class WeeklyRepetitionBase;
215 class WorkingTimeCollection;
216 class WorkUnit;
217 class WorkWeekCollection;
218 class YearlyRepetitionBase;
219 } // namespace Tasks
220 } // namespace Aspose
221 namespace System
222 {
223 class TimeSpan;
224 } // namespace System
225 
226 namespace Aspose {
227 
228 namespace Tasks {
229 
230 /// <summary>
231 /// Represents a calendar used in a project.
232 /// </summary>
233 /// <example>
234 /// How to create simple calendar from scratch.
235 /// <code>
236 /// [C#]
237 /// // create empty calendar
238 /// Calendar calendar = new Calendar("New calendar");
239 /// // adds default working days (8 working hours from 9:00 to 17:00)
240 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
241 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
242 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
243 /// // create new new working day
244 /// WeekDay myWeekDay = new WeekDay(DayType.Thursday);
245 /// // Sets working time. Only time part of DateTime is important
246 /// WorkingTime wt1 = new WorkingTime();
247 /// wt1.FromTime = new DateTime(1, 1, 1, 6, 0, 0, 0);
248 /// wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
249 /// WorkingTime wt2 = new WorkingTime();
250 /// wt2.FromTime = new DateTime(1, 1, 1, 14, 0, 0, 0);
251 /// wt2.ToTime = new DateTime(1, 1, 1, 18, 0, 0, 0);
252 /// myWeekDay.WorkingTimes.Add(wt1);
253 /// myWeekDay.WorkingTimes.Add(wt2);
254 /// myWeekDay.DayWorking = true;
255 /// calendar.Days.Add(myWeekDay);
256 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Friday));
257 /// // adds weekend
258 /// calendar.Days.Add(new WeekDay(DayType.Saturday));
259 /// calendar.Days.Add(new WeekDay(DayType.Sunday));
260 /// </code>
261 /// <code>
262 /// [VB]
263 /// ' create empty calendar
264 /// Dim calendar As Calendar = New Calendar("New calendar")
265 /// ' adds default working days (8 working hours from 9:00 to 17:00)
266 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday))
267 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday))
268 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday))
269 /// ' create new new working day
270 /// Dim myWeekDay As WeekDay = New WeekDay(DayType.Thursday)
271 /// ' Sets working time. Only time part of DateTime is important
272 /// Dim wt1 As WorkingTime = New WorkingTime()
273 /// wt1.FromTime = New DateTime(1, 1, 1, 6, 0, 0, 0)
274 /// wt1.ToTime = New DateTime(1, 1, 1, 12, 0, 0, 0)
275 /// Dim wt2 As WorkingTime = New WorkingTime()
276 /// wt2.FromTime = New DateTime(1, 1, 1, 14, 0, 0, 0)
277 /// wt2.ToTime = New DateTime(1, 1, 1, 18, 0, 0, 0)
278 /// myWeekDay.WorkingTimes.Add(wt1)
279 /// myWeekDay.WorkingTimes.Add(wt2)
280 /// myWeekDay.DayWorking = True
281 /// calendar.Days.Add(myWeekDay)
282 /// calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Friday))
283 /// ' adds weekend
284 /// calendar.Days.Add(New WeekDay(DayType.Saturday))
285 /// calendar.Days.Add(New WeekDay(DayType.Sunday))
286 /// </code>
287 /// </example>
288 /// <remarks>
289 /// Calendars are used to define standard working and non-working times.
290 /// Projects must have one base calendar. Tasks and resources can have
291 /// their own non-base calendars that are based on a base calendar.
292 /// </remarks>
293 class ASPOSE_TASKS_SHARED_CLASS Calendar : public System::Object
294 {
295  typedef Calendar ThisType;
296  typedef System::Object BaseType;
297 
298  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
299  ASPOSE_TASKS_SHARED_RTTI_INFO_DECL();
300 
301 protected:
302 
303  class CalendarCacheKey;
304 
305 private:
307  friend class Aspose::Tasks::Calculations::ResourceOverAllocationCalculator;
308  friend class Aspose::Tasks::Calculations::TimeScaledCalculator;
309  friend class Aspose::Tasks::Calculations::ResourceAssignmentRateByDateEnumerator;
310  friend class Aspose::Tasks::Calculations::ResourceAssignmentCalculator;
311  friend class Aspose::Tasks::Calculations::ResourceAssignmentPeakCalculator;
312  friend class Aspose::Tasks::Calculations::ResourceAssignmentWorkCalculator;
313  friend class Aspose::Tasks::Calculations::ResourceCalculator;
314  friend class Aspose::Tasks::Calculations::SummaryTaskCalculator;
315  friend class Aspose::Tasks::Calculations::TaskByAssignmentCalculator;
316  friend class Aspose::Tasks::Calculations::TaskProgressCalculator;
317  friend class Aspose::Tasks::Calculations::ResourceAssignmentVarianceCalculator;
318  friend class Aspose::Tasks::Calculations::TaskSlackCalculator;
319  friend class Aspose::Tasks::Calculations::TaskVarianceCalculator;
320  friend class Aspose::Tasks::Calculations::TaskStatusCalculator;
321  friend class Aspose::Tasks::Calculations::TimephasedDataCalculator;
322  friend class Aspose::Tasks::Calculations::TimephasedDataCalculator;
324  friend class Aspose::Tasks::IO::PrimaveraXml::P6XmlUtils;
325  friend class Aspose::Tasks::IO::PrimaveraXml::PrimaveraCalendarNodeReader;
326  friend class Aspose::Tasks::IO::PrimaveraXml::PrimaveraReader;
327  friend class Aspose::Tasks::IO::PrimaveraXml::PrimaveraResourceNodeReader;
328  friend class Aspose::Tasks::Leveling::LevelingAlgorithm;
329  friend class Aspose::Tasks::Project;
331  friend class Aspose::Tasks::Task;
332  friend class Aspose::Tasks::Timephased::TimeScaledWorkContourBuilder;
333  friend class Aspose::Tasks::Timephased::TimephasedDataByScaledEnumerator;
334  friend class Aspose::Tasks::Recalculation::TimephasedDataCalculationUtil;
335  friend class Aspose::Tasks::TimeScaledParentWorkUnit;
336  friend class Aspose::Tasks::Util::PrimaveraSummaryTasksCalculator;
337  friend class Aspose::Tasks::Filters::CalendarRootFilter;
338  friend class Aspose::Tasks::IO::Pwa::InternalApi::Mapping::CalendarToRawValuesMapper;
339  friend class Aspose::Tasks::IO::Pwa::InternalApi::InternalApiProjectSerializer;
340  friend class Aspose::Tasks::IO::Pwa::InternalApi::Mapping::ProjectRootMapper;
341  friend class Aspose::Tasks::IO::Xml::CalendarFactory;
342  friend class Aspose::Tasks::EVCalculator;
343  friend class Aspose::Tasks::ProjDateDiff;
344  friend class Aspose::Tasks::ProjDateSub;
345  friend class Aspose::Tasks::Connectivity::MpdCalendarMapper;
346  friend class Aspose::Tasks::Connectivity::MspCalendarMapper;
347  friend class Aspose::Tasks::Connectivity::MspDbUtils;
348  friend class Aspose::Tasks::Connectivity::PmCalendarMapper;
349  friend class Aspose::Tasks::Connectivity::PrimaveraDbReader;
350  friend class Aspose::Tasks::IO::Html::HtmlCalendarTableReader;
351  friend class Aspose::Tasks::IO::MSProject::Mpp12CalendarReader;
352  friend class Aspose::Tasks::IO::MSProject::MppCalendarReader;
353  friend class Aspose::Tasks::IO::MSProject::MPP12Reader;
354  friend class Aspose::Tasks::IO::MSProject::MPPReader;
355  friend class Aspose::Tasks::IO::MSProject::MPPResourceReader;
356  friend class Aspose::Tasks::IO::MSProject::MppWeekDayReader;
357  friend class Aspose::Tasks::IO::MSProject::Mpp14CalendarReader;
358  friend class Aspose::Tasks::IO::MSProject::MPP14Reader;
359  friend class Aspose::Tasks::IO::MSProject::Mpp15CalendarReader;
360  friend class Aspose::Tasks::IO::MSProject::Mpp15CalendarWriter;
361  friend class Aspose::Tasks::IO::MSProject::Mpp14CalendarWriter;
362  friend class Aspose::Tasks::IO::MSProject::MPP14ResourceWriter;
363  friend class Aspose::Tasks::IO::MSProject::Mpp9CalendarReader;
364  friend class Aspose::Tasks::IO::MSProject::MPP9Reader;
365  friend class Aspose::Tasks::IO::MSProject::MPPProjectPropsReader;
366  friend class Aspose::Tasks::IO::MSProject::MPPTimephasedDataReader;
367  friend class Aspose::Tasks::IO::MSProject::Mpp12CalendarWriter;
368  friend class Aspose::Tasks::IO::MSProject::MPPTaskWriter;
369  friend class Aspose::Tasks::IO::MSProject::Mpp9CalendarWriter;
370  friend class Aspose::Tasks::IO::MSProject::MPPProjectPropsWriter;
371  friend class Aspose::Tasks::IO::MSProject::MppTimephasedDataWriter;
372  friend class Aspose::Tasks::IO::Mpx::MpxReader;
373  friend class Aspose::Tasks::IO::Xer::XerPrimaveraReader;
374  friend class Aspose::Tasks::IO::Xer::XerAssignmentReader;
375  friend class Aspose::Tasks::IO::Xer::XerCalendarReader;
376  friend class Aspose::Tasks::IO::Xer::XerProjectNormalizer;
377  friend class Aspose::Tasks::IO::Pwa::InternalApi::Mapping::ProjectCalendarsMapper;
378  friend class Aspose::Tasks::IO::Xml::CalendarNodeReader;
379  friend class Aspose::Tasks::IO::Xml::CalendarNodeWriter;
380  friend class Aspose::Tasks::IO::Xml::ResourceNodeReader;
381  friend class Aspose::Tasks::IO::Xml::TaskNodeReader;
382  friend class Aspose::Tasks::IO::Xml::TimephasedDataNodeReader;
383  friend class Aspose::Tasks::IO::Xml::WeekDayNodeReader;
384  friend class Aspose::Tasks::IO::Xml::XmlReader;
385  friend class Aspose::Tasks::IO::Xml::XmlWriter;
386  friend class Aspose::Tasks::ProjectIntegrityValidator;
387  friend class Aspose::Tasks::AutoRecalculationState;
388  friend class Aspose::Tasks::ProjectState;
389  friend class Aspose::Tasks::CalendarDatesCalculator;
390  friend class Aspose::Tasks::DatesCalculator;
391  friend class Aspose::Tasks::TaskPlannerAssignmentManager;
392  friend class Aspose::Tasks::FixedDurationEffortDrivenTaskPlanner;
393  friend class Aspose::Tasks::TaskPlanner;
394  friend class Aspose::Tasks::ManualState;
395  friend class Aspose::Tasks::PercentCompleteCalculator;
396  friend class Aspose::Tasks::ProjectWorkUpdater;
397  friend class Aspose::Tasks::SplitsCalculator;
398  friend class Aspose::Tasks::Recalculation::TaskSplitCalculator;
399  friend class Aspose::Tasks::TaskWarningCalculator;
400  friend class Aspose::Tasks::Recurring::Calculators::CalendarDayRecurrenceDateCalculator;
401  friend class Aspose::Tasks::Recurring::Calculators::RecurrenceDateCalculatorBase;
404  friend class Aspose::Tasks::Recurring::Calculators::DefaultRecurrenceDateCalculator;
408  friend class Aspose::Tasks::Saving::HtmlCalendarTable;
409  friend class Aspose::Tasks::Saving::MpxWriter;
410  friend class Aspose::Tasks::Saving::XerCalendarTable;
411  friend class Aspose::Tasks::Saving::PrimaveraCalendarNodeWriter;
412  friend class Aspose::Tasks::Scheduling::ConstraintSolver;
413  friend class Aspose::Tasks::Scheduling::TopsortCriticalPath;
414  friend class Aspose::Tasks::Scheduling::FromStartScheduler;
415  friend class Aspose::Tasks::SplitPart;
416  friend class Aspose::Tasks::TaskBaseline;
417  friend class Aspose::Tasks::CalendarTDMaker;
418  friend class Aspose::Tasks::TimephasedDataMaker;
419  friend class Aspose::Tasks::TimephasedWorkCostSelector;
420  friend class Aspose::Tasks::Util::CalendarHelper;
421  friend class Aspose::Tasks::Util::PrimaveraTasksProcessor;
422  friend class Aspose::Tasks::Validators::RecurringTaskParametersValidator;
423  friend ASPOSE_TASKS_SHARED_API bool operator ==(Calendar::CalendarCacheKey left, Calendar::CalendarCacheKey right);
424  friend ASPOSE_TASKS_SHARED_API bool operator !=(Calendar::CalendarCacheKey left, Calendar::CalendarCacheKey right);
425 
426 protected:
427 
428  class ASPOSE_TASKS_SHARED_CLASS CalendarCacheKey : public System::IEquatable<Aspose::Tasks::Calendar::CalendarCacheKey>, public System::Details::BoxableObjectBase
429  {
430  typedef CalendarCacheKey ThisType;
431  typedef System::IEquatable<Aspose::Tasks::Calendar::CalendarCacheKey> BaseType;
432 
433  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
434  ASPOSE_TASKS_SHARED_RTTI_INFO_DECL();
435 
436  friend ASPOSE_TASKS_SHARED_API bool operator ==(Calendar::CalendarCacheKey left, Calendar::CalendarCacheKey right);
437  friend ASPOSE_TASKS_SHARED_API bool operator !=(Calendar::CalendarCacheKey left, Calendar::CalendarCacheKey right);
438 
439  public:
440 
441  ASPOSE_TASKS_SHARED_API CalendarCacheKey(int32_t calUid, System::DateTime start, System::DateTime finish, double units);
442 
443  /// <inheritdoc ></inheritdoc>
444  ASPOSE_TASKS_SHARED_API bool Equals(Calendar::CalendarCacheKey other) override;
445  /// <inheritdoc ></inheritdoc>
446  ASPOSE_TASKS_SHARED_API bool Equals(System::SharedPtr<System::Object> obj) override;
447  /// <inheritdoc ></inheritdoc>
448  ASPOSE_TASKS_SHARED_API int32_t GetHashCode() const override;
449 
450  ASPOSE_TASKS_SHARED_API CalendarCacheKey();
451 
452  protected:
453 
454  #ifdef ASPOSE_GET_SHARED_MEMBERS
455  ASPOSE_TASKS_SHARED_API void GetSharedMembers(System::Object::shared_members_type& result) const override;
456  #endif
457 
458 
459  private:
460 
461  double units;
462  int32_t calUid;
463  System::DateTime start;
464  System::DateTime finish;
465  int32_t cachedHashCode;
466 
467  };
468 
469 
470 public:
471 
472  /// <summary>
473  /// Gets the name of the calendar.
474  /// </summary>
475  ASPOSE_TASKS_SHARED_API System::String get_Name() const;
476  /// <summary>
477  /// Sets the name of the calendar.
478  /// </summary>
479  ASPOSE_TASKS_SHARED_API void set_Name(const System::String& value);
480  /// <summary>
481  /// Gets the unique identifier of the calendar.
482  /// </summary>
483  ASPOSE_TASKS_SHARED_API int32_t get_Uid() const;
484  /// <summary>
485  /// Sets the unique identifier of the calendar.
486  /// </summary>
487  ASPOSE_TASKS_SHARED_API void set_Uid(int32_t value);
488  /// <summary>
489  /// Gets WeekDaysCollection for this calendar.
490  /// The collection of weekdays that defines the calendar.
491  /// </summary>
492  ASPOSE_TASKS_SHARED_API const System::SharedPtr<WeekDayCollection>& get_WeekDays() const;
493  /// <summary>
494  /// Gets CalendarExceptionCollection object.
495  /// The collection of exceptions that is associated with the calendar.
496  /// </summary>
497  ASPOSE_TASKS_SHARED_API System::SharedPtr<CalendarExceptionCollection> get_Exceptions() const;
498  /// <summary>
499  /// Gets WorkWeekCollections object.
500  /// The collection of work weeks that is associated with the calendar.
501  /// </summary>
502  ASPOSE_TASKS_SHARED_API const System::SharedPtr<WorkWeekCollection>& get_WorkWeeks() const;
503  /// <summary>
504  /// Gets a value indicating whether the calendar is a base calendar.
505  /// </summary>
506  ASPOSE_TASKS_SHARED_API bool get_IsBaseCalendar();
507  /// <summary>
508  /// Gets the base calendar on which this calendar depends.
509  /// Only applicable if the calendar is not a base calendar.
510  /// </summary>
511  ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> get_BaseCalendar() const;
512  /// <summary>
513  /// Sets the base calendar on which this calendar depends.
514  /// Only applicable if the calendar is not a base calendar.
515  /// </summary>
516  ASPOSE_TASKS_SHARED_API void set_BaseCalendar(const System::SharedPtr<Calendar>& value);
517  /// <summary>
518  /// Gets a value indicating whether the calendar is a baseline calendar.
519  /// </summary>
520  ASPOSE_TASKS_SHARED_API bool get_IsBaselineCalendar();
521  /// <summary>
522  /// Sets a value indicating whether the calendar is a baseline calendar.
523  /// </summary>
524  ASPOSE_TASKS_SHARED_API void set_IsBaselineCalendar(bool value);
525  /// <summary>
526  /// Gets calendar's Guid.
527  /// </summary>
528  ASPOSE_TASKS_SHARED_API System::String get_Guid() const;
529 
530  /// <summary>
531  /// Creates default standard calendar.
532  /// </summary>
533  /// <param name="calendar">Calendar to make standard calendar from.</param>
534  /// <returns>Calendar with 5 working days (Monday-Friday) with working times 8-12 and 13-17.</returns>
535  static ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> MakeStandardCalendar(const System::SharedPtr<Calendar>& calendar);
536  /// <summary>
537  /// Makes a given Calendar to be a 24Hour Calendar.
538  /// 24Hours Calendar is a Calendar in which every day of week is working with Round-the-clock working hours.
539  /// </summary>
540  /// <param name="calendar">Calendar to make 24 Hours Calendar from.</param>
541  /// <returns>24Hour Calendar.</returns>
542  static ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> Make24HourCalendar(const System::SharedPtr<Calendar>& calendar);
543  /// <summary>
544  /// Makes a given Calendar as Night Shift Calendar.
545  /// </summary>
546  /// <param name="calendar">Calendar to make Night Shift Calendar.</param>
547  /// <returns>Night Shift Calendar.</returns>
548  static ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> MakeNightShiftCalendar(const System::SharedPtr<Calendar>& calendar);
549  /// <summary>
550  /// Returns a value indicating whether this instance is equal to a specified object.
551  /// </summary>
552  /// <param name="obj">The object to compare with this instance.</param>
553  /// <returns><b>True</b> if o is a Calendar that has the same Uid value as this instance; otherwise, <b>false</b>.</returns>
554  ASPOSE_TASKS_SHARED_API bool Equals(System::SharedPtr<System::Object> obj) override;
555  /// <summary>
556  /// Returns a hash code for the instance of the class.
557  /// </summary>
558  /// <returns>a hash code for this object.</returns>
559  ASPOSE_TASKS_SHARED_API int32_t GetHashCode() const override;
560  /// <summary>
561  /// Removes calendar from project.
562  /// </summary>
563  ASPOSE_TASKS_SHARED_API void Delete();
564  /// <summary>
565  /// Returns StartDate based on specified FinishDate and Duration.
566  /// </summary>
567  /// <param name="finish">The specified finish date.</param>
568  /// <param name="duration">The specified work duration.</param>
569  /// <returns>Calculated StartDate.</returns>
570  ASPOSE_TASKS_SHARED_API System::DateTime GetStartDateFromFinishAndDuration(System::DateTime finish, Duration duration);
571  /// <summary>
572  /// Returns StartDate based on specified FinishDate and Duration.
573  /// </summary>
574  /// <param name="finish">The specified finish date.</param>
575  /// <param name="duration">The specified work duration.</param>
576  /// <returns>Calculated StartDate.</returns>
577  ASPOSE_TASKS_SHARED_API System::DateTime GetStartDateFromFinishAndDuration(System::DateTime finish, System::TimeSpan duration);
578  /// <summary>
579  /// Determines whether the day is working day.
580  /// </summary>
581  /// <param name="dt">The date to check day is working for.</param>
582  /// <returns>True if the day is working day.</returns>
583  ASPOSE_TASKS_SHARED_API bool IsDayWorking(System::DateTime dt);
584  /// <summary>
585  /// Return working hours for the specified dates.
586  /// </summary>
587  /// <param name="start">Start date.</param>
588  /// <param name="finish">Finish date.</param>
589  /// <returns>Working hours.</returns>
590  ASPOSE_TASKS_SHARED_API System::SharedPtr<WorkUnit> GetWorkingHours(System::DateTime start, System::DateTime finish);
591  /// <summary>
592  /// Calculates the date when the specified amount of work time will pass according to the calendar.
593  /// </summary>
594  /// <param name="start">Start date.</param>
595  /// <param name="work">Work duration.</param>
596  /// <returns>Finish date.</returns>
597  ASPOSE_TASKS_SHARED_API System::DateTime GetFinishDateByStartAndWork(System::DateTime start, Duration work);
598  /// <summary>
599  /// Calculates the date when the specified amount of work time will pass according to the calendar.
600  /// </summary>
601  /// <param name="start">Start date.</param>
602  /// <param name="work">Work duration.</param>
603  /// <returns>Finish date.</returns>
604  ASPOSE_TASKS_SHARED_API System::DateTime GetFinishDateByStartAndWork(System::DateTime start, System::TimeSpan work);
605  /// <summary>
606  /// Calculates the task finish date and time from its start date, split parts and the duration.
607  /// </summary>
608  /// <param name="task">The task to get finish date for.</param>
609  /// <param name="duration">The task duration to split on.</param>
610  /// <returns>Task's finish date.</returns>
611  /// <remarks>Returns DateTime.MinValue if task is summary, null or its start date is not set.</remarks>
612  ASPOSE_TASKS_SHARED_API System::DateTime GetTaskFinishDateFromDuration(const System::SharedPtr<Task>& task, System::TimeSpan duration);
613  /// <summary>
614  /// Returns amount of working hours at the date.
615  /// </summary>
616  /// <param name="dt">The date to get working hours for.</param>
617  /// <returns>Working hours.</returns>
618  ASPOSE_TASKS_SHARED_API System::TimeSpan GetWorkingHours(System::DateTime dt);
619  /// <summary>
620  /// Returns <see cref="WorkingTimeCollection"></see> of working times for the specified date.
621  /// </summary>
622  /// <param name="dt">The date to get working times for.</param>
623  /// <returns>List of <see cref="WorkingTime"></see>.</returns>
624  ASPOSE_TASKS_SHARED_API System::SharedPtr<WorkingTimeCollection> GetWorkingTimes(System::DateTime dt);
625  /// <summary>
626  /// Calculates previous working date end from the specified date.
627  /// </summary>
628  /// <param name="date">the specified instance of <see cref="DateTime"></see> struct.</param>
629  /// <returns>Previous working day start <see cref="System::DateTime"></see></returns>
630  ASPOSE_TASKS_SHARED_API System::DateTime GetPreviousWorkingDayEnd(System::DateTime date);
631  /// <summary>
632  /// Calculates next working day start from the date.
633  /// </summary>
634  /// <param name="date">The date to get next working day start for.</param>
635  /// <returns>Next working day start <see cref="System::DateTime"></see>.</returns>
636  ASPOSE_TASKS_SHARED_API System::DateTime GetNextWorkingDayStart(System::DateTime date);
637 
638 protected:
639 
640  /// <summary>
641  /// Gets WeekDaysCollection for this calendar.
642  /// The collection of weekdays that defines the calendar.
643  /// </summary>
644  ASPOSE_TASKS_SHARED_API void set_WeekDays(const System::SharedPtr<WeekDayCollection>& value);
645  /// <summary>
646  /// Gets calendar's Guid.
647  /// </summary>
648  ASPOSE_TASKS_SHARED_API void set_Guid(const System::String& value);
649  ASPOSE_TASKS_SHARED_API const System::SharedPtr<Project>& get_ParentProject() const;
650  ASPOSE_TASKS_SHARED_API void set_ParentProject(const System::SharedPtr<Project>& value);
651  ASPOSE_TASKS_SHARED_API NullableBool get_NullableIsBaselineCalendar() const;
652  ASPOSE_TASKS_SHARED_API void set_NullableIsBaselineCalendar(NullableBool value);
653  ASPOSE_TASKS_SHARED_API int32_t get_ResourceUid() const;
654  ASPOSE_TASKS_SHARED_API void set_ResourceUid(int32_t value);
655  ASPOSE_TASKS_SHARED_API bool get_IsNull() const;
656  ASPOSE_TASKS_SHARED_API void set_IsNull(bool value);
657  ASPOSE_TASKS_SHARED_API bool get_IsZeroResourceCalendar();
658  ASPOSE_TASKS_SHARED_API System::Guid get_UnknownGuid() const;
659  ASPOSE_TASKS_SHARED_API void set_UnknownGuid(System::Guid value);
660  ASPOSE_TASKS_SHARED_API System::SharedPtr<Aspose::Tasks::Resource> get_Resource() const;
661  ASPOSE_TASKS_SHARED_API void set_Resource(const System::SharedPtr<Aspose::Tasks::Resource>& value);
662  ASPOSE_TASKS_SHARED_API bool get_Is24HourCalendar();
663  ASPOSE_TASKS_SHARED_API int32_t get_NonWorkingDayCount();
664  ASPOSE_TASKS_SHARED_API int32_t get_WorkingDayCount();
665  ASPOSE_TASKS_SHARED_API bool get_IsCacheEnabled();
666  ASPOSE_TASKS_SHARED_API void set_IsCacheEnabled(bool value);
667 
668  /// <summary>
669  /// Initializes a new instance of the <see cref="Calendar"></see> class.
670  /// </summary>
671  ASPOSE_TASKS_SHARED_API Calendar();
672 
673  ASPOSE_TASKS_SHARED_API MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(Calendar, CODEPORTING_ARGS());
674 
675  /// <summary>
676  /// Initializes a new instance of the <see cref="Calendar"></see> class and sets Id value.
677  /// </summary>
678  /// <param name="uid">Unique identifier.</param>
679  ASPOSE_TASKS_SHARED_API Calendar(int32_t uid);
680 
681  ASPOSE_TASKS_SHARED_API MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(Calendar, CODEPORTING_ARGS(int32_t uid));
682  ASPOSE_TASKS_SHARED_API System::TimeSpan GetWorkingHoursTimeSpan(System::DateTime start, System::DateTime finish);
683  ASPOSE_TASKS_SHARED_API bool IsDayOff(System::DateTime date);
684  ASPOSE_TASKS_SHARED_API System::DateTime GetFinishDateByStartAndDuration(System::DateTime start, Duration duration, bool isLast, bool daysOff);
685  ASPOSE_TASKS_SHARED_API System::DateTime GetFinishDateByStartAndDuration(System::DateTime start, System::TimeSpan duration, bool isLast, bool daysOff);
686  ASPOSE_TASKS_SHARED_API System::DateTime GetTaskFinishDateFromDuration(const System::SharedPtr<Task>& task, Duration duration);
687  ASPOSE_TASKS_SHARED_API System::DateTime GetFinishDateFromStartAndDuration(const System::SharedPtr<Task>& task, System::DateTime start, Duration duration);
688  ASPOSE_TASKS_SHARED_API System::DateTime GetStartDateFromFinishAndDuration(const System::SharedPtr<Task>& task, System::DateTime finishDate, Duration duration);
689  /// <summary>
690  /// Calculates task finish date, splits included.
691  /// </summary>
692  /// <param name="task">Task to calculate finish for.</param>
693  /// <param name="start">Start date to calculate finish from.</param>
694  /// <param name="duration">Duration</param>
695  /// <returns>Calculated task finish date.</returns>
696  ASPOSE_TASKS_SHARED_API System::DateTime GetFinishDateFromStartAndDuration(const System::SharedPtr<Task>& task, System::DateTime start, System::TimeSpan duration);
697  /// <summary>
698  /// Calculates task start date, splits included.
699  /// </summary>
700  /// <param name="task">Task to calculate start date for.</param>
701  /// <param name="finishDate">Finish date to calculate start from.</param>
702  /// <param name="duration">Duration</param>
703  /// <returns>Calculated task start date.</returns>
704  ASPOSE_TASKS_SHARED_API System::DateTime GetStartDateFromFinishAndDuration(const System::SharedPtr<Task>& task, System::DateTime finishDate, System::TimeSpan duration);
705  ASPOSE_TASKS_SHARED_API System::TimeSpan GetWork(System::DateTime start, System::DateTime end, const System::SharedPtr<Calendar>& anotherCalendar);
706  ASPOSE_TASKS_SHARED_API System::TimeSpan GetWork(System::DateTime start, System::DateTime end, System::SharedPtr<Calendar> anotherCalendar, bool trimSeconds);
707  /// <summary>
708  /// Calculates next working time start beginning from the date and time.
709  /// </summary>
710  /// <param name="date">The date and time.</param>
711  /// <returns>Next working time start.</returns>
712  ASPOSE_TASKS_SHARED_API System::DateTime GetWorkStart(System::DateTime date);
713  ASPOSE_TASKS_SHARED_API System::DateTime GetWorkStartOrDefault(System::DateTime date);
714  ASPOSE_TASKS_SHARED_API System::DateTime GetWorkStart(System::DateTime date, const System::SharedPtr<Calendar>& anotherCalendar);
715  ASPOSE_TASKS_SHARED_API System::DateTime GetPrevWorkingTimeEnd(System::DateTime date);
716  ASPOSE_TASKS_SHARED_API bool IsEmpty();
717  ASPOSE_TASKS_SHARED_API bool IsWorkDayEnd(System::DateTime date);
718  ASPOSE_TASKS_SHARED_API bool IsWorkingTimeEnd(System::DateTime date);
719  ASPOSE_TASKS_SHARED_API bool IsWorkDayStart(System::DateTime date);
720  ASPOSE_TASKS_SHARED_API bool IsNonworkingTime(System::DateTime date);
721  ASPOSE_TASKS_SHARED_API bool IsWorkingTimeStart(System::DateTime date);
722  ASPOSE_TASKS_SHARED_API System::DateTime GetNextDayStart(System::DateTime date);
723  ASPOSE_TASKS_SHARED_API System::DateTime GetNextDayStart(System::DateTime date, System::TimeSpan nonWorkingDayStart);
724  ASPOSE_TASKS_SHARED_API System::DateTime GetDayStart(System::DateTime date);
725  ASPOSE_TASKS_SHARED_API int32_t GetWorkingDaysCount(System::DateTime start, System::DateTime end);
726  /// <summary>
727  /// Calculates the date when the specified amount of work time will pass according to the calendar and another calendar (resource calendar, for example)
728  /// </summary>
729  /// <param name="start">Start date.</param>
730  /// <param name="work">Amount of work.</param>
731  /// <param name="anotherCalendar">Another calendar that must not be ignored.</param>
732  /// <returns>Calculated finish date.</returns>
733  ASPOSE_TASKS_SHARED_API System::DateTime GetFinishDateByStartAndWork(System::DateTime start, System::TimeSpan work, const System::SharedPtr<Calendar>& anotherCalendar);
734  ASPOSE_TASKS_SHARED_API System::DateTime GetStartDateByFinishAndWork(System::DateTime finish, Duration work, const System::SharedPtr<Calendar>& anotherCalendar);
735  /// <summary>
736  /// Calculates the date when the specified amount of work time will pass according to the calendar and another calendar (resource calendar, for example)
737  /// </summary>
738  /// <param name="finish">Finish date.</param>
739  /// <param name="work">Amount of work.</param>
740  /// <param name="anotherCalendar">Another calendar that must not be ignored.</param>
741  /// <returns>Calculated start date.</returns>
742  ASPOSE_TASKS_SHARED_API System::DateTime GetStartDateByFinishAndWork(System::DateTime finish, System::TimeSpan work, const System::SharedPtr<Calendar>& anotherCalendar);
743  /// <summary>
744  /// Calculates the date when the specified amount of work time will pass according to the calendar and another calendar (resource calendar, for example)
745  /// </summary>
746  /// <param name="finish">Finish date.</param>
747  /// <param name="work">Amount of work.</param>
748  /// <returns>Calculated start date.</returns>
749  ASPOSE_TASKS_SHARED_API System::DateTime GetStartDateByFinishAndWork(System::DateTime finish, System::TimeSpan work);
750  /// <summary>
751  /// Gets working times at the specified date "intersected" with the date's TimeOfDay.
752  /// </summary>
753  ASPOSE_TASKS_SHARED_API System::SharedPtr<WorkingTimeCollection> GetWorkingTimesAtDate(System::DateTime date);
754  ASPOSE_TASKS_SHARED_API void StartExceptionsCaching();
755  ASPOSE_TASKS_SHARED_API void StopExceptionsCaching();
756  /// <summary>
757  /// Creates default standard calendar.
758  /// </summary>
759  /// <returns>Created calendar.</returns>
760  static ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> MakeStandardCalendarNoWeekend();
761  ASPOSE_TASKS_SHARED_API void SetWorkingExceptions(const System::SharedPtr<TimeScaledExceptions>& exceptionCollection);
762  /// <summary>
763  /// Creates default standard calendar.
764  /// </summary>
765  /// <returns>Created calendar.</returns>
766  static ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> Get24HoursCalendarInternal();
767  static ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> WrapCalendar(const System::SharedPtr<Calendar>& calendar, const System::SharedPtr<TimeScaledExceptions>& workingExceptions);
768  /// <summary>
769  /// Creates default standard calendar.
770  /// </summary>
771  /// <returns>Created calendar.</returns>
772  static ASPOSE_TASKS_SHARED_API System::SharedPtr<Calendar> MakeStandardCalendarInternal();
773  ASPOSE_TASKS_SHARED_API System::SharedPtr<WorkingTimeCollection> GetWorkingTimesIgnoreExceptions(DayType dayType);
774  ASPOSE_TASKS_SHARED_API System::SharedPtr<CalendarException> CheckException(System::DateTime dt);
775  ASPOSE_TASKS_SHARED_API System::SharedPtr<IReadOnlyWorkingTimeCollection> GetScheduleForImplicitException();
776 
777  virtual ASPOSE_TASKS_SHARED_API ~Calendar();
778 
779  #ifdef ASPOSE_GET_SHARED_MEMBERS
780  ASPOSE_TASKS_SHARED_API void GetSharedMembers(System::Object::shared_members_type& result) const override;
781  #endif
782 
783 
784 private:
785 
786  System::SharedPtr<CalendarDatesCalculator> calculator;
787  System::SharedPtr<CalendarExceptionCollectionWithCache> exceptions;
788  System::SharedPtr<TimeScaledExceptions> workingExceptions;
789  NullableBool isBaselineCalendar;
790  System::WeakPtr<Aspose::Tasks::Resource> resource;
791  System::Nullable<bool> is24HourCal;
792  System::SharedPtr<Calendar> baseCalendar;
793  System::String guid;
794  int32_t isCacheEnabledNesting;
795  System::SharedPtr<IKeyValueCache<System::DateTime, System::SharedPtr<WorkingTimeCollection>>> calculationsCache;
796 
797  static System::SharedPtr<Calendar>& calendar24Hours();
798 
799  System::String pr_Name;
800  int32_t pr_Uid;
801  System::SharedPtr<WeekDayCollection> pr_WeekDays;
802  System::SharedPtr<WorkWeekCollection> pr_WorkWeeks;
803 
804  /// <summary>
805  /// Gets WorkWeekCollections object.
806  /// The collection of work weeks that is associated with the calendar.
807  /// </summary>
808  ASPOSE_TASKS_SHARED_API void set_WorkWeeks(const System::SharedPtr<WorkWeekCollection>& value);
809 
810  System::WeakPtr<Project> pr_ParentProject;
811  int32_t pr_ResourceUid;
812  bool pr_IsNull;
813  System::Guid pr_UnknownGuid;
814 
815  System::String get_DebuggerDisplay();
816  /// <summary>
817  /// Gets a value indicating whether the calendar is 'uniform' (work times are the same for days with the same DayOfWeek).
818  /// </summary>
819  bool get_IsUniform();
820 
821  void TryToSkipByWeek(System::DateTime& enumeratorStartDate, int64_t& totalSpan, System::DateTime finish);
822  System::TimeSpan GetWorkingHoursInDay(System::DateTime start, System::DateTime finish);
823  static void Make24HourWeek(const System::SharedPtr<Calendar>& calendar);
824  System::TimeSpan GetWeekTotalWork();
825  bool CheckWeekHasNoExceptions(System::DateTime start, System::DateTime finish);
826  static void MakeNightShiftWeek(const System::SharedPtr<Calendar>& calendar);
827  System::SharedPtr<WorkingTimeCollection> CalculateWorkingTimes(System::DateTime dt);
828  System::SharedPtr<WorkingTimeCollection> GetWorkingTimesForCalendarException(const System::SharedPtr<CalendarException>& calendarException);
829  System::SharedPtr<WeekDay> GetWeekDay(System::DateTime dt);
830  System::SharedPtr<WeekDay> CheckWeekDay(DayType dayType);
831  System::SharedPtr<WeekDay> CheckDateInWorkWeeks(System::DateTime dt);
832 
833 };
834 
835 ASPOSE_TASKS_SHARED_API bool operator ==(Calendar::CalendarCacheKey left, Calendar::CalendarCacheKey right);
836 ASPOSE_TASKS_SHARED_API bool operator !=(Calendar::CalendarCacheKey left, Calendar::CalendarCacheKey right);
837 
838 } // namespace Tasks
839 } // namespace Aspose
840 
841 
Represents Baseline of a resource assignment.
Definition: AssignmentBaseline.h:84
Represents a collection of Calendar objects.
Definition: CalendarCollection.h:98
Represents a calendar used in a project.
Definition: Calendar.h:294
void Delete()
Removes calendar from project.
int32_t GetHashCode() const override
Returns a hash code for the instance of the class.
void set_IsBaselineCalendar(bool value)
Sets a value indicating whether the calendar is a baseline calendar.
System::String get_Name() const
Gets the name of the calendar.
static System::SharedPtr< Calendar > MakeStandardCalendar(const System::SharedPtr< Calendar > &calendar)
Creates default standard calendar.
System::DateTime GetStartDateFromFinishAndDuration(System::DateTime finish, Duration duration)
Returns StartDate based on specified FinishDate and Duration.
System::DateTime GetFinishDateByStartAndWork(System::DateTime start, System::TimeSpan work)
Calculates the date when the specified amount of work time will pass according to the calendar.
void set_BaseCalendar(const System::SharedPtr< Calendar > &value)
Sets the base calendar on which this calendar depends. Only applicable if the calendar is not a base ...
System::SharedPtr< CalendarExceptionCollection > get_Exceptions() const
Gets CalendarExceptionCollection object. The collection of exceptions that is associated with the cal...
System::SharedPtr< WorkingTimeCollection > GetWorkingTimes(System::DateTime dt)
Returns WorkingTimeCollection of working times for the specified date.
const System::SharedPtr< WorkWeekCollection > & get_WorkWeeks() const
Gets WorkWeekCollections object. The collection of work weeks that is associated with the calendar.
const System::SharedPtr< WeekDayCollection > & get_WeekDays() const
Gets WeekDaysCollection for this calendar. The collection of weekdays that defines the calendar.
System::DateTime GetTaskFinishDateFromDuration(const System::SharedPtr< Task > &task, System::TimeSpan duration)
Calculates the task finish date and time from its start date, split parts and the duration.
static System::SharedPtr< Calendar > MakeNightShiftCalendar(const System::SharedPtr< Calendar > &calendar)
Makes a given Calendar as Night Shift Calendar.
bool IsDayWorking(System::DateTime dt)
Determines whether the day is working day.
System::String get_Guid() const
Gets calendar's Guid.
bool get_IsBaselineCalendar()
Gets a value indicating whether the calendar is a baseline calendar.
static System::SharedPtr< Calendar > Make24HourCalendar(const System::SharedPtr< Calendar > &calendar)
Makes a given Calendar to be a 24Hour Calendar. 24Hours Calendar is a Calendar in which every day of ...
void set_Name(const System::String &value)
Sets the name of the calendar.
int32_t get_Uid() const
Gets the unique identifier of the calendar.
System::SharedPtr< WorkUnit > GetWorkingHours(System::DateTime start, System::DateTime finish)
Return working hours for the specified dates.
System::DateTime GetStartDateFromFinishAndDuration(System::DateTime finish, System::TimeSpan duration)
Returns StartDate based on specified FinishDate and Duration.
System::DateTime GetPreviousWorkingDayEnd(System::DateTime date)
Calculates previous working date end from the specified date.
bool get_IsBaseCalendar()
Gets a value indicating whether the calendar is a base calendar.
System::DateTime GetFinishDateByStartAndWork(System::DateTime start, Duration work)
Calculates the date when the specified amount of work time will pass according to the calendar.
void set_Uid(int32_t value)
Sets the unique identifier of the calendar.
System::TimeSpan GetWorkingHours(System::DateTime dt)
Returns amount of working hours at the date.
System::DateTime GetNextWorkingDayStart(System::DateTime date)
Calculates next working day start from the date.
bool Equals(System::SharedPtr< System::Object > obj) override
Returns a value indicating whether this instance is equal to a specified object.
System::SharedPtr< Calendar > get_BaseCalendar() const
Gets the base calendar on which this calendar depends. Only applicable if the calendar is not a base ...
Represents a class for repetitions in daily recurrence pattern based on calendar days.
Definition: DailyCalendarRepetition.h:36
Represents a class for repetitions in daily recurrence pattern based on work days.
Definition: DailyWorkRepetition.h:36
Represents duration in a project.
Definition: Duration.h:163
Represents a base pattern for monthly day position.
Definition: MonthlyRepetitionBase.h:40
A class for boolean values with possibility to check whether the value was defined or not.
Definition: NullableBool.h:22
Represents a project.
Definition: Project.h:551
Represents a resource assignment in a project.
Definition: ResourceAssignment.h:219
Represents a task portion. The SplitPart is a member of the task's SplitParts collection.
Definition: SplitPart.h:45
Represents Baseline of a Task.
Definition: TaskBaseline.h:53
Represents a task in a project.
Definition: Task.h:383
Represents a base class for repetitions in weekly recurrence pattern.
Definition: WeeklyRepetitionBase.h:40
Represents a base pattern for yearly day position.
Definition: YearlyRepetitionBase.h:38
Definition: Asn.h:13