/// <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; } } }
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); }