packages feed

stratosphere-0.39.0: library-gen/Stratosphere/ResourceProperties/PinpointCampaignSchedule.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html

module Stratosphere.ResourceProperties.PinpointCampaignSchedule where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.PinpointCampaignCampaignEventFilter
import Stratosphere.ResourceProperties.PinpointCampaignQuietTime

-- | Full data type definition for PinpointCampaignSchedule. See
-- 'pinpointCampaignSchedule' for a more convenient constructor.
data PinpointCampaignSchedule =
  PinpointCampaignSchedule
  { _pinpointCampaignScheduleEndTime :: Maybe (Val Text)
  , _pinpointCampaignScheduleEventFilter :: Maybe PinpointCampaignCampaignEventFilter
  , _pinpointCampaignScheduleFrequency :: Maybe (Val Text)
  , _pinpointCampaignScheduleIsLocalTime :: Maybe (Val Bool)
  , _pinpointCampaignScheduleQuietTime :: Maybe PinpointCampaignQuietTime
  , _pinpointCampaignScheduleStartTime :: Maybe (Val Text)
  , _pinpointCampaignScheduleTimeZone :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON PinpointCampaignSchedule where
  toJSON PinpointCampaignSchedule{..} =
    object $
    catMaybes
    [ fmap (("EndTime",) . toJSON) _pinpointCampaignScheduleEndTime
    , fmap (("EventFilter",) . toJSON) _pinpointCampaignScheduleEventFilter
    , fmap (("Frequency",) . toJSON) _pinpointCampaignScheduleFrequency
    , fmap (("IsLocalTime",) . toJSON) _pinpointCampaignScheduleIsLocalTime
    , fmap (("QuietTime",) . toJSON) _pinpointCampaignScheduleQuietTime
    , fmap (("StartTime",) . toJSON) _pinpointCampaignScheduleStartTime
    , fmap (("TimeZone",) . toJSON) _pinpointCampaignScheduleTimeZone
    ]

-- | Constructor for 'PinpointCampaignSchedule' containing required fields as
-- arguments.
pinpointCampaignSchedule
  :: PinpointCampaignSchedule
pinpointCampaignSchedule  =
  PinpointCampaignSchedule
  { _pinpointCampaignScheduleEndTime = Nothing
  , _pinpointCampaignScheduleEventFilter = Nothing
  , _pinpointCampaignScheduleFrequency = Nothing
  , _pinpointCampaignScheduleIsLocalTime = Nothing
  , _pinpointCampaignScheduleQuietTime = Nothing
  , _pinpointCampaignScheduleStartTime = Nothing
  , _pinpointCampaignScheduleTimeZone = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-endtime
pcsEndTime :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
pcsEndTime = lens _pinpointCampaignScheduleEndTime (\s a -> s { _pinpointCampaignScheduleEndTime = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-eventfilter
pcsEventFilter :: Lens' PinpointCampaignSchedule (Maybe PinpointCampaignCampaignEventFilter)
pcsEventFilter = lens _pinpointCampaignScheduleEventFilter (\s a -> s { _pinpointCampaignScheduleEventFilter = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-frequency
pcsFrequency :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
pcsFrequency = lens _pinpointCampaignScheduleFrequency (\s a -> s { _pinpointCampaignScheduleFrequency = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-islocaltime
pcsIsLocalTime :: Lens' PinpointCampaignSchedule (Maybe (Val Bool))
pcsIsLocalTime = lens _pinpointCampaignScheduleIsLocalTime (\s a -> s { _pinpointCampaignScheduleIsLocalTime = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-quiettime
pcsQuietTime :: Lens' PinpointCampaignSchedule (Maybe PinpointCampaignQuietTime)
pcsQuietTime = lens _pinpointCampaignScheduleQuietTime (\s a -> s { _pinpointCampaignScheduleQuietTime = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-starttime
pcsStartTime :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
pcsStartTime = lens _pinpointCampaignScheduleStartTime (\s a -> s { _pinpointCampaignScheduleStartTime = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-timezone
pcsTimeZone :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
pcsTimeZone = lens _pinpointCampaignScheduleTimeZone (\s a -> s { _pinpointCampaignScheduleTimeZone = a })