у меня есть контроллер, нужно создать все необходимые представления
using BuildingFlow_DAL.Contract;
using BuildingFlow_Model.Entities;
using BuildingFlow_BLL.Models.ViewModels;
using Microsoft.AspNetCore.Mvc;
using AutoMapper;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;
using BuildingFlow_BLL.Models;

namespace BuildingFlow_MVC.Controllers
{
  public class ClientController : Controller
  {
    private readonly IUnitOfWork _unitOfWork;
    private readonly IMapper _mapper;
    private readonly IRepository<Client> _clientRepository;
    private readonly ILogger<ClientController> _logger;

    public ClientController(IUnitOfWork unitOfWork, IMapper mapper, ILogger<ClientController> logger)
    {
      _unitOfWork = unitOfWork;
      _mapper = mapper;
      _clientRepository = _unitOfWork.GetRepository<Client>();
      _logger = logger;
    }

    // GET: clients
    public async Task<IActionResult> Index()
    {
      try
      {
        var clients = await _clientRepository.AsReadOnlyQueryable().ToListAsync();
        var clientVMs = _mapper.Map<List<ClientVM>>(clients);
        return View(clientVMs);
      }
      catch (Exception ex)
      {
        _logger.LogError(ex, "Ошибка при получении списка клиентов.");
        return View("Error", new ErrorViewModel { Message = "Произошла ошибка при загрузке данных." });
      }
    }

    // GET: Client/Create
    public IActionResult Create()
    {
      return View();
    }

    // POST: Client/Create
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(ClientVM clientVM)
    {
      if (ModelState.IsValid)
      {
        try
        {
          var client = _mapper.Map<Client>(clientVM);
          _clientRepository.Create(client);
          await _unitOfWork.SaveChangesAsync();
          TempData["SuccessMessage"] = "Клиент успешно создан.";
          return RedirectToAction(nameof(Index));
        }
        catch (Exception ex)
        {
          _logger.LogError(ex, "Ошибка при создании клиента.");
          ModelState.AddModelError(string.Empty, "Произошла ошибка при создании клиента.");
        }
      }
      return View(clientVM);
    }

    // GET: Client/Edit/5
    public async Task<IActionResult> Edit(int id)
    {
      try
      {
        var client = await _clientRepository.AsReadOnlyQueryable().FirstOrDefaultAsync(c => c.Id == id);
        if (client == null)
        {
          return NotFound();
        }
        var clientVM = _mapper.Map<ClientVM>(client);
        return View(clientVM);
      }
      catch (Exception ex)
      {
        _logger.LogError(ex, "Ошибка при получении клиента для редактирования.");
        return View("Error", new ErrorViewModel { Message = "Произошла ошибка при загрузке данных." });
      }
    }

    // POST: Client/Edit/5
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Edit(int id, ClientVM clientVM)
    {
      if (id != clientVM.Id)
      {
        return NotFound();
      }

      if (ModelState.IsValid)
      {
        try
        {
          var client = await _clientRepository.AsQueryable().FirstOrDefaultAsync(c => c.Id == id);
          if (client == null)
          {
            return NotFound();
          }
          _mapper.Map(clientVM, client);
          await _unitOfWork.SaveChangesAsync();
          TempData["SuccessMessage"] = "Клиент успешно обновлён.";
          return RedirectToAction(nameof(Index));
        }
        catch (Exception ex)
        {
          _logger.LogError(ex, "Ошибка при обновлении клиента.");
          ModelState.AddModelError(string.Empty, "Произошла ошибка при обновлении клиента.");
        }
      }
      return View(clientVM);
    }

    // GET: Client/Delete/5
    public async Task<IActionResult> Delete(int id)
    {
      try
      {
        var client = await _clientRepository.AsReadOnlyQueryable().FirstOrDefaultAsync(c => c.Id == id);
        if (client == null)
        {
          return NotFound();
        }
        var clientVM = _mapper.Map<ClientVM>(client);
        return View(clientVM);
      }
      catch (Exception ex)
      {
        _logger.LogError(ex, "Ошибка при получении клиента для удаления.");
        return View("Error", new ErrorViewModel { Message = "Произошла ошибка при загрузке данных." });
      }
    }

    // POST: Client/Delete/5
    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> DeleteConfirmed(int id)
    {
      try
      {
        var client = await _clientRepository.AsQueryable().FirstOrDefaultAsync(c => c.Id == id);
        if (client == null)
        {
          return NotFound();
        }
        _clientRepository.Delete(client);
        await _unitOfWork.SaveChangesAsync();
        TempData["SuccessMessage"] = "Клиент успешно удалён.";
        return RedirectToAction(nameof(Index));
      }
      catch (Exception ex)
      {
        _logger.LogError(ex, "Ошибка при удалении клиента.");
        ModelState.AddModelError(string.Empty, "Произошла ошибка при удалении клиента.");
        return View();
      }
    }
  }
}