public async Task <IActionResult> ExecuteChangePlan(Guid id)
        {
            var changePlan = await _changePlanService.GetChangePlanAsync(id);

            changePlan.ExecutedDate = DateTime.Now;
            await _changePlanService.UpdateChangePlanAsync(changePlan);

            var changePlanItems = await _changePlanService.GetChangePlanItemsAsync(id);

            for (var i = 0; i < changePlanItems.Count(); i++)
            {
                var changePlanItem = changePlanItems[i];
                //NOTE: THE NEWDATA HERE IS A CreateAssetApiDto (assetDto/asset entity cannot be serialized)
                if (changePlanItem.ExecutionType.Equals("create"))
                {
                    var assetApiDto = JsonConvert.DeserializeObject <CreateAssetApiDto>(changePlanItem.NewData);
                    //assetApiDto.LastUpdatedDate = DateTime.Now;
                    var assetDto = _mapper.Map <AssetDto>(assetApiDto);
                    if (assetDto.ChassisId != null && assetDto.ChassisId != Guid.Empty)
                    {
                        var item = await _changePlanService.GetChangePlanItemAsync(assetDto.ChassisId ?? Guid.Empty);

                        if (item != null)
                        {
                            assetDto.ChassisId = item.AssetId;
                        }
                    }
                    await _changePlanService.CreateAssetAsync(assetDto, changePlanItem);
                }
                //NOTE: THE NEWDATA HERE IS A UpdateAssetApiDto (assetDto/asset entity cannot be serialized)
                else if (changePlanItem.ExecutionType.Equals("update"))
                {
                    var assetApiDto = JsonConvert.DeserializeObject <UpdateAssetApiDto>(changePlanItem.NewData);
                    //assetApiDto.LastUpdatedDate = DateTime.Now;
                    var assetDto = _mapper.Map <AssetDto>(assetApiDto);
                    await _assetService.UpdateAssetAsync(assetDto);
                }
                //NOTE: THE NEWDATA HERE IS A DecommissionedAssetDto
                else if (changePlanItem.ExecutionType.Equals("decommission"))
                {
                    var changePlanItemForAsset = await _changePlanService.GetChangePlanItemAsync(changePlanItem.AssetId);

                    if (changePlanItemForAsset != null)
                    {
                        changePlanItem.AssetId = changePlanItemForAsset.AssetId;
                    }

                    var decommisionedAsset        = JsonConvert.DeserializeObject <DecommissionedAssetDto>(changePlanItem.NewData);
                    var createDecommissionedAsset = JsonConvert.DeserializeObject <CreateDecommissionedAsset>(decommisionedAsset.Data);
                    var assetDto = await _assetService.GetAssetForDecommissioning(changePlanItem.AssetId);

                    decommisionedAsset = CreateDecommissionedAsset(assetDto, createDecommissionedAsset);

                    await _assetService.DeleteAssetAsync(decommisionedAsset.Id);

                    await _assetService.CreateDecommissionedAssetAsync(decommisionedAsset);
                }
            }

            return(Ok());
        }
예제 #2
0
        public async Task <IActionResult> Delete(Guid id)
        {
            await _assetService.DeleteAssetAsync(id);

            return(Ok());
        }