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)); }