Пример #1
0
        /// <summary>
        ///     Handles the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="response">The response.</param>
        protected override void Handle(SaveReportTemplateRequest request, SaveReportTemplateResponse response)
        {
            var reportTemplateDto = request.ReportTemplate;

            if (reportTemplateDto.Key == Guid.Empty)
            {
                var reportTemplateFactory = new ReportTemplateFactory();
                var paramertersType       = reportTemplateDto.Parameters.GetType();
                var destinationType       = Mapper.GetAllTypeMaps().First(typeMap => typeMap.SourceType == paramertersType).DestinationType;
                var parameters            = Mapper.Map(reportTemplateDto.Parameters, paramertersType, destinationType) as BaseReportParameters;
                if (parameters == null)
                {
                    return;
                }
                parameters.ReportName = reportTemplateDto.Name;
                var reportTemplate = reportTemplateFactory.Create(
                    reportTemplateDto.SystemAccountKey,
                    reportTemplateDto.Name,
                    reportTemplateDto.ReportType,
                    parameters,
                    _lookupProvider.Find <ReportState> (reportTemplateDto.ReportState.Code));
                if (reportTemplate != null)
                {
                    var dto = Mapper.Map <ReportTemplate, ReportTemplateDto> (reportTemplate);
                    response.ReportTemplate = dto;
                }
            }
            else
            {
                //update
                var reportTemplate = _reportTemplateRepository.GetByKey(reportTemplateDto.Key);
                if (reportTemplate != null)
                {
                    reportTemplate.ChangeName(reportTemplateDto.Name);
                    reportTemplate.ChangeReportType(reportTemplateDto.ReportType);
                    reportTemplate.ChangeParameters(reportTemplateDto.Parameters);
                    reportTemplate.ChangeReportState(_lookupProvider.Find <ReportState> (reportTemplateDto.ReportState.Code));
                    var dto = Mapper.Map <ReportTemplate, ReportTemplateDto> (reportTemplate);
                    response.ReportTemplate = dto;
                }
            }
        }
Пример #2
0
        private static string GenerateReport(EstadoDoProjeto resultadoGeral, string solutionDirectory)
        {
            var reportDirectory = Combine(solutionDirectory, "CodeMetricsReport");
            var reportPath      = Combine(reportDirectory, "CodeMetricsReport.zip");
            var rawReportPath   = Combine(reportDirectory, "RawCodeMetricsReport.xml");

            var reportTemplateFactory = new ReportTemplateFactory();
            var report = reportTemplateFactory.GetReport(resultadoGeral);
            var list = new[] { "*.css", "*.js" }.SelectMany(ext => Directory.GetFiles(Combine(ApplicationPath, "ReportTemplate"), ext)).ToList();


            Directory.CreateDirectory(reportDirectory);
            using (var zipArchive = new ZipArchive(OpenWrite(reportPath), ZipArchiveMode.Create))
            {
                foreach (var item in list)
                {
                    var fileName = GetFileName(item);
                    zipArchive.CreateEntryFromFile(item, fileName);
#if DEBUG
                    Copy(item, Combine(reportDirectory, fileName), true);
#endif
                }
                var archiveEntry = zipArchive.CreateEntry("Index.html");
                using (var stream = archiveEntry.Open())
                    using (var streamWriter = new StreamWriter(stream, Encoding.UTF8))
                        streamWriter.Write(report);
#if DEBUG
                reportPath = Combine(reportDirectory, "Index.html");
                WriteAllText(reportPath, report, Encoding.UTF8);
#endif
                zipArchive.Dispose();
            }

            using (var fileStream = Open(rawReportPath, FileMode.Create))
            {
                var xmlSerializer = new XmlSerializer(typeof(EstadoDoProjeto));
                xmlSerializer.Serialize(fileStream, resultadoGeral);
            }

            return(reportPath);
        }