public Asset UpdateAssetFile(string id, UpdateAssetViewModel request) { var existingAsset = GetAsset(id); string fileId = existingAsset.FileId.ToString(); var file = _fileManager.GetFileFolder(fileId, request.DriveName); if (file == null) { throw new EntityDoesNotExistException($"Asset file with id {fileId} could not be found or doesn't exist"); } file.StoragePath = Path.Combine(file.StoragePath, request.File.FileName); file.ContentType = request.File.ContentType; file.Name = request.File.FileName; file.Size = request.File.Length; file.Files = new IFormFile[] { request.File }; _fileManager.UpdateFile(file); existingAsset.SizeInBytes = file.Size; AssetNameAvailability(existingAsset); return(existingAsset); }
public async Task <IActionResult> Put(string id, [FromForm] UpdateAssetViewModel request) { try { var existingAsset = _manager.UpdateAssetFile(id, request); //update asset entity await _webhookPublisher.PublishAsync("Assets.AssetUpdated", existingAsset.Id.ToString(), existingAsset.Name).ConfigureAwait(false); await base.PutEntity(id, existingAsset); return(Ok(existingAsset)); } catch (Exception ex) { return(ex.GetActionResult()); } }
public async Task <IActionResult> Put(string id, [FromForm] UpdateAssetViewModel request) { try { Guid entityId = new Guid(id); var existingAsset = repository.GetOne(entityId); if (existingAsset == null) { return(NotFound()); } string binaryObjectId = existingAsset.BinaryObjectID.ToString(); var binaryObject = binaryObjectRepo.GetOne(Guid.Parse(binaryObjectId)); string organizationId = binaryObject.OrganizationId.ToString(); if (!string.IsNullOrEmpty(organizationId)) { organizationId = processManager.GetOrganizationId().ToString(); } if (request.Name != null) { var asset = repository.Find(null, d => d.Name.ToLower(null) == request.Name.ToLower(null))?.Items?.FirstOrDefault(); if (asset != null && asset.Id != entityId) { ModelState.AddModelError("Asset", "Asset Name Already Exists"); return(BadRequest(ModelState)); } } if (request == null) { ModelState.AddModelError("Save", "No data passed"); } long size = request.file == null ? 0 : request.file.Length; try { if (!string.IsNullOrEmpty(request.Name)) { existingAsset.Name = request.Name; } else { existingAsset.Name = existingAsset.Name; } if (!string.IsNullOrEmpty(request.Type)) { existingAsset.Type = request.Type; } else { existingAsset.Type = existingAsset.Type; } existingAsset.TextValue = request.TextValue; existingAsset.NumberValue = request.NumberValue; existingAsset.JsonValue = request.JsonValue; if (existingAsset.BinaryObjectID != Guid.Empty && size > 0) { //Update Asset file in OpenBots.Server.Web using relative directory string apiComponent = "AssetAPI"; await processManager.Update(existingAsset.BinaryObjectID.Value, request.file, organizationId, apiComponent, request.file.FileName); } //Update Asset entity await base.PutEntity(id, existingAsset); return(Ok(existingAsset)); } catch (Exception ex) { return(ex.GetActionResult()); } } catch (Exception ex) { ModelState.AddModelError("Asset", ex.Message); return(BadRequest(ModelState)); } }
public async Task <IActionResult> Put(string id, [FromForm] UpdateAssetViewModel request) { try { Guid entityId = new Guid(id); var existingAsset = repository.GetOne(Guid.Parse(id)); if (existingAsset == null) { ModelState.AddModelError("Asset", "Asset cannot be found or does not exist."); return(NotFound(ModelState)); } string binaryObjectId = existingAsset.BinaryObjectID.ToString(); var binaryObject = binaryObjectRepo.GetOne(Guid.Parse(binaryObjectId)); string organizationId = binaryObject.OrganizationId.ToString(); if (!string.IsNullOrEmpty(organizationId)) { organizationId = automationManager.GetOrganizationId().ToString(); } if (request.Name != null) { var asset = repository.Find(null, d => d.Name.ToLower(null) == request.Name.ToLower(null))?.Items?.FirstOrDefault(); if (asset != null && asset.Id != entityId) { ModelState.AddModelError("Asset", "Asset name already exists"); return(BadRequest(ModelState)); } } if (request.File == null) { ModelState.AddModelError("Save", "No asset uploaded"); return(BadRequest(ModelState)); } long size = request.File == null ? 0 : request.File.Length; if (size <= 0) { ModelState.AddModelError("Asset Upload", $"File size of asset {request.File.FileName} cannot be 0"); return(BadRequest(ModelState)); } try { if (!string.IsNullOrEmpty(request.Name)) { existingAsset.Name = request.Name; } else { existingAsset.Name = existingAsset.Name; } if (!string.IsNullOrEmpty(request.Type)) { existingAsset.Type = request.Type; } else { existingAsset.Type = existingAsset.Type; } existingAsset.TextValue = request.TextValue; existingAsset.NumberValue = request.NumberValue; existingAsset.JsonValue = request.JsonValue; existingAsset.SizeInBytes = request.File.Length; if (existingAsset.BinaryObjectID != Guid.Empty && size > 0) { //update asset file in OpenBots.Server.Web using relative directory string apiComponent = "AssetAPI"; await automationManager.Update(existingAsset.BinaryObjectID.Value, request.File, organizationId, apiComponent, request.File.FileName); } //update asset entity await webhookPublisher.PublishAsync("Assets.AssetUpdated", existingAsset.Id.ToString(), existingAsset.Name).ConfigureAwait(false); await base.PutEntity(id, existingAsset); return(Ok(existingAsset)); } catch (Exception ex) { return(ex.GetActionResult()); } } catch (Exception ex) { ModelState.AddModelError("Asset", ex.Message); return(BadRequest(ModelState)); } }