public async Task <IHttpActionResult> GetChangeRequestStaging(int changeRequestId) { // retrieve staging information BaseVehicleChangeRequestStagingModel changeRequestStagingModel = await this._baseVehicleApplicationService.GetChangeRequestStaging(changeRequestId); // convert to view model ChangeRequestStagingBaseVehicleViewModel changeRequestStagingBaseVehicleViewModel = Mapper.Map <ChangeRequestStagingBaseVehicleViewModel>(changeRequestStagingModel); // setup change request review properties SetUpChangeRequestReview(changeRequestStagingBaseVehicleViewModel.StagingItem.Status, changeRequestStagingBaseVehicleViewModel.StagingItem.SubmittedBy, changeRequestStagingBaseVehicleViewModel); return(Ok(changeRequestStagingBaseVehicleViewModel)); }
public new async Task <BaseVehicleChangeRequestStagingModel> GetChangeRequestStaging <TId>(TId changeRequestId) { var result = await ChangeRequestBusinessService.GetChangeRequestStagingByChangeRequestIdAsync <BaseVehicle, TId>(changeRequestId); // business specific task. // fill value of "EntityCurrent" //if (!result.StagingItem.ChangeType.Equals(ChangeType.Add.ToString(), StringComparison.CurrentCultureIgnoreCase)) //{ // result.EntityCurrent = await FindAsync(result.StagingItem.EntityId); //} List <Vehicle> vehicles = null; if (result.StagingItem.ChangeType == ChangeType.Replace.ToString()) { var changeRequestIdLong = Convert.ToInt64(changeRequestId); var vehicleChangeRequestItems = await this.ChangeRequestBusinessService.GetChangeRequestItemStagingsAsync(item => item.ChangeRequestId == changeRequestIdLong); if (vehicleChangeRequestItems != null && vehicleChangeRequestItems.Any()) { var vehicleIds = vehicleChangeRequestItems.Select(item => Convert.ToInt32(item.EntityId)).ToList(); vehicles = await base.Repositories.GetRepositoryService <Vehicle>() .GetAsync(item => vehicleIds.Any(id => id == item.Id) && item.DeleteDate == null); //1. Extract the replacement base vehicle id from the first deserialized vehicleChangeRequestItems var vehicle = Serializer.Deserialize <Vehicle>(vehicleChangeRequestItems[0].Payload); //2. fill result.EntityStaging with the replacement base vehicle details result.EntityStaging = await FindAsync(vehicle.BaseVehicleId); // 3. fill currentEntity result.EntityCurrent = await FindAsync(result.StagingItem.EntityId); //NOTE: vehicles will have existing base vehicle id, replacement base vehicle id can be found only in deserialized vehicle //foreach (var item in vehicleChangeRequestItems) //{ // vehicles.Add(Serializer.Deserialize<Vehicle>(item.Payload)); //} } else { var vehicleChangeRequestStoreItems = await this.ChangeRequestBusinessService.GetChangeRequestItemAsync(item => item.ChangeRequestId == changeRequestIdLong); if (vehicleChangeRequestStoreItems != null && vehicleChangeRequestStoreItems.Any()) { var vehicleIds = vehicleChangeRequestStoreItems.Select(item => Convert.ToInt32(item.EntityId)).ToList(); vehicles = await base.Repositories.GetRepositoryService <Vehicle>() .GetAsync(item => vehicleIds.Any(id => id == item.Id) && item.DeleteDate == null); //1. Extract the replacement base vehicle id from the first deserialized vehicleChangeRequestItems var vehicle = Serializer.Deserialize <Vehicle>(vehicleChangeRequestStoreItems[0].Payload); //2. fill result.EntityStaging with the replacement base vehicle details result.EntityStaging = await FindAsync(vehicle.BaseVehicleId); // 3. fill currentEntity result.EntityCurrent = await FindAsync(result.StagingItem.EntityId); } } } BaseVehicleChangeRequestStagingModel staging = new BaseVehicleChangeRequestStagingModel { EntityCurrent = result.EntityCurrent, EntityStaging = result.EntityStaging, //RequestorComments = result.RequestorComments, //ReviewerComments = result.ReviewerComments, Comments = result.Comments, StagingItem = result.StagingItem, ReplacementVehicles = vehicles, Attachments = result.Attachments }; return(staging); }