예제 #1
0
 public DefaultResponse SaveDrinkList(DrinkRequest.ImportDrinkList request)
 {
     try
     {
         if (request.Drinks != null && request.Drinks.Any())
         {
             foreach (var drink in request.Drinks)
             {
                 try
                 {
                     _drinkService.Create(drink.Caption, drink.Image, drink.Cost, drink.Count);
                 }
                 catch
                 {
                     // ignored
                 }
             }
         }
         return(new DefaultResponse
         {
             Message = string.Empty,
             ErrorCode = 0
         });
     }
     catch (Exception e)
     {
         return(new DefaultResponse
         {
             Message = e.Message,
             ErrorCode = 2
         });
     }
 }
        public ActionResult ImportDrinksFromExcel(DrinkViewModel.ImportFromExcel model)
        {
            if (Request.Files.Count > 0)
            {
                try
                {
                    var drinkList = new List <Drink>();
                    using (var excel = new ExcelPackage(Request.Files[0].InputStream))
                    {
                        var sheet = excel.Workbook.Worksheets.First();
                        for (var rowNum = 2; rowNum <= sheet.Dimension.End.Row; rowNum++)
                        {
                            try
                            {
                                var newDrink = new Drink();
                                newDrink.Caption = !string.IsNullOrEmpty(sheet.Cells[rowNum, 1].Text)
                                    ? sheet.Cells[rowNum, 1].Text
                                    : "Не определено";

                                int number;

                                //Пытаемся парсить ячейку с ценой
                                bool success = Int32.TryParse(sheet.Cells[rowNum, 2].Text, out number);
                                newDrink.Cost = success ? number : 0;

                                //Пытаемся парсить ячейку с ценой
                                success        = Int32.TryParse(sheet.Cells[rowNum, 3].Text, out number);
                                newDrink.Count = success ? number : 0;

                                newDrink.Image = !string.IsNullOrEmpty(sheet.Cells[rowNum, 4].Text)
                                    ? sheet.Cells[rowNum, 4].Text
                                    : "empty";
                                drinkList.Add(newDrink);
                            }
                            catch { }
                        }
                    }

                    DrinkRequest.ImportDrinkList request = new DrinkRequest.ImportDrinkList
                    {
                        Drinks = drinkList
                    };
                    HttpResponseMessage result = HttpService.PostAsync("api/drink/SaveDrinkList", request).Result;
                    if (result.IsSuccessStatusCode)
                    {
                        var response = result.Content.ReadAsAsync <DefaultResponse>().Result;
                        if (response.ErrorCode == 0 && string.IsNullOrEmpty(response.Message))
                        {
                            TempData["success"] = "Импорт завершен";
                        }
                    }
                    else
                    {
                        TempData["errors"] = "Ошибка при импорте данных";
                    }
                }
                catch (Exception e)
                {
                    TempData["errors"] = e.Message;
                }
                return(RedirectToAction("Drinks", "Admin"));
            }
            return(RedirectToAction("Drinks", "Admin"));
        }