public ActionResult AnnulerLivre(int id)
        {
            LivreAVendre livre = db.LivreAVendreSet.Where(i => i.Id == id).First();
            var listeacheteur = livre.Acheteur;
            List<string> myList = listeacheteur.TrimEnd(';').Split(';').ToList();
            if (myList.Count == 1)
            {
                    livre.Acheteur = null;
                    livre.DateReservation = null;
                    db.Entry(livre).State = EntityState.Modified;
                HistoriqueAchat achat = new HistoriqueAchat();
                achat.Acheteur = myList[0];
                achat.dateRecuperation = DateTime.Now.ToShortDateString();
                achat.CodeIdentification = livre.CodeIdentification;
                achat.Etat = livre.Etat;
                achat.Prix = livre.Prix;
                achat.TypeTransaction = "Remboursement";
                if (db.HistoriqueAchat.Count() != 0)
                    achat.Id = db.HistoriqueAchat.Max(i => i.Id) + 1;
                else
                    achat.Id = 1;
                db.HistoriqueAchat.Add(achat);
                db.SaveChanges();
                ViewBag.SuccessCancel = true;

            }
            else
            {
                List<LivreAVendre> list = new List<LivreAVendre>(myList.Count());

                string[] dates = livre.DateReservation.Split(';');

                int index = 0;
                foreach (string str in myList)
                {
                    LivreAVendre livrevendu = new LivreAVendre();
                    livrevendu.Etat = livre.Etat;
                    livrevendu.CodeIdentification = livre.CodeIdentification;
                    livrevendu.Titre = livre.Titre;
                    livrevendu.Prix = livre.Prix;
                    livrevendu.Cooperative = livre.Cooperative;
                    livrevendu.DateReservation = dates[index];
                    livrevendu.Quantite = 1;
                    livrevendu.Acheteur = str;
                    list.Add(livrevendu);
                    index++;
                }

                return View("RecuperationLivreConfirmation",list);
            }

            List<LivreAVendre> listNonNull = new List<LivreAVendre>();
            var user = dbContext.Users.Where(i => i.UserName == User.Identity.Name).First();
            listNonNull = db.LivreAVendreSet.Where(i => i.Cooperative == user.coopid && (i.Acheteur != "" && i.Acheteur != null)).ToList();
            return View("RecuperationLivre", listNonNull);
        }
        private void AjouterLivreAVendre(LivreInventaire livres)
        {
            livres.Etat = livres.ValeurEtat.ElementAt(livres.typeId).name;
            var livrepret = db.LivreAVendreSet.Where(i => i.CodeIdentification == livres.CodeIdentification && i.Etat == livres.Etat && i.Etat == livres.Etat).FirstOrDefault();
            if (livrepret == null)
            {
                livrepret = new LivreAVendre();
                livrepret.CodeIdentification = livres.CodeIdentification;
                livrepret.Cooperative = livres.Cooperative;
                livrepret.Etat = livres.Etat;
                livrepret.Id = db.LivreAVendreSet.Count() + 1;
                livrepret.Quantite = 1;
                //Add a la db
                db.LivreAVendreSet.Add(livrepret);
                db.SaveChanges();
            }
            else
            {
                    livrepret.Quantite++;
                    db.Entry(livrepret).State = EntityState.Modified;
                    db.SaveChanges();

            }
        }
        public ActionResult RecuperationLivreConfirmation(int id)
        {
            LivreAVendre livre = db.LivreAVendreSet.Where(i => i.Id == id).First();
            var listeacheteur = livre.Acheteur;
            List<string> myList = listeacheteur.TrimEnd(';').Split(';').ToList();
            if (myList.Count == 1)
            {
                if (livre.Quantite != 1)
                {

                    var user = dbContext.Users.Where(i => i.UserName == myList[0]);
                    livre.Acheteur = null;
                    livre.DateReservation = null;
                    livre.Quantite--;
                    db.Entry(livre).State = EntityState.Modified;

                }
                else
                {
                    db.LivreAVendreSet.Remove(livre);
                }
                this.AddHistorique(livre, "Achat");
                ViewBag.Success = true;
                List<LivreAVendre> list = new List<LivreAVendre>();
                var userAdmin = dbContext.Users.Where(i => i.UserName == User.Identity.Name).First();
                list = db.LivreAVendreSet.Where(i => i.Cooperative == userAdmin.coopid && (i.Acheteur != "" && i.Acheteur != null)).ToList();
                return View("RecuperationLivre", list);

            }
            else
            {
                List<LivreAVendre> list = new List<LivreAVendre>(myList.Count());

                string[] dates = livre.DateReservation.Split(';');

                int index = 0;
                foreach (string str in myList)
                {
                    LivreAVendre livrevendu = new LivreAVendre();
                    livrevendu.Etat = livre.Etat;
                    livrevendu.CodeIdentification = livre.CodeIdentification;
                    livrevendu.Titre = livre.Titre;
                    livrevendu.Prix = livre.Prix;
                    livrevendu.Cooperative = livre.Cooperative;
                    livrevendu.DateReservation = dates[index];
                    livrevendu.Quantite = 1;
                    livrevendu.Acheteur = str;
                    list.Add(livrevendu);
                    index++;
                }

                return View(list);
            }
        }
        public ActionResult LivraisonLivre(string etat,string code ,string acheteur,string coop, string prix)
        {
            List<Expedier> list = new List<Expedier>();
            var user = dbContext.Users.Where(i => i.UserName == User.Identity.Name).First();
            if (acheteur == null)
            {

                list = db.Expedier.Where(i => i.CooperativeEtudiant == user.coopid.ToString()).ToList();
            }
            else
            {
                int coopId = int.Parse(coop);
                LivreAVendre livre = db.LivreAVendreSet.Where(i => i.Etat == etat && i.CodeIdentification == code && i.Cooperative == coopId).FirstOrDefault();
                if(livre == null)
                {
                    LivreAVendre livrerecu = new LivreAVendre();
                    Livres livreInfo = db.Livres.Where(i => i.CodeIdentification == code).First();
                    livrerecu.Acheteur = acheteur+";";
                    livrerecu.Etat = etat;
                    livrerecu.CodeIdentification = code;
                    livrerecu.Auteur = livreInfo.Auteur;
                    livrerecu.Cooperative = user.coopid;
                    livrerecu.DateReservation = (DateTime.Now.ToShortDateString() + ";");
                    prix = prix.Replace('.', ',');
                    livrerecu.Prix = decimal.Parse(prix);
                    livrerecu.Quantite = 1;
                    livrerecu.Titre = livreInfo.Nom;

                    db.LivreAVendreSet.Add(livrerecu);
                    db.SaveChanges();

                }
                else
                {
                    livre.Acheteur += (User.Identity.Name + ";");
                    livre.DateReservation += (DateTime.Now.ToShortDateString() + ";");
                    livre.Quantite++;
                    db.Entry(livre).State = EntityState.Modified;

                    db.SaveChanges();
                }
            }

            return View(list);
        }
        public ActionResult ExpedierLivre(string search1, string search2, string search3)
        {
            var user = dbContext.Users.Where(i => i.UserName == User.Identity.Name).First();
            List<LivreAVendre> list = new List<LivreAVendre>();
            if (string.IsNullOrEmpty(search1) && string.IsNullOrEmpty(search2) && string.IsNullOrEmpty(search3))
            {
                List<LivreAVendre> nouveau = new List<LivreAVendre>();
                list = db.LivreAVendreSet.Where(i => i.Cooperative == user.coopid && (i.Acheteur != "" && i.Acheteur != null)).ToList();
                int count = list.Count();
                for(int i = 0;i< count;i++)
                {
                    List<string> myList = list[i].Acheteur.TrimEnd(';').Split(';').ToList();
                    if(myList.Count != 1)
                    {
                            string[] dates = list[i].DateReservation.Split(';');

                            int index = 0;
                            foreach (string str in myList)
                            {
                                var acheteur = dbContext.Users.Where(t => t.UserName == str).FirstOrDefault();
                                if (acheteur.coopid != user.coopid)
                                {
                                    LivreAVendre livrevendu = new LivreAVendre();
                                    livrevendu.Etat = list[i].Etat;
                                    livrevendu.CodeIdentification = list[i].CodeIdentification;
                                    livrevendu.Titre = list[i].Titre;
                                    livrevendu.Prix = list[i].Prix;
                                    livrevendu.Id = list[i].Id;
                                    livrevendu.Auteur = list[i].Auteur;
                                    livrevendu.Proprietaire = list[i].Proprietaire;
                                    livrevendu.Cooperative = list[i].Cooperative;
                                    livrevendu.DateReservation = dates[index];
                                    livrevendu.Quantite = 1;
                                    livrevendu.Acheteur = str;
                                    nouveau.Add(livrevendu);
                                }
                                index++;
                            }
                        }
                    else
                    {
                        string Nom = myList[0];
                        var acheteur = dbContext.Users.Where(t => t.UserName == Nom).First();
                        if(acheteur.coopid != list[i].Cooperative)
                        {
                            nouveau.Add(list[i]);
                        }
                    }

                }

                return View(nouveau);

            }
            list = db.LivreAVendreSet.Where(i => i.Cooperative == user.coopid && i.Acheteur.Contains(search1) && i.CodeIdentification.Contains(search2) && i.Titre.Contains(search3) && (i.Acheteur != "" && i.Acheteur != null)).ToList();
            return View(list);
        }
        private void AjouterLivreAVendre(LivreInventaire livres)
        {
            livres.Etat = livres.ValeurEtat.ElementAt(livres.typeId).name;
            var livrepret = db.LivreAVendreSet.Where(i => i.CodeIdentification == livres.CodeIdentification && i.Etat == livres.Etat && i.Etat == livres.Etat).FirstOrDefault();
            Livres InfoLivre = db.Livres.Where(i => i.CodeIdentification == livres.CodeIdentification).First();
            if (livrepret == null || livrepret.Cooperative != livres.Cooperative)
            {
                livrepret = new LivreAVendre();
                livrepret.CodeIdentification = livres.CodeIdentification;
                livrepret.Cooperative = livres.Cooperative;
                livrepret.Etat = livres.Etat;
                livrepret.Titre = InfoLivre.Nom;
                livrepret.Id = db.LivreAVendreSet.Count() + 1;
                livrepret.Auteur = InfoLivre.Auteur;

                if(livres.Etat == "Comme Neuf")
                {
                    livrepret.Prix = ((InfoLivre.Prix)*(decimal)0.75);
                }
                else if (livres.Etat == "Moyennement Abîmé")
                {
                    livrepret.Prix = ((InfoLivre.Prix) * (decimal)0.50);

                }
                else
                {
                    livrepret.Prix = ((InfoLivre.Prix) * (decimal)0.25);
                }
                livrepret.Proprietaire += (livres.NomEtudiant + ";");
                livrepret.Quantite = 1;
                //Add a la db
                db.LivreAVendreSet.Add(livrepret);
                db.SaveChanges();
            }
            else if(livrepret.Cooperative == livres.Cooperative)
            {
                    livrepret.Quantite++;
                    livrepret.Proprietaire += (livres.NomEtudiant + ";");
                    db.Entry(livrepret).State = EntityState.Modified;
                    db.SaveChanges();

            }
        }
 private void AddHistorique(LivreAVendre livre, String TypeTransaction)
 {
     HistoriqueAchat achat = new HistoriqueAchat();
     achat.Acheteur = livre.Acheteur;
     achat.dateRecuperation = DateTime.Now.ToShortDateString();
     achat.CodeIdentification = livre.CodeIdentification;
     achat.Etat = livre.Etat;
     achat.Prix = livre.Prix;
     achat.Cooperative = livre.Cooperative.ToString();
     achat.TypeTransaction = TypeTransaction;
     if (db.HistoriqueAchat.Count() != 0)
         achat.Id = db.HistoriqueAchat.Max(i => i.Id) + 1;
     else
         achat.Id = 1;
     db.HistoriqueAchat.Add(achat);
     db.SaveChanges();
 }