public async Task <IActionResult> Delete(DeleteViewModel model) { try { var findCompany = (await _companyRepository.GetSingleAsync(model.Id, x => x.Shops, x => x.Fields, x => x.Wells)); if (findCompany == null) { return(NotFound()); } ///Каскадно удаляем сначала все скважины в компании, т.к. EF настроен как OnDelete(DeleteBehavior.Restrict) if (findCompany.Wells.Any()) { _wellRepository.DeleteRange(findCompany.Wells); } ///Затем каскадно удаляем скважины в цехах, которые принадлежат этой компании if (findCompany.Shops.Any()) { foreach (var shop in findCompany.Shops) { var findShop = await _shopRepository.GetSingleAsync(shop.Id, x => x.Wells); if (findShop.Wells.Any()) { _wellRepository.DeleteRange(findShop.Wells); } } } ///Затем каскадно удаляем скважины на месторождениях, которые принадлежат этой компании if (findCompany.Fields.Any()) { foreach (var field in findCompany.Fields) { var findField = await _fieldRepository.GetSingleAsync(field.Id, x => x.Wells); if (findField.Wells.Any()) { _wellRepository.DeleteRange(findField.Wells); } } } ///Затем удаляем саму компанию _companyRepository.Delete(await _companyRepository.GetSingleAsync(model.Id)); return(Ok()); } catch (Exception e) { Log.Error(e, "CompanyController.Delete"); return(BadRequest(_messageModelBuilder.CreateModel("500", e.Message))); } }
public async Task <IActionResult> Delete(DeleteViewModel model) { try { var findItem = await _shopRepository.GetSingleAsync(model.Id, x => x.Wells); if (findItem == null) { return(NotFound()); } ///Каскадно удаляем сначала все скважины в цехе, т.к. EF настроен как OnDelete(DeleteBehavior.Restrict) if (findItem.Wells.Any()) { _wellRepository.DeleteRange(findItem.Wells); } ///Затем удаляем сам цех _shopRepository.Delete(findItem); return(Ok()); } catch (Exception e) { Log.Error(e, "ShopController.Delete"); return(BadRequest(_messageModelBuilder.CreateModel("500", e.Message))); } }