package AsposeTasksCloud::Object::RecurringInfo;

require 5.6.0;
use strict;
use warnings;
use utf8;
use JSON qw(decode_json);
use Data::Dumper;
use Module::Runtime qw(use_module);
use Log::Any qw($log);
use Date::Parse;
use DateTime;

use base "AsposeTasksCloud::Object::BaseObject";

#
#
#
#NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually.
#

my $swagger_types = {
    'RecurrencePattern' => 'RecurrencePattern',
    'StartDate' => 'DateTime',
    'EndDate' => 'DateTime',
    'Duration' => 'string',
    'DurationString' => 'string',
    'Occurrences' => 'int',
    'UseEndDate' => 'boolean',
    'DailyRepetitions' => 'int',
    'DailyUseWorkdays' => 'boolean',
    'WeeklyRepetitions' => 'int',
    'WeeklyDays' => 'WeekDayType',
    'MonthlyUseOrdinalDay' => 'boolean',
    'MonthlyOrdinalNumber' => 'OrdinalNumber',
    'MonthlyOrdinalDay' => 'string',
    'MonthlyOrdinalRepetitions' => 'int',
    'MonthlyDay' => 'int',
    'MonthlyRepetitions' => 'int',
    'YearlyUseOrdinalDay' => 'boolean',
    'YearlyDate' => 'DateTime',
    'YearlyOrdinalNumber' => 'OrdinalNumber',
    'YearlyOrdinalDay' => 'string',
    'YearlyOrdinalMonth' => 'Month'
};

my $attribute_map = {
    'RecurrencePattern' => 'RecurrencePattern',
    'StartDate' => 'StartDate',
    'EndDate' => 'EndDate',
    'Duration' => 'Duration',
    'DurationString' => 'DurationString',
    'Occurrences' => 'Occurrences',
    'UseEndDate' => 'UseEndDate',
    'DailyRepetitions' => 'DailyRepetitions',
    'DailyUseWorkdays' => 'DailyUseWorkdays',
    'WeeklyRepetitions' => 'WeeklyRepetitions',
    'WeeklyDays' => 'WeeklyDays',
    'MonthlyUseOrdinalDay' => 'MonthlyUseOrdinalDay',
    'MonthlyOrdinalNumber' => 'MonthlyOrdinalNumber',
    'MonthlyOrdinalDay' => 'MonthlyOrdinalDay',
    'MonthlyOrdinalRepetitions' => 'MonthlyOrdinalRepetitions',
    'MonthlyDay' => 'MonthlyDay',
    'MonthlyRepetitions' => 'MonthlyRepetitions',
    'YearlyUseOrdinalDay' => 'YearlyUseOrdinalDay',
    'YearlyDate' => 'YearlyDate',
    'YearlyOrdinalNumber' => 'YearlyOrdinalNumber',
    'YearlyOrdinalDay' => 'YearlyOrdinalDay',
    'YearlyOrdinalMonth' => 'YearlyOrdinalMonth'
};

# new object
sub new { 
    my ($class, %args) = @_; 
    my $self = { 
        #
        'RecurrencePattern' => $args{'RecurrencePattern'}, 
        #
        'StartDate' => $args{'StartDate'}, 
        #
        'EndDate' => $args{'EndDate'}, 
        #
        'Duration' => $args{'Duration'}, 
        #
        'DurationString' => $args{'DurationString'}, 
        #
        'Occurrences' => $args{'Occurrences'}, 
        #
        'UseEndDate' => $args{'UseEndDate'}, 
        #
        'DailyRepetitions' => $args{'DailyRepetitions'}, 
        #
        'DailyUseWorkdays' => $args{'DailyUseWorkdays'}, 
        #
        'WeeklyRepetitions' => $args{'WeeklyRepetitions'}, 
        #
        'WeeklyDays' => $args{'WeeklyDays'}, 
        #
        'MonthlyUseOrdinalDay' => $args{'MonthlyUseOrdinalDay'}, 
        #
        'MonthlyOrdinalNumber' => $args{'MonthlyOrdinalNumber'}, 
        #
        'MonthlyOrdinalDay' => $args{'MonthlyOrdinalDay'}, 
        #
        'MonthlyOrdinalRepetitions' => $args{'MonthlyOrdinalRepetitions'}, 
        #
        'MonthlyDay' => $args{'MonthlyDay'}, 
        #
        'MonthlyRepetitions' => $args{'MonthlyRepetitions'}, 
        #
        'YearlyUseOrdinalDay' => $args{'YearlyUseOrdinalDay'}, 
        #
        'YearlyDate' => $args{'YearlyDate'}, 
        #
        'YearlyOrdinalNumber' => $args{'YearlyOrdinalNumber'}, 
        #
        'YearlyOrdinalDay' => $args{'YearlyOrdinalDay'}, 
        #
        'YearlyOrdinalMonth' => $args{'YearlyOrdinalMonth'}
    }; 

    return bless $self, $class; 
}  

# get swagger type of the attribute
sub get_swagger_types {
    return $swagger_types;
}

# get attribute mappping
sub get_attribute_map {
    return $attribute_map;
}

1;
