public ReportTemplateWrapper SaveReportTemplate(string name, string period, int periodItem, int hour, bool autoGenerated, ReportType reportType,
                                         int tag, int project, TaskStatus? status, Guid departament, Guid userId, ReportTimeInterval reportTimeInterval,
                                         ApiDateTime fromDate, ApiDateTime toDate, int viewType, bool noResponsible)
        {
            ProjectSecurity.DemandAuthentication();

            if (name == null || name.Trim().Length == 0) throw new ArgumentNullException("name");

            var filter = new TaskFilter
            {
                TagId = tag,
                DepartmentId = departament,
                UserId = userId,
                TimeInterval = reportTimeInterval,
                FromDate = fromDate,
                ToDate = toDate,
                ViewType = viewType,
                NoResponsible = noResponsible
            };

            if (project != 0)
                filter.ProjectIds.Add(project);

            if (status != null)
                filter.TaskStatuses.Add((TaskStatus)status);

            var template = new ReportTemplate(reportType) { Filter = filter };

            SaveOrUpdateTemplate(template, name, period, periodItem, hour, autoGenerated);

            return new ReportTemplateWrapper(template);
        }
 public ReportTemplateWrapper(ReportTemplate reportTemplate)
 {
     Id = reportTemplate.Id;
     Title = reportTemplate.Name;
     Created = (ApiDateTime)reportTemplate.CreateOn;
     CreatedBy = EmployeeWraper.Get(reportTemplate.CreateBy);
     AutoGenerated = reportTemplate.AutoGenerated;
     Cron = reportTemplate.Cron;
     ReportType = reportTemplate.ReportType;
 }
Beispiel #3
0
        public ReportTemplate SaveTemplate(ReportTemplate template)
        {
            if (template == null) throw new ArgumentNullException("template");

            if (ProjectSecurity.IsVisitor(SecurityContext.CurrentAccount.ID)) throw new System.Security.SecurityException("Access denied.");

            if (template.CreateOn == default(DateTime)) template.CreateOn = TenantUtil.DateTimeNow();
            if (template.CreateBy.Equals(Guid.Empty)) template.CreateBy = SecurityContext.CurrentAccount.ID;
            return reportDao.SaveTemplate(template);
        }
Beispiel #4
0
        public ReportTemplate SaveTemplate(ReportTemplate template)
        {
            if (template == null) throw new ArgumentNullException("template");
            if (template.CreateOn == default(DateTime)) template.CreateOn = DateTime.Now;
            if (string.IsNullOrEmpty(template.CreateBy)) template.CreateBy = SecurityContext.CurrentAccount.ID.ToString();

            var insert = new SqlInsert(table, true)
                .InColumns(columns)
                .Values(
                    template.Id,
                    template.ReportType,
                    template.Name,
                    template.Filter.ToXml(),
                    template.Cron,
                    template.CreateBy,
                    TenantUtil.DateTimeToUtc(template.CreateOn),
                    Tenant,
                    template.AutoGenerated)
                .Identity(0, 0, true);
            template.Id = DbManager.ExecuteScalar<int>(insert);
            return template;
        }
Beispiel #5
0
 public ReportTemplate SaveTemplate(ReportTemplate template)
 {
     if (template == null) throw new ArgumentNullException("template");
     if (template.CreateOn == default(DateTime)) template.CreateOn = DateTime.Now;
     if (template.CreateBy.Equals(Guid.Empty)) template.CreateBy = CurrentUserID;
     using (var db = new DbManager(DatabaseId))
     {
         var insert = new SqlInsert(ReportTable, true)
             .InColumns(columns)
             .Values(
                 template.Id,
                 template.ReportType,
                 template.Name,
                 template.Filter.ToXml(),
                 template.Cron,
                 template.CreateBy.ToString(),
                 TenantUtil.DateTimeToUtc(template.CreateOn),
                 Tenant,
                 template.AutoGenerated)
             .Identity(0, 0, true);
         template.Id = db.ExecuteScalar<int>(insert);
         return template;
     }
 }
Beispiel #6
0
        public ReportTemplate SaveTemplate(ReportTemplate template)
        {
            if (template == null) throw new ArgumentNullException("template");

            if (template.CreateOn == default(DateTime)) template.CreateOn = TenantUtil.DateTimeNow();
            if (string.IsNullOrEmpty(template.CreateBy)) template.CreateBy = SecurityContext.CurrentAccount.ID.ToString();
            return reportDao.SaveTemplate(template);
        }
