public async Task <EditAutomobileInputModel> GetAutomobileEditInputModelAsync(int id) { Automobile automobile = await this.GetAutomobileByIdAsync(id); if (!await UserOwnsAutomobileAsync(automobile)) { throw new UnauthorizedAccessException(ModelConstants.Unauthorized); } EditAutomobileInputModel viewModel = this.mapper.Map <EditAutomobileInputModel>(automobile); return(viewModel); }
public async Task EditAutomobileAsync(int id, EditAutomobileInputModel inputModel) { var automobileToEdit = await this.GetAutomobileByIdAsync(id); if (!await UserOwnsAutomobileAsync(automobileToEdit)) { throw new UnauthorizedAccessException(ModelConstants.Unauthorized); } var automobileMapping = this.mapper.Map <Automobile>(inputModel); automobileToEdit.Make = await this.dbContext.Makes .Where(x => x.Name == inputModel.PrimaryProperties.Make) .FirstOrDefaultAsync(); automobileToEdit.Model = await this.dbContext.Models .Where(x => x.Name == inputModel.PrimaryProperties.Model) .FirstOrDefaultAsync(); automobileToEdit.Title = inputModel.Title; automobileToEdit.Comment = inputModel.Comment; automobileMapping.ModifiedOn = DateTime.UtcNow; if (automobileMapping.PrimaryProperties != null) { var primaryProperties = automobileMapping.PrimaryProperties; if (automobileToEdit.PrimaryProperties != null) { primaryProperties.Id = (int)automobileToEdit.PrimaryPropertiesId; this.dbContext.Entry(automobileToEdit.PrimaryProperties).CurrentValues.SetValues(automobileMapping.PrimaryProperties); } else { automobileToEdit.PrimaryProperties = automobileMapping.PrimaryProperties; } } if (automobileMapping.Interiors != null) { var interiors = automobileMapping.Interiors; if (automobileToEdit.Interiors != null) { interiors.Id = (int)automobileToEdit.InteriorsId; } else { automobileToEdit.Interiors = automobileMapping.Interiors; } this.dbContext.Entry(automobileToEdit.Interiors).CurrentValues.SetValues(automobileMapping.Interiors); } if (automobileMapping.InteriorMaterials != null) { var interiorMaterials = automobileMapping.InteriorMaterials; if (automobileToEdit.InteriorMaterials != null) { interiorMaterials.Id = (int)automobileToEdit.InteriorMaterialsId; } else { automobileToEdit.InteriorMaterials = automobileMapping.InteriorMaterials; } this.dbContext.Entry(automobileToEdit.InteriorMaterials).CurrentValues.SetValues(automobileMapping.InteriorMaterials); } if (automobileMapping.Suspensions != null) { var suspensions = automobileMapping.Suspensions; if (automobileToEdit.Suspensions != null) { suspensions.Id = (int)automobileToEdit.SuspensionsId; this.dbContext.Entry(automobileToEdit.Suspensions).CurrentValues.SetValues(automobileMapping.Suspensions); } else { automobileToEdit.Suspensions = automobileMapping.Suspensions; } } if (automobileMapping.ExtraFeatures != null) { var extraFeatures = automobileMapping.ExtraFeatures; if (automobileToEdit.ExtraFeatures != null) { extraFeatures.Id = (int)automobileToEdit.ExtraFeaturesId; this.dbContext.Entry(automobileToEdit.ExtraFeatures).CurrentValues.SetValues(automobileMapping.ExtraFeatures); } else { automobileToEdit.ExtraFeatures = automobileMapping.ExtraFeatures; } } if (automobileMapping.SpecializedFeatures != null) { var specializedFeatures = automobileMapping.SpecializedFeatures; if (automobileToEdit.SpecializedFeatures != null) { specializedFeatures.Id = (int)automobileToEdit.SpecializedFeaturesId; this.dbContext.Entry(automobileToEdit.SpecializedFeatures).CurrentValues.SetValues(automobileMapping.SpecializedFeatures); } else { automobileToEdit.SpecializedFeatures = automobileMapping.SpecializedFeatures; } } if (automobileMapping.Images != null) { var images = automobileMapping.Images; if (automobileToEdit.Images != null) { images.Id = (int)automobileToEdit.ImagesId; this.dbContext.Entry(automobileToEdit.Images).CurrentValues.SetValues(automobileMapping.Images); //TODO fix images they are not uploading } else { automobileToEdit.Images = automobileMapping.Images; } } this.dbContext.Update(automobileToEdit); await this.dbContext.SaveChangesAsync(); }
public async Task <IActionResult> Edit(int id, EditAutomobileInputModel inputModel) { await this.autoService.EditAutomobileAsync(id, inputModel); return(this.Redirect($"/Automobile/Index/{id}")); }