public ActionResult AllStudentList()
        {
            using (MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
            {
                sr_registerMain stdMain = new sr_registerMain();
                sr_register     sr      = new sr_register();

                mst_sessionMain sess = new mst_sessionMain();

                string query = @"SELECT 
                                a.section_id
                            FROM
                                mst_section a,
                                mst_class b
                            WHERE
                                a.class_id = b.class_id
                                    AND a.session = @session
                                    AND a.session = b.session
                            ORDER BY b.order_by 
                            LIMIT 1";

                int section = con.Query <int>(query, new { session = sess.findFinal_Session() }).SingleOrDefault();

                sr.sr_regi = stdMain.AllStudentList(section);
                DDClassWiseSection();
                return(View(sr));
            }
        }
        public ActionResult DeleteStudent(int id, FormCollection collection)
        {
            sr_registerMain stdMain = new sr_registerMain();

            stdMain.DeleteStudent(id);

            return(RedirectToAction("AllStudentList"));
        }
        public ActionResult DeleteStudent(int id)
        {
            sr_registerMain stdMain = new sr_registerMain();

            mst_sessionMain sess = new mst_sessionMain();

            return(View(stdMain.FindStudent(id, sess.findFinal_Session())));
        }
        public ActionResult AllStudentList(int section_id)
        {
            sr_registerMain stdMain = new sr_registerMain();
            sr_register     sr      = new sr_register();

            sr.sr_regi = stdMain.AllStudentList(section_id);
            DDClassWiseSection();
            return(View(sr));
        }
        public ActionResult StudentDetails(int id, string calling_view)
        {
            sr_registerMain stdMain = new sr_registerMain();

            mst_sessionMain sess = new mst_sessionMain();

            ViewData["calling_view"] = calling_view;

            return(View(stdMain.FindStudent(id, sess.findFinal_Session())));
        }
        public ActionResult fees_collect(int?rcpt_no)
        {
            mst_finMain  fin = new mst_finMain();
            fees_collect fee = new fees_collect();

            DDsession_name();

            if (fin.checkFYnotExpired())
            {
                sr_registerMain stdMain = new sr_registerMain();


                fee.list = stdMain.AllStudentList(GetDefaultSection());



                DDClassWiseSection();

                //fee.list = stdMain.AllStudentList(0);

                ViewBag.recpt_no = rcpt_no;

                return(View(fee));
            }
            else
            {
                ModelState.AddModelError(String.Empty, "Financial Year Expired cannot submit fees create new Financial  year.");
                sr_registerMain stdMain = new sr_registerMain();



                fee.list = stdMain.AllStudentList(GetDefaultSection());
                DDClassWiseSection();

                ViewBag.recpt_no = rcpt_no;

                return(View(fee));
            }
        }
        public ActionResult EditDetails(int id, string calling_view)
        {
            sr_registerMain stdMain = new sr_registerMain();
            mst_sessionMain sess    = new mst_sessionMain();
            var             obj     = stdMain.FindStudent(id, sess.findFinal_Session());

            DDclass_name(obj);
            DDtransport_id(obj);
            DDSections(obj);


            if (obj.std_active == "Y")
            {
                obj.active = true;
            }
            else
            {
                obj.active = false;
            }

            ViewData["calling_view"] = calling_view;

            return(View(obj));
        }
        public ActionResult fees_collect(fees_collect col)
        {
            using (MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
            {
                mst_finMain fin = new mst_finMain();
                if (fin.checkFYnotExpired())
                {
                    try
                    {
                        mst_sessionMain sess = new mst_sessionMain();

                        if (sess.findActive_Session() == col.session)
                        {
                            string query = @"SELECT 
                                               ifnull(SUM(IFNULL(outstd_amount, 0)) - SUM(IFNULL(rmt_amount, 0)),0) amt
                                            FROM
                                                out_standing
                                            WHERE
                                                sr_number = @sr_number AND session != @session";

                            decimal amt = con.Query <decimal>(query, new { sr_number = col.sr_num, session = col.session }).SingleOrDefault();

                            if (amt != 0m)
                            {
                                ModelState.AddModelError(string.Empty, "Kindly clear previous session fees first.");
                                fees_collect fee = new fees_collect();

                                sr_registerMain stdMain = new sr_registerMain();

                                fee.list = stdMain.AllStudentList(GetDefaultSection());


                                DDsession_name();
                                DDClassWiseSection();



                                return(View(fee));
                            }
                        }

                        if (col.sr_num > 0)
                        {
                            sr_registerMain reg      = new sr_registerMain();
                            sr_register     register = new sr_register();

                            register = reg.FindStudent(col.sr_num, col.session);

                            if (register == null)
                            {
                                register = reg.FindStudent(col.sr_num, sess.findFinal_Session());
                            }

                            col.std_Name = register.std_first_name + " " + register.std_last_name;

                            col.std_father_name = register.std_father_name;

                            col.std_mother_name = register.std_mother_name;

                            col.std_contact = register.std_contact;

                            col.std_Email = register.std_email;

                            col.std_Class = register.class_name;

                            col.std_Section = register.section_name;

                            col.std_Pickup_point = register.pickup_point;

                            col.std_aadhar = register.std_aadhar;

                            return(View("submit_fees", col));
                        }
                        else if (col.reg_num > 0)
                        {
                            std_registrationMain reg          = new std_registrationMain();
                            std_registration     registration = new std_registration();


                            registration = reg.FindRegistrationForFees(col.reg_num);


                            col.std_Name = registration.std_first_name + " " + registration.std_last_name;

                            col.std_father_name = registration.std_father_name;

                            col.std_mother_name = registration.std_mother_name;

                            col.std_contact = registration.std_contact;

                            col.std_Email = registration.std_email;

                            col.std_Class = registration.class_name;

                            col.std_Section = "N/A";

                            col.std_Pickup_point = "N/A";

                            return(View("submit_fees", col));
                        }
                        else
                        {
                            fees_collect fee = new fees_collect();

                            sr_registerMain stdMain = new sr_registerMain();

                            fee.list = stdMain.AllStudentList(col.section_id);


                            DDsession_name();

                            DDClassWiseSection();



                            return(View(fee));
                        }
                    }
                    catch
                    {
                        ModelState.AddModelError(string.Empty, "Student record not found");
                        fees_collect fee = new fees_collect();

                        sr_registerMain stdMain = new sr_registerMain();

                        fee.list = stdMain.AllStudentList(GetDefaultSection());


                        DDsession_name();
                        DDClassWiseSection();



                        return(View(fee));
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Financial Year Expired cannot submit fees create new Financial  year.");

                    fees_collect fee = new fees_collect();

                    sr_registerMain stdMain = new sr_registerMain();

                    fee.list = stdMain.AllStudentList(col.section_id);

                    DDsession_name();

                    DDClassWiseSection();



                    return(View(fee));
                }
            }
        }
        public async Task <ActionResult> AddStudent(sr_register std)
        {
            try
            {
                using (MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
                {
                    if (ModelState.IsValid)
                    {
                        if (std.std_contact == null)
                        {
                            ModelState.AddModelError(String.Empty, "Primary contact is mandatory.");


                            DDclass_name(std);

                            DDtransport_id(std);

                            return(View(std));
                        }
                        sr_registerMain stdMain = new sr_registerMain();

                        string query = @"SELECT 
                                    class_id
                                FROM
                                    mst_class
                                WHERE
                                    class_name = @std_admission_class
                                        AND session = (SELECT
                                            session
                                        FROM
                                            mst_session
                                        WHERE
                                            session_active = 'Y')";

                        int id = con.ExecuteScalar <int>(query, new { std.std_admission_class });

                        if (std.class_id < id)
                        {
                            ModelState.AddModelError(String.Empty, "Class cannot be lower than admission class");


                            DDclass_name(std);

                            DDtransport_id(std);

                            return(View(std));
                        }

                        if (std.std_pickup_id == null)
                        {
                            ModelState.AddModelError(String.Empty, "Avail Transport cannot be blank.");


                            DDclass_name(std);

                            DDtransport_id(std);

                            return(View(std));
                        }

                        await stdMain.AddStudent(std);



                        return(RedirectToAction("AllRegistrationList", "std_registration"));
                    }

                    DDclass_name(std);

                    DDtransport_id(std);

                    return(View(std));
                }
            }
            catch
            {
                return(RedirectToAction("AllRegistrationList", "std_registration"));
            }
        }
        public ActionResult EditDetails(sr_register std, string calling_view)
        {
            using (MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
            {
                sr_registerMain stdMain = new sr_registerMain();
                decimal         dues    = 0m;

                string query = @"SELECT 
                                class_id
                            FROM
                                mst_class
                            WHERE
                                class_name = @std_admission_class
                                    AND session = (SELECT
                                        session
                                    FROM
                                        mst_session
                                    WHERE
                                        session_finalize = 'Y'
                                            AND session_active = 'Y')";

                int id = con.ExecuteScalar <int>(query, new { std.std_admission_class });

                //if (std.class_id < id)
                //{
                //    ModelState.AddModelError(String.Empty, "Class cannot be lower than admission class");


                //    DDclass_name(std);

                //    DDtransport_id(std);

                //    DDSections(std);

                //    return View(std);
                //}

                query = @"SELECT 
                            class_id
                        FROM
                            sr_register a,
                            mst_std_class b
                        WHERE
                            a.sr_number = b.sr_num
                                AND b.session = (SELECT 
                                    session
                                FROM
                                    mst_session
                                WHERE
                                    session_active = 'Y'
                                        AND session_finalize = 'Y')
                                AND sr_number = @sr_num";

                int changedclassid = con.Query <int>(query, new { sr_num = std.sr_number }).SingleOrDefault();

                query = @"SELECT 
                            IFNULL(COUNT(CASE
                                        WHEN rmt_amount = 0.00 THEN NULL
                                        ELSE rmt_amount
                                    END),
                                    0)
                        FROM
                            out_standing
                        WHERE
                            sr_number = @sr_num AND serial != 0
                                AND session = (SELECT 
                                    session
                                FROM
                                    mst_session
                                WHERE
                                    session_active = 'Y')
                                AND acc_id NOT IN (1 , 2, 6)";

                int error = con.Query <int>(query, new { sr_num = std.sr_number }).SingleOrDefault();



                if (error != 0 && changedclassid != std.class_id && calling_view == "AllStudentList")
                {
                    ModelState.AddModelError(String.Empty, "Cannot change, class fees already paid");

                    DDclass_name(std);

                    DDtransport_id(std);

                    DDSections(std);

                    return(View(std));
                }

                if (std.active)
                {
                    std.std_active = "Y";
                }
                else
                {
                    std.std_active = "N";
                }



                stdMain.EditStudent(std);

                if (calling_view == "AllStudentList")
                {
                    return(RedirectToAction(calling_view));
                }
                else
                {
                    return(RedirectToAction(calling_view, "GenerateTC"));
                }
            }
        }