public async Task <ActionResult> UpdateProductPlanningResult(DateTime dateTime, string shiftType, string lineCode, string result)
        {
            PlanLineHardCodeType lc;

            Enum.TryParse(lineCode, out lc);
            var line = lc;
            PlanShiftHardCodeType sf;

            Enum.TryParse(shiftType, out sf);
            var    shift       = sf;
            string productName = result.Split(':')[0];
            var    Result      = await _productPlanningService.GetProductPlanningByDateAndShiftAndLine(dateTime,
                                                                                                       shift, line);

            if (Result == null)
            {
                //create new
                var newResult = new ProductPlanning()
                {
                    Result      = result,
                    CreatedDate = dateTime,
                    UpdatedDate = dateTime,
                    Line        = line,
                    Shift       = shift,
                    ProductName = productName.Replace("productName", "")
                };
                await _productPlanningService.CreateAsync(newResult);

                return(Json(new { status = "success", type = "create" }));
            }
            else
            {
                //update
                Result.Result      = result;
                Result.ProductName = productName;
                await _productPlanningService.UpdateAsync(Result);

                return(Json(new { status = "success", type = "update" }));
            }
        }
        public async Task <ActionResult> ImportDataFromExcell(FormCollection form)
        {
            var file = Request.Files["postedFile"];

            if (file != null && file.ContentLength > 0)
            {
                // extract only the fielname
                var fileName = Path.GetFileName(file.FileName);
                // TODO: need to define destination
                var path = Path.Combine(Server.MapPath("~/AttachmentFilesForFolder"), fileName);
                file.SaveAs(path);
                var table = _excellService.ReadExcellToDataTable(path, false);

                List <DateTime> dateList = new List <DateTime>();

                if (table != null)
                {
                    var createDates = table.Rows[0].ItemArray.Cast <string>().Where(i => !String.IsNullOrEmpty(i) && i != "Date").ToList();

                    for (int i = 0; i < createDates.Count(); i++)
                    {
                        DateTime createDate;

                        DateTime.TryParseExact(createDates[i], "d-MMM-yy", CultureInfo.CurrentCulture, DateTimeStyles.None,
                                               out createDate);

                        for (int j = 2; j < table.Rows.Count; j++)
                        {
                            for (int k = (i * 3) + 1; k <= (i + 1) * 3; k++)
                            {
                                PlanShiftHardCodeType shift;

                                Enum.TryParse(table.Rows[1].ItemArray[k].ToString().Replace(" ", ""), out shift);

                                PlanLineHardCodeType line = GetLineType(table.Rows[j].ItemArray[0].ToString());

                                var Result = await _productPlanningService.GetProductPlanningByDateAndShiftAndLine(createDate,
                                                                                                                   shift, line);

                                if (Result == null)
                                {
                                    var item = new ProductPlanning()
                                    {
                                        Result      = table.Rows[j].ItemArray[k].ToString(),
                                        CreatedDate = createDate,
                                        UpdatedDate = DateTime.Now,
                                        Line        = line,
                                        Shift       = shift,
                                        ProductName = table.Rows[j].ItemArray[k].ToString()
                                    };
                                    await _productPlanningService.CreateAsync(item);
                                }
                                else
                                {
                                    //update
                                    Result.Result      = table.Rows[j].ItemArray[k].ToString();
                                    Result.ProductName = table.Rows[j].ItemArray[k].ToString();
                                    await _productPlanningService.UpdateAsync(Result);
                                }
                            }
                        }
                    }
                }



                // Read date

                /*    for (int j = 1; j < table.Rows[0].ItemArray.Length; j++)
                 *  {
                 *      if (string.IsNullOrEmpty(table.Rows[0].ItemArray[j].ToString()))
                 *      {
                 *          DateTime date;
                 *          DateTime.TryParseExact(table.Rows[0].ItemArray[j].ToString(), "dd-MMM-yy",
                 *              CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
                 *          dateList.Add(date);
                 *      }
                 *  }
                 *  var iDate = 0;
                 *  for (int j = 1; j < table.Rows[j].ItemArray.Length; j++)
                 *  {
                 *
                 *      string line = table.Rows[j].ItemArray[0].ToString();
                 *      var iShift = 1;
                 *      while (iShift <= table.Rows[j].ItemArray.Length)
                 *      {
                 *           string productName = table.Rows[j].ItemArray[iShift].ToString();
                 *
                 *            var item = new ProductPlanning()
                 *              {
                 *                  Result = productName,
                 *                  CreatedDate = dateList[(iShift-1)/3],
                 *                  UpdatedDate = dateList[(iShift-1)/3],
                 *                  Line = GetLineType(line),
                 *                  Shift = PlanShiftHardCodeType.Shift1,
                 *                  ProductName = productName
                 *              };
                 *
                 *              await _productPlanningService.CreateAsync(item);
                 *              iShift++;
                 *
                 *      }
                 *
                 *  }*/

                return(Json(new { status = "success", type = "create" }));
            }

            return(Json(new { status = "error", type = "create" }));
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="productPlanning"></param>
 /// <returns></returns>
 public Task DeleteAsync(ProductPlanning productPlanning)
 {
     _cacheManager.RemoveByPattern(PRODUCT_PLANNING_PATTERN);
     return(_productPlanningRepositoryAsync.DeleteAsync(productPlanning));
 }