public ActionResult SaveAction(int acid, TemplateMasterModel objTemplateMasterModel, string calledFrom)
        {
            LoginUserDetails objLoginUserDetails = (LoginUserDetails)InsiderTrading.Common.Common.GetSessionValue((string)ConstEnum.SessionValue.UserDetails);

            try
            {
                // TODO: Add insert logic here
                objTemplateMasterModel.Contents     = HttpUtility.HtmlEncode(objTemplateMasterModel.Contents);
                objTemplateMasterModel.Subject      = HttpUtility.HtmlEncode(objTemplateMasterModel.Subject);
                objTemplateMasterModel.TemplateName = HttpUtility.HtmlEncode(objTemplateMasterModel.TemplateName);
                objTemplateMasterModel.Signature    = HttpUtility.HtmlEncode(objTemplateMasterModel.Signature);

                string editorContent = Common.HtmlUtil.SanitizeHtml(objTemplateMasterModel.Contents);
                if (objTemplateMasterModel.CommunicationModeCodeId != Common.ConstEnum.Code.CommunicationModeForSMS && objTemplateMasterModel.CommunicationModeCodeId != Common.ConstEnum.Code.CommunicationModeForTextAlert)
                {
                    objTemplateMasterModel.Contents = editorContent.Replace(Environment.NewLine, "\\r\\n");
                    //objTemplateMasterModel.Contents = HttpUtility.HtmlEncode(editorContent);
                }

                if (objTemplateMasterModel.CommunicationModeCodeId == Common.ConstEnum.Code.CommunicationModeForFormE)
                {
                    objTemplateMasterModel.Contents = editorContent.Replace("[[", "[");
                    objTemplateMasterModel.Contents = editorContent.Replace("]]", "]");
                    //  objTemplateMasterModel.Contents = HttpUtility.HtmlEncode(editorContent);
                }

                if (objTemplateMasterModel.CommunicationModeCodeId == Common.ConstEnum.Code.CommunicationModeForEmail)
                {
                    objTemplateMasterModel.Contents = editorContent.Replace("[[|~|", "|~|");
                    objTemplateMasterModel.Contents = editorContent.Replace("|~|]]", "|~|");
                    // objTemplateMasterModel.Contents = HttpUtility.HtmlEncode(editorContent);
                }

                if (objTemplateMasterModel.Signature != null)
                {
                    objTemplateMasterModel.Signature = objTemplateMasterModel.Signature.Replace(Environment.NewLine, "\\r\\n");
                }

                if (objTemplateMasterModel.ToAddress1 != null)
                {
                    objTemplateMasterModel.ToAddress1 = objTemplateMasterModel.ToAddress1.Replace(Environment.NewLine, "\\r\\n");
                    objTemplateMasterModel.ToAddress1 = HttpUtility.HtmlEncode(objTemplateMasterModel.ToAddress1);
                }
                if (objTemplateMasterModel.CommunicationModeCodeId == Common.ConstEnum.Code.CommunicationModeForEmail && objTemplateMasterModel.CommunicationFrom != objTemplateMasterModel.CommunicationFromEmail)
                {
                    objTemplateMasterModel.CommunicationFrom = objTemplateMasterModel.CommunicationFromEmail;
                }
                //for communcition type letter -- check if checkbox address 2 optional is checked or not
                // if checkbox is NOT checked then set null else replace new line character for text entered
                if (objTemplateMasterModel.CommunicationModeCodeId == ConstEnum.Code.CommunicationModeForLetter && !objTemplateMasterModel.IsCommunicationTemplate)
                {
                    objTemplateMasterModel.ToAddress2 = null;
                }
                else
                {
                    if (objTemplateMasterModel.ToAddress2 != null)
                    {
                        objTemplateMasterModel.ToAddress2 = objTemplateMasterModel.ToAddress2.Replace(Environment.NewLine, "\\r\\n");
                        objTemplateMasterModel.ToAddress2 = HttpUtility.HtmlEncode(objTemplateMasterModel.ToAddress2);
                    }
                }

                // TemplateMasterSL objTemplateMasterSL = new TemplateMasterSL();
                TemplateMasterDTO objTemplateMasterDTO = new TemplateMasterDTO();

                InsiderTrading.Common.Common.CopyObjectPropertyByName(objTemplateMasterModel, objTemplateMasterDTO);
                using (var objTemplateMasterSL = new TemplateMasterSL())
                {
                    objTemplateMasterDTO = objTemplateMasterSL.SaveDetails(objTemplateMasterDTO, objLoginUserDetails.CompanyDBConnectionString, objLoginUserDetails.LoggedInUserID);
                }
                if (calledFrom == "Communication")
                {
                    HttpUtility.HtmlDecode(objTemplateMasterDTO.TemplateName, objTemplateWriter);
                    //return RedirectToAction("Create", new { TemplateMasterId = objTemplateMasterDTO.TemplateMasterId, calledFrom = calledFrom });
                    return(Json(new
                    {
                        status = true,
                        Message = Common.Common.getResource("tra_msg_16153"),//Common.Common.getResource("rul_msg_15380")//
                        CommunicationModeCodeId = objTemplateMasterDTO.CommunicationModeCodeId,
                        TemplateName = Convert.ToString(objTemplateWriter),
                        TemplateMasterId = objTemplateMasterDTO.TemplateMasterId
                    }, JsonRequestBehavior.AllowGet));
                }
                else if (calledFrom == "CommunicationRule")
                { //CommunicationRuleMaster/Index?acid=179
                    return(Json(new
                    {
                        status = true,
                        Message = Common.Common.getResource("tra_msg_16153"),
                        CommunicationModeCodeId = objTemplateMasterDTO.CommunicationModeCodeId,
                        TemplateName = objTemplateMasterDTO.TemplateName,
                        TemplateMasterId = objTemplateMasterDTO.TemplateMasterId,
                        IsActive = objTemplateMasterDTO.IsActive
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(RedirectToAction("Index", "TemplateMaster", new { acid = ConstEnum.UserActions.TEMPLATE_LIST_RIGHT }).Success(Common.Common.getResource("tra_msg_16153")));
                }
            }
            catch (Exception exp)
            {
                ModelState.Remove("KEY");
                ModelState.Add("KEY", new ModelState());
                ModelState.Clear();
                string sErrMessage = Common.Common.getResource(exp.InnerException.Data[0].ToString());
                //return View();
                //return Json(new
                //{
                //    status = false,
                //    Message = sErrMessage
                //}, JsonRequestBehavior.AllowGet);
                ModelState.AddModelError("Error", sErrMessage);
                if (calledFrom == "Communication")
                {
                    return(Json(new
                    {
                        status = false,
                        error = ModelState.ToSerializedDictionary(),
                        Message = sErrMessage
                    }));
                }
                else if (calledFrom == "CommunicationRule")
                { //CommunicationRuleMaster/Index?acid=179
                    return(Json(new
                    {
                        status = false,
                        error = ModelState.ToSerializedDictionary(),
                        Message = sErrMessage
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    List <PopulateComboDTO> lstList = new List <PopulateComboDTO>();

                    //get list of communication mode
                    lstList = FillComboValues(ConstEnum.ComboType.ListOfCode, ConstEnum.CodeGroup.CommunicationModes, null, null, null, null, true);
                    ViewBag.CommunicationMode = lstList;

                    //get list of disclousre type
                    lstList = FillComboValues(ConstEnum.ComboType.ListOfCode, ConstEnum.CodeGroup.DisclosureType, null, null, null, null, true);
                    ViewBag.DisclosureType = lstList;

                    //get list of user type for letter type communicaiton mode
                    lstList           = FillComboValues(ConstEnum.ComboType.ListOfCode, ConstEnum.CodeGroup.DisclosureLetterForUserType, ConstEnum.Code.CommunicationModeForLetter.ToString(), null, null, null, true);
                    ViewBag.LetterFor = lstList;

                    //get list of user type for FAQ type communicaiton mode
                    lstList        = FillComboValues(ConstEnum.ComboType.ListOfCode, ConstEnum.CodeGroup.DisclosureLetterForUserType, ConstEnum.Code.CommunicationModeForFAQ.ToString(), null, null, null, true);
                    ViewBag.FAQFor = lstList;

                    ViewBag.TemplateMasterId     = objTemplateMasterModel.TemplateMasterId;
                    ViewBag.CommunicationMode_id = objTemplateMasterModel.CommunicationModeCodeId;
                    ViewBag.IsDisplayBackButton  = true;
                    ViewBag.calledFrom           = calledFrom;

                    objTemplateMasterModel.Contents = objTemplateMasterModel.Contents.Replace("\\r\\n", Environment.NewLine);
                    HttpUtility.HtmlDecode(objTemplateMasterModel.Contents, objContentsWriter);
                    objTemplateMasterModel.Contents = objContentsWriter.ToString();

                    HttpUtility.HtmlDecode(objTemplateMasterModel.Subject, objSubjectWriter);
                    objTemplateMasterModel.Subject = objSubjectWriter.ToString();


                    HttpUtility.HtmlDecode(objTemplateMasterModel.TemplateName, objTemplateWriter);
                    objTemplateMasterModel.TemplateName = objTemplateWriter.ToString();

                    if (objTemplateMasterModel.Signature != null)
                    {
                        objTemplateMasterModel.Signature = objTemplateMasterModel.Signature.Replace("\\r\\n", Environment.NewLine);
                        HttpUtility.HtmlDecode(objTemplateMasterModel.Signature, objSignatureWriter);
                        objTemplateMasterModel.Signature = objSignatureWriter.ToString();
                    }

                    if (objTemplateMasterModel.ToAddress1 != null)
                    {
                        objTemplateMasterModel.ToAddress1 = objTemplateMasterModel.ToAddress1.Replace("\\r\\n", Environment.NewLine);
                        HttpUtility.HtmlDecode(objTemplateMasterModel.ToAddress1, objAddress1Writer);
                        objTemplateMasterModel.ToAddress1 = objAddress1Writer.ToString();
                    }

                    //for communcition type letter -- check if checkbox address 2 optional is checked or not
                    // if checkbox is NOT checked then set null else replace new line character for text entered
                    if (objTemplateMasterModel.CommunicationModeCodeId == ConstEnum.Code.CommunicationModeForLetter && !objTemplateMasterModel.IsCommunicationTemplate)
                    {
                        objTemplateMasterModel.ToAddress2 = null;
                    }
                    else
                    {
                        if (objTemplateMasterModel.ToAddress2 != null)
                        {
                            objTemplateMasterModel.ToAddress2 = objTemplateMasterModel.ToAddress2.Replace("\\r\\n", Environment.NewLine);
                            HttpUtility.HtmlDecode(objTemplateMasterModel.ToAddress2, objAddress2Writer);
                            objTemplateMasterModel.ToAddress2 = objAddress2Writer.ToString();
                        }
                    }
                    lstList = null;

                    ViewBag.acid = acid;

                    return(View("Create", objTemplateMasterModel));
                }
            }
            finally
            {
                objLoginUserDetails    = null;
                objTemplateMasterModel = null;
            }
        }