DBModel.cs 11.1 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AIAHTML5.API.Properties;
using AIAHTML5.API.Constants;
using log4net;
using System.Data;
using System.Data.SqlClient;
using Newtonsoft.Json;
using System.Collections;

namespace AIAHTML5.API.Models
{
    public class DBModel
    {
        static string dbConnectionString = System.Configuration.ConfigurationManager.AppSettings["AIADatabaseV5Context"];

        static SqlConnection conn;
        static SqlCommand cmd;


        public DBModel() { }

        public static void OpenConnection()
        {
            SqlConnection conn = new SqlConnection(dbConnectionString);

            if (conn.State == ConnectionState.Closed)
                conn.Open();
        }

        protected static DataSet GetSQLData(string commandText, bool isSp)
        {
            conn = new SqlConnection(dbConnectionString);
            if (isSp)
            {
                cmd = new SqlCommand(commandText, conn);
                cmd.CommandType = CommandType.StoredProcedure;
            }
            else
            {
                cmd = new SqlCommand(commandText, conn);
            }
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds;
        }

        protected ArrayList GetUserModules()
        {
            ArrayList arrUserModules = new ArrayList();
            Hashtable userModuleHash = null;
            userModuleHash = new Hashtable();

            string query = "SELECT Title AS Name, Slug FROM ResourceModule";

            DataSet ds = DBModel.GetSQLData(query, false);
            DataTable dt = ds.Tables[0];

            foreach (DataRow drActType in dt.Rows)
            {
                userModuleHash = new Hashtable();
                userModuleHash.Add(AIAConstants.KEY_NAME, drActType["Name"]);
                userModuleHash.Add(AIAConstants.KEY_SLUG, drActType["Slug"]);
                arrUserModules.Add(userModuleHash);
            }
            return arrUserModules;
        }

        public static string GetUserDetailsByLoginIdAndPassword(string sLoginId, string sPassword)
        {
            string result = string.Empty;
            try
            {
                using (conn = new SqlConnection(dbConnectionString))
                {
                    using (cmd = conn.CreateCommand())
                    {
                        conn.Open();
                        cmd.CommandText = "SELECT CreationDate, CreatorId, DeactivationDate, EmailId, FirstName, Id, IsActive, LastName, LoginId, ModifiedDate, ModifierId, Password, SecurityAnswer, SecurityQuestionId, UserTypeId FROM AIAUser WHERE (LoginId = @LoginId) AND (Password = @Password)";
                        cmd.Parameters.AddWithValue("@LoginId", sLoginId);
                        cmd.Parameters.AddWithValue("@Password", sPassword);
                        cmd.ExecuteNonQuery();
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            if (!reader.Read())
                                throw new InvalidOperationException("No records were returned.");
                            if (reader.Read())
                                throw new InvalidOperationException("Multiple records were returned.");
                            else
                            {
                                //result = JsonConvert.SerializeObject(reader, Formatting.Indented);

                                result = reader[0].ToString();
                            }
                            reader.Close();
                            conn.Close();
                        }
                    }
                }
            }
            catch (SqlException ex)
            { }
            
            return result;
        }

