public override ReportTemplate Update <Dto>(Dto dto)
        {
            return(dto switch
            {
                ReportTemplateUpdateDto reportTemplateUpdateDto => UpdateReportTemplate(reportTemplateUpdateDto),

                _ => throw new InvalidOperationException($"{nameof(dto)} is not ReportTemplateUpdateDto"),
            });
        public async Task <IActionResult> Put([FromRoute] string OrgRoleId, [FromRoute] string templateId, [FromBody] ReportTemplateVM reportTemplateVM)
        {
            if (string.IsNullOrEmpty(OrgRoleId) || string.IsNullOrWhiteSpace(OrgRoleId))
            {
                return(StatusCode(StatusCodes.Status400BadRequest,
                                  new BadRequestError($"{nameof(OrgRoleId)} Parameter cant be null")));
            }

            if (string.IsNullOrEmpty(templateId) || string.IsNullOrWhiteSpace(templateId))
            {
                return(StatusCode(StatusCodes.Status400BadRequest,
                                  new BadRequestError($"{nameof(templateId)} Parameter cant be null")));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            OrganizationRole organizationRole = organizationRoleService
                                                .Get <OrganizationRole>(orgRole => orgRole.Id == OrgRoleId);

            if (organizationRole == null)
            {
                return(StatusCode(StatusCodes.Status404NotFound,
                                  new NotFoundError($"OrganizationRole not found")));
            }

            User user = await GetCurrentUser();

            if (user == null)
            {
                return(StatusCode(StatusCodes.Status404NotFound, new NotFoundError("current User not found")));
            }

            ReportTemplateDto reportTemplateDto = _typeAdapter.Adapt <ReportTemplateVM, ReportTemplateDto>(reportTemplateVM);

            var reportTemplateUpdateDto = new ReportTemplateUpdateDto
            {
                UserId             = user.Id,
                ReportTemplateId   = templateId,
                ReportTemplatedDto = reportTemplateDto
            };

            try
            {
                reportTemplateService.Update(reportTemplateUpdateDto);

                if (_unitOfWork.SaveChanges() < 0)
                {
                    return(StatusCode(StatusCodes.Status400BadRequest,
                                      new BadRequestError("Error when trying to update a template")));
                }

                return(StatusCode(StatusCodes.Status200OK));
            }
            catch (InvalidOperationException ex)
            {
                return(StatusCode(StatusCodes.Status400BadRequest,
                                  new BadRequestError(ex.Message)));
            }
        }