﻿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.Windows.Forms;
using CRUD.Model;
using CRUD.Controller;

namespace CRUD.View.UsuarioView
{
    public partial class UEdita : Form
    {
        enum sexo { Masculino, Feminino }
        UsuarioController uc;
        CargoController cc;
        PerfilController pc;
        public UEdita(UsuarioController uc, CargoController cc, PerfilController pc)
        {
            this.pc = pc;
            this.uc = uc;
            this.cc = cc;
            InitializeComponent();
            InicializaComboBox();
            
        }

        private void InicializaComboBox()
        {
            foreach (Usuario u in uc.List())
            {
                comboBox1.Items.Add(u);
            }
            foreach (Cargo c in cc.List())
            {
                comboBox2.Items.Add(c);
            }
            foreach (Perfil p in pc.List())
            {
                checkedListBox1.Items.Add(p);
            }
            comboBox3.Items.Add(sexo.Masculino);
            comboBox3.Items.Add(sexo.Feminino);
        }

        
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Usuario u = (Usuario)comboBox1.SelectedItem;
            textBox1.Text = u.Nome;
            textBox2.Text = u.Cpf;            
            dateTimePicker1.Value = u.DataNasc;
            comboBox3.SelectedIndex = comboBox3.FindString(u.Sexo);
            label6.Text = "Data de cadastro: "+ u.DataCadastro.ToString();
            atualizaCargo(u);
            atualizaPerfis(u);
            
        }

        private void atualizaCargo(Usuario u)
        {
            for (int i = 0; i < comboBox2.Items.Count; i++)
            {
                Cargo cargo = (Cargo) comboBox2.Items[i];
                if (u.Cargo.Id == cargo.Id)
                {
                    comboBox2.SelectedIndex = i;
                }
            }
        }

        private void atualizaPerfis(Usuario u)
        {
            for (int i =0; i<checkedListBox1.Items.Count; i++)
            {
                checkedListBox1.SetItemChecked(i, false);
                foreach (Perfil p in u.Perfis)
                {                    
                    Perfil checkBoxPerfil = (Perfil) checkedListBox1.Items[i];                   
                    if (p.Id == checkBoxPerfil.Id)
                        checkedListBox1.SetItemChecked(i, true);
    
                }                
            }
            
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Cargo cargo = (Cargo) comboBox2.SelectedItem;            

            if (cargo != null)
            {
                Usuario u = (Usuario)comboBox1.SelectedItem;
                u.Nome = textBox1.Text.ToString();
                u.Sexo = comboBox3.SelectedItem.ToString().Substring(0, 1);
                u.Perfis = new List<Perfil>();
                u.DataNasc = dateTimePicker1.Value;
                u.Cargo = cargo;
                foreach (Perfil p in checkedListBox1.CheckedItems)
                    u.Perfis.Add(p);

                MessageBox.Show("Usuario atualizado com sucesso!");
                DialogResult = DialogResult.Yes;
            }
            else
            {
                MessageBox.Show("Existem campos não preenchidos!");
            }
        }

    }
}
