private void PrepareNotificationText(ReportTemplateDTO item, string templatePath)
        {
            var arEmailTemplatePath = string.Format(@"{0}\{1}.txt", GetNotificationTemplatePath(templatePath, "Email", "AR"), item.TemplateId);
            var enEmailTemplatePath = string.Format(@"{0}\{1}.txt", GetNotificationTemplatePath(templatePath, "Email", "EN"), item.TemplateId);
            var arSMSTemplatePath   = string.Format(@"{0}\{1}.txt", GetNotificationTemplatePath(templatePath, "SMS", "AR"), item.TemplateId);
            var enSMSTemplatePath   = string.Format(@"{0}\{1}.txt", GetNotificationTemplatePath(templatePath, "SMS", "EN"), item.TemplateId);

            if (File.Exists(arEmailTemplatePath))
            {
                item.EmailTextArabic = File.ReadAllText(arEmailTemplatePath);
            }

            if (File.Exists(enEmailTemplatePath))
            {
                item.EmailTextEnglish = File.ReadAllText(enEmailTemplatePath);
            }

            if (File.Exists(arSMSTemplatePath))
            {
                item.SMSTextArabic = File.ReadAllText(arSMSTemplatePath);
            }

            if (File.Exists(enSMSTemplatePath))
            {
                item.SMSTextEnglish = File.ReadAllText(enSMSTemplatePath);
            }
        }
        private bool HandleTemplateFiles(string templatePath, int templateId, ReportTemplateDTO template)
        {
            try
            {
                var arEmailTemplatePath = GetNotificationTemplatePath(templatePath, "Email", "AR");
                var enEmailTemplatePath = GetNotificationTemplatePath(templatePath, "Email", "EN");
                var arSMSTemplatePath   = GetNotificationTemplatePath(templatePath, "SMS", "AR");
                var enSMSTemplatePath   = GetNotificationTemplatePath(templatePath, "SMS", "EN");

                if (!Directory.Exists(arEmailTemplatePath))
                {
                    Directory.CreateDirectory(arEmailTemplatePath);
                }
                if (!Directory.Exists(enEmailTemplatePath))
                {
                    Directory.CreateDirectory(enEmailTemplatePath);
                }
                if (!Directory.Exists(arSMSTemplatePath))
                {
                    Directory.CreateDirectory(arSMSTemplatePath);
                }
                if (!Directory.Exists(enSMSTemplatePath))
                {
                    Directory.CreateDirectory(enSMSTemplatePath);
                }

                if (template.EmailTextArabic != "")
                {
                    File.WriteAllText(string.Format(@"{0}\{1}.txt", arEmailTemplatePath, templateId), template.EmailTextArabic, Encoding.Unicode);
                }
                if (template.EmailTextEnglish != "")
                {
                    File.WriteAllText(string.Format(@"{0}\{1}.txt", enEmailTemplatePath, templateId), template.EmailTextEnglish);
                }
                if (template.SMSTextArabic != "")
                {
                    File.WriteAllText(string.Format(@"{0}\{1}.txt", arSMSTemplatePath, templateId), template.SMSTextArabic, Encoding.Unicode);
                }
                if (template.SMSTextEnglish != "")
                {
                    File.WriteAllText(string.Format(@"{0}\{1}.txt", enSMSTemplatePath, templateId), template.SMSTextEnglish);
                }
                return(true);
            }
            catch (Exception ex)
            {
            }
            return(false);
        }
        public bool AddTemplate(ReportTemplateDTO template, string templatePath)
        {
            try
            {
                var isNameExist = _operationalDataContext.ReportsTemplate.Any(x => x.TemplateName.ToLower().Trim() == template.TemplateName.ToLower().Trim());

                if (isNameExist)
                {
                    return(false);
                }

                var entity = new ReportsTemplate
                {
                    CreatedDate         = DateTime.Now,
                    CreatedUserId       = template.CreatedUserId,
                    EmailSubjectArabic  = template.EmailSubjectArabic,
                    EmailSubjectEnglish = template.EmailSubjectEnglish,
                    IsDeleted           = template.IsDeleted,
                    IsEmail             = template.IsEmail,
                    IsSMS              = template.IsSMS,
                    LastModifiedDate   = template.LastModifiedDate,
                    LastModifiedUserId = template.LastModifiedUserId,
                    TemplateName       = template.TemplateName
                };

                foreach (var item in template.TemplateParameters)
                {
                    entity.ReportTemplateParameter.Add(new ReportTemplateParameter
                    {
                        IsDeleted   = item.isDeleted,
                        ParameterId = item.ParameterId,
                    });
                }
                _operationalDataContext.ReportsTemplate.Add(entity);
                var isSaved = _operationalDataContext.SaveChanges() > 0;
                if (isSaved)
                {
                    return(HandleTemplateFiles(templatePath, entity.TemplateId, template));
                }
            }
            catch (Exception ex)
            {
            }
            return(false);
        }
        public bool EditTemplate(ReportTemplateDTO template, string templatePath)
        {
            var res = false;

            try
            {
                var isNameExist = _operationalDataContext.ReportsTemplate.Any(x => x.TemplateName.ToLower().Trim() == template.TemplateName.ToLower().Trim() && x.TemplateId != template.TemplateId);

                if (isNameExist)
                {
                    return(false);
                }

                var entity = _operationalDataContext.ReportsTemplate.FirstOrDefault(x => x.TemplateId == template.TemplateId);
                if (entity != null)
                {
                    entity.EmailSubjectArabic  = template.EmailSubjectArabic;
                    entity.EmailSubjectEnglish = template.EmailSubjectEnglish;
                    entity.TemplateName        = template.TemplateName;
                    entity.LastModifiedDate    = DateTime.Now;
                    entity.LastModifiedUserId  = template.LastModifiedUserId;
                    var addedParametersIds   = template.TemplateParameters.Where(x => !x.isDeleted && !entity.ReportTemplateParameter.Any(y => y.ParameterId == x.ParameterId)).Select(x => x.ParameterId).ToList();
                    var removedParametersIds = entity.ReportTemplateParameter.Where(x => !x.IsDeleted && !template.TemplateParameters.Any(y => y.ParameterId == x.ParameterId)).Select(x => x.ParameterId).ToList();

                    if (addedParametersIds != null && addedParametersIds.Any())
                    {
                        foreach (var item in addedParametersIds)
                        {
                            if (entity.ReportTemplateParameter.Any(x => x.IsDeleted && x.ParameterId == item))
                            {
                                entity.ReportTemplateParameter.FirstOrDefault(x => x.IsDeleted && x.ParameterId == item).IsDeleted = false;
                            }
                            else
                            {
                                entity.ReportTemplateParameter.Add(new ReportTemplateParameter
                                {
                                    IsDeleted   = false,
                                    ParameterId = item,
                                });
                            }
                        }
                    }

                    if (removedParametersIds != null && removedParametersIds.Any())
                    {
                        foreach (var item in removedParametersIds)
                        {
                            if (entity.ReportTemplateParameter.Any(x => !x.IsDeleted && x.ParameterId == item))
                            {
                                entity.ReportTemplateParameter.FirstOrDefault(x => !x.IsDeleted && x.ParameterId == item).IsDeleted = true;
                            }
                        }
                    }
                    var isSaved = _operationalDataContext.SaveChanges() > 0;
                    if (isSaved)
                    {
                        return(HandleTemplateFiles(templatePath, entity.TemplateId, template));
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return(res);
        }
 public bool EditTemplate(ReportTemplateDTO template)
 {
     return(new AutomaticReportDAL().EditTemplate(template, Utility.GetTemplatePath()));
 }
        private void PrepareTemplate(ReportTemplateDTO template, AutomaticReportDiminsionDTO diminsion)
        {
            try
            {
                DateTime startDate = DateTime.Now;
                if (diminsion.IsStaticValue && diminsion.ExactValue != "")
                {
                    startDate = new DateTime(int.Parse(diminsion.ExactValue.Substring(0, 4)), int.Parse(diminsion.ExactValue.Substring(4, 2)), int.Parse(diminsion.ExactValue.Substring(6, 2)));
                }
                else if (diminsion.RelativeValue.HasValue && diminsion.RelativeTypeId.HasValue)
                {
                    if (diminsion.RelativeTypeId.Value == (int)RelativeTypesEnum.Hours)
                    {
                        startDate = startDate.AddHours(-1 * diminsion.RelativeValue.Value);
                    }
                    else if (diminsion.RelativeTypeId.Value == (int)RelativeTypesEnum.Days)
                    {
                        startDate = startDate.AddDays(-1 * diminsion.RelativeValue.Value);
                    }
                    else if (diminsion.RelativeTypeId.Value == (int)RelativeTypesEnum.Months)
                    {
                        startDate = startDate.AddMonths(-1 * diminsion.RelativeValue.Value);
                    }
                }

                foreach (var item in template.TemplateParameters)
                {
                    var connString = "";
                    connString = item.IsCube ? ConfigurationManager.AppSettings[item.ConnKeyName] : ConfigurationManager.ConnectionStrings[item.ConnKeyName].ConnectionString;
                    if (connString != "")
                    {
                        var engPeriodState = "";
                        var arPeriodState  = "";
                        var endDate        = DateTime.Now;
                        var count          = 0;
                        if (item.IsCube)
                        {
                            string mdx = "";
                            try
                            {
                                count = new CubeDAL(connString).GetAutomaticReportCounts(startDate, endDate, item.FieldName, item.CubeName, diminsion.FieldName, out mdx);
                            }
                            catch (Exception ex)
                            {
                                Utility.WriteErrorLog(ex);
                            }
                            Utility.WriteLog("Mdx is :" + mdx);
                            engPeriodState = string.Format(" during the period between {0} and {1} ", startDate.ToString("yyyy-MM-dd"), endDate.ToString("yyyy-MM-dd"));
                            arPeriodState  = " في الفترة بين " + startDate.ToString("yyyy-MM-dd") + " إلى " + endDate.ToString("yyyy-MM-dd");
                        }
                        else
                        {
                            var queryTxt = "";
                            if (File.Exists(item.QueryPath))
                            {
                                try
                                {
                                    queryTxt = File.ReadAllText(item.QueryPath);
                                    count    = new CubeDAL(connString).GetAutomaticReportCounts(queryTxt);
                                }
                                catch (Exception ex)
                                {
                                    Utility.WriteErrorLog(ex);
                                }
                                Utility.WriteLog("Query is :" + queryTxt);
                            }
                        }
                        if (count >= 0)
                        {
                            if (template.EmailTextArabic != "")
                            {
                                template.EmailTextArabic = template.EmailTextArabic.Replace(item.ParameterText, count.ToString()) + arPeriodState;
                            }
                            if (template.EmailTextEnglish != "")
                            {
                                template.EmailTextEnglish = template.EmailTextEnglish.Replace(item.ParameterText, count.ToString()) + engPeriodState;
                            }
                            if (template.SMSTextArabic != "")
                            {
                                template.SMSTextArabic = template.SMSTextArabic.Replace(item.ParameterText, count.ToString()) + arPeriodState;
                            }
                            if (template.SMSTextEnglish != "")
                            {
                                template.SMSTextEnglish = template.SMSTextEnglish.Replace(item.ParameterText, count.ToString()) + engPeriodState;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.WriteErrorLog(ex);
            }
        }