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());
        }
Esempio n. 2
0
        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());
        }