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"); }