Пример #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;
                }
            }
        }