public TicketTypesVM()
        {
            TicketTypes = TicketType.GetTicketTypes();

            SelectedType = new TicketType();
            Enabled = true;
            ShowEdit = "Hidden";
            ShowCancel = "Hidden";
            ShowSave = "Visible";
        }
        private void DeleteTicketType(TicketTypesVM tickettypevm)
        {
            if (SelectedType == null) return;

            TicketType.DeleteTicketType(SelectedType);

            SelectedType = new TicketType();
            Enabled = true;
            ShowEdit = "Hidden";
            ShowCancel = "Hidden";
            ShowSave = "Visible";
        }
        private void SelectionChanged(TicketTypesVM tickettypevm)
        {
            if (SelectedType == null) return;
            if (ShowCancel == "Visible") CancelUpdateTicketType(this);

            _oldType = SelectedType.Copy();

            tickettypevm.ShowEdit = "Visible";
            tickettypevm.ShowCancel = "Hidden";
            tickettypevm.ShowSave = "Hidden";
            Enabled = false;
        }
 private void AddTicketType(TicketTypesVM tickettypevm)
 {
     SelectedType = new TicketType();
     _oldType = null;
     tickettypevm.ShowEdit = "Hidden";
     tickettypevm.ShowCancel = "Visible";
     tickettypevm.ShowSave = "Visible";
     tickettypevm.Enabled = true;
 }
        public static void UpdateTicketType(TicketType type)
        {
            // If _TicketTypes is null, create the Observable Collection
            if (_TicketTypes == null) GetTicketTypes();

            try
            {
                // Update db
                DbParameter param1 = Database.AddParameter("@id", type.ID);
                DbParameter param2 = Database.AddParameter("@name", type.Name);
                DbParameter param3 = Database.AddParameter("@price", type.Price);
                DbParameter param4 = Database.AddParameter("@quantity", type.AvailableTickets);
                DbParameter param5 = Database.AddParameter("@available", type.TicketsLeft);
                int affectedRows = Database.ModifyData("UPDATE tickettype SET Name = @name, Price = @price, AvailableTickets = @quantity, TicketsLeft = @available WHERE id = @id", param1, param2, param3, param4, param5);
                if (affectedRows == 0) return;

                // Update _TicketTypes
                _TicketTypes[GetIndexByID(type.ID)] = type;
            }

            // Fail
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public static ObservableCollection<TicketType> GetTicketTypes()
        {
            // If _TicketTypes is null, create the Observable Collection
            if (_TicketTypes == null)
            {
                try
                {
                    // Create _Contactperson
                    _TicketTypes = new ObservableCollection<TicketType>();

                    // Get data
                    DbDataReader reader = Database.GetData("SELECT * FROM tickettype");
                    foreach (DbDataRecord record in reader)
                    {
                        // Create new TicketType
                        TicketType type = new TicketType();

                        // Get ID
                        if (DBNull.Value.Equals(record["ID"])) type.ID = -1;
                        else type.ID = Convert.ToInt32(record["ID"]);

                        // Get Name
                        if (DBNull.Value.Equals(record["Name"])) type.Name = "";
                        else type.Name = record["Name"].ToString();

                        // Get Price
                        if (DBNull.Value.Equals(record["Price"])) type.Price = -1;
                        else type.Price = Convert.ToDouble(record["Price"].ToString());

                        // Get AvailableTickets
                        if (DBNull.Value.Equals(record["AvailableTickets"])) type.AvailableTickets = -1;
                        else type.AvailableTickets = Convert.ToInt32(record["AvailableTickets"].ToString());

                        // Get TicketsLeft
                        if (DBNull.Value.Equals(record["TicketsLeft"])) type.TicketsLeft = -1;
                        else type.TicketsLeft = Convert.ToInt32(record["TicketsLeft"].ToString());

                        // Add TicketType
                        _TicketTypes.Add(type);
                    }
                    if (reader != null)
                        reader.Close();
                }

                // Fail
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);

                    // Clear TicketTypes
                    _TicketTypes.Clear();
                    _TicketTypes = null;
                }

            }

            // Return _TicketTypes
            return _TicketTypes;
        }
        public static void DeleteTicketType(TicketType type)
        {
            // If _TicketTypes is null, create the Observable Collection
            if (_TicketTypes == null) GetTicketTypes();

            try
            {
                // Add to db
                DbParameter param = Database.AddParameter("@id", type.ID);
                int affectedRows = Database.ModifyData("DELETE FROM tickettype WHERE id = @id", param);
                if (affectedRows == 0) return;

                // Update _TicketTypes
                _TicketTypes.RemoveAt(GetIndexByID(type.ID));
            }

            // Fail
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public static int AddTicketType(TicketType type)
        {
            // If _TicketTypes is null, create the Observable Collection
            if (_TicketTypes == null) GetTicketTypes();

            try
            {
                // Add to db
                DbParameter param1 = Database.AddParameter("@name", type.Name);
                DbParameter param2 = Database.AddParameter("@price", type.Price);
                DbParameter param3 = Database.AddParameter("@quantity", type.Price);
                DbDataReader reader = Database.GetData("INSERT INTO tickettype(Name, Price, AvailableTickets, TicketsLeft) VALUES(@name, @price, @quantity, @quantity); SELECT LAST_INSERT_ID() AS ID;", param1, param2, param3);
                foreach (DbDataRecord record in reader)
                {
                    // Get ID
                    if (DBNull.Value.Equals(record["ID"])) type.ID = -1;
                    else type.ID = Convert.ToInt32(record["ID"]);
                }
                if (reader != null)
                    reader.Close();

                _TicketTypes.Add(type);
                return type.ID;
            }

            // Fail
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return -1;
        }