using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using BankContracts.BindingModels; using BankContracts.BusinessLogicsContracts; using BankContracts.SearchModels; using BankContracts.ViewModels; using BankDatabaseImplement.Models; using BankBusinessLogic.BusinessLogics; namespace BankRestApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class ProgramController : Controller { private readonly ILogger _logger; private readonly IProgramLogic _program; public ProgramController(ILogger logger, IProgramLogic program) { _logger = logger; _program = program; } [HttpGet] public IActionResult Create() { try { var programs = _program.ReadList(null); ViewBag.Programs = programs; return View(); } catch (Exception ex) { _logger.LogError(ex, "Ошибка при загрузке формы создания клиента"); return StatusCode(500, "Ошибка при загрузке формы"); } } [HttpGet] public List GetPrograms() { try { List res; res = _program.ReadList(null); return res; } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка программ"); throw; } } [HttpPost] public bool CreateProgram(ProgramBindingModel model) { try { return _program.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Не удалось создать программу"); throw; } } [HttpGet("{id}")] public IActionResult GetProgramById(int id) { try { var program = _program.GetProgramById(id); if (program == null) { return NotFound($"Программа с ID {id} не найдена."); } return Ok(program); } catch (Exception ex) { _logger.LogError(ex, "Ошибка при получении программы"); return StatusCode(500, "Ошибка при получении программы"); } } } }