コード例 #1
0
        public ActionResult Index(LieferantenFile LieferantenFile)
        {
            try
            {
                LieferantenFile = new LieferantenFile();

                //LieferantenFile abfragen
                if (User != null && User.Identity.IsAuthenticated)
                {
                    int userId = ((CustomPrincipal)User).UserId;

                    using (ApplicationDbContext context = new ApplicationDbContext())
                    {
                        User user = context.GetUserById(userId);
                        if (user?.LieferantenFile != null)
                        {
                            LieferantenFile = user.LieferantenFile;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                ModelState.AddModelError("lieferantenabfrage", "Es ist ein Fehler bei der Abfrage Ihrer Kunden aufgetreten.");
            }
            return(PartialView("~/Views/Lieferanten/_Lieferanten.cshtml", LieferantenFile));
        }
コード例 #2
0
ファイル: FileController.cs プロジェクト: franzibrb/vireq
        public ActionResult DownloadLieferantenFile()
        {
            try
            {
                if (User != null && User.Identity.IsAuthenticated)
                {
                    int userId = ((CustomPrincipal)User).UserId;
                    List <Lieferant> Lieferanten     = new List <Lieferant>();
                    LieferantenFile  LieferantenFile = new LieferantenFile();

                    using (ApplicationDbContext context = new ApplicationDbContext())
                    {
                        IEnumerable <Lieferant> lieferanten = context.GetLieferantenForUserWithId(userId);

                        if (lieferanten != null)
                        {
                            Lieferanten = lieferanten.ToList();
                        }

                        //wenn es Lieferanten gibt, sollten die anderen Felder ebenfalls befüllt sein
                        User user = context.GetUserById(userId);
                        if (user.LieferantenFile != null)
                        {
                            LieferantenFile = user.LieferantenFile;
                        }
                    }



                    StringWriter sw = new StringWriter();
                    sw.WriteLine("{0};{1};{2};{3};{4}",
                                 LieferantenFile.LieferantenNummerColumnNameFromCSVImport,
                                 LieferantenFile.LieferantenNameColumnNameFromCSVImport,
                                 LieferantenFile.LieferantenStraßeColumnNameFromCSVImport,
                                 LieferantenFile.LieferantenPLZColumnNameFromCSVImport,
                                 LieferantenFile.LieferantenOrtColumnNameFromCSVImport);

                    Lieferanten.ForEach(lief =>
                    {
                        sw.WriteLine("{0};{1};{2};{3};{4}",
                                     lief.Lieferantennummer,
                                     surroundWithDoubleQuotesIfContainsBlanks(lief.Lieferantenname),
                                     surroundWithDoubleQuotesIfContainsBlanks(lief.Straße),
                                     lief.PLZ,
                                     surroundWithDoubleQuotesIfContainsBlanks(lief.Ort));
                    });

                    return(File(System.Text.Encoding.GetEncoding(1252).GetBytes(sw.ToString()), "text/csv", LieferantenFile.LieferantenFileName));
                }
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.Unauthorized));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, "Bei der Erstellung der Export-Datei ist ein Fehler aufgetreten."));
            }
        }
コード例 #3
0
ファイル: FileController.cs プロジェクト: franzibrb/vireq
        public ActionResult UploadLieferantenFile()
        {
            try
            {
                if (ModelState.IsValid)
                {
                    int userId = ((CustomPrincipal)(User)).UserId;

                    if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
                    {
                        HttpPostedFileBase file = Request.Files[0];
                        if (file.FileName.EndsWith(".csv"))
                        {
                            Stream stream  = file.InputStream;
                            bool   success = false;
                            using (StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding(1252)))
                            {
                                int    lineCount = 0;
                                string line      = string.Empty;
                                while ((line = reader.ReadLine()) != null)
                                {
                                    //trenne bei ; wenn nicht innerhalb von Hochkommata
                                    string   pattern = ";(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)";
                                    string[] lineArr = Regex.Split(line, pattern, RegexOptions.None, TimeSpan.FromSeconds(1));
                                    // Spaltenanzahl zu gering
                                    if (lineArr.Length < 5)
                                    {
                                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Die Datei muss mindestens 5 Spalten enthalten. Dies ist" +
                                                                        "nicht der Fall für Zeile " + lineCount + "."));
                                    }
                                    // Header verarbeiten
                                    if (lineCount == 0)
                                    {
                                        LieferantenFile lieferantenFile = new LieferantenFile()
                                        {
                                            LieferantenFileName = file.FileName,
                                            LieferantenNummerColumnNameFromCSVImport = lineArr[0],
                                            LieferantenNameColumnNameFromCSVImport   = lineArr[1],
                                            LieferantenStraßeColumnNameFromCSVImport = lineArr[2],
                                            LieferantenPLZColumnNameFromCSVImport    = lineArr[3],
                                            LieferantenOrtColumnNameFromCSVImport    = lineArr[4],
                                            LieferantenUpdatedAt = DateTime.Now
                                        };
                                        using (ApplicationDbContext context = new ApplicationDbContext())
                                        {
                                            success = context.UpdateLieferantenDateiForUser(userId, lieferantenFile);
                                            if (!success)
                                            {
                                                Log.Error("UpdateLieferantenDateiForUser nicht erfolgreich für Nutzer " + userId);
                                                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, "Fehler beim Schreiben in die DB. Bitte prüfen Sie die Log-Datei"));
                                            }
                                        }
                                    }
                                    // Lieferanten verarbeiten
                                    else
                                    {
                                        Lieferant lieferant = new Lieferant()
                                        {
                                            //TODO remove leading and trailing ""
                                            UserId            = userId,
                                            Lieferantennummer = int.Parse(lineArr[0]),
                                            Lieferantenname   = lineArr[1],
                                            Straße            = lineArr[2],
                                            PLZ = int.Parse(lineArr[3]),
                                            Ort = lineArr[4],
                                        };
                                        using (ApplicationDbContext context = new ApplicationDbContext())
                                        {
                                            context.UpdateLieferant(lieferant);
                                        }
                                    }
                                    lineCount++;
                                }
                            }
                        }
                        else
                        {
                            return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Das Dateiformat wird nicht unterstützt."));
                        }
                    }
                    else
                    {
                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Bitte wählen Sie eine Datei aus."));
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, "Bei der Verarbeitung der Import-Datei ist ein Fehler aufgetreten."));
            }
            return(new HttpStatusCodeResult(System.Net.HttpStatusCode.OK));
        }