UsersFinderForm.cs 4.83 KB
using MoyaAdminLib;
using MoyaAdminUI.MoyaAPI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using System.Windows.Forms;

namespace MoyaAdminUI
{
    public partial class UsersFinderForm : Form
    {
        string searchString = "";
        public User SelectedUser;
        public bool AllowMultiSelect
        {
            set
            {
                usersListView.MultiSelect = value;
            }
            get
            {
                return usersListView.MultiSelect;
            }
        }
        
        public UsersFinderForm()
        {
            InitializeComponent();
        }

        private void searchTextBox_TextChanged(object sender, EventArgs e)
        {
            searchTimer.Stop();
            searchTimer.Start();
        }

        private void UsersFinderForm_Load(object sender, EventArgs e)
        {
            updateListview();
        }

        private void updateListview()
        {
            usersListView.SuspendLayout();
            usersListView.Items.Clear();
            foreach (User user in User.Cache)
            {
                if (searchString == "" ||
                    user.Login.ToLower().Contains(searchString) ||
                    //user.Firstname.ToLower().Contains(searchString) ||
                    //user.Lastname.ToLower().Contains(searchString) ||
                    (user.Firstname.ToLower() + " " + user.Lastname.ToLower()).Contains(searchString)
                    )
                {
                    ListViewItem lvi = new ListViewItem(user.Nick);
                    lvi.Tag = user;
                    lvi.SubItems.Add(user.Firstname);
                    lvi.SubItems.Add(user.Lastname);
                    lvi.SubItems.Add(user.Login);
                    usersListView.Items.Add(lvi);
                }
            }
            usersListView.ResumeLayout();
        }

        private void searchTimer_Tick(object sender, EventArgs e)
        {
            searchTimer.Stop();
            searchString = searchTextBox.Text.ToLower();
            updateListview();
        }

        private void usersListView_DoubleClick(object sender, EventArgs e)
        {
            if (usersListView.SelectedItems.Count != 1)
                return;
            SelectedUser = (User)usersListView.SelectedItems[0].Tag;
            this.DialogResult = DialogResult.OK;
            
        }

        private void usersListView_SelectedIndexChanged(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
            if (usersListView.SelectedItems.Count != 1)
            {
                return;
            }
            
            User user = (User)usersListView.SelectedItems[0].Tag;
            RestClient client = new RestClient(Properties.Settings.Default.ApiURL);
            try {
                string json = client.MakeRequest("user/card/" + user.EventUserId);
                var ser = new JavaScriptSerializer();
                Card card = ser.Deserialize<Card>(json);
                pictureBox1.ImageLocation = RestClient.GetRequestURL(Properties.Settings.Default.ApiURL, "card/GetImage/" + card.id);

                if (card.state == Card.CARD_STATE_PRINTED)
                    CardState.Text = card.state + " in " + card.GetCardPlace();
                else
                    CardState.Text = card.state;
            }catch
            {
                Console.WriteLine("Failed to fetch user card");
            }
            /*
            if (card.state == Card.CARD_STATE_PRINTED)
            {
                
                client = new RestClient(Properties.Settings.Default.ApiURL);
                try
                {
                    json = client.MakeRequest("meta/v1/printedcard/" + card.id + "/card-filing");
                }
                catch (ApplicationException ex)
                {
                    if (!ex.Message.Contains("HTTP NoContent"))
                        return;
                }
                if (json != null && json != "")
                {
                    MetaData data = getValue(json);
                    int bookNumber = 0;
                    int pageNumber = 0;
                    int slotNumber = 0;
                    getCardPlace(data, out bookNumber, out pageNumber, out slotNumber);

                    if (bookNumber > 0)
                        bookNumericUpDown.Value = bookNumber;
                    if (pageNumber > 0)
                        pageNumericUpDown.Value = pageNumber;
                    if (slotNumber > 0)
                        slotNumericUpDown.Value = slotNumber;
                }
            }
             * */
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}