﻿#region Apache License

//-----------------------------------------------------------------------
// <copyright file="MembershipMailHandler.cs" company="StrixIT">
// Copyright 2015 StrixIT. Author R.G. Schurgers MA MSc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// </copyright>
//-----------------------------------------------------------------------

#endregion Apache License

using StrixIT.Platform.Core;

namespace StrixIT.Platform.Modules.Cms
{
    public class MembershipMailHandler : IHandlePlatformEvent<GeneralEvent>
    {
        #region Private Fields

        private IMailService _mailService;

        #endregion Private Fields

        #region Public Constructors

        public MembershipMailHandler(IMailService mailService)
        {
            this._mailService = mailService;
        }

        #endregion Public Constructors

        #region Public Methods

        public void Handle(GeneralEvent args)
        {
            if (args.EventName != "SendMembershipMailEvent")
            {
                return;
            }

            var mailTemplateName = (string)args.Data["TemplateName"];
            var culture = (string)args.Data["Culture"];
            var template = (string)args.Data["Template"];
            var body = (string)args.Data["Body"];
            var subject = (string)args.Data["Subject"];

            var mail = this._mailService.GetMailContent(culture, mailTemplateName);

            if (mail != null)
            {
                args.Data["Template"] = mail.Template.Body;
                args.Data["Body"] = mail.Body;
                args.Data["Subject"] = mail.Subject;
            }
        }

        #endregion Public Methods
    }
}