Beispiel #7
0
 private ReportTemplate ToTemplate(object[] r)
 {
     var tenant = CoreContext.TenantManager.GetTenant(Convert.ToInt32(r[7]));
     var template = new ReportTemplate((ReportType)Convert.ToInt32(r[1]))
     {
         Id = Convert.ToInt32(r[0]),
         Name = (string)r[2],
         Filter = r[3] != null ? ReportFilter.FromXml((string)r[3]) : new ReportFilter(),
         Cron = (string)r[4],
         CreateBy = (string)r[5],
         CreateOn = TenantUtil.DateTimeFromUtc(tenant, (DateTime)r[6]),
         Tenant = tenant.TenantId,
         AutoGenerated = Convert.ToBoolean(r[8]),
     };
     return template;
 }
Beispiel #8
0
 public static void SendEmptyAutoReports(ReportTemplate template)
 {
     var result = string.Empty;
     var parameters = new XsltArgumentList();
     parameters.AddParam("p0", string.Empty, CommonLinkUtility.GetFullAbsolutePath("~/products/projects/templates.aspx"));
     parameters.AddParam("p1", string.Empty, ReportResource.ChangeSettings);
     var xml = string.Format("<div class='noContentBlock'>{0}</div>", ProjectsCommonResource.NoData);
     var fileName = Path.Combine(HttpRuntime.AppDomainAppPath, string.Format("products\\projects\\templates\\{0}.xsl", ReportViewType.EMail)).ToLower();
     var xslt = new XslCompiledTransform();
     if (File.Exists(fileName))
     {
         xslt.Load(fileName);
         using (var reader = XmlReader.Create(new StringReader(xml)))
         using (var writer = new StringWriter())
         using (var xmlwriter = XmlWriter.Create(writer, new XmlWriterSettings() { Encoding = Encoding.UTF8 }))
         {
             xslt.Transform(reader, parameters, writer);
             result = writer.ToString();
         }
         var user = CoreContext.UserManager.GetUsers(new Guid(template.CreateBy));
         var message = new NoticeMessage(user, template.Name, result, "html");
         log4net.LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Send auto report: {0}", template.Name);
         WorkContext.NotifyContext.DispatchEngine.Dispatch(message, "email.sender");
     }
 }
 private void SaveOrUpdateTemplate(ReportTemplate template, string title, string period, int periodItem, int hour, bool autoGenerated)
 {
     template.Name = HttpUtility.HtmlEncode(title);
     switch (period)
     {
         case "day":
             template.Cron = string.Format("0 0 {0} * * ?", hour);
             break;
         case "week":
             template.Cron = string.Format("0 0 {0} ? * {1}", hour, periodItem);
             break;
         case "month":
             template.Cron = string.Format("0 0 {0} {1} * ?", hour, periodItem);
             break;
         default:
             template.Cron = string.Format("0 0 {0} * * ?", 12);
             break;
     }
     template.AutoGenerated = autoGenerated;
     EngineFactory.GetReportEngine().SaveTemplate(template);
 }
Beispiel #10
0
 private static ReportTemplate ToTemplate(IList<object> r)
 {
     var tenant = CoreContext.TenantManager.GetTenant(Convert.ToInt32(r[7]));
     var template = new ReportTemplate((ReportType)Convert.ToInt32(r[1]))
     {
         Id = Convert.ToInt32(r[0]),
         Name = (string)r[2],
         Filter = r[3] != null ? TaskFilter.FromXml((string)r[3]) : new TaskFilter(),
         Cron = (string)r[4],
         CreateBy = ToGuid(r[5]),
         CreateOn = TenantUtil.DateTimeFromUtc(tenant.TimeZone, Convert.ToDateTime(r[6])),
         Tenant = tenant.TenantId,
         AutoGenerated = Convert.ToBoolean(r[8]),
     };
     return template;
 }
Beispiel #11
0
 private ReportTemplate SaveOrUpdateTemplate(ReportTemplate template, string title, int period, int periodItem, int hour, bool autoGenerated)
 {
     template.Name = HttpUtility.HtmlEncode(title);
     switch (period)
     {
         case 0:
             template.Cron = string.Format("0 0 {0} * * ?", periodItem);
             break;
         case 1:
             template.Cron = string.Format("0 0 {0} ? * {1}", hour, periodItem);
             break;
         case 2:
             template.Cron = string.Format("0 0 {0} {1} * ?", hour, periodItem);
             break;
     }
     template.AutoGenerated = autoGenerated;
     return Global.EngineFactory.GetReportEngine().SaveTemplate(template);
 }
Beispiel #12
0
        public string SaveTemplate(string reportParams, string title, int period, int periodItem, int hour, bool sendEmail)
        {
            ProjectSecurity.DemandAuthentication();

            if (title == null || title.Trim().Length == 0) throw new ArgumentNullException("title");

            var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            var rp = serializer.Deserialize<ReportParams>(reportParams);
            var filter = ParseJSONFilter(rp);

            var reptype = 0;
            int.TryParse(rp.ReportType, out reptype);

            var template = new ReportTemplate((ReportType)reptype);
            template.Filter = filter;

            SaveOrUpdateTemplate(template, title, period, periodItem, hour, sendEmail);

            return string.Empty;
        }