Wednesday, 23 December 2015

POCO MODEL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ApiDemo.Models.Poco
{
    public class MessageHistoryModel
    {
        public long MessageId { get; set; }
        public long GuestId { get; set; }
        public long ReceiverGuestId { get; set; }
        public int MessageType { get; set; }
        public string TextMessageContent { get; set; }
        public string ImageName { get; set; }
        public Nullable<int> ImageWidth { get; set; }
        public Nullable<int> ImageHeight { get; set; }
        public System.DateTime MessageDate { get; set; }
        public bool IsRead { get; set; }
    }

    public class ChatMessageRequestModel
    {
        public long messageId { get; set; }
        public long guestId { get; set; }
        public long receiverGuestId { get; set; }
    }

    public class ChatMessageResponseModel
    {
        public int status { get; set; }
        public string message { get; set; }
        public int blockStatus { get; set; }
        public int onlineStatus { get; set; }
        public List<ChatMessageDetailsResponseModel> allNewMessage { get; set; }
        public ChatMessageResponseModel()
        {
            this.allNewMessage = new List<ChatMessageDetailsResponseModel>();
        }
    }

    public class ChatMessageDetailsResponseModel
    {
        public long MessageId { get; set; }
        public int MessageType { get; set; }
        public string TextMessageContent { get; set; }
        public System.DateTime MessageDate { get; set; }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web;

namespace ApiDemo.Enums
{
    public class EnumUtility
    {
        public static string GetEnumDescriptionByKey(Enum value)
        {
            DescriptionAttribute attribute = value.GetType()
                .GetField(value.ToString())
                .GetCustomAttributes(typeof(DescriptionAttribute), false)
                .SingleOrDefault() as DescriptionAttribute;
            return attribute == null ? value.ToString() : attribute.Description;
        }
    }

    public enum MessageTypes
    {
        Error = 0,
        Success = 1
    }
    public enum StatusTypes
    {
        Error = 0,
        Success = 1
    }
}
UNIT OF WORK

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ApiDemo.Models;
using ApiDemo.GenericRepository;

namespace ApiDemo.UnitOfWork
{
    public class UnitOfWork : IDisposable
    {
        private TestServiceEntities context = new TestServiceEntities();
        private GenericRepository<User> userRepository;
        private GenericRepository<MessageHistory> messageHistoryRepository;

        public GenericRepository<User> UserRepository
        {
            get 
            {
                if (this.userRepository == null)
                {
                    this.userRepository = new GenericRepository<User>(context);
                }
                return userRepository;
            }
        }

        public GenericRepository<MessageHistory> MessageHistoryRepository
        {
            get
            {
                if (this.messageHistoryRepository == null)
                {
                    this.messageHistoryRepository = new GenericRepository<MessageHistory>(context);
                }
                return messageHistoryRepository;
            }
        }
       

        public void Save()
        {
            context.SaveChanges();
        }

        private bool disposed = false;

        protected virtual void Dispose(bool disposing)
        {
            if (!this.disposed)
            {
                if (disposing)
                {
                    context.Dispose();
                }
                this.disposed = true;
            }
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
    }

}
GENRIC REPO

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ApiDemo.Models;
using System.Data;
using System.Data.Entity;


namespace ApiDemo.GenericRepository
{
    public class GenericRepository<TEntity> where TEntity : class
    {
        internal TestServiceEntities context;
        internal DbSet<TEntity> dbset;

        public IQueryable<TEntity> Query
        {
            get
            {
                return dbset;
            }
        }

        public GenericRepository(TestServiceEntities context)
        {
            this.context = context;
            this.dbset = context.Set<TEntity>();
        }

        public virtual IEnumerable<TEntity> get()
        {
            IQueryable<TEntity> query = dbset;
            return query;
        }

        public virtual TEntity GetById(object Id)
        {
            return dbset.Find(Id);
        }

        public virtual void Insert(TEntity entity)
        {
            dbset.Add(entity);
        }

        public virtual void Delete(object Id)
        {
            TEntity entityToDelete = dbset.Find(Id);
        }

        public virtual void Delete(TEntity entityToDelete)
        {
            if (context.Entry(entityToDelete).State == EntityState.Detached)
            {
                dbset.Attach(entityToDelete);
            }
            dbset.Remove(entityToDelete);
        }

        public virtual void Update(TEntity entityToUpdate)
        {
            dbset.Attach(entityToUpdate);
            context.Entry(entityToUpdate).State = EntityState.Modified;
        }
    }
}