Ejemplo n.º 1
0
        public JsonResult PrimarySalesUpload()
        {
            string Calendardata         = Request["CalendarMonth"];
            string Type                 = Request["UploadType"];
            string Monthname            = Calendardata.Substring(0, Calendardata.IndexOf("-"));
            int    SelectedMonth        = DateTime.ParseExact(Monthname, "MMM", new CultureInfo("en-US")).Month;
            string Yearnumber           = Calendardata.Substring(Calendardata.IndexOf("-") + 1);
            int    SelectedYear         = Int32.Parse(Yearnumber);
            int    UploadType           = Int32.Parse(Type);
            HttpFileCollectionBase file = Request.Files;

            if (Request.Files.Count > 0 && Request.Files[0].FileName.EndsWith(".xls"))
            {
                try
                {
                    Ds = new DataSet();
                    Ds = ExcelImport.ImportExcelXML(Request.Files[0], true, false);

                    // return Json(size);
                    //DataSet dsMaster = new DataSet();
                    //dsMaster = Bl.GetPrimarySalesMasterData("MASTER_VALIDATE");
                    // Excel to temp table



                    //File Name Validation
                    //if (Ds_Validate.Tables[0].Rows.Count > 0)
                    //{
                    //    foreach (DataRow row_val in Ds_Validate.Tables[0].Rows)
                    //    {
                    //        //validating filename
                    //        if (file.FileName.ToString() == row_val["Uploaded_file_name"].ToString()) //&&
                    //            return Json("FileExists");

                    //    }
                    //}

                    //Excel Row No check


                    //Header sheet - column name Validation
                    var      xlHDRColumnNames = Ds.Tables[0].Columns.Cast <DataColumn>().Select(x => x.ColumnName).ToArray <string>();
                    string[] HeaderColumns    = new string[] { "Depot_Name", "Region_Name", "Region_Ref_Key",
                                                               "Stockiest_Name", "Stockiest_Ref_Key", "Document_Type_Name", "Document_Number", "Document_Date",
                                                               "Product_Name", "Product_Ref_Key", "Batch_Number", "Net_Quantity", "Free_Quantity", "Net_Value", "Excel_Row_No" };
                    bool ValidHdrColumns = false;
                    //if (xlHDRColumnNames.Any())
                    //{
                    //    ValidHdrColumns = xlHDRColumnNames.SequenceEqual(HeaderColumns);
                    //    if (!ValidHdrColumns)
                    //    {
                    //        return Json("HeaderInvalidColumns");
                    //    }
                    //}

                    for (int i = 0; i < xlHDRColumnNames.Length; i++)
                    {
                        for (int j = 0; j < HeaderColumns.Length; j++)
                        {
                            if (xlHDRColumnNames[i] == HeaderColumns[j])
                            {
                                ValidHdrColumns = true;
                            }
                        }
                    }
                    if (!ValidHdrColumns)
                    {
                        return(Json("DetailsInvalidColumns"));
                    }

                    foreach (DataRow row_xl in Ds.Tables[0].Rows)
                    {
                        DateTime dtFormat;
                        if ((!DateTime.TryParseExact(row_xl["Document_Date"].ToString().Trim(), "yyyy-MM-dd", new CultureInfo("en-GB"), DateTimeStyles.None, out dtFormat)))
                        {
                            //DataFormatInvalid = true;
                            return(Json("Please update Date format should be YYYY-MM-DD"));
                        }
                        string docdate     = row_xl["Document_Date"].ToString();
                        int    docYear     = Int32.Parse(docdate.Substring(0, docdate.IndexOf("-")));
                        string NameofMonth = DateTime.ParseExact(row_xl["Document_Date"].ToString(), "yyyy-MM-dd", null).ToString("MMMM");
                        int    docMonth    = DateTimeFormatInfo.CurrentInfo.MonthNames.ToList().IndexOf(NameofMonth) + 1;
                        if (docMonth != SelectedMonth || docYear != SelectedYear)
                        {
                            return(Json("Month and Year Of Document Date in Excel Should be Same as Selected Month and Year in dropdown"));
                        }
                    }
                    //Details sheet - column name Validation
                    //var xlDTLColumnNames = Ds.Tables[1].Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray<string>();
                    //string[] DetailColumns = new string[] {"Region_Name", "Depot_Name", "Stockiest_Ref_Key1", "Document_Type",
                    //                                      "Document_Number","Document_Date","Transaction_Mode","Product_Name","Product_Ref_Key1",
                    //                                           "Batch_Number", "Sales_Quantity", "Free_Quantity", "Sales_Rate"};
                    //bool ValidDTLColumns = true;
                    //if (xlDTLColumnNames.Any())
                    //{
                    //    ValidDTLColumns = xlDTLColumnNames.SequenceEqual(DetailColumns);
                    //    if (!ValidDTLColumns)
                    //    {
                    //        return Json("DetailInvalidColumns");
                    //    }
                    //}

                    //asynchronous method call
                    string CompanyCode      = _objCurrentInfo.GetCompanyCode();
                    string UserCode         = _objCurrentInfo.GetUserCode();
                    string ConnectionString = _objCurrentInfo.GetConnectionString();
                    string SubDomain        = _objCurrentInfo.GetSubDomain();
                    string strGuid          = Guid.NewGuid().ToString();
                    Task   task             = Task.Factory.StartNew(() =>
                    {
                        if (PrimarySalesTempUpload(CompanyCode, Ds.Tables[0], UserCode, ConnectionString, strGuid) == true)
                        {
                            //   ProcessPrimarySalesUpload(Ds, Ds_Validate, dsMaster, file.FileName.ToString(), CompanyCode, UserCode, ConnectionString, SubDomain);
                            PrimarySalesValidation(CompanyCode, UserCode, strGuid, Request.Files[0].FileName.ToString(), ConnectionString, SelectedMonth, SelectedYear, UploadType);
                        }
                    });

                    return(Json("Uploaded"));
                }
                catch (Exception ex)
                {
                    return(Json("Not Uploaded"));
                }
                finally
                {
                    Ds.Dispose();
                    //Ds_Validate.Dispose();
                }
            }
            else
            {
                return(Json("Invalid File"));
            }
            //return Json("Not Uploaded");
        }