using MvcApiWithAsyncRepos.Models;
using MvcApiWithAsyncRepos.Models.Repository;
using System.Web.Http.Description;

namespace MvcApiWithAsyncRepos.Controllers
{
    [RoutePrefix("api/Trainee")]
    public class TraineeApiController : ApiController
    {
        private IDataAccessRepository<Trainee, int> _repository;
        //Inject the DataAccessRepository using Construction injection
        public TraineeApiController(IDataAccessRepository<Trainee, int> r)
        {
            _repository = r;
        }
        [HttpGet]
        [Route("GetTrainee", Name = "Get")]
        public IEnumerable<Trainee> GetTrainee()
        {
            return _repository.Get();
        }
        [HttpGet]
        [Route("GetTraineeById/{traineeId}")]
        public IHttpActionResult GetTraineeById(int traineeId)
        {
            return Ok(_repository.Get(traineeId));
        }
        [HttpPost]
        [Route("InsertTrainee")]
        public IHttpActionResult PostTrainee(Trainee trainee)
        {
            _repository.Post(trainee);
            return Ok(trainee);
        }
        [HttpPut]
        [Route("UpdateTrainee/{traineeId}")]
        public IHttpActionResult PutTrainee(int traineeId, Trainee trainee)
        {
            _repository.Put(traineeId, trainee);
            return CreatedAtRoute("Get", new { id = trainee.TraineeID }, trainee);
        }

        [HttpDelete]
        [Route("DeleteTrainee/{traineeId}")]
        public IHttpActionResult DeleteTrainee(int traineeId, Trainee trainee)
        {
            _repository.Delete(traineeId);
            return CreatedAtRoute("Get", new { id = trainee.TraineeID }, trainee);
        }
    }
}

namespace MvcApiWithAsyncRepos.Models.Repository
{
    public interface IDataAccessRepository<TEntity,in TPrimaryKey> where TEntity:class
    {
        IEnumerable<TEntity> Get();
        TEntity Get(TPrimaryKey id);
        void Post(TEntity entity);
        void Put(TPrimaryKey id, TEntity entity);
        void Delete(TPrimaryKey id);
    }

}

using Microsoft.Practices.Unity;

namespace MvcApiWithAsyncRepos.Models.Repository
{
    public class ClsTraineeDataAccessRepository : IDataAccessRepository<Trainee, int>
    {
        [Dependency]
        public ApplicationDbContext db { get; set; }
        public IEnumerable<Trainee> Get()
        {
            return db.Trainees.ToList();
        }
        public Trainee Get(int id)
        {
            return db.Trainees.Find(id);
        }
        public void Post(Trainee entity)
        {
           db.Trainees.Add(entity);
            db.SaveChanges();
        }
        public void Put(int id, Trainee entity)
        {
            var trainee = db.Trainees.Find(id);
            if (trainee != null)
            {
                trainee.Name = entity.Name;
                trainee.DateOfBirth = entity.DateOfBirth;
                trainee.EmailID = entity.EmailID;
                trainee.Gender = entity.Gender;
                trainee.Address = entity.Address;
                db.SaveChanges();
            }
        }
        public void Delete(int id)
        {
            var trainee = db.Trainees.Find(id);
            if (trainee != null)
            {
                db.Trainees.Remove(trainee);
                db.SaveChanges();
            }
        }
    }

}
SHARE
  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comments:

একটি মন্তব্য পোস্ট করুন