none
object data source model query RRS feed

  • Question

  • Dear all,

    I am new to object oriented programming.

    I am trying to implement a data object model 3 tier for my organization.

    I want to use object data source for this requirement.

    I would like to know - whether this will workout or not - or any inputs are welcome.

    without object model - my code works in another aspx page.

    I would like to know only for insert now using object data source data property in visual studio 2010.

    code details for your reference.

    When I try to run this code - I am not getting any errors - I had tried without the date field as well to test this.

    Front end code behind
    
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Security;
    using DataAccessLayer;
    
    namespace cwdrweb.UserPages
    {
        public partial class EmployeeNew : System.Web.UI.Page
        {
            static string themeValue;
            protected void Page_Load(object sender, EventArgs e)
            {
                
            
    
                Response.Write("Application code executed using: ");
                Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name+ "<br/>");
                Response.Write("Is User Authenticated: ");
                Response.Write(User.Identity.IsAuthenticated.ToString() + "<br/>");
                Response.Write("Authentication Type, if Authenticated: ");
                Response.Write(User.Identity.AuthenticationType + "<br/>");
                Response.Write("User Name, if Authenticated:");
                Response.Write(User.Identity.Name + "<br/>");
    
    
    
            }   
        
            public void ThemeTest()
            {
                this.PreInit += new EventHandler(Page_PreInit);
    
            }
    
            private void Page_PreInit(object sender, EventArgs e)
            {
                Page.Theme = themeValue;
    
            }
    
            protected void btnViewEmployees_Click(object sender, EventArgs e)
            {
    
                //if (!IsPostBack)
                //{
                    grdViewEmployees.Visible = true;
                    grdViewEmployees.DataSource = DataAccessLayer.EmpDataAccessLayer.GetAllEmployees();
                    grdViewEmployees.DataBind();
                //}
    
                
                //string cs7 = ConfigurationManager.ConnectionStrings["SampleConnectionString"].ConnectionString;
                //using(SqlConnection con5 = new SqlConnection(cs7))
                //{
                //    using(SqlCommand cmd6 = new SqlCommand("spGetAllEmployees",con5))
                //    {
    
                //        con5.Open();
                //       grdViewEmployees.DataSource = cmd6.ExecuteReader();
                //       grdViewEmployees.DataBind();
                //    }
    
                //}
    
                
            }
    
            protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                themeValue = ListBox1.SelectedItem.Value;
                Response.Redirect(Request.Url.ToString());
            }
      protected void btnAddEmployee_Click(object sender, EventArgs e)
            {
     objEmp.InsertParameters["EmpID"].DefaultValue= txtEmployeeID.Text;
                objEmp.InsertParameters["FirstName"].DefaultValue = txtFirstName.Text;
                objEmp.InsertParameters["LastName"].DefaultValue = txtLastName.Text;
                objEmp.InsertParameters["EmpFullName"].DefaultValue = txtEmployeeFullName.Text;
                objEmp.InsertParameters["LoginName"].DefaultValue = txtLoginName.Text;
                objEmp.InsertParameters["Gender"].DefaultValue = rbListGender.SelectedItem.Text;
                objEmp.InsertParameters["Password"].DefaultValue = txtPassword.Text;
                objEmp.InsertParameters["Email"].DefaultValue = txtEmailID.Text;
                objEmp.InsertParameters["Dob"].DefaultValue = txtDob.Text;
                objEmp.InsertParameters["Marital"].DefaultValue = rbMarital.SelectedItem.Text;
                objEmp.InsertParameters["Doj"].DefaultValue = txtDoj.Text;
                ClearAll();
    
    
                    //(TextBox)txtEmployeeID("
            }
     void ClearAll()
            {
                txtEmployeeID.Text = "";
                txtFirstName.Text = "";
                txtLastName.Text = "";
                txtEmployeeFullName.Text = "";
                txtLoginName.Text = "";
                rbListGender.ClearSelection();
                txtPassword.Text = "";
                txtConfirmPassword.Text ="";
                txtEmailID.Text = "";
                txtDob.Text = "";
                rbMarital.ClearSelection();
                txtDoj.Text = "";
    
    
            }
    
            protected void Calendar1_SelectionChanged(object sender, EventArgs e)
            {
    
            }
    
            protected void imgDob_Click(object sender, ImageClickEventArgs e)
            {
                calDob.Visible = true;
            }
    
            protected void calDob_SelectionChanged(object sender, EventArgs e)
            {
                txtDob.Text = calDob.SelectedDate.ToShortDateString();
                calDob.Visible = false;
            }
    
            protected void calDoj_SelectionChanged(object sender, EventArgs e)
            {
                txtDoj.Text = calDoj.SelectedDate.ToShortDateString();
                calDoj.Visible = false;
            }
    
            protected void imgDoj_Click(object sender, ImageClickEventArgs e)
            {
                calDoj.Visible = true;
            }
    
    front end aspx details
    <%@ Page Title="" Language="C#" MasterPageFile="~/cwdr.Master" AutoEventWireup="true" CodeBehind="EmployeeNew.aspx.cs" Inherits="cwdrweb.UserPages.EmployeeNew" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="MainMasterPageContentPlaceHolder" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <asp:Panel ID="Panel1" runat="server">
    
        <div>
            <h3> Select your page Theme: </h3>
                <asp:ListBox ID ="ListBox1" runat="server" AutoPostBack="true" Height="41px" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged" Width="175px">
                    <asp:ListItem>Blue</asp:ListItem>
                    <asp:ListItem>Background</asp:ListItem> 
                </asp:ListBox>
            
            </div>
            <br />
            <br />
        <table style="width: 100%">
            <tr>
                <td>
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Employee Details&nbsp;</td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td>
                    Employee ID (e.g. E00033)</td>
                <td>
                    <asp:TextBox ID="txtEmployeeID" runat="server" Width="200px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                        ErrorMessage="Need Employee ID" Text="*" ForeColor="Red" 
                        ControlToValidate="txtEmployeeID" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td style="height: 26px">
                    FirstName (e.g.Robson, Ganesh)</td>
                <td style="height: 26px">
                    <asp:TextBox ID="txtFirstName" runat="server" Width="200px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
                        ErrorMessage="Need FirstName" Text="*" ForeColor="Red" 
                        ControlToValidate="txtFirstName" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>
                    LastName (e.g. Name or Intials - Rock, C)</td>
                <td>
                    <asp:TextBox ID="txtLastName" runat="server" Width="200px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" 
                        ErrorMessage="Need Last Name" Text="*" ForeColor="Red" 
                        ControlToValidate="txtLastName" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>
                    Employee Full Name</td>
                <td>
                    <asp:TextBox ID="txtEmployeeFullName" runat="server" Width="200px"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    LoginName (FirstName.LastName or Firstname.Initials - e.g. Robson.Rock,Ganesh.C)</td>
                <td>
                    <asp:TextBox ID="txtLoginName" runat="server" Width="200px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" 
                        ErrorMessage="Need Login Name" Text="*" ControlToValidate="txtLoginName" 
                        ForeColor="Red" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>
                    Password </td>
                <td>
                    <asp:TextBox ID="txtPassword" runat="server" Width="200px" TextMode="Password"> </asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                        ErrorMessage="*" ForeColor="Red" ControlToValidate="txtPassword" 
                        ></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="CompareValidator1" runat="server" 
                        ErrorMessage="Need Password" Text="*" ControlToValidate="txtPassword" 
                        ControlToCompare="txtConfirmPassword" ForeColor="Red" Display="Dynamic" 
                        Type="String"  ></asp:CompareValidator>
                </td>
            </tr>
            <tr>
                <td>
                    Confirm Password</td>
                <td>
                    <asp:TextBox ID="txtConfirmPassword" runat="server" Width="200px" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" 
                        ErrorMessage="Kindly type confirm Password" Text="*" ForeColor="Red" 
                        ControlToValidate="txtConfirmPassword" 
                        ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>
                    EmailID</td>
                <td>
                    <asp:TextBox ID="txtEmailID" runat="server" Width="200px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                        ErrorMessage="Kindly type Email Id" Text="*" 
                        ControlToValidate="txtEmailID" ForeColor="Red" 
                        ></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
                        ErrorMessage="*" ControlToValidate="txtEmailID" ForeColor="Red" 
                        ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
                        ></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td>
                    Gender</td>
                <td>
                    <asp:RadioButtonList ID="rbListGender" runat="server" 
                        RepeatDirection="Horizontal">
                        <asp:ListItem>Male</asp:ListItem>
                        <asp:ListItem>Female</asp:ListItem>
                    </asp:RadioButtonList>
                </td>
            </tr>
            <tr>
                <td>
                    Photo</td>
                <td>
                    <asp:ImageButton ID="ImageButton1" runat="server" />
                </td>
            </tr>
            <tr>
                <td>
                    Date of Birth</td>
                <td>
                    <asp:TextBox ID="txtDob" runat="server" width="200px"> </asp:TextBox>
                    <asp:ImageButton ID="imgDob" runat="server" 
                        ImageUrl="~/content/images/calendar.jpg" onclick="imgDob_Click" />
                    <asp:Calendar ID="calDob" runat="server" 
                        onselectionchanged="calDob_SelectionChanged"></asp:Calendar>
                    
                </td>
            </tr>
            <tr>
                <td style="height: 23px">
                    Marital</td>
                <td style="height: 23px">
                    <asp:RadioButtonList ID="rbMarital" runat="server" RepeatDirection="Horizontal">
                        <asp:ListItem>Married</asp:ListItem>
                        <asp:ListItem>UnMarried</asp:ListItem>
                    </asp:RadioButtonList>
                    
                    
                </td>
            </tr>
            <tr>
                <td style="height: 23px">
                    Date of Joining</td>
                <td style="height: 23px"><asp:TextBox ID="txtDoj" runat="server" Width="200px" 
                        ontextchanged="txtDoj_TextChanged"></asp:TextBox><asp:ImageButton
                        ID="imgDoj" runat="server" ImageUrl="~/content/images/calendar.jpg" 
                        onclick="imgDoj_Click" />
                    <asp:Calendar ID="calDoj" runat="server" 
                        onselectionchanged="calDoj_SelectionChanged"></asp:Calendar>
                    
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Button ID="btnViewEmployees" runat="server" 
                        onclick="btnViewEmployees_Click" Text="View Employees" 
                        CausesValidation="False" />
                    <asp:Button ID="btnAddEmployee" runat="server" 
                        onclick="btnAddEmployee_Click" Text="Add Employee" 
                        CausesValidation="False" />
                    <asp:Button ID="btnEditEmployee" runat="server" Text="Edit Employee" />
                    <asp:Button ID="btnDeleteEmployee" runat="server" Text="Delete Employee" />
                    <asp:ObjectDataSource ID="objEmp" runat="server" InsertMethod="InsertEmployee" 
                        SelectMethod="GetAllEmployees" TypeName="DataAccessLayer.EmpDataAccessLayer">
                        <InsertParameters>
                            <asp:Parameter Name="EmpID" Type="String" />
                            <asp:Parameter Name="FirstName" Type="String" />
                            <asp:Parameter Name="LastName" Type="String" />
                            <asp:Parameter Name="EmpFullName" Type="String" />
                            <asp:Parameter Name="LoginName" Type="String" />
                            <asp:Parameter Name="Gender" Type="String" />
                            <asp:Parameter Name="Password" Type="String" />
                            <asp:Parameter Name="Email" Type="String" />
                            <asp:Parameter Name="Dob" Type="DateTime" />
                            <asp:Parameter Name="Marital" Type="String" />
                            <asp:Parameter Name="Doj" Type="DateTime" />
                        </InsertParameters>
                    </asp:ObjectDataSource>
                </td>
                <td>
                    &nbsp;</td>
            
            
                <td>
                    <asp:Label ID="lblMessage" runat="server" ForeColor="Red"></asp:Label>
                </td>
                <td>
                            
            <asp:Button ID="txtSubmit" runat="server" onclick="txtSubmit_Click" 
                        Text="Submit" CausesValidation="False" Visible="False" />
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ValidationSummary ID="ValidationSummary1" 
                        HeaderText="Please fix the following errors" runat="server" 
                        ForeColor="Red" />
                </td>
                <td>
                    &nbsp;</td>
            </tr>
        </table>
    
            
            <br /><br /><br />
            <asp:GridView ID="grdViewEmployees" runat="server" Visible="False" 
                AutoGenerateColumns="False" Height="96px">
                <Columns>
                    <asp:BoundField DataField="EmpID" HeaderText="EmpID" />
                    <asp:BoundField DataField="FirstName" HeaderText="FirstName" />
                    <asp:BoundField DataField="LastName" HeaderText="LastName" />
                    <asp:BoundField DataField="EmpFullName" HeaderText="EmpFullName" />
                    <asp:BoundField DataField="LoginName" HeaderText="LoginName" />
                    <asp:BoundField DataField="Gender" HeaderText="Gender" />
                    <asp:BoundField DataField="Location" HeaderText="Location" />
                    <asp:BoundField DataField="Email" HeaderText="Email" />
                    <asp:BoundField DataField="Dob" HeaderText="Dob" />
                    <asp:BoundField DataField="Marital" HeaderText="Marital" />
                    <asp:BoundField DataField="Doj" HeaderText="Doj" />
                    <asp:TemplateField HeaderText="PhotoPath">
                        <ItemTemplate>
                            <asp:Image ID="Image1" runat="server" ImageUrl='<%# Bind("PhotoPath") %>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <RowStyle Height="96px" Width="96px" />
            </asp:GridView>
    
    
    
            
            
        </asp:Panel>
    
    </asp:Content>
    
    Data ACCESS layer code behind
    
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    //using System.Web.Security;
    using IFMR;
    
    
    namespace DataAccessLayer
    {
        public class EmpDataAccessLayer
        {
    
    
            public static List<EmployeeMaster> GetAllEmployees()
            {
                List<EmployeeMaster> listEmployeeMaster = new List<EmployeeMaster>();
                //string cs9 = ConfigurationManager.
                string cs7 = ConfigurationManager.ConnectionStrings["SampleConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(cs7))
                {
                    using (SqlCommand cmd8 = new SqlCommand("spGetAllEmployees", con))
                    {
                        cmd8.CommandType = CommandType.StoredProcedure;
                        con.Open();
                        SqlDataReader rdr = cmd8.ExecuteReader();
                        while (rdr.Read())
                        {
                            EmployeeMaster employee = new EmployeeMaster();
                            employee.EmpID = rdr["EmpID"].ToString();
                            employee.FirstName = rdr["FirstName"].ToString();
                            employee.LastName = rdr["LastName"].ToString();
                            employee.LoginName = rdr["LoginName"].ToString();
                            employee.Email = rdr["Email"].ToString();
                            employee.Gender = rdr["Gender"].ToString();
                            employee.Location = rdr["Location"].ToString();
                            employee.PhotoPath = rdr["PhotoPath"].ToString();
                            employee.EmpFullName = rdr["EmpFullName"].ToString();
                           employee.Dob = Convert.ToDateTime(rdr["Dob"].ToString());
                           employee.Marital = rdr["Marital"].ToString();
                            employee.Doj = Convert.ToDateTime(rdr["Doj"].ToString());
                            listEmployeeMaster.Add(employee);
    
    
    
                        }
    
    
    
    
                    }
    
    
    
    
                }
                return listEmployeeMaster;
    
    
    
    
            }
    
    
            public static int InsertEmployee(string EmpID, string FirstName, string LastName, string EmpFullName, string LoginName, string Gender, string Password, string Email, DateTime Dob, string Marital, DateTime Doj)
            {
                string cs3 = ConfigurationManager.ConnectionStrings["SampleConnectionString"].ConnectionString;
    
                using(SqlConnection conn= new SqlConnection(cs3))
                {
                    SqlCommand cmd = new SqlCommand("spInsertRegisterNewEmployee",conn);
                    SqlParameter paramEmpID = new SqlParameter("@EmpID", EmpID);
                    cmd.Parameters.Add(paramEmpID);
                    SqlParameter paramFirstName = new SqlParameter("@FirstName", FirstName);
                    cmd.Parameters.Add(paramFirstName);
                    SqlParameter paramLastName = new SqlParameter("@LastName",LastName);
                    cmd.Parameters.Add(paramLastName);
                    SqlParameter paramEmpFullName = new SqlParameter("@EmpFullName",EmpFullName);
                    cmd.Parameters.Add(paramEmpFullName);
                    SqlParameter paramLoginName = new SqlParameter("@LoginName",LoginName);
                    cmd.Parameters.Add(paramLoginName);
                    SqlParameter paramGender = new SqlParameter("@Gender", Gender);
                    cmd.Parameters.Add(paramGender);
                    SqlParameter paramPassword1 = new SqlParameter("@Password",Password);
                    cmd.Parameters.Add(paramPassword1);
                    SqlParameter paramEmail = new SqlParameter("@Email",Email);
                    cmd.Parameters.Add(paramEmail);
                    SqlParameter paramDob = new SqlParameter("@Dob",Dob);
                    cmd.Parameters.Add(paramDob);
                    SqlParameter paramMarital = new SqlParameter("@Marital",Marital);
                    cmd.Parameters.Add(paramMarital);
                    SqlParameter paramDoj = new SqlParameter("Doj",Doj);
                    cmd.Parameters.Add(paramDoj);
    
                    //cmd.Parameters.Add("@WarrantyStartDate", SqlDbType.DateTime).Value=.Text;
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                    
    
    
    
    
    
    
    
                        
                    //string encryptedString = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text,"SHA1");
    
    
    
    
                }
    
                       }
    
        }
    
            
        
    }
    
    Class file Employee
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace IFMR
    {
        public class EmployeeMaster
        {
            private int iD;
    
         
            
            private int empCode;
            private string empName;
            private string pgCode;
            private DateTime dob;
            private string sex;
            
            private DateTime doj;
            private string divCode;
            private string brnCode;
            private string dptCode;
            private string dsgCode;
            private string grdCode;
            private string empID;
            private string firstName;
            private string lastName;
            private string empFullName;
            private string marital;
            private string  password;
    
            
            
    
          
    
            
            
            private string loginName;
            private string email;
    
            
            
    
            
            
            private string gender;
            private string location;
            private string photoPath;
    
    
            public int ID
            {
                get { return iD; }
                set { iD = value; }
            }
                
    
            public int EmpCode
            {
                get { return empCode; }
                set { empCode = value; }
            }
            public string EmpName
            {
                get { return empName; }
                set { empName = value; }
            }
            public string PGCode
            {
                get { return pgCode; }
                set { pgCode = value; }
            }
            public DateTime Dob
            {
                get { return dob; }
                set { dob = value; }
            }
    
            public string Sex
            {
                get { return sex; }
                set { sex = value; }
            }
            
            public DateTime Doj
            {
                get { return doj; }
                set { doj = value; }
            }
            public string DivCode
            {
                get { return divCode; }
                set { divCode = value; }
            }
            public string BrnCode
            {
                get { return brnCode; }
                set { brnCode = value; }
            }
            public string DptCode
            {
                get { return dptCode; }
                set { dptCode = value; }
            }
    
            public string DsgCode
            {
                get { return dsgCode; }
                set { dsgCode = value; }
            }
    
            public string GrdCode
            {
                get { return grdCode; }
                set { grdCode = value; }
            }
    
            public string EmpID
            {
                get { return empID; }
                set { empID = value; }
            }
    
            public string FirstName
            {
                get { return firstName; }
                set { firstName = value; }
            }
    
            public string LastName
            {
                get { return lastName; }
                set { lastName = value; }
            }
    
            public string EmpFullName
            {
                get { return empFullName; }
                set { empFullName = value; }
            }
    
            public string LoginName
            {
                get { return loginName; }
                set { loginName = value; }
            }
    
            public string Email
            {
                get { return email; }
                set { email = value; }
            }
    
            public string Gender
            {
                get { return gender; }
                set { gender = value; }
            }
            public string Password
            {
                get { return password; }
                set { password = value; }
            }
            public string Marital
            {
                get { return marital; }
                set { marital = value; }
            }
            
    
            public string Location
            {
                get { return location; }
                set { location = value; }
            }
    
            public string PhotoPath
            {
                get { return photoPath; }
                set { photoPath = value; }
            }
    
            
    
    
    
    
    
    
    
    
    
        }
    }
    
    
    
    

    Cheers

    Sathya

    Saturday, January 2, 2016 11:36 AM

All replies

  • There doesn't seem to be anything there that is particularly object orientated. It's also a very old technology you are using there. Is your task to simply update the database record via the web?


    http://pauliom.wordpress.com


    • Edited by pkr2000 Thursday, January 7, 2016 1:42 PM
    Thursday, January 7, 2016 1:42 PM
  • Many thanks for your response.

    sorry for the delayed reply. I have seen people talking about 3-tier architecture. Hence I thought to start with I should have this architecture.

    My need is to have SAP like system wherein I can add modules etc. using asp.net, C#/MSSQL technology.

    Any inputs are welcome.

    thanks

    Sathya

    Thursday, January 14, 2016 6:50 AM
  • Take a look http://mef.codeplex.com/ and https://compositewpf.codeplex.com/ for some ideas


    http://pauliom.wordpress.com

    Thursday, January 14, 2016 7:49 PM