예제 #1
0
        public async Task <IActionResult> Delete(int?id)
        {
            var MerchantId = await _userService.GetCurrentMerchantId(User);

            var store = await _context.Store
                        .Include(s => s.Merchant)
                        .ThenInclude(s => s.User)
                        .FirstOrDefaultAsync(s => s.Id == id && s.MerchantId == MerchantId);

            if (store == null)
            {
                return(NotFound());
            }

            var model = new DeleteStoreViewModel
            {
                Id           = store.Id,
                Name         = store.Name,
                MerchantName = store.Merchant.Name,
                Address      = store.Address,
                Status       = store.Status,

                TerminalCount = await _context.Terminal.CountAsync(t => t.StoreId == store.Id),
                PaymentCount  = await _context.Payment.CountAsync(t => t.StoreId == store.Id)
            };

            return(View(model));
        }
예제 #2
0
    public IActionResult DeleteStore(Guid?id)
    {
        if (id == null)
        {
            return(RedirectToAction(IndexAction, DefaultController));
        }

        var storeToDel = _storeRepository.GetOne(id.Value);

        if (storeToDel == null)
        {
            return(View("StoreNotFound", id.Value));
        }

        var delStoreViewModel = new DeleteStoreViewModel {
            Store = storeToDel
        };

        return(View(delStoreViewModel));
    }
예제 #3
0
    public IActionResult DeleteStore(DeleteStoreViewModel deleteStoreViewModel)
    {
        var storeToDel = _storeRepository.GetOne(deleteStoreViewModel.StoreId);

        if (storeToDel == null)
        {
            return(View("StoreNotFound", deleteStoreViewModel.StoreId));
        }

        if (storeToDel.Categories.Count != 0)
        {
            var productsToRemove            = new List <Product>();
            var categoriesToRemoveFromStore = new List <Category>();
            foreach (var category in storeToDel.Categories)
            {
                productsToRemove.AddRange(category.Products
                                          .Where(pr =>
                                                 pr.CategoryId.Equals(category.Id) &&
                                                 !pr.ProductStatus.Equals(ProductStatus.Purchased))
                                          .ToList());
                categoriesToRemoveFromStore.Add(category);
            }

            foreach (var product in productsToRemove)
            {
                _productRepository.DeleteOne(product.Id);
            }

            foreach (var category in categoriesToRemoveFromStore)
            {
                _categoryRepository.DeleteCategoryFromStore(category, storeToDel.Id);
            }
        }

        _storeRepository.DeleteOne(storeToDel.Id);
        return(RedirectToAction(IndexAction, DefaultController));
    }