using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using OnlineAssessment.Common; using OnlineAssessment.Data; using OnlineAssessment.Domain; using System.Security.Claims; 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 int InstituteId { get { int institute_id = int.Parse(Security.GetValueFromToken("InstituteId", HttpContext.User.Identity as ClaimsIdentity)); return institute_id; } } 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 (accessible to SuperAdmin only) ///// ///// ///// //[HttpDelete("{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; //} } }