using System; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using OnlineAssessment.Common; using OnlineAssessment.Data; using OnlineAssessment.Domain; namespace OnlineAssessment.V1.Controllers { [Route("v{version:apiVersion}/[controller]")] [ApiController] [EnableCors("OdiwarePolicy")] [ApiVersion("1.0")] public class BaseController : ControllerBase where TEntity : class, IEntity where TRepository : IRepository { private readonly TRepository repository; public BaseController(TRepository repository) { this.repository = repository; } /// /// Get list of the records for this entity /// /// [HttpGet] public virtual IActionResult GetAll() { dynamic entity = repository.GetAll(); if (entity == null) { return NotFound(); } IActionResult returnResponse; returnResponse = Ok(ReturnResponse.GetSuccessStatus(entity)); return returnResponse; } /// /// Get a specific record by id /// /// /// [HttpGet("{id}")] public virtual IActionResult Get(int id) { dynamic entity = repository.Get(id); if (entity == null) { return NotFound(); } IActionResult returnResponse; returnResponse = Ok(ReturnResponse.GetSuccessStatus(entity)); return returnResponse; //return entity; } ///// ///// Update the record ///// ///// ///// ///// //[HttpPut("{id}")] //public virtual IActionResult Put(int id, dynamic jsonData) //{ // try // { // TEntity entity = jsonData.ToObject(); // if (id != entity.Id) // { // return BadRequest(); // } // repository.Update(entity); // return Ok(ReturnResponse.GetSuccessStatus(entity)); // } // catch (Exception ex) // { // return Ok(ReturnResponse.GetFailureStatus(ex.InnerException.Message.ToString())); // } //} ///// ///// Add a new record ///// ///// ///// //[HttpPost] //public virtual IActionResult Post(dynamic jsonData) //{ // IActionResult returnResponse = null; // try // { // TEntity entity = jsonData.ToObject(); // dynamic newEntity = repository.Add(entity); // if (newEntity != null) // returnResponse = Ok(ReturnResponse.GetSuccessStatus("RECORD ADDED SUCCESSFULLY")); // else // returnResponse = Ok(ReturnResponse.GetFailureStatus("FAILED TO ADD NEW THE RECORD")); // } // catch (Exception ex) // { // string message = string.Format("FAILED TO ADD NEW THE RECORD. {0}", ex.Message.ToString().ToUpper()); // returnResponse = Ok(ReturnResponse.GetFailureStatus(message)); // } // return returnResponse; //} /// /// Delete a record /// /// /// [HttpPost("{id}")] public IActionResult Delete(int id) { IActionResult returnResponse = null; try { bool isSuccess = repository.Delete(id); if (isSuccess) returnResponse = Ok(ReturnResponse.GetSuccessStatus("RECORD DELETED SUCCESSFULLY")); else returnResponse = Ok(ReturnResponse.GetFailureStatus("FAILED TO DELETE THE RECORD")); } catch (Exception ex) { string message = string.Format("FAILED TO DELETE THE RECORD. {0}", ex.Message.ToString().ToUpper()); returnResponse = Ok(ReturnResponse.GetFailureStatus(message)); } return returnResponse; } } }