예제 #1
0
        public async Task <IActionResult> UploadFile(IFormCollection form)
        {
            try
            {
                if (form.Equals(null))
                {
                    throw new Exception("Ошибка в обработке данных с формы");
                }

                // Get file Jvnlp
                var fileJvnlp = form.Files.FirstOrDefault();

                // check byte and type file
                if (fileJvnlp == null)
                {
                    throw new Exception("Файл не загружен");
                }
                if (!fileJvnlp.ContentType.Equals("application/vnd.ms-excel") &&
                    !fileJvnlp.ContentType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
                {
                    throw new Exception("Неверный тип файла");
                }

                using var memoryStream = new StreamReader(fileJvnlp.OpenReadStream());
                var fileProcessing = new UploadFile();

                AllTableJvnlp.Clear();
                var responseRead = fileProcessing.ReadFileJvnlp(memoryStream, fileJvnlp.FileName);
                _newColumnCount = fileProcessing.NewColumnCount;
                if (responseRead.Count == 0)
                {
                    throw new Exception(
                              "Ошибка в чтении файла excel. Файл должен содержать листы 'Главный лист со позициями для расчёта' и 'Лист с исключенными позициями'");
                }
                AllTableJvnlp.Add(responseRead[(int)JvnlpLists.JVNLP]);
                AllTableJvnlp.Add(responseRead[(int)JvnlpLists.Excluded]);
                NewDateUpdate = fileProcessing.NewDateUpdate;

                var jsonOriginalDrugs =
                    JsonConvert.SerializeObject(responseRead[(int)JvnlpLists.JVNLP].Take(VisibleLines));
                var jsonExcludedDrugs =
                    JsonConvert.SerializeObject(responseRead[(int)JvnlpLists.Excluded].Take(VisibleLines));

                return(new JsonResult(new
                {
                    original = new
                    {
                        drugs = jsonOriginalDrugs,
                        drugsLength = responseRead[(int)JvnlpLists.JVNLP].Length - 3,
                        drugsViewLength = responseRead[(int)JvnlpLists.JVNLP].Take(VisibleLines).Count() - 3
                    },
                    excluded = new
                    {
                        drugs = jsonExcludedDrugs,
                        drugsLength = responseRead[(int)JvnlpLists.Excluded].Length - 3,
                        drugsViewLength = responseRead[(int)JvnlpLists.Excluded].Take(VisibleLines).Count() - 3
                    }
                })
                {
                    StatusCode = 200
                });
            }
            catch (Exception e)
            {
                return(new JsonResult(new
                {
                    message = e.Message
                })
                {
                    StatusCode = 500
                });
            }
        }