public FileResourceDto(FileResourceInfo fileResourceInfo) { FileResourceData = fileResourceInfo.FileResourceData.Data; FileResourceGUID = fileResourceInfo.FileResourceGUID; OriginalBaseFilename = fileResourceInfo.OriginalBaseFilename; OriginalFileExtension = fileResourceInfo.OriginalFileExtension; Email = fileResourceInfo.CreatePerson.Email; CreateDate = fileResourceInfo.CreateDate; FileResourceMimeTypeName = fileResourceInfo.FileResourceMimeType.FileResourceMimeTypeDisplayName; }
public ProjectUpdateNotificationHelper(string contactSupportEmail, string introContent, string reminderSubject, FileResourceInfo toolLogo, string toolDisplayName, int tenantID) { ContactSupportEmail = contactSupportEmail; IntroContent = introContent; ReminderEmailSubject = reminderSubject; ToolLogo = toolLogo; ToolName = toolDisplayName; TenantID = tenantID; }
public EntityAttachment(string deleteUrl, string editUrl, FileResourceInfo fileResourceInfo, AttachmentType attachmentType, string displayCssClass, string displayName, string description) { _deleteUrl = deleteUrl; _editUrl = editUrl; FileResourceInfo = fileResourceInfo; SetDisplayCssClass(displayCssClass); DisplayName = displayName; Description = description; AttachmentType = attachmentType; }
// ReSharper restore InconsistentNaming public string GetCkEditorJavascriptContentToReturn(FileResourceInfo fileResourceInfo) { var ckEditorJavascriptContentToReturn = $@" <script language=""javascript"" type=""text/javascript""> // <![CDATA[ window.parent.CKEDITOR.tools.callFunction({CKEditorFuncNum}, {fileResourceInfo.GetFileResourceUrl().ToJS()}); // ]]> </script>"; return(ckEditorJavascriptContentToReturn); }
//Only public for unit testing public static FileResourceInfo CreateNewFromHttpPostedFile(HttpPostedFileBase httpPostedFileBase, Person currentPerson) { var originalFilenameInfo = new FileInfo(httpPostedFileBase.FileName); var baseFilenameWithoutExtension = originalFilenameInfo.Name.Remove(originalFilenameInfo.Name.Length - originalFilenameInfo.Extension.Length, originalFilenameInfo.Extension.Length); var fileResourceData = ConvertHttpPostedFileToByteArray(httpPostedFileBase); var fileResourceMimeTypeID = GetFileResourceMimeTypeForFile(httpPostedFileBase).FileResourceMimeTypeID; var fileResourceInfo = new FileResourceInfo(fileResourceMimeTypeID, baseFilenameWithoutExtension, originalFilenameInfo.Extension, Guid.NewGuid(), currentPerson.PersonID, DateTime.Now); fileResourceInfo.FileResourceDatas.Add(new FileResourceData(fileResourceInfo.FileResourceInfoID, fileResourceData)); return(fileResourceInfo); }
public static FileResourceInfo Create() { var fileResourceInfo = new FileResourceInfo(FileResourceMimeType.JPEG.FileResourceMimeTypeID, MakeTestImagefileBaseName(), ".jpg", Guid.NewGuid(), LoginConstants.PersonID, DateTime.Now); fileResourceInfo.FileResourceDatas.Add(new FileResourceData(fileResourceInfo.FileResourceInfoID, new byte[2000])); return(fileResourceInfo); }
public IHttpActionResult UpdateOrganization(string apiKey, [FromBody] OrganizationDto organizationDto) { Check.Require(apiKey == FirmaWebApiConfiguration.PsInfoApiKey, "Unrecognized api key!"); var organization = _databaseEntities.Organizations.SingleOrDefault(x => x.OrganizationID == organizationDto.OrganizationID); if (organization == null) { var message = $"Organization with ID = {organizationDto.OrganizationID} not found"; return(NotFound()); } organization.OrganizationName = organizationDto.OrganizationName; organization.KeystoneOrganizationGuid = organizationDto.OrganizationGuid; organization.OrganizationShortName = organizationDto.OrganizationShortName; organization.OrganizationTypeID = organizationDto.OrganizationTypeID; organization.IsActive = organizationDto.IsActive; organization.OrganizationUrl = organizationDto.OrganizationUrl; organization.Description = organizationDto.Description; if (organizationDto.LogoFileResource != null) { var fileResourceDto = organizationDto.LogoFileResource; var fileResourceMimeType = MapFileResourceMimeTypeNameToFileResourceMimeType(fileResourceDto.FileResourceMimeTypeName); if (fileResourceMimeType == null) { var error = $"Invalid File Resource Mime Type '{fileResourceDto.FileResourceMimeTypeName}' for '{fileResourceDto.FileResourceGUID}'"; return(BadRequest(error)); } var peopleDictionary = _databaseEntities.People.ToDictionary(x => x.Email); var fileResourceMimeTypeID = fileResourceMimeType.FileResourceMimeTypeID; var personID = peopleDictionary.ContainsKey(fileResourceDto.Email) ? peopleDictionary[fileResourceDto.Email].PersonID : 5278; var fileResourceInfo = new FileResourceInfo(fileResourceMimeTypeID, fileResourceDto.OriginalBaseFilename, fileResourceDto.OriginalFileExtension, fileResourceDto.FileResourceGUID, personID, fileResourceDto.CreateDate); fileResourceInfo.FileResourceDatas.Add(new FileResourceData(fileResourceInfo.FileResourceInfoID, fileResourceDto.FileResourceData)); var oldLogoFileResourceInfo = organization.LogoFileResourceInfo; organization.LogoFileResourceInfo = fileResourceInfo; oldLogoFileResourceInfo?.FileResourceData.Delete(_databaseEntities); oldLogoFileResourceInfo?.Delete(_databaseEntities); } _databaseEntities.SaveChangesWithNoAuditing(Tenant.ActionAgendaForPugetSound.TenantID); var fundingSourceReloaded = new OrganizationDto(organization); return(Ok(fundingSourceReloaded)); }
public IHttpActionResult PostOrganization(string apiKey, [FromBody] OrganizationDto organizationDto) { Check.Require(apiKey == FirmaWebApiConfiguration.PsInfoApiKey, "Unrecognized api key!"); var tenantID = Tenant.ActionAgendaForPugetSound.TenantID; // If Organization already exists because it was created by Keystone - do an Update instead of a create if (_databaseEntities.Organizations.Any(x => x.OrganizationName == organizationDto.OrganizationName)) { var existingOrganization = _databaseEntities.Organizations.Single(x => x.OrganizationName == organizationDto.OrganizationName); // Give the Dto the correct Organization ID and OrganizationTypeID for ProjectFirma organizationDto.OrganizationID = existingOrganization.OrganizationID; organizationDto.OrganizationTypeID = _databaseEntities.OrganizationTypes.SingleOrDefault(x => x.OrganizationTypeName == organizationDto.OrganizationTypeName)?.OrganizationTypeID ?? _databaseEntities.OrganizationTypes.Single(x => x.IsDefaultOrganizationType).OrganizationTypeID; return(UpdateOrganization(apiKey, organizationDto)); } var organization = new Organization(organizationDto.OrganizationName, organizationDto.IsActive, organizationDto.OrganizationTypeID, true, false); organization.KeystoneOrganizationGuid = organizationDto.OrganizationGuid; organization.OrganizationShortName = organizationDto.OrganizationShortName; organization.OrganizationUrl = organizationDto.OrganizationUrl; organization.Description = organizationDto.Description; if (organizationDto.LogoFileResource != null) { var fileResourceDto = organizationDto.LogoFileResource; var fileResourceMimeType = MapFileResourceMimeTypeNameToFileResourceMimeType(fileResourceDto.FileResourceMimeTypeName); if (fileResourceMimeType == null) { var error = $"Invalid File Resource Mime Type '{fileResourceDto.FileResourceMimeTypeName}' for '{fileResourceDto.FileResourceGUID}'"; return(BadRequest(error)); } var peopleDictionary = _databaseEntities.People.ToDictionary(x => x.Email); var fileResourceMimeTypeID = fileResourceMimeType.FileResourceMimeTypeID; var personID = peopleDictionary.ContainsKey(fileResourceDto.Email) ? peopleDictionary[fileResourceDto.Email].PersonID : 5278; var fileResourceInfo = new FileResourceInfo(fileResourceMimeTypeID, fileResourceDto.OriginalBaseFilename, fileResourceDto.OriginalFileExtension, fileResourceDto.FileResourceGUID, personID, fileResourceDto.CreateDate); fileResourceInfo.FileResourceDatas.Add(new FileResourceData(fileResourceInfo.FileResourceInfoID, fileResourceDto.FileResourceData)); organization.LogoFileResourceInfo = fileResourceInfo; } _databaseEntities.AllOrganizations.Add(organization); _databaseEntities.SaveChangesWithNoAuditing(tenantID); var organizationReloaded = new OrganizationDto(organization); return(Ok(organizationReloaded)); }
public IHttpActionResult UpdatePerformanceMeasureImportance(string apiKey, [FromBody] PerformanceMeasureImportanceDto performanceMeasureDto) { Check.Require(apiKey == FirmaWebApiConfiguration.PsInfoApiKey, "Unrecognized api key!"); var performanceMeasure = _databaseEntities.PerformanceMeasures.SingleOrDefault(x => x.PerformanceMeasureID == performanceMeasureDto.PerformanceMeasureID); if (performanceMeasure == null) { var message = $"Performance Measure with ID = {performanceMeasureDto.PerformanceMeasureID} not found"; return(NotFound()); } performanceMeasure.Importance = performanceMeasureDto.Importance; var fileResourceDtos = performanceMeasureDto.FileResources; var fileResourceMimeTypes = fileResourceDtos.ToDictionary(x => new { x.FileResourceGUID, x.FileResourceMimeTypeName }, x => MapFileResourceMimeTypeNameToFileResourceMimeType(x.FileResourceMimeTypeName)); if (fileResourceMimeTypes.Values.Any(x => x == null)) { var errors = fileResourceMimeTypes.Where(x => x.Value == null).Select(x => $"Invalid File Resource Mime Type '{x.Key.FileResourceMimeTypeName}' for '{x.Key.FileResourceGUID}'").ToList(); return(BadRequest(string.Join("\r\n", errors))); } // Remove all of these, too hard to merge nicely _databaseEntities.AllFileResourceDatas.RemoveRange(performanceMeasure.PerformanceMeasureImages.Select(x => x.FileResourceInfo.FileResourceData)); _databaseEntities.AllFileResourceInfos.RemoveRange(performanceMeasure.PerformanceMeasureImages.Select(x => x.FileResourceInfo)); _databaseEntities.AllPerformanceMeasureImages.RemoveRange(performanceMeasure.PerformanceMeasureImages); var peopleDictionary = _databaseEntities.People.ToDictionary(x => x.Email); var performanceMeasureImagesToUpdate = fileResourceDtos.Select(x => { var fileResourceMimeTypeID = fileResourceMimeTypes.Single(y => y.Key.FileResourceGUID == x.FileResourceGUID).Value.FileResourceMimeTypeID; var personID = peopleDictionary.ContainsKey(x.Email) ? peopleDictionary[x.Email].PersonID : 5278; var fileResourceInfo = new FileResourceInfo(fileResourceMimeTypeID, x.OriginalBaseFilename, x.OriginalFileExtension, x.FileResourceGUID, personID, x.CreateDate); fileResourceInfo.FileResourceDatas.Add(new FileResourceData(fileResourceInfo.FileResourceInfoID, x.FileResourceData)); var performanceMeasureImage = new PerformanceMeasureImage(performanceMeasure, fileResourceInfo); return(performanceMeasureImage); }).ToList(); _databaseEntities.SaveChangesWithNoAuditing(Tenant.ActionAgendaForPugetSound.TenantID); var performanceMeasureReloaded = new PerformanceMeasureSimpleDto(performanceMeasure); return(Ok(performanceMeasureReloaded)); }
private ActionResult DisplayResourceImpl(string fileResourceInfoPrimaryKey, FileResourceInfo fileResourceInfo) { if (fileResourceInfo == null) { var message = $"File Resource {fileResourceInfoPrimaryKey} Not Found in database. It may have been deleted."; throw new HttpException(404, message); } // If you're adding new mime types to the system, you need to add them below -- 08/29/2019 SMG // Removed PDFResult & ExcelResult and just ran both through the FileResourceResult to fix bugs occurring - both PDF & Excel work fine/better with FileResourceResult -- 6/15/2020 MZ switch (fileResourceInfo.FileResourceMimeType.ToEnum) { case FileResourceMimeTypeEnum.PDF: case FileResourceMimeTypeEnum.ExcelXLS: case FileResourceMimeTypeEnum.ExcelXLSX: case FileResourceMimeTypeEnum.xExcelXLSX: case FileResourceMimeTypeEnum.WordDOCX: case FileResourceMimeTypeEnum.WordDOC: case FileResourceMimeTypeEnum.PowerpointPPTX: case FileResourceMimeTypeEnum.PowerpointPPT: case FileResourceMimeTypeEnum.CSS: case FileResourceMimeTypeEnum.KMZ: case FileResourceMimeTypeEnum.KML: case FileResourceMimeTypeEnum.XZIP: case FileResourceMimeTypeEnum.ZIP: return(new FileResourceResult(fileResourceInfo.GetOriginalCompleteFileName(), fileResourceInfo.FileResourceData.Data, fileResourceInfo.FileResourceMimeType)); case FileResourceMimeTypeEnum.XPNG: case FileResourceMimeTypeEnum.PNG: case FileResourceMimeTypeEnum.TIFF: case FileResourceMimeTypeEnum.BMP: case FileResourceMimeTypeEnum.GIF: case FileResourceMimeTypeEnum.JPEG: case FileResourceMimeTypeEnum.PJPEG: return(File(fileResourceInfo.FileResourceData.Data, fileResourceInfo.FileResourceMimeType.FileResourceMimeTypeName)); default: // throw a more specific error that can hint to developers and assure users what needs to be done when adding a new mime type throw new SitkaDisplayErrorException($"The file type \"{fileResourceInfo.FileResourceMimeType.FileResourceMimeTypeDisplayName}\" has not been explicitly whitelisted to download. The development team has been notified, if you continue to receive errors, please contact support."); } }
public void UpdateModel(ReportTemplate reportTemplate, FileResourceInfo fileResourceInfo, FirmaSession currentFirmaSession, DatabaseEntities databaseEntities) { // updating parameters reportTemplate.DisplayName = DisplayName; reportTemplate.Description = Description; reportTemplate.FileResourceInfo = fileResourceInfo; reportTemplate.ReportTemplateModelTypeID = ReportTemplateModelTypeID; reportTemplate.ReportTemplateModelID = ReportTemplateModelID; var updateIsReplacingFileResourceData = FileResourceData != null && FileResourceInfoID != null; if (updateIsReplacingFileResourceData) { // delete the old FileResourceInfo var oldFileResource = HttpRequestStorage.DatabaseEntities.FileResourceInfos.First(x => x.FileResourceInfoID == FileResourceInfoID); oldFileResource.FileResourceData.Delete(databaseEntities); oldFileResource.Delete(databaseEntities); } }
public static void CreateFromProject(ProjectUpdateBatch projectUpdateBatch) { var project = projectUpdateBatch.Project; projectUpdateBatch.ProjectImageUpdates = project.ProjectImages.Select(pn => { var currentFileResource = pn.FileResourceInfo; var newFileResource = new FileResourceInfo(currentFileResource.FileResourceMimeType, currentFileResource.OriginalBaseFilename, currentFileResource.OriginalFileExtension, Guid.NewGuid(), currentFileResource.CreatePerson, currentFileResource.CreateDate); newFileResource.FileResourceDatas.Add(new FileResourceData(newFileResource.FileResourceInfoID, currentFileResource.FileResourceData.Data)); return(new ProjectImageUpdate(projectUpdateBatch, pn.ProjectImageTiming, pn.Caption, pn.Credit, pn.IsKeyPhoto, pn.ExcludeFromFactSheet) { FileResourceInfo = newFileResource, ProjectImageID = pn.ProjectImageID }); }).ToList(); }
public static string GetFileResourceUrlScaledForPrint(this FileResourceInfo fileResourceInfo) { return(SitkaRoute <FileResourceController> .BuildUrlFromExpression(x => x.GetFileResourceResized(fileResourceInfo.GetFileResourceGUIDAsString(), 500, 500))); }
public IHttpActionResult PostPerformanceMeasure(string apiKey, [FromBody] PerformanceMeasureDto performanceMeasureDto) { Check.Require(apiKey == FirmaWebApiConfiguration.PsInfoApiKey, "Unrecognized api key!"); var performanceMeasureType = MapPerformanceMeasureTypeNameToPerformanceMeasureType(performanceMeasureDto.PerformanceMeasureTypeName); var performanceMeasureDataSourceType = MapPerformanceMeasureDataSourceTypeNameToPerformanceMeasureDataSourceType(performanceMeasureDto.PerformanceMeasureDataSourceTypeName); var measurementUnitType = MapMeasurementUnitTypeNameToMeasurementUnitType(performanceMeasureDto.MeasurementUnitTypeName); if (performanceMeasureType == null) { return(BadRequest($"Invalid Performance Measure Type: {performanceMeasureDto.PerformanceMeasureTypeName}")); } if (performanceMeasureDataSourceType == null) { return(BadRequest($"Invalid Performance Measure Data Source Type: {performanceMeasureDto.PerformanceMeasureDataSourceTypeName}")); } if (measurementUnitType == null) { return(BadRequest($"Invalid Measurement Unit: {performanceMeasureDto.MeasurementUnitTypeName}")); } var performanceMeasure = new PerformanceMeasure(performanceMeasureDto.PerformanceMeasureDisplayName, measurementUnitType.MeasurementUnitTypeID, performanceMeasureType.PerformanceMeasureTypeID, performanceMeasureDto.IsSummable, performanceMeasureDataSourceType.PerformanceMeasureDataSourceTypeID, performanceMeasureDto.CanBeChartedCumulatively, false); performanceMeasure.CriticalDefinitions = performanceMeasureDto.CriticalDefinitions; performanceMeasure.PerformanceMeasureDefinition = performanceMeasureDto.PerformanceMeasureDefinition; performanceMeasure.ProjectReporting = performanceMeasureDto.ProjectReporting; performanceMeasure.Importance = performanceMeasureDto.Importance; performanceMeasure.AdditionalInformation = performanceMeasureDto.AdditionalInformation; // create file resources for images in the Importance rich text var fileResourceDtos = performanceMeasureDto.FileResources; var fileResourceMimeTypes = fileResourceDtos.ToDictionary(x => new { x.FileResourceGUID, x.FileResourceMimeTypeName }, x => MapFileResourceMimeTypeNameToFileResourceMimeType(x.FileResourceMimeTypeName)); if (fileResourceMimeTypes.Values.Any(x => x == null)) { var errors = fileResourceMimeTypes.Where(x => x.Value == null).Select(x => $"Invalid File Resource Mime Type '{x.Key.FileResourceMimeTypeName}' for '{x.Key.FileResourceGUID}'").ToList(); return(BadRequest(string.Join("\r\n", errors))); } var peopleDictionary = _databaseEntities.People.ToDictionary(x => x.Email); var performanceMeasureImages = fileResourceDtos.Select(x => { var fileResourceMimeTypeID = fileResourceMimeTypes.Single(y => y.Key.FileResourceGUID == x.FileResourceGUID).Value.FileResourceMimeTypeID; var personID = peopleDictionary.ContainsKey(x.Email) ? peopleDictionary[x.Email].PersonID : 5278; var fileResourceInfo = new FileResourceInfo(fileResourceMimeTypeID, x.OriginalBaseFilename, x.OriginalFileExtension, x.FileResourceGUID, personID, x.CreateDate); fileResourceInfo.FileResourceDatas.Add(new FileResourceData(fileResourceInfo.FileResourceInfoID, x.FileResourceData)); var performanceMeasureImage = new PerformanceMeasureImage(performanceMeasure, fileResourceInfo); return(performanceMeasureImage); }).ToList(); var tenantID = Tenant.ActionAgendaForPugetSound.TenantID; foreach (var performanceMeasureSubcategoryDto in performanceMeasureDto.PerformanceMeasureSubcategories) { var googleChartType = MapGoogleChartTypeNameToGoogleChartType(performanceMeasureSubcategoryDto.GoogleChartTypeName); if (googleChartType == null) { return(BadRequest($"Invalid Google Chart Type '{performanceMeasureSubcategoryDto.GoogleChartTypeName}' for Subcategory '{performanceMeasureSubcategoryDto.PerformanceMeasureSubcategoryName}'")); } var performanceMeasureSubcategory = new PerformanceMeasureSubcategory(performanceMeasure, performanceMeasureSubcategoryDto.PerformanceMeasureSubcategoryName) { ChartConfigurationJson = performanceMeasureSubcategoryDto.ChartConfigurationJson, GoogleChartTypeID = googleChartType.GoogleChartTypeID, TenantID = tenantID }; foreach (var performanceMeasureSubcategoryOptionDto in performanceMeasureSubcategoryDto.PerformanceMeasureSubcategoryOptions) { var performanceMeasureSubcategoryOption = new PerformanceMeasureSubcategoryOption(performanceMeasureSubcategory, performanceMeasureSubcategoryOptionDto.PerformanceMeasureSubcategoryOptionName, false) { TenantID = tenantID }; } } _databaseEntities.AllPerformanceMeasures.Add(performanceMeasure); _databaseEntities.SaveChangesWithNoAuditing(tenantID); var performanceMeasureReloaded = new PerformanceMeasureDto(performanceMeasure); return(Ok(performanceMeasureReloaded)); }
public PdfResult(FileResourceInfo fileResourceInfo) : base(fileResourceInfo.GetOriginalCompleteFileName(), fileResourceInfo.FileResourceData.Data, FileResourceMimeType.PDF) { Check.Require(fileResourceInfo.FileResourceMimeType == FileResourceMimeType.PDF, "Only a real PDF file can be saved off as PDF"); ConstructorImpl(fileResourceInfo.GetOriginalCompleteFileName()); }
public static string GetFileResourceUrl(this FileResourceInfo fileResourceInfo) { return(FileResourceByGuidUrlTemplate.ParameterReplace(fileResourceInfo.GetFileResourceGUIDAsString())); }
public static string FileResourceUrlScaledThumbnail(this FileResourceInfo fileResourceInfo, int maxHeight) { return(SitkaRoute <FileResourceController> .BuildUrlFromExpression(x => x.GetFileResourceResized(fileResourceInfo.GetFileResourceGUIDAsString(), maxHeight, maxHeight))); }
public void DeleteFullWithFileResource(DatabaseEntities dbContext) { // Looks kind of weird but it will cascade delete the ReportTemplate FileResourceInfo.DeleteFull(dbContext); }
public static string GetFileResourceDataLengthString(this FileResourceInfo fileResourceInfo) { return($"(~{(fileResourceInfo.FileResourceData.Data.Length / 1000).ToGroupedNumeric()} KB)"); }