Wednesday, 6 June 2012

Business logic layer

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Xml;
using System.Net;
using System.IO;
using System.Collections.Generic;
using System.Reflection;

namespace DocterCms.BusinessLogic
{
    public class Video : TemplateBaseInfo
    {

        public string Link { get; set; }
        public string ViewCount { get; set; }
        public string Author { get; set; }
        public string Imageurl { get; set; }
        public string Time { get; set; }
        public string VideoUrl { get; set; }

        DataAccessBase dbInfo = new DataAccessBase();

        public Boolean InsertVideo()
        {
            SqlCommand cmd = new SqlCommand("USP_Video_Insert");
            cmd.Parameters.AddWithValue("@Link", Link);
            cmd.Parameters.AddWithValue("@ViewCount", ViewCount);
            cmd.Parameters.AddWithValue("@Author", Author);
            cmd.Parameters.AddWithValue("@Imageurl", Imageurl);
            cmd.Parameters.AddWithValue("@Time", Time);
            cmd.Parameters.AddWithValue("@VideoUrl", VideoUrl);
            cmd.Parameters.AddWithValue("@Title", Title);
            cmd.Parameters.AddWithValue("@MetaDescription", MetaDescription);
            cmd.Parameters.AddWithValue("@Metakeywords", Metakeywords);
            cmd.Parameters.AddWithValue("@LanguageId", LanguageID);
            cmd.Parameters.AddWithValue("@IsActive", IsActive);
            cmd.CommandType = CommandType.StoredProcedure;
            if (dbInfo.InsertRecord(cmd))
                return true;
            else
                return false;

        }

        public Boolean UpdateVideo()
        {
            SqlCommand cmd = new SqlCommand("USP_Video_Update");
            cmd.Parameters.AddWithValue("ID", ID);
            cmd.Parameters.AddWithValue("@Link", Link);
            cmd.Parameters.AddWithValue("@ViewCount", ViewCount);
            cmd.Parameters.AddWithValue("@Author", Author);
            cmd.Parameters.AddWithValue("@Imageurl", Imageurl);
            cmd.Parameters.AddWithValue("@Time", Time);
            cmd.Parameters.AddWithValue("@VideoUrl", VideoUrl);
            cmd.Parameters.AddWithValue("@Title", Title);
            cmd.Parameters.AddWithValue("@MetaDescription", MetaDescription);
            cmd.Parameters.AddWithValue("@Metakeywords", Metakeywords);
            cmd.Parameters.AddWithValue("@LanguageId", LanguageID);
            cmd.Parameters.AddWithValue("@IsActive", IsActive);
            cmd.CommandType = CommandType.StoredProcedure;
            if (dbInfo.InsertRecord(cmd))
                return true;
            else
                return false;
        }

        public List<Video> GetVideoDetailsbyID()
        {
            SqlCommand cmd = new SqlCommand("USP_Video_GetVideobyID");
            List<Video> videolists = dbInfo.ExecuteReader<Video>(cmd);

            return videolists;

        }

        public List<Video> GetAllActiveVideoDetails()
        {
            SqlCommand cmd = new SqlCommand("Usp_Video_GetAllActive");
            List<Video> videolists = dbInfo.ExecuteReader<Video>(cmd);
            return videolists;
        }

        public List<Video> GetAllVideoDetails()
        {
            SqlCommand cmd = new SqlCommand("Usp_Video_GetAll");
            List<Video> videolists = dbInfo.ExecuteReader<Video>(cmd);
            return videolists;

        }

        public Video()
        {
            Type = "Video";
        }

        public static void ReadDatafromRssFeeds()
        {

            try
            {
                // Create object of XmlDataSource class
                XmlDataSource objNewsXmlDataSource = new XmlDataSource();
                // disable caching on datasource
                objNewsXmlDataSource.EnableCaching = false;
                // pass url from where RSS to be read
                string xiUrl = Convert.ToString(ConfigurationManager.ConnectionStrings["YoutubeUrl"]);
                objNewsXmlDataSource.Data = GetDataString(xiUrl);
                XmlDocument objXmlDocument = objNewsXmlDataSource.GetXmlDocument();
                XmlNode objXmlNode = objXmlDocument["feed"]["entry"];
                List<Video> videolist = new List<Video>();
                DataTable dtVideo = GetDatatable();
                while (objXmlNode != null)
                {
                    try
                    {
                        DataRow objDataRow = dtVideo.NewRow();
                        objDataRow["Title"] = objXmlNode["title"].InnerText;
                        objDataRow["Link"] = objXmlNode["link"].Attributes["href"].Value.ToString();
                        if (objXmlNode["yt:statistics"] == null)
                            objDataRow["ViewCount"] = "1";
                        else
                            objDataRow["ViewCount"] = objXmlNode["yt:statistics"].Attributes["viewCount"].InnerText;

                        objDataRow["Author"] = objXmlNode["media:group"]["media:credit"].InnerText;
                        objDataRow["Imageurl"] = objXmlNode["media:group"]["media:thumbnail"].Attributes["url"].Value;
                        objDataRow["VideoUrl"] = objXmlNode["media:group"]["media:content"].Attributes["url"].Value;
                        objDataRow["Keywords"] = objXmlNode["media:group"]["media:keywords"].InnerText;
                        objDataRow["Description"] = objXmlNode["media:group"]["media:description"].InnerText;
                        objDataRow["Time"] = Convert.ToDateTime(objXmlNode["media:group"]["yt:uploaded"].InnerText.ToString().Substring(0, 10)).ToString("ddd, dd MMM yyyy");
                        dtVideo.Rows.Add(objDataRow);

                        objXmlNode = objXmlNode.NextSibling;
                    }
                    catch
                    {
                        objXmlNode = objXmlNode.NextSibling;
                    }
                }
                InsertRssDatafromDB(dtVideo);
            }
            catch { throw; }

        }

