using System.Security.Claims; using Microsoft.AspNetCore.Mvc; using OnlineAssessment.Common; using OnlineAssessment.Data; using OnlineAssessment.Domain; namespace OnlineAssessment.V2.Controllers { [Route("v{version:apiVersion}/[controller]")] [ApiController] [ApiVersion("2.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 ///// ///// ///// //[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; //} } }