public async Task <ActionResult <GetAssetApiDto> > GetById([FromQuery] GetAssetByIdQuery query) { var changePlanItem = await _changePlanService.GetChangePlanItemAsync(query.AssetId); if (changePlanItem == null) { changePlanItem = await _changePlanService.GetChangePlanItemAsync(query.ChangePlanId ?? Guid.Empty, query.AssetId); } //check to see if you're in a change plan if (query.ChangePlanId != null && query.ChangePlanId != Guid.Empty && changePlanItem != null) { //if the change plan item is a decommissioned asset if (changePlanItem.ExecutionType.Equals("decommission")) { var decommissionedAssetDto = (JsonConvert.DeserializeObject <DecommissionedAssetDto>(changePlanItem.NewData)); var decommission = JsonConvert.DeserializeObject <CreateDecommissionedAsset>(decommissionedAssetDto.Data); return(Ok(decommission)); } //if the change plan item is a created or updated item var assetDto = new AssetDto(); if (changePlanItem.ExecutionType.Equals("create")) { assetDto = _mapper.Map <AssetDto>(JsonConvert.DeserializeObject <CreateAssetApiDto>(changePlanItem.NewData)); assetDto.Id = changePlanItem.Id; } else if (changePlanItem.ExecutionType.Equals("update")) { assetDto = _mapper.Map <AssetDto>(JsonConvert.DeserializeObject <UpdateAssetApiDto>(changePlanItem.NewData)); } await _changePlanService.FillFieldsInAssetApiForChangePlans(assetDto); await AddBladesToGetCall(query, assetDto); return(Ok(_mapper.Map <GetAssetApiDto>(assetDto))); } var asset = await _assetService.GetAssetAsync(query.AssetId); var decommissionedAsset = await _assetService.GetDecommissionedAssetAsync(query.AssetId); if (asset != null) { await AddBladesToGetCall(query, asset); var response = _mapper.Map <GetAssetApiDto>(asset); return(Ok(response)); } else if (decommissionedAsset != null) { var assetApi = JsonConvert.DeserializeObject <CreateDecommissionedAsset>(decommissionedAsset.Data); return(Ok(assetApi)); } //nothign was found return(Ok()); }
public async Task <ActionResult <List <GetAssetApiDto> > > GetChassis([FromQuery] GetAssetByIdQuery query) { var assets = await _datacenterService.GetChassisOfDataCenterAsync(query.AssetId); var response = _mapper.Map <List <GetAssetsApiDto> >(assets); if (query.ChangePlanId != null && query.ChangePlanId != Guid.Empty) { await GetChangePlanChassis(response, query.ChangePlanId ?? Guid.Empty); } return(Ok(response)); }
private async Task <ActionResult> AddBladesToGetCall(GetAssetByIdQuery query, AssetDto chassis) { if (!chassis.Model.MountType.Contains("chassis") || query.ChangePlanId == null || query.ChangePlanId == Guid.Empty) { return(Ok()); } var changePlanId = query.ChangePlanId ?? Guid.Empty; var changePlanItems = await _changePlanService.GetChangePlanItemsAsync(changePlanId); foreach (ChangePlanItemDto changePlanItem in changePlanItems) { var newAssetDto = new AssetDto(); if (changePlanItem.ExecutionType.Equals("create")) { var updatedAssetApi = JsonConvert.DeserializeObject <CreateAssetApiDto>(changePlanItem.NewData); newAssetDto = _mapper.Map <AssetDto>(updatedAssetApi); newAssetDto.Id = changePlanItem.Id; } else if (changePlanItem != null && changePlanItem.ExecutionType.Equals("update")) { var updatedAssetApi = JsonConvert.DeserializeObject <UpdateAssetApiDto>(changePlanItem.NewData); newAssetDto = _mapper.Map <AssetDto>(updatedAssetApi); } if (newAssetDto.ChassisId != query.AssetId) //this change plan item is not part of the chassis' blades { continue; } //var decommissionAssetExists = _changePlanService.GetChangePlanItemAsync(newAssetDto.Id); var updateadAssetDto = await _changePlanService.FillFieldsInAssetApiForChangePlans(newAssetDto); if (chassis.Blades != null) { var remove = chassis.Blades.Find(x => x.Id == updateadAssetDto.Id); chassis.Blades.Remove(remove); } chassis.Blades.Add(updateadAssetDto); } return(Ok()); }