CardLocationInput.cs 4.77 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 CardLocationInput : Form
    {
        public static string CARD_PREFIX = "277";
        public int barcodeLength = 13;

        string key = "cardplace";

        private Card lastAddedMeta;

        public CardLocationInput()
        {
            InitializeComponent();
        }

        private void CardLocationInput_Load(object sender, EventArgs e)
        {
            updatePreviewTextBox();
        }

        private void barcodeTextBox_TextChanged(object sender, EventArgs e)
        {
            if(barcodeTextBox.Text != "")
                barcodeTimer.Start();
        }

        private void barcodeTimer_Tick(object sender, EventArgs e)
        {
            barcodeTimer.Stop();
            string barcode = barcodeTextBox.Text;
            

            if (barcode.Length == barcodeLength && barcode.Substring(0, 3) == CARD_PREFIX)
            {
                string idtext = barcode.Substring(3, 9);
                int id = 0;

                int.TryParse(idtext, out id);

                if (id != 0)
                {
                    RestClient client = new RestClient(Properties.Settings.Default.ApiURL);
                    string ret = client.MakeRequest("card/Get/" + id);
                    var ser = new JavaScriptSerializer();
                    Card card = ser.Deserialize<Card>(ret);

                    int lastAddedBook = (int)booksNumberNumericUpDown.Value;
                    int lastAddedPage = (int)pageNumberNumericUpDown.Value;
                    int lastAddedSlot = (int)slotsNumberNumericUpDown.Value;

                    string value = "";
                    if (prefixTextBox.Text != "")
                        value = prefixTextBox.Text + ".";
                    value += booksNumberNumericUpDown.Value.ToString() + "." + pageNumberNumericUpDown.Value.ToString() + "." + slotsNumberNumericUpDown.Value.ToString();

                    if ((slotsNumberNumericUpDown.Value + 1) > numberOfCardSlotsnumericUpDown.Value)
                    {
                        slotsNumberNumericUpDown.Value = 1;
                        pageNumberNumericUpDown.Value++;
                    }
                    else
                        slotsNumberNumericUpDown.Value++;



                    string json = "{\"" + key + "\":\"" + value + "\"}";

                    RestClient client2 = new RestClient(Properties.Settings.Default.ApiURL, HttpVerb.PUT, json);
                    try
                    {
                        client2.MakeRequest("meta/v1/printedcard/" + card.id + "/card-filing");
                    }
                    catch (ApplicationException ex)
                    {
                        if (!ex.Message.Contains("HTTP NoContent"))
                            return;
                    }

                    lastAddedMeta = card;
                    lastAddedBookNumericUpDown.Value = lastAddedBook;
                    lastAddedPageNumericUpDown.Value = lastAddedPage;
                    lastAddedSlotsNumericUpDown.Value = lastAddedSlot;
                    messageToolStripStatusLabel.Text = "Viimeisin lisätty value: " + value + " kortille: " + card.Label();
                }
                else
                    messageToolStripStatusLabel.Text = "Viivakoodin lukeminen ei onnistunut!";
            }
            else
                messageToolStripStatusLabel.Text = "Viivakoodin lukeminen ei onnistunut!";
            barcodeTextBox.Text = "";
        }

        private void BooksNumberNumericUpDown_ValueChanged(object sender, EventArgs e)
        {
            updatePreviewTextBox();
        }

        private void updatePreviewTextBox()
        {
            if(prefixTextBox.Text != "")
                previewTextBox.Text = prefixTextBox.Text + "." + booksNumberNumericUpDown.Value.ToString() + "." + pageNumberNumericUpDown.Value.ToString() + "." + slotsNumberNumericUpDown.Value.ToString();
            else
                previewTextBox.Text = booksNumberNumericUpDown.Value.ToString() + "." + pageNumberNumericUpDown.Value.ToString() + "." + slotsNumberNumericUpDown.Value.ToString();
        }

        private void PageNumberNumericUpDown_ValueChanged(object sender, EventArgs e)
        {
            updatePreviewTextBox();
        }

        private void SlotsNumberNumericUpDown_ValueChanged(object sender, EventArgs e)
        {
            updatePreviewTextBox();
        }

        private void startButton_Click(object sender, EventArgs e)
        {
            barcodeTextBox.Focus();
        }

    }
}