        public static dynamic GetUserDetailsByLoginIdAndPassword2(string sLoginId, string sPassword)
        {
            User objUser = new User();
            DBModel objModel = new DBModel ();
            string res = string.Empty;
            string query = "SELECT CreationDate, CreatorId, DeactivationDate, EmailId, FirstName, Id, IsActive, LastName, LoginId, ModifiedDate, ModifierId, Password, SecurityAnswer, SecurityQuestionId, UserTypeId FROM AIAUser WHERE LoginId = '" + sLoginId + "' AND Password ='" + sPassword + "'";
            conn = new SqlConnection(dbConnectionString);
            cmd = new SqlCommand(query, conn);
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataTable dt = new DataTable();
            da.Fill(dt);
            //conn.Close();

            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    if (dc.ColumnName == "Id")
                        objUser.Id = Convert.ToInt32(dr[dc]);
                    if(dc.ColumnName =="FirstName")
                        objUser.FirstName = dr[dc].ToString();
                    if (dc.ColumnName == "LastName")
                        objUser.LastName = dr[dc].ToString();
                    if (dc.ColumnName == "EmailId")
                        objUser.EmailId = dr[dc].ToString();
                    if (dc.ColumnName == "LoginId")
                        objUser.LoginId = dr[dc].ToString();
                    if (dc.ColumnName == "Password")
                        objUser.Password = dr[dc].ToString();
                    if (dc.ColumnName == "SecurityQuestionId")
                    {
                        int tempVal;
                        objUser.SecurityQuestionId = Int32.TryParse(dr[dc].ToString(), out tempVal) ? tempVal : (int?)null;
                    }
                    if (dc.ColumnName == "SecurityAnswer")
                        objUser.SecurityAnswer = dr[dc].ToString();
                    if (dc.ColumnName == "CreatorId")
                        objUser.CreatorId = Convert.ToInt32(dr[dc]);
                    if (dc.ColumnName == "CreationDate")
                        objUser.CreationDate = Convert.ToDateTime(dr[dc]);
                    if (dc.ColumnName == "DeactivationDate")
                        objUser.DeactivationDate = Convert.ToDateTime(string.IsNullOrEmpty(dr[dc].ToString()) ? System.Data.SqlTypes.SqlDateTime.MinValue.Value : Convert.ToDateTime(dr[dc].ToString())); //DateTime.TryParse(string.IsNullOrEmpty(dr[dc].ToString()));
                    if (dc.ColumnName == "ModifierId")
                        objUser.ModifierId = Convert.ToInt32(dr[dc]);
                    if (dc.ColumnName == "ModifiedDate")
                        objUser.FirstName = dr[dc].ToString();
                    if (dc.ColumnName == "UserTypeId")
                        objUser.UserTypeId = Convert.ToInt32(dr[dc]);
                    if (dc.ColumnName == "IsActive")
                        objUser.IsActive = Convert.ToBoolean(dr[dc]);

                }
            }

            if (objUser.IsActive)
            {

                //if (objUser != null)
                //    objUser.Modules = DBModel.GetUserModules();
                //return objUser;

                if (objUser != null)
                {
                    int licenseId = objModel.GetUserLicenseIdByUserId(objUser.Id);

                    if (licenseId != 0)
                    {
                        ArrayList allModulesList = objModel.GetUserModules();
                        ArrayList licensedModulesList = objModel.GetModuleStatusByLicenseId(licenseId);

                        ArrayList userModuleList = objModel.GetUserModulesList(allModulesList, licensedModulesList);

                        objUser.Modules = userModuleList;
                    }

                    else
                    {
                        objUser.Modules = null;
                    }
                }                
            }
            else
            {
                objUser = new User();            
            }

            return objUser;
        }

        protected int GetUserLicenseIdByUserId(int iUserId)
        { 
            int _licenseId=0;
            conn = new SqlConnection(dbConnectionString);
            cmd = new SqlCommand();
            SqlDataAdapter adapter;
            SqlParameter param;
            DataSet ds = new DataSet();

            cmd.Connection = conn;
            conn.Open();
            cmd.CommandText = "GetLicenseIdByUserId";
            cmd.CommandType = CommandType.StoredProcedure;

            param = new SqlParameter("@iUserId", iUserId);
            param.Direction = ParameterDirection.Input;
            param.DbType = DbType.Int32;
            cmd.Parameters.Add(param);

            adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds);
            if(ds.Tables[0].Rows.Count>0)
            _licenseId = Convert.ToInt32(ds.Tables[0].Rows[0][0]); //["LicenseId"]//.Columns[0]);
            conn.Close();
            return _licenseId;           
        }

        protected ArrayList GetModuleStatusByLicenseId(int iLicenseId)
        {
            ArrayList userModulelist = new ArrayList();
            Hashtable modulesHash;
            DataSet ds = new DataSet();

            conn = new SqlConnection(dbConnectionString);
            cmd = new SqlCommand();
            SqlDataAdapter adapter;
            SqlParameter param;

            cmd.Connection = conn;
            conn.Open();
            cmd.CommandText = "GetModuleStatusByLicenseId";
            cmd.CommandType = CommandType.StoredProcedure;

            param = new SqlParameter("@iLicenseId", iLicenseId);
            param.Direction = ParameterDirection.Input;
            param.DbType = DbType.Int32;
            cmd.Parameters.Add(param);

            adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds);
            conn.Close();
            DataTable dt = ds.Tables[0];

            foreach (DataRow dr in dt.Rows)
            {
                modulesHash = new Hashtable();
                modulesHash.Add("Id", dr["Id"]);
                modulesHash.Add("Title", dr["Title"]);
                modulesHash.Add("Status", dr["Status"]);
                userModulelist.Add(modulesHash);
            }

            return userModulelist;
        }

        protected ArrayList GetUserModulesList(ArrayList allModules, ArrayList modulesByLicense)
        {
            ArrayList userModules = new ArrayList();
            Hashtable moduleHash;
            foreach (Hashtable all in allModules)
            {
                string slg = all["slug"].ToString();
                foreach (Hashtable user in modulesByLicense)
                {
                    bool y = Convert.ToBoolean(user["Status"]);
                    if ((user["Title"].ToString().Trim() == all["name"].ToString().Trim()) && (Convert.ToBoolean(user["Status"]) == true))
                    {
                        moduleHash = new Hashtable();
                        moduleHash.Add("name", user["Title"]);
                        moduleHash.Add("slug", all["slug"]);

                        userModules.Add(moduleHash);
                    }
                }
            }

         

                return userModules;
        }
    }
}