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)));
            }
        }
Beispiel #2
0
        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)));
            }
        }