public FileResult Upload()
        {
            FileInfo info = new FileInfo("Fichier vide.TXT");

            string trimestre = Request.Params["TRIMESTRE"] != null ? Request.Params["TRIMESTRE"].ToString() : string.Empty;
            string annee     = Request.Params["ANNEE"] != null ? Request.Params["ANNEE"].ToString() : string.Empty;
            string societe   = Request.Params["SOCIETE"] != null ? Request.Params["SOCIETE"].ToString() : string.Empty;

            string WithSave = Request["WithSave"] != null ? Request["WithSave"].ToString() : "false";

            if (string.IsNullOrEmpty(WithSave))
            {
                WithSave = "false";
            }
            Boolean Save = Boolean.Parse(WithSave);

            int          ID              = int.Parse(societe);
            int          TRIMESTRE       = int.Parse(trimestre);
            int          ANNEE           = int.Parse(annee);
            DECLARATIONS SelectedSociete = BD.DECLARATIONS.Where(Soc => Soc.ID == ID).FirstOrDefault();

            societe = SelectedSociete.CODE;
            var         nom = "DS" + societe + "0000." + trimestre + annee + ".TXT";
            GENERATIONS NouvelleGeneration = new GENERATIONS();

            if (Save)
            {
                NouvelleGeneration.ANNEE        = ANNEE;
                NouvelleGeneration.CODE         = "DS" + societe + "0000." + trimestre + annee;
                NouvelleGeneration.DATE         = DateTime.Today;
                NouvelleGeneration.DECLARATIONS = SelectedSociete;
                NouvelleGeneration.SOCIETE      = ID;
                NouvelleGeneration.TRIMESTRE    = TRIMESTRE;
                BD.GENERATIONS.Add(NouvelleGeneration);
                BD.SaveChanges();
            }
            if (Request.Files.Count > 0)
            {
                HttpPostedFileBase fichierExcel = Request.Files["FileUploadExcel"];
                var file = Request.Files[0];

                if (file != null && file.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(file.FileName);

                    //var path = Path.Combine(Server.MapPath("~/Images/"), nom + ".TXT");
                    var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
                    file.SaveAs(path);
                    var      fileContents = System.IO.File.ReadAllText(Server.MapPath(@"~/Images/" + fileName));
                    string[] lignes       = fileContents.Split('\n');
                    info = new FileInfo(Server.MapPath(@"~/Images/" + nom));
                    var fileStream = System.IO.File.Open(Server.MapPath(@"~/Images/" + nom), FileMode.OpenOrCreate, FileAccess.ReadWrite);
                    fileStream.Close();
                    //using (var fileStream = System.IO.File.Open(Server.MapPath(@"~/Images/" + nom), FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    //{
                    using (StreamWriter writer = info.CreateText())
                    {
                        int LineNumber = 0;
                        int FileNumber = 1;
                        for (int i = 0; i < lignes.Count() - 1; i++)
                        {
                            if (LineNumber == 12)
                            {
                                LineNumber = 1;
                                FileNumber++;
                            }
                            else
                            {
                                LineNumber++;
                            }
                            string NumAssureSociel = lignes[i].Substring(10, 10);
                            string IdentiteAssuree = lignes[i].Substring(20, 60);
                            string Cin             = lignes[i].Substring(80, 8);
                            string Salaire         = lignes[i].Substring(lignes[i].Length - 11, 10);
                            Salaire = Salaire.Replace(",", "");
                            Salaire = Salaire.Replace(" ", "0");
                            while (Salaire.Length < 10)
                            {
                                Salaire = "0" + Salaire;
                            }
                            writer.WriteLine(societe + "0000" + trimestre + annee + FileNumber.ToString("000") + LineNumber.ToString("00") + NumAssureSociel + IdentiteAssuree + Cin + Salaire + "0000000000");
                            string SalaireMois1 = lignes[i].Substring(91, 12);
                            string SalaireMois2 = lignes[i].Substring(103, 12);
                            string SalaireMois3 = lignes[i].Substring(115, 12);
                            SalaireMois1 = SalaireMois1.Trim();
                            SalaireMois2 = SalaireMois2.Trim();
                            SalaireMois3 = SalaireMois3.Trim();
                            if (Save)
                            {
                                EMPLOYEES Employee = BD.EMPLOYEES.Where(Emp => Emp.CIN == Cin).FirstOrDefault();
                                if (Employee != null)
                                {
                                    LIGNES_GENERATIONS NouvelleLigne = new LIGNES_GENERATIONS();
                                    NouvelleLigne.EMPLOYEE       = Employee.ID;
                                    NouvelleLigne.EMPLOYEES      = Employee;
                                    NouvelleLigne.GENERATION     = NouvelleGeneration.ID;
                                    NouvelleLigne.GENERATIONS    = NouvelleGeneration;
                                    NouvelleLigne.SALAIRE_MOIS_1 = double.Parse(SalaireMois1);
                                    NouvelleLigne.SALAIRE_MOIS_2 = double.Parse(SalaireMois2);
                                    NouvelleLigne.SALAIRE_MOIS_3 = double.Parse(SalaireMois3);
                                    BD.LIGNES_GENERATIONS.Add(NouvelleLigne);
                                    BD.SaveChanges();
                                }
                                else
                                {
                                    EMPLOYEES NouveauEmployee = new EMPLOYEES();
                                    NouveauEmployee.FULLNAME    = IdentiteAssuree.TrimEnd();
                                    NouveauEmployee.CIN         = Cin;
                                    NouveauEmployee.ACTIF       = true;
                                    NumAssureSociel             = NumAssureSociel.Insert(8, "-");
                                    NouveauEmployee.NUM_ASS_SOC = NumAssureSociel;
                                    NouveauEmployee.SOCIETE     = ID;
                                    NouveauEmployee.SOCIETES    = SelectedSociete;
                                    BD.EMPLOYEES.Add(NouveauEmployee);
                                    BD.SaveChanges();
                                    LIGNES_GENERATIONS NouvelleLigne = new LIGNES_GENERATIONS();
                                    NouvelleLigne.EMPLOYEE       = NouveauEmployee.ID;
                                    NouvelleLigne.EMPLOYEES      = NouveauEmployee;
                                    NouvelleLigne.GENERATION     = NouvelleGeneration.ID;
                                    NouvelleLigne.GENERATIONS    = NouvelleGeneration;
                                    NouvelleLigne.SALAIRE_MOIS_1 = double.Parse(SalaireMois1);
                                    NouvelleLigne.SALAIRE_MOIS_2 = double.Parse(SalaireMois2);
                                    NouvelleLigne.SALAIRE_MOIS_3 = double.Parse(SalaireMois3);
                                    BD.LIGNES_GENERATIONS.Add(NouvelleLigne);
                                    BD.SaveChanges();
                                }
                            }
                        }
                    }
                    // }
                }

                if (fichierExcel != null && fichierExcel.ContentLength > 0)
                {
                    string path = Path.Combine(Server.MapPath("~/Images/"), fichierExcel.FileName);
                    fichierExcel.SaveAs(path);
                    info = new FileInfo(Server.MapPath(@"~/Images/" + nom));
                    Uploadfile(fichierExcel.InputStream, path, societe, trimestre, annee);
                    var fileStream = System.IO.File.Open(Server.MapPath(@"~/Images/" + nom), FileMode.OpenOrCreate, FileAccess.ReadWrite);
                    fileStream.Close();
                    //using (var fileStream = System.IO.File.Open(Server.MapPath(@"~/Images/" + nom), FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    //{
                    using (StreamWriter writer = info.CreateText())
                    {
                        foreach (CnssInfo cnss in Liste)
                        {
                            writer.WriteLine(societe + "0000" + trimestre + annee + cnss.page.ToString("000") + cnss.Line.ToString("00") + cnss.NumSoc + cnss.FullName + cnss.Cin + cnss.Salaire + "0000000000");
                        }
                    }
                    //}
                }
                if (file.ContentLength <= 0 && fichierExcel.ContentLength <= 0)
                {
                    var fileStream = System.IO.File.Open(Server.MapPath(@"~/Images/" + nom), FileMode.OpenOrCreate, FileAccess.ReadWrite);
                    fileStream.Close();
                    info = new FileInfo(Server.MapPath(@"~/Images/" + nom));
                    List <EMPLOYEES> Liste = BD.EMPLOYEES.Where(Emp => Emp.SOCIETES.ID == ID && Emp.ACTIF == true).ToList();
                    using (StreamWriter writer = info.CreateText())
                    {
                        int LineNumber = 0;
                        int FileNumber = 1;
                        foreach (EMPLOYEES Employee in Liste)
                        {
                            double         SalaireMois1 = 0;
                            double         SalaireMois2 = 0;
                            double         SalaireMois3 = 0;
                            List <SAISIES> ListeSaisie  = BD.SAISIES.Where(Saisie => Saisie.EMPLOYEES.ID == Employee.ID && Saisie.ANNEE == ANNEE && Saisie.TRIMESTRE == TRIMESTRE).ToList();
                            if (ListeSaisie.Count == 1)
                            {
                                SalaireMois1 = (double)ListeSaisie.ElementAt(0).SALAIRE;
                            }
                            if (ListeSaisie.Count == 2)
                            {
                                SalaireMois1 = (double)ListeSaisie.ElementAt(0).SALAIRE;
                                SalaireMois2 = (double)ListeSaisie.ElementAt(1).SALAIRE;
                            }
                            if (ListeSaisie.Count == 3)
                            {
                                SalaireMois1 = (double)ListeSaisie.ElementAt(0).SALAIRE;
                                SalaireMois2 = (double)ListeSaisie.ElementAt(1).SALAIRE;
                                SalaireMois3 = (double)ListeSaisie.ElementAt(2).SALAIRE;
                            }
                            double Salaire = 0;
                            foreach (SAISIES UneSaisie in ListeSaisie)
                            {
                                Salaire += (double)UneSaisie.SALAIRE;
                            }
                            if (LineNumber == 12)
                            {
                                LineNumber = 1;
                                FileNumber++;
                            }
                            else
                            {
                                LineNumber++;
                            }
                            string fullname = Employee.FULLNAME;
                            while (fullname.Length < 60)
                            {
                                fullname += " ";
                            }
                            string SalaireString = Salaire.ToString("F3");
                            SalaireString = SalaireString.Replace(",", "");
                            SalaireString = SalaireString.Replace(" ", "0");
                            while (SalaireString.Length < 10)
                            {
                                SalaireString = "0" + SalaireString;
                            }
                            writer.WriteLine(societe + "0000" + trimestre + annee + FileNumber.ToString("000") + LineNumber.ToString("00") + Employee.NUM_ASS_SOC.Replace("-", "") + fullname + Employee.CIN + SalaireString + "0000000000");
                            if (Save)
                            {
                                EMPLOYEES Employeee = BD.EMPLOYEES.Where(Emp => Emp.CIN == Employee.CIN).FirstOrDefault();
                                if (Employeee != null)
                                {
                                    LIGNES_GENERATIONS NouvelleLigne = new LIGNES_GENERATIONS();
                                    NouvelleLigne.EMPLOYEE       = Employeee.ID;
                                    NouvelleLigne.EMPLOYEES      = Employeee;
                                    NouvelleLigne.GENERATION     = NouvelleGeneration.ID;
                                    NouvelleLigne.GENERATIONS    = NouvelleGeneration;
                                    NouvelleLigne.SALAIRE_MOIS_1 = (double)SalaireMois1;
                                    NouvelleLigne.SALAIRE_MOIS_2 = (double)SalaireMois2;
                                    NouvelleLigne.SALAIRE_MOIS_3 = (double)SalaireMois3;
                                    BD.LIGNES_GENERATIONS.Add(NouvelleLigne);
                                    BD.SaveChanges();
                                }
                            }
                        }
                    }
                }
            }
            byte[] fileBytes = System.IO.File.ReadAllBytes(Server.MapPath(@"~/Images/" + nom));
            NouvelleGeneration.DATA = fileBytes;
            BD.SaveChanges();
            return(File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, nom));
        }