// GET: Template/EmailTemplates/Create
        public ActionResult Create()
        {
            CreateNotificationTemplateModel model = new CreateNotificationTemplateModel();

            model.CreatedBy            = CurrentUser.UserId.Value;
            model.NotificationTypeList = (Enum.GetValues(typeof(NotificationType)).Cast <int>()
                                          .Select(e => new SelectListItem()
            {
                Text = ((DisplayAttribute)
                        typeof(NotificationType)
                        .GetMember(Enum.GetName(typeof(NotificationType), e).ToString())
                        .First()
                        .GetCustomAttributes(typeof(DisplayAttribute), false)[0]).Name,
                //Enum.GetName(typeof(NotificationType), e),
                Value = e.ToString()
            })).ToList();

            model.TemplateParameterTypeList = new List <ParameterList>();
            foreach (TemplateParameterType param in Enum.GetValues(typeof(TemplateParameterType)))
            {
                ParameterList paramList = new ParameterList
                {
                    TemplateParameterType = param,
                    parameterDisplayName  = param.GetDisplayName()
                };
                model.TemplateParameterTypeList.Add(paramList);
            }

            /*model.enableEmail = true;
             * model.enableSMSMessage = true;
             * model.enableWebMessage = true;*/

            return(View(model));
        }
        // POST: api/EmailTemplate
        public IHttpActionResult Post(CreateNotificationTemplateModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var timeNow = DateTime.Now;
            var NotificationTemplate = new NotificationTemplate
            {
                NotificationType     = model.NotificationType,
                NotificationCategory = model.NotificationCategory,
                TemplateName         = model.TemplateName,
                TemplateSubject      = model.TemplateSubject,
                TemplateRefNo        = model.TemplateRefNo,
                TemplateMessage      = model.TemplateMessage,
                CreatedDate          = timeNow,
                LastModified         = timeNow,
                CreatedBy            = model.CreatedBy,
                Display = true,

                enableEmail      = model.enableEmail,
                enableSMSMessage = model.enableSMSMessage,
                SMSMessage       = model.SMSMessage,
                enableWebMessage = model.enableWebMessage,
                WebMessage       = model.WebMessage,
                WebNotifyLink    = model.WebNotifyLink
            };

            db.NotificationTemplates.Add(NotificationTemplate);

            //getAllParam first dan delete dulu
            var listParam = db.TemplateParameters.Where(p => p.NotificationType == model.NotificationType).ToList();

            db.TemplateParameters.RemoveRange(listParam);

            //lepas tu add yg baru
            foreach (var item in model.ParameterList)
            {
                TemplateParameters param = new TemplateParameters
                {
                    NotificationType      = model.NotificationType,
                    TemplateParameterType = item
                };
                db.TemplateParameters.Add(param);
            }


            db.SaveChanges();

            return(Ok(NotificationTemplate));
        }
        public async Task <ActionResult> Create(CreateNotificationTemplateModel model)//([Bind(Include = "Id,TemplateName,TemplateMessage,CreatedDate,CreatedBy,Display")] EmailTemplate emailTemplate)

        {
            if (ModelState.IsValid)
            {
                CreateNotificationTemplateModel obj = new CreateNotificationTemplateModel
                {
                    NotificationType = model.NotificationType,
                    TemplateName     = model.TemplateName,
                    TemplateSubject  = model.TemplateSubject,
                    TemplateRefNo    = model.TemplateRefNo,
                    TemplateMessage  = Server.HtmlEncode(model.TemplateMessage),
                    enableEmail      = model.enableEmail,
                    CreatedBy        = CurrentUser.UserId.Value,
                    CreatedDate      = DateTime.Now,
                    //LastModified = DateTime.Now,
                    enableSMSMessage = model.enableSMSMessage,
                    SMSMessage       = model.SMSMessage,
                    enableWebMessage = model.enableWebMessage,
                    WebMessage       = model.WebMessage,
                    WebNotifyLink    = model.WebNotifyLink,
                    //Display = true
                };

                List <string> ListA, ParamList;// = new List<string>();
                ListA     = new List <string>();
                ParamList = new List <string>();
                if (obj.enableEmail)
                {
                    ParamList = ParamList.Union(ListA).ToList();
                    if (obj.TemplateSubject != null)
                    {
                        ParamList = ParamList.Union(ParameterListing(obj.TemplateSubject)).ToList();
                    }
                    if (obj.TemplateMessage != null)
                    {
                        ParamList = ParamList.Union(ParameterListing(obj.TemplateMessage)).ToList();
                    }
                }
                if (obj.enableSMSMessage)
                {
                    if (obj.SMSMessage != null)
                    {
                        ParamList = ParamList.Union(ParameterListing(obj.SMSMessage)).ToList();
                    }
                }
                if (obj.enableWebMessage)
                {
                    if (obj.WebMessage != null)
                    {
                        ParamList = ParamList.Union(ParameterListing(obj.WebMessage)).ToList();
                        ParamList = ParamList.Union(ParameterListing(obj.WebNotifyLink)).ToList();
                    }
                }

                obj.ParameterList = ParamList;

                //var response = await WepApiMethod.SendApiAsync<CreateNotificationTemplateModel>(HttpVerbs.Post, $"Template/Email/", obj);

                //test generate email
                //1 create ParamListToSend
                //2 generate body message
                //3 generate subject message
                //4 generate schedule to send email
                //5 call email API
                ParameterListToSend paramToSend = new ParameterListToSend();
                paramToSend.EventName     = "Hari Terbuka AKPK";
                paramToSend.EventCode     = "HTAKPK2019";
                paramToSend.EventLocation = "Dewan Terbuka AKPK";
                paramToSend.EventApproval = "APPROVED006";

                CreateAutoReminder reminder = new CreateAutoReminder
                {
                    NotificationType      = NotificationType.Submit_Public_Event_For_Verification,
                    NotificationCategory  = NotificationCategory.Event,
                    ParameterListToSend   = paramToSend,
                    StartNotificationDate = DateTime.Now,
                    ReceiverId            = new List <int> {
                        231
                    }
                };

                var response = await WepApiMethod.SendApiAsync <ReminderResponse>
                                   (HttpVerbs.Post, $"Reminder/SLA/GenerateAutoNotificationReminder/", reminder);

                /*int SLAReminderStatusId = 8;
                 * var response = await WepApiMethod.SendApiAsync<List<BulkNotificationModel>>
                 *  (HttpVerbs.Get, $"Reminder/SLA/StopNotification/?SLAReminderStatusId={SLAReminderStatusId}");*/

                if (response.isSuccess)
                {
                    await LogActivity(Modules.Setting, "Create Notification Template");

                    TempData["SuccessMessage"] = "Notification Template created successfully";


                    return(RedirectToAction("List"));
                }
                else
                {
                    TempData["ErrorMessage"] = "Failed to create Notification Template";
                    return(RedirectToAction("List"));
                }
            }
            else
            {
                TempData["ErrorMessage"] = "Failed to create Notification Template";
                return(RedirectToAction("List"));
            }
        }