protected void Page_Load(object sender, EventArgs e)
        {
            User sUser = (User) Session["user"];
            if(sUser == null || ((sUser.user_type != 3) && sUser.user_type != 2))
            {
                Response.Redirect("~/Login.aspx");
            }

            if (!Page.IsPostBack) {
                UserController userController = new UserController();
                User user = userController.actionGetUserByID(sUser.id);

                ui_emplyoees_dropdown.DataSource = new UserController().actionGetEmployeesByDepartmentID(Convert.ToInt32(user.department));
                ui_emplyoees_dropdown.DataTextField = "username";
                ui_emplyoees_dropdown.DataValueField = "id";
                ui_emplyoees_dropdown.DataBind();

                ui_delegated_dropdown.DataSource = new UserController().actionGetHeadDelegatedUsersByDepartmentID(Convert.ToInt32(user.department));
                ui_delegated_dropdown.DataTextField = "username";
                ui_delegated_dropdown.DataValueField = "id";
                ui_delegated_dropdown.DataBind();
            }

            //get from session
            //loginUserId = 15;
            //BindGridView(loginUserId);
        }
        protected void ui_save_button_Click(object sender, EventArgs e)
        {
            UserController userController = new UserController();

            User user = new User();
            int user_id;

            //getting hidden field id
            if (int.TryParse(ui_id_hiddenfield.Value, out user_id))
            {
                user.id = Convert.ToInt32(ui_id_hiddenfield.Value);
            }
            if (user.id > 0)
            {
                user = userController.actionGetUserByID(user.id);
            }
            //fields validation
            if (String.IsNullOrEmpty(ui_email_textbox.Text) || String.IsNullOrEmpty(ui_password_textbox.Text))
            {
                Response.Cookies.Add(new HttpCookie("flash_message", "Field(s) marked with * can't be empty.") { Path = "/" });
                Response.Cookies.Add(new HttpCookie("flash_css", "alert alert-error") { Path = "/" });
                return;
            }

            //setting up object
            user.username = ui_username_textbox.Text;
            user.password = ui_password_textbox.Text;
            user.firstname = ui_firstname_textbox.Text;
            user.lastname = ui_lastname_textbox.Text;
            user.phone_number = ui_phonenumber_textbox.Text;
            user.email = ui_email_textbox.Text;
            user.department = null;

            //updating db;
            Message message;
            if (user.id > 0)
            {
                message = userController.actionUpdateUser(user);
            }
            else
            {
                //Default user creation is 1//Employee
                user.user_type = 4;
                message = userController.actionCreateUser(user);
            }

            //redirecting
            if (message.condition)
            {
                Response.Cookies.Add(new HttpCookie("flash_message", "Successfully Saved.") { Path = "/" });
                Response.Cookies.Add(new HttpCookie("flash_css", "alert alert-success") { Path = "/" });
                Response.Redirect("~/StoreSupervisor/ClerkDetail.aspx?id=" + user.id);
            }
            else
            {
                Response.Cookies.Add(new HttpCookie("flash_message", message.message) { Path = "/" });
                Response.Cookies.Add(new HttpCookie("flash_css", "alert alert-error") { Path = "/" });
                Response.Redirect("~/StoreSupervisor/ClerkDetail.aspx?id=" + user.id);
            }
        }
        protected void ui_removedelegated_button_Click(object sender, EventArgs e)
        {
            User currentUser = (User)Session["user"];
            int user_id = Convert.ToInt32(ui_delegated_dropdown.SelectedValue.ToString());
            UserController userController = new UserController();
            Message msg = userController.actionRemoveHeadPermissionFromAnEmployee(user_id, Convert.ToInt32(currentUser.department));

            Session["user"] = userController.actionGetUserByID(currentUser.id);

            if (msg.condition)
            {
                Response.Cookies.Add(new HttpCookie("flash_message", "Successfully Removed.") { Path = "/" });
                Response.Cookies.Add(new HttpCookie("flash_css", "alert alert-success") { Path = "/" });
                Response.Redirect(Request.RawUrl);
            }
            else
            {
                Response.Cookies.Add(new HttpCookie("flash_message", msg.message) { Path = "/" });
                Response.Cookies.Add(new HttpCookie("flash_css", "alert alert-error") { Path = "/" });
                Response.Redirect(Request.RawUrl);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            User user = (User)Session["user"];
            if (user == null || ((user.user_type != 3) && user.user_type != 2))
            {
                Response.Redirect("~/Login.aspx");
            }

            UserController userController = new UserController();
            User dUser = userController.actionGetUserByID(user.id);

            if (!IsPostBack)
            {
                Department department = new DepartmentController().actionGetDepartmentByID(Convert.ToInt32(dUser.department));

                ddlCollectionPoint.DataSource = new CollectionPointController().actionGetCollectionPoints();
                ddlCollectionPoint.DataValueField = "id";
                ddlCollectionPoint.DataTextField = "name";
                ddlCollectionPoint.DataBind();
                ddlCollectionPoint.Items.FindByValue(department.collection_point.ToString()).Selected = true;

                txtRepresentative.Text = department.representative_name;
            }
        }
        public static void approveRequisitions(List<RequisitionID> jsonParam)
        {
            User sUser = (User)HttpContext.Current.Session["user"];
            if (sUser == null)
            {
                return;
            }

            UserController userController = new UserController();
            User dUser = userController.actionGetUserByID(sUser.id);

            JavaScriptSerializer js = new JavaScriptSerializer();
            // System.Diagnostics.Debug.WriteLine("check @@@@@@@@@@@@ approveRequisitions:" + js.Serialize(jsonParam));
            System.Diagnostics.Debug.WriteLine("check @@@@@@@@@@@@ approveRequisitions:" + jsonParam.Count());

            //actionRequisitionStatusChangeToApproved(int requisition_id)
            RequisitionController requisitionController = new RequisitionController();

            foreach (RequisitionID requisitionId in jsonParam)
            {
                System.Diagnostics.Debug.WriteLine("check @@@@@@@@@@@@ param:" + requisitionId.Id);
                requisitionController.actionRequisitionStatusChangeToApproved(Convert.ToInt32(requisitionId.Id), dUser.id);
            }
        }
        public static string LoadAllApprovedRequests()
        {
            User sUser = (User)HttpContext.Current.Session["user"];
            if (sUser == null)
            {
                return null;
            }

            UserController userController = new UserController();
            User dUser = userController.actionGetUserByID(sUser.id);

            RequisitionController requisitionController = new RequisitionController();
            JavaScriptSerializer js = new JavaScriptSerializer();
            List<RequisitionView> requisitionDepartmentWise = requisitionController.actionGetApprovedRequisitionViewsByDepartmentID(Convert.ToInt32(dUser.department));
            System.Diagnostics.Debug.WriteLine("check @@@@@@@@@@@@ requisitions by department wise:" + requisitionDepartmentWise.Count());
            List<UserRequisition> userRequisitionsList = new List<UserRequisition>();
            foreach (RequisitionView r in requisitionDepartmentWise)
            {
                if (userRequisitionsList.Count == 0)
                {
                    UserRequisition userRequisition = new UserRequisition();
                    //Since there are no requisitions made so no question of grouping based on user id
                    userRequisition.EmployeeName = r.firstname + " " + r.lastname;
                    userRequisition.UserId = r.user_obj;
                    Requisition requisition = new Requisition();
                    requisition.ReqId = r.requisition_id;
                    requisition.Quantity = r.quantity;
                    requisition.StationaryName = r.stationery_name;
                    // requisition.RequisitionDate = r.r
                    userRequisition.UserRequisitions.Add(requisition);
                    userRequisitionsList.Add(userRequisition);
                }
                else
                {
                    bool found = false;
                    //check if requisition from the same user is pending, if yes group the requisition based on that user id
                    foreach (UserRequisition uR in userRequisitionsList)
                    {
                        if (r.user_obj == uR.UserId)
                        {
                            found = true;
                            Requisition requisition = new Requisition();
                            requisition.ReqId = r.requisition_id;
                            requisition.Quantity = r.quantity;
                            requisition.StationaryName = r.stationery_name;
                            // requisition.RequisitionDate = r.r
                            uR.UserRequisitions.Add(requisition);
                            break;
                        }

                    }//foreach
                    //else simply add the userrequisition to the list, grouping not required
                    if (!found)
                    {
                        UserRequisition userRequisition = new UserRequisition();
                        userRequisition.EmployeeName = r.firstname + " " + r.lastname;
                        userRequisition.UserId = r.user_obj;

                        Requisition requisition = new Requisition();
                        requisition.ReqId = r.requisition_id;
                        requisition.Quantity = r.quantity;
                        requisition.StationaryName = r.stationery_name;
                        userRequisition.UserRequisitions.Add(requisition);
                        userRequisitionsList.Add(userRequisition);
                    }
                }
            }
            System.Diagnostics.Debug.WriteLine("check @@@@@@@@@@@@ loadAllPendingRequests:" + js.Serialize(userRequisitionsList));
            return js.Serialize(userRequisitionsList);
        }