diff --git a/server/AyaNova/biz/ReportBiz.cs b/server/AyaNova/biz/ReportBiz.cs index 406963b1..7bf6feae 100644 --- a/server/AyaNova/biz/ReportBiz.cs +++ b/server/AyaNova/biz/ReportBiz.cs @@ -385,10 +385,16 @@ namespace AyaNova.Biz var log = AyaNova.Util.ApplicationLogging.CreateLogger("ReportBiz::RenderReport"); //Customer User Report? - if(reportRequest.ReportId==-100){ - //get the user data and set the actual report id or return null if not found - - HERE NEXT + bool RequestIsCustomerWorkOrderReport=false; + if (reportRequest.ReportId == -100) + { + //get the user and workorder data and set the actual report id or return null if not found + var woTags = await ct.WorkOrder.AsNoTracking().Where(x => x.Id == reportRequest.SelectedRowIds[0]).Select(x => x.Tags).FirstOrDefaultAsync(); + if(woTags==null) return null; + var cr = await UserBiz.CustomerUserEffectiveRightsAsync(UserId, woTags); + if(cr.ThisWOEffectiveWOReportId==null) return null; + reportRequest.ReportId=(long)cr.ThisWOEffectiveWOReportId; + RequestIsCustomerWorkOrderReport=true; } //get report, vet security, see what we need before init in case of issue @@ -409,7 +415,7 @@ namespace AyaNova.Biz AuthorizationRoles effectiveRoles = CurrentUserRoles; - if (!AyaNova.Api.ControllerHelpers.Authorized.HasReadFullRole(effectiveRoles, report.AType)) + if (!RequestIsCustomerWorkOrderReport && !AyaNova.Api.ControllerHelpers.Authorized.HasReadFullRole(effectiveRoles, report.AType)) { AddError(ApiErrorCode.NOT_AUTHORIZED, null, $"User not authorized for {report.AType} type object"); return null; @@ -512,7 +518,7 @@ namespace AyaNova.Biz log.LogDebug($"Launching headless Browser now:"); using (var browser = await Puppeteer.LaunchAsync(lo)) using (var page = await browser.NewPageAsync()) - // using (var page = (await browser.PagesAsync()).First())//for language setting version + // using (var page = (await browser.PagesAsync()).First())//for language setting version { //track this process so it can be cancelled if it times out ReportRenderManager.AddProcess(browser.Process.Id); @@ -619,8 +625,8 @@ namespace AyaNova.Biz if (logo.Medium != null) HasMediumLogo = "true"; if (logo.Large != null) HasLargeLogo = "true"; } - var HasPostalAddress=!string.IsNullOrWhiteSpace(ServerGlobalBizSettings.Cache.PostAddress)?"true":"false"; - var HasStreetAddress=!string.IsNullOrWhiteSpace(ServerGlobalBizSettings.Cache.Address)?"true":"false"; + var HasPostalAddress = !string.IsNullOrWhiteSpace(ServerGlobalBizSettings.Cache.PostAddress) ? "true" : "false"; + var HasStreetAddress = !string.IsNullOrWhiteSpace(ServerGlobalBizSettings.Cache.Address) ? "true" : "false"; var serverMeta = $"{{ayApiUrl:`{apiUrl}`, HasSmallLogo:{HasSmallLogo}, HasMediumLogo:{HasMediumLogo}, HasLargeLogo:{HasLargeLogo},CompanyName: `{AyaNova.Core.License.ActiveKey.RegisteredTo}`,CompanyWebAddress:`{ServerGlobalBizSettings.Cache.WebAddress}`,CompanyEmailAddress:`{ServerGlobalBizSettings.Cache.EmailAddress}`,CompanyPhone1:`{ServerGlobalBizSettings.Cache.Phone1}`,CompanyPhone2:`{ServerGlobalBizSettings.Cache.Phone2}`,HasPostalAddress:{HasPostalAddress},CompanyPostAddress:`{ServerGlobalBizSettings.Cache.PostAddress}`,CompanyPostCity:`{ServerGlobalBizSettings.Cache.PostCity}`,CompanyPostRegion:`{ServerGlobalBizSettings.Cache.PostRegion}`,CompanyPostCountry:`{ServerGlobalBizSettings.Cache.PostCountry}`,CompanyPostCode:`{ServerGlobalBizSettings.Cache.PostCode}`,HasStreetAddress:{HasStreetAddress},CompanyAddress:`{ServerGlobalBizSettings.Cache.Address}`,CompanyCity:`{ServerGlobalBizSettings.Cache.City}`,CompanyRegion:`{ServerGlobalBizSettings.Cache.Region}`,CompanyCountry:`{ServerGlobalBizSettings.Cache.Country}`,CompanyLatitude:{ServerGlobalBizSettings.Cache.Latitude},CompanyLongitude:{ServerGlobalBizSettings.Cache.Longitude}}}"; @@ -685,9 +691,9 @@ namespace AyaNova.Biz { var ClientPDFDate = reportRequest.ClientMeta["PDFDate"].Value(); var ClientPDFTime = reportRequest.ClientMeta["PDFTime"].Value(); - PdfOptions.HeaderTemplate = report.HeaderTemplate.Replace("PDFDate",ClientPDFDate).Replace("PDFTime",ClientPDFTime); - PdfOptions.FooterTemplate = report.FooterTemplate.Replace("PDFDate",ClientPDFDate).Replace("PDFTime",ClientPDFTime); - + PdfOptions.HeaderTemplate = report.HeaderTemplate.Replace("PDFDate", ClientPDFDate).Replace("PDFTime", ClientPDFTime); + PdfOptions.FooterTemplate = report.FooterTemplate.Replace("PDFDate", ClientPDFDate).Replace("PDFTime", ClientPDFTime); + } if (report.PaperFormat != ReportPaperFormat.NotSet)