        private static string GetDataString(string URL)
        {
            string _result = string.Empty;
            try
            {
                HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(URL + "&dt=" + DateTime.Now);
                HttpWebResponse resp = (HttpWebResponse)objRequest.GetResponse();
                StreamReader sr = new StreamReader(resp.GetResponseStream());
                _result = sr.ReadToEnd();
                sr.Close();
            }
            catch { throw; }
            return _result;
        }

        public Video(SqlDataReader reader)
        {
            ID = (int)reader["ID"];
            Link = (string)reader["Link"];
            ViewCount = (string)reader["ViewCount"];
            Author = (string)reader["Author"];
            Imageurl = (string)reader["Imageurl"];
            Time = (string)reader["Time"];
            VideoUrl = (string)reader["VideoUrl"];
            Title = (string)reader["Title"];
            MetaDescription = (string)reader["MetaDescription"];
            Metakeywords = (string)reader["Metakeywords"];
            LanguageID = (int)reader["LanguageId"];
            IsActive = (bool)reader["IsActive"];

        }

        private static void InsertRssDatafromDB(DataTable dtVideolist)
        {
            string dbConnString = ConfigurationManager.ConnectionStrings["DocStrn"].ToString();
            SqlConnection cn = new SqlConnection(dbConnString);
            SqlCommand cmd = new SqlCommand("USP_Video_Insert", cn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.UpdatedRowSource = UpdateRowSource.None;
            try
            {
                if (dtVideolist != null && dtVideolist.Rows.Count > 0)
                {
                    cmd.Parameters.Add("@Title", SqlDbType.NVarChar, 100, dtVideolist.Columns[0].ColumnName);
                    cmd.Parameters.Add("@Link", SqlDbType.VarChar, 150, dtVideolist.Columns[1].ColumnName);
                    cmd.Parameters.Add("@VeiwCount", SqlDbType.VarChar, 50, dtVideolist.Columns[2].ColumnName);
                    cmd.Parameters.Add("@Author", SqlDbType.VarChar, 150, dtVideolist.Columns[3].ColumnName);
                    cmd.Parameters.Add("@Imageurl", SqlDbType.VarChar, 150, dtVideolist.Columns[4].ColumnName);
                    cmd.Parameters.Add("@Videourl", SqlDbType.VarChar, 150, dtVideolist.Columns[5].ColumnName);
                    cmd.Parameters.Add("@Time", SqlDbType.VarChar, 50, dtVideolist.Columns[6].ColumnName);
                    cmd.Parameters.Add("@Metakeywords", SqlDbType.VarChar, 250, dtVideolist.Columns[7].ColumnName);
                    cmd.Parameters.Add("@MetaDescription", SqlDbType.VarChar, 250, dtVideolist.Columns[8].ColumnName);
                    SqlDataAdapter adpt = new SqlDataAdapter();
                    adpt.InsertCommand = cmd;
                    adpt.UpdateBatchSize = dtVideolist.Rows.Count;
                    cn.Open();
                    int recordsInserted = adpt.Update(dtVideolist);
                }
            }
            catch { }
            finally
            {
                //close the connection and dispose SqlCommand object
                cmd.Dispose();
                cn.Close();
            }


        }
        private static DataTable GetDatatable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Title", typeof(string));
            dt.Columns.Add("Link", typeof(string));
            dt.Columns.Add("ViewCount", typeof(string));
            dt.Columns.Add("Author", typeof(string));
            dt.Columns.Add("Imageurl", typeof(string));
            dt.Columns.Add("VideoUrl", typeof(string));
            dt.Columns.Add("Time", typeof(string));
            dt.Columns.Add("Keywords", typeof(string));
            dt.Columns.Add("Description", typeof(string));
            return dt;
        }

    }
}

No comments:

Post a Comment