private void DeleteButton_Click(object sender, RoutedEventArgs e)
        {
            var messageBox = new MessageBoxControl.MessageBoxChildWindow("Attention", "Ête-vous sure de vouloire supprimer la ligne?", MessageBoxControl.MessageBoxButtons.OkCancel, MessageBoxControl.MessageBoxIcon.Information);

            messageBox.OnMessageBoxClosed += (_, result) =>
            {
                if (messageBox.Result == MessageBoxResult.OK)
                {
                    CsTypeCompte redevenceSelectionne = (CsTypeCompte)dgListeTypeCompte.SelectedItem;


                    List <CsTypeCompte> TypeCompteRecuToDelete = new List <CsTypeCompte>();
                    TypeCompteRecuToDelete.Add(redevenceSelectionne);
                    Save(new List <CsTypeCompte>(), new List <CsTypeCompte>(), TypeCompteRecuToDelete);


                    ListeTypeCompte.Remove(redevenceSelectionne);

                    //SessionObject.ListeTypeCompte = ListeTypeCompte.ToList();
                    LoadDatagrid();
                }
                else
                {
                    return;
                }
            };
            messageBox.Show();
        }
        void Updatefrm_CallBack(object sender, CustumEventArgs e)
        {
            List <CsTypeCompte> TypeCompteRecuToUpdate = new List <CsTypeCompte>();

            TypeCompteRecuToUpdate.Add((CsTypeCompte)e.Bag);
            Save(TypeCompteRecuToUpdate, new List <CsTypeCompte>(), new List <CsTypeCompte>());

            if (TypeCompteRecuToUpdate.Select(l => l.PK_ID).Contains(((CsTypeCompte)e.Bag).PK_ID))
            {
                //CsTypeCompte LotsScelleRecuToUpdate_ = TypeCompteRecuToUpdate.FirstOrDefault(l => l.PK_ID == ((CsTypeCompte)e.Bag).PK_ID);
                //int indexOfLotsScelleRecuToUpdate_ = TypeCompteRecuToUpdate.IndexOf(LotsScelleRecuToUpdate_);
                //TypeCompteRecuToUpdate[indexOfLotsScelleRecuToUpdate_] = (CsTypeCompte)e.Bag;

                CsTypeCompte LotsScelleRecuToUpdate        = ListeTypeCompte.FirstOrDefault(l => l.PK_ID == ((CsTypeCompte)e.Bag).PK_ID);
                int          indexOfLotsScelleRecuToUpdate = ListeTypeCompte.IndexOf(LotsScelleRecuToUpdate);
                ListeTypeCompte[indexOfLotsScelleRecuToUpdate] = (CsTypeCompte)e.Bag;

                //SessionObject.ListeTypeCompte = ListeTypeCompte.ToList();
                LoadDatagrid();
            }
            else
            {
                TypeCompteRecuToUpdate.Add((CsTypeCompte)e.Bag);
                Save(TypeCompteRecuToUpdate, new List <CsTypeCompte>(), new List <CsTypeCompte>());


                CsTypeCompte LotsScelleRecuToUpdate        = ListeTypeCompte.FirstOrDefault(l => l.PK_ID == ((CsTypeCompte)e.Bag).PK_ID);
                int          indexOfLotsScelleRecuToUpdate = ListeTypeCompte.IndexOf(LotsScelleRecuToUpdate);
                ListeTypeCompte[indexOfLotsScelleRecuToUpdate] = (CsTypeCompte)e.Bag;

                //SessionObject.ListeTypeCompte = ListeTypeCompte.ToList();
            }
        }
        public FrmTypeCompteCompte()
        {
            InitializeComponent();

            this.csTypeCompte = new CsTypeCompte();
            //this.csTypeCompte.TRANCHETypeCompte = new List<ServiceTarification.CsTrancheRedevence>();
            this.txt_code.MaxLength = 10;
            LayoutRoot.DataContext  = this.csTypeCompte;
        }
        public void Save(List <CsTypeCompte> TypeCompteRecuToUpdate, List <CsTypeCompte> TypeCompteRecuToInserte, List <CsTypeCompte> TypeCompteRecuToDelete)
        {
            try
            {
                InterfaceComptableServiceClient service = new InterfaceComptableServiceClient(Utility.ProtocoleIndex(), Utility.EndPoint("InterfaceComptable"));
                int handler = LoadingManager.BeginLoading("Mise à jour des données ...");
                service.SaveTypeCompteAsync(TypeCompteRecuToUpdate, TypeCompteRecuToInserte, TypeCompteRecuToDelete);
                service.SaveTypeCompteCompleted += (er, res) =>
                {
                    try
                    {
                        if (res.Error != null || res.Cancelled)
                        {
                            Message.Show("Erreur dans le traitement des méthode de dectection : " + res.Error.InnerException.ToString(), "Erreur");
                        }
                        else
                        if (res.Result != null)
                        {
                            if (res.Result > 0)
                            {
                                CsTypeCompte TypeCompte = ListeTypeCompte.FirstOrDefault(l => l.PK_ID == 0);
                                if (TypeCompte != null)
                                {
                                    int index = ListeTypeCompte.IndexOf(TypeCompte);
                                    TypeCompte.PK_ID       = res.Result;
                                    ListeTypeCompte[index] = TypeCompte;
                                }

                                LoadDatagrid();
                            }
                            else
                            {
                                Message.Show("Sauvegarde non effectué avec succes,il se peut vos modification n'est pas été pris en conte",
                                             "Info");
                            }
                        }
                        else
                        {
                            Message.Show("Une erreur s'est produite, veuillez consultez le journal des erreurs",
                                         "Erreur");
                        }
                        LoadingManager.EndLoading(handler);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                };
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public FrmTypeCompteCompte(CsTypeCompte csTypeCompte)
        {
            InitializeComponent();


            // TODO: Complete member initialization
            this.csTypeCompte = csTypeCompte;

            //DataBinding de la redevence au context de la fenetre
            LayoutRoot.DataContext = this.csTypeCompte;

            //Mise de la fenetre en lecture
            InitializeScreenConsultation();
        }
        void mnitem_Click(object sender, RoutedEventArgs e)
        {
            MenuItem mnitem = (MenuItem)sender;

            switch (mnitem.Header.ToString())
            {
            case "Créer":
                FrmTypeCompteCompte Newfrm = new FrmTypeCompteCompte();
                Newfrm.CallBack += Newfrm_CallBack;
                Newfrm.Show();
                break;

            case "Consultation":
                new FrmTypeCompteCompte((CsTypeCompte)dgListeTypeCompte.SelectedItem).Show();
                break;

            case "Modification":
                FrmTypeCompteCompte Updatefrm = new FrmTypeCompteCompte((CsTypeCompte)dgListeTypeCompte.SelectedItem, true);
                Updatefrm.CallBack += Updatefrm_CallBack;
                Updatefrm.Show();
                break;

            case "Supprimer":
                var messageBox = new MessageBoxControl.MessageBoxChildWindow("Attention", "Ête-vous sure de vouloire supprimer la ligne?", MessageBoxControl.MessageBoxButtons.OkCancel, MessageBoxControl.MessageBoxIcon.Information);
                messageBox.OnMessageBoxClosed += (_, result) =>
                {
                    if (messageBox.Result == MessageBoxResult.OK)
                    {
                        CsTypeCompte LotsScelleRecuToDelete = (CsTypeCompte)dgListeTypeCompte.SelectedItem;
                        TypeCompteRecuToDelete.Add(LotsScelleRecuToDelete);
                        ListeTypeCompte.Remove(LotsScelleRecuToDelete);
                        LoadDatagrid();
                    }
                    else
                    {
                        return;
                    }
                };
                messageBox.Show();
                break;

            default:
                break;
            }
        }
        private void UpdateButton_Click(object sender, RoutedEventArgs e)
        {
            FrmTypeCompteCompte Updatefrm  = new FrmTypeCompteCompte((CsTypeCompte)dgListeTypeCompte.SelectedItem, true);
            CsTypeCompte        TypeCompte = ((CsTypeCompte)dgListeTypeCompte.SelectedItem);

            //On verifie que l'element actuelement selectionner a jamais été insérer en base en s'assurant que PK_ID est different de 0
            if (TypeCompte.PK_ID != 0)
            {
                Updatefrm.CallBack += Updatefrm_CallBack;
            }
            else
            {
                //Sinon on la considere comme une nouvelle insertion
                Updatefrm.CallBack += Newfrm_CallBack;
                ListeTypeCompte.Remove(TypeCompte);
                TypeCompteRecuToInserte.Remove(TypeCompte);
            }
            Updatefrm.Show();
        }