public async Task <IHttpActionResult> GetChangeRequestStaging(int changeRequestId)
        {
            MfrBodyCodeChangeRequestStagingModel changeRequestStagingMfrBodyCodeModel =
                await this._mfrBodyCodeApplicationService.GetChangeRequestStaging(changeRequestId);

            ChangeRequestStagingMfrBodyCodeViewModel changeRequestStagingMfrBodyCodeViewModel = Mapper.Map <ChangeRequestStagingMfrBodyCodeViewModel>(changeRequestStagingMfrBodyCodeModel);

            SetUpChangeRequestReview(changeRequestStagingMfrBodyCodeViewModel.StagingItem.Status,
                                     changeRequestStagingMfrBodyCodeViewModel.StagingItem.SubmittedBy, changeRequestStagingMfrBodyCodeViewModel);
            return(Ok(changeRequestStagingMfrBodyCodeViewModel));
        }
Exemplo n.º 2
0
        public new async Task <MfrBodyCodeChangeRequestStagingModel> GetChangeRequestStaging <TId>(TId changeRequestId)
        {
            var result = await
                         ChangeRequestBusinessService.GetChangeRequestStagingByChangeRequestIdAsync <MfrBodyCode, TId>(changeRequestId);

            List <VehicleToMfrBodyCode> vehicleToMfrBodyCodes = null;

            if (result.StagingItem.ChangeType == ChangeType.Replace.ToString())
            {
                result.EntityStaging = result.EntityCurrent;
                var changeRequestIdLong = Convert.ToInt64(changeRequestId);
                var vehicleToMfrBodyCodeChangeRequestItems = await this.ChangeRequestBusinessService.GetChangeRequestItemStagingsAsync(item => item.ChangeRequestId == changeRequestIdLong);

                if (vehicleToMfrBodyCodeChangeRequestItems != null && vehicleToMfrBodyCodeChangeRequestItems.Any())
                {
                    var vehicleToMfrBodyCodeIds = vehicleToMfrBodyCodeChangeRequestItems.Select(item => Convert.ToInt32(item.EntityId)).ToList();
                    vehicleToMfrBodyCodes = await base.Repositories.GetRepositoryService <VehicleToMfrBodyCode>()
                                            .GetAsync(item => vehicleToMfrBodyCodeIds.Any(id => id == item.Id) && item.DeleteDate == null);

                    //1. Extract the replacement mfrBodyCode to mfrBodyCodeid from the first deserialized vehicleToMfrBodyCodeChangeRequestItems
                    var vehicleToMfrBodyCode = Serializer.Deserialize <VehicleToMfrBodyCode>(vehicleToMfrBodyCodeChangeRequestItems[0].Payload);

                    //2. fill result.EntityStaging with the replacement MfrBodyCode details
                    result.EntityStaging = await FindAsync(vehicleToMfrBodyCode.MfrBodyCodeId);

                    // 3. fill currentEntity
                    result.EntityCurrent = await FindAsync(result.StagingItem.EntityId);
                }
                else
                {
                    var vehicleToMfrBodyCodeChangeRequestStoreItems = await this.ChangeRequestBusinessService.GetChangeRequestItemAsync(item =>
                                                                                                                                        item.ChangeRequestId == changeRequestIdLong);

                    if (vehicleToMfrBodyCodeChangeRequestStoreItems != null && vehicleToMfrBodyCodeChangeRequestStoreItems.Any())
                    {
                        var vehicleToMfrBodyCodeIds = vehicleToMfrBodyCodeChangeRequestStoreItems.Select(item => Convert.ToInt32(item.EntityId)).ToList();
                        vehicleToMfrBodyCodes =
                            await
                            base.Repositories.GetRepositoryService <VehicleToMfrBodyCode>()
                            .GetAsync(item => vehicleToMfrBodyCodeIds.Any(id => id == item.Id) && item.DeleteDate == null);

                        //1. Extract the replacement base vehicle id from the first deserialized vehicleChangeRequestItems
                        var vehicleToMfrBodyCode = Serializer.Deserialize <VehicleToMfrBodyCode>(vehicleToMfrBodyCodeChangeRequestStoreItems[0].Payload);

                        //2. fill result.EntityStaging with the replacement base vehicle details
                        result.EntityStaging = await FindAsync(vehicleToMfrBodyCode.MfrBodyCodeId);

                        // 3. fill currentEntity
                        result.EntityCurrent = await FindAsync(result.StagingItem.EntityId);
                    }
                }
            }

            MfrBodyCodeChangeRequestStagingModel staging = new MfrBodyCodeChangeRequestStagingModel
            {
                EntityCurrent = result.EntityCurrent,
                EntityStaging = result.EntityStaging,
                //RequestorComments = result.RequestorComments,
                //ReviewerComments = result.ReviewerComments,
                Comments    = result.Comments,
                StagingItem = result.StagingItem,
                ReplacementVehicleToMfrBodyCodes = vehicleToMfrBodyCodes,
                Attachments = result.Attachments
            };

            return(staging);
        }