コード例 #1
0
        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);
        }
コード例 #2
0
 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;
 }
コード例 #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);
        }
コード例 #4
0
ファイル: ReportDao.cs プロジェクト: ridhouan/teamlab.v6.5
        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;
        }
コード例 #5
0
ファイル: ReportDao.cs プロジェクト: Inzaghi2012/teamlab.v7.5
 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;
     }
 }
コード例 #6
0
ファイル: ReportEngine.cs プロジェクト: ridhouan/teamlab.v6.5
        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);
        }
コード例 #7
0
ファイル: ReportDao.cs プロジェクト: ridhouan/teamlab.v6.5
 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;
 }
コード例 #8
0
ファイル: ReportHelper.cs プロジェクト: ridhouan/teamlab.v6.5
 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");
     }
 }
コード例 #9
0
 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);
 }
コード例 #10
0
ファイル: ReportDao.cs プロジェクト: vipwan/CommunityServer
 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;
 }
コード例 #11
0
ファイル: Reports.aspx.cs プロジェクト: ridhouan/teamlab.v6.5
 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);
 }
コード例 #12
0
ファイル: Reports.aspx.cs プロジェクト: ridhouan/teamlab.v6.5
        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;
        }