Beispiel #1
0
        public ActionResult ConfirmImportData(FormCollection collection, string UrlReferrer, long?TenantId)
        {
            ViewData["UrlReferrer"] = UrlReferrer;
            ViewData["TenantId"]    = TenantId;
            string FilePath              = collection["hdnFilePath"];
            var    columnlist            = collection["lblColumn"];
            var    columndisplaynamelist = collection["lblColumnDisplayName"];
            var    selectedlist          = collection["colList"];
            var    selectedAssocPropList = collection["colAssocPropList"];
            bool   SaveMapping           = collection["SaveMapping"] == "on" ? true : false;
            string mappingName           = collection["MappingName"];
            string DetailMessage         = "";
            string fileLocation          = FilePath;
            string excelConnectionString = string.Empty;
            string typename              = "User";
            string fileExtension         = System.IO.Path.GetExtension(fileLocation).ToLower();

            if (fileExtension == ".xls" || fileExtension == ".xlsx" || fileExtension == ".csv")
            {
                DataSet objDataSet = DataImport(fileExtension, fileLocation);

                DataTable tempdt = new DataTable();
                if (selectedlist != null && columnlist != null)
                {
                    var dtsheetColumns = selectedlist.Split(',').ToList();
                    var dttblColumns   = columndisplaynamelist.Split(',').ToList();
                    for (int j = 0; j < dtsheetColumns.Count; j++)
                    {
                        string columntable = dttblColumns[j];
                        int    columnSheet = 0;
                        if (string.IsNullOrEmpty(dtsheetColumns[j]))
                        {
                            continue;
                        }
                        else
                        {
                            columnSheet = Convert.ToInt32(dtsheetColumns[j]) - 1;
                        }
                        tempdt.Columns.Add(columntable);
                    }
                    for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++)
                    {
                        var sheetColumns = selectedlist.Split(',').ToList();
                        if (AreAllColumnsEmpty(objDataSet.Tables[0].Rows[i], sheetColumns))
                        {
                            continue;
                        }
                        var     tblColumns = columndisplaynamelist.Split(',').ToList();
                        DataRow objdr      = tempdt.NewRow();
                        for (int j = 0; j < sheetColumns.Count; j++)
                        {
                            string columntable = tblColumns[j];
                            int    columnSheet = 0;
                            if (string.IsNullOrEmpty(sheetColumns[j]))
                            {
                                continue;
                            }
                            else
                            {
                                columnSheet = Convert.ToInt32(sheetColumns[j]) - 1;
                            }
                            string columnValue = objDataSet.Tables[0].Rows[i][columnSheet].ToString().Trim();
                            if (string.IsNullOrEmpty(columnValue))
                            {
                                continue;
                            }
                            objdr[columntable] = columnValue;
                        }
                        tempdt.Rows.Add(objdr);
                    }
                }
                DetailMessage = "We have received " + objDataSet.Tables[0].Rows.Count + " new Users";
                Dictionary <string, string> lstEntityProp = new Dictionary <string, string>();
                if (!string.IsNullOrEmpty(selectedAssocPropList))
                {
                    var entitypropList = selectedAssocPropList.Split(',');
                    foreach (var prop in entitypropList)
                    {
                        var lst = prop.Split('-');
                        lstEntityProp.Add(lst[1], lst[0]);
                    }
                }
                Dictionary <GeneratorBase.MVC.ModelReflector.Association, List <String> > objAssoUnique = new Dictionary <GeneratorBase.MVC.ModelReflector.Association, List <String> >();
                //var entList = GeneratorBase.MVC.ModelReflector.Entities.FirstOrDefault(e => e.Name == "T_Employee");
                var entList = new GeneratorBase.MVC.ModelReflector.Entity {
                    Name = "User", DisplayName = "User"
                };
                entList.Properties = new List <ModelReflector.Property>();
                entList.Properties.Add(new ModelReflector.Property {
                    Name = "UserName", DisplayName = "User Name", DataType = "String", IsRequired = true
                });
                entList.Properties.Add(new ModelReflector.Property {
                    Name = "Password", DisplayName = "Password", DataType = "String", IsRequired = true
                });
                entList.Properties.Add(new ModelReflector.Property {
                    Name = "FirstName", DisplayName = "First Name", DataType = "String", IsRequired = true
                });
                entList.Properties.Add(new ModelReflector.Property {
                    Name = "LastName", DisplayName = "Last Name", DataType = "String", IsRequired = true
                });
                entList.Properties.Add(new ModelReflector.Property {
                    Name = "Email", DisplayName = "Email", DataType = "String", IsRequired = true
                });
                entList.Properties.Add(new ModelReflector.Property {
                    Name = "Roles", DisplayName = "Roles", DataType = "String", IsRequired = false
                });

                if (objAssoUnique.Count > 0)
                {
                    ViewBag.AssoUnique = objAssoUnique;
                }
                if (!string.IsNullOrEmpty(DetailMessage))
                {
                    ViewBag.DetailMessage = DetailMessage + " in the Excel file. Please review the data below, before we import it into the system.";
                }
                ViewBag.FilePath          = FilePath;
                ViewBag.ColumnList        = columnlist;
                ViewBag.SelectedList      = selectedlist;
                ViewBag.ConfirmImportData = tempdt;
                ViewBag.colAssocPropList  = selectedAssocPropList;
                if (ViewBag.ConfirmImportData != null)
                {
                    ViewBag.Title = "Data Preview";
                    return(View("UploadUser"));
                }
                else
                {
                    return(RedirectToAction("Index"));
                }
            }
            return(View());
        }
Beispiel #2
0
        public ActionResult UploadUser([Bind(Include = "FileUpload")] HttpPostedFileBase FileUpload, FormCollection collection, string UrlReferrer, long?TenantId)
        {
            if (FileUpload != null)
            {
                ViewData["UrlReferrer"] = UrlReferrer;
                ViewData["TenantId"]    = TenantId;
                string fileExtension = System.IO.Path.GetExtension(FileUpload.FileName).ToLower();
                if (fileExtension == ".xls" || fileExtension == ".xlsx" || fileExtension == ".csv" || fileExtension == ".all")
                {
                    string rename = string.Empty;
                    if (fileExtension == ".all")
                    {
                        rename        = System.IO.Path.GetFileName(FileUpload.FileName.ToLower().Replace(fileExtension, ".csv"));
                        fileExtension = ".csv";
                    }
                    else
                    {
                        rename = System.IO.Path.GetFileName(FileUpload.FileName);
                    }
                    string fileLocation = string.Format("{0}\\{1}", Server.MapPath("~/ExcelFiles"), rename);
                    if (System.IO.File.Exists(fileLocation))
                    {
                        System.IO.File.Delete(fileLocation);
                    }
                    FileUpload.SaveAs(fileLocation);
                    DataSet objDataSet = DataImport(fileExtension, fileLocation);
                    var     col        = new List <SelectListItem>();
                    if (objDataSet.Tables.Count > 0)
                    {
                        int iCols = objDataSet.Tables[0].Columns.Count;
                        if (iCols > 0)
                        {
                            for (int i = 0; i < iCols; i++)
                            {
                                col.Add(new SelectListItem {
                                    Value = (i + 1).ToString(), Text = objDataSet.Tables[0].Columns[i].Caption
                                });
                            }
                        }
                    }
                    col.Insert(0, new SelectListItem {
                        Value = "", Text = "Select Column"
                    });
                    Dictionary <GeneratorBase.MVC.ModelReflector.Association, SelectList> objColMapAssocProperties = new Dictionary <GeneratorBase.MVC.ModelReflector.Association, SelectList>();
                    Dictionary <GeneratorBase.MVC.ModelReflector.Property, SelectList>    objColMap = new Dictionary <GeneratorBase.MVC.ModelReflector.Property, SelectList>();
                    // var entList = GeneratorBase.MVC.ModelReflector.Entities.FirstOrDefault(e => e.Name == "ApplicationUser");
                    var entList = new GeneratorBase.MVC.ModelReflector.Entity {
                        Name = "User", DisplayName = "User"
                    };
                    entList.Properties = new List <ModelReflector.Property>();
                    if (entList != null)
                    {
                        entList.Properties.Add(new ModelReflector.Property {
                            Name = "UserName", DisplayName = "User Name", DataType = "String", IsRequired = true
                        });
                        entList.Properties.Add(new ModelReflector.Property {
                            Name = "Password", DisplayName = "Password", DataType = "String", IsRequired = true
                        });
                        entList.Properties.Add(new ModelReflector.Property {
                            Name = "FirstName", DisplayName = "First Name", DataType = "String", IsRequired = true
                        });
                        entList.Properties.Add(new ModelReflector.Property {
                            Name = "LastName", DisplayName = "Last Name", DataType = "String", IsRequired = true
                        });
                        entList.Properties.Add(new ModelReflector.Property {
                            Name = "Email", DisplayName = "Email", DataType = "String", IsRequired = true
                        });
                        entList.Properties.Add(new ModelReflector.Property {
                            Name = "Roles", DisplayName = "Roles", DataType = "String", IsRequired = false
                        });
                        foreach (var prop in entList.Properties.Where(p => p.Name != "DisplayValue"))
                        {
                            long selectedVal = 0;
                            var  colSelected = col.FirstOrDefault(p => p.Text.Trim().ToLower() == prop.DisplayName.Trim().ToLower());
                            if (colSelected != null)
                            {
                                selectedVal = long.Parse(colSelected.Value);
                            }
                            objColMap.Add(prop, new SelectList(col, "Value", "Text", selectedVal));
                        }
                    }
                    ViewBag.AssociatedProperties = objColMapAssocProperties;
                    ViewBag.ColumnMapping        = objColMap;
                    ViewBag.FilePath             = fileLocation;
                    if (!string.IsNullOrEmpty(collection["ListOfMappings"]))
                    {
                        string typeName   = "";
                        string colKey     = "";
                        string colDisKey  = "";
                        string colListInx = "";
                        typeName = "User";

                        string FilePath                 = ViewBag.FilePath;
                        var    columnlist               = colKey;
                        var    columndisplaynamelist    = colDisKey;
                        var    selectedlist             = colListInx;
                        string DefaultColumnMappingName = string.Empty;

                        string    DetailMessage         = "";
                        string    excelConnectionString = string.Empty;
                        DataTable tempdt = new DataTable();
                        if (selectedlist != null && columnlist != null)
                        {
                            var dtsheetColumns = selectedlist.Split(',').ToList();
                            var dttblColumns   = columndisplaynamelist.Split(',').ToList();
                            for (int j = 0; j < dtsheetColumns.Count; j++)
                            {
                                string columntable = dttblColumns[j];
                                int    columnSheet = 0;
                                if (string.IsNullOrEmpty(dtsheetColumns[j]))
                                {
                                    continue;
                                }
                                else
                                {
                                    columnSheet = Convert.ToInt32(dtsheetColumns[j]) - 1;
                                }
                                tempdt.Columns.Add(columntable);
                            }
                            for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++)
                            {
                                var sheetColumns = selectedlist.Split(',').ToList();
                                if (AreAllColumnsEmpty(objDataSet.Tables[0].Rows[i], sheetColumns))
                                {
                                    continue;
                                }
                                var     tblColumns = columndisplaynamelist.Split(',').ToList();
                                DataRow objdr      = tempdt.NewRow();
                                for (int j = 0; j < sheetColumns.Count; j++)
                                {
                                    string columntable = tblColumns[j];
                                    int    columnSheet = 0;
                                    if (string.IsNullOrEmpty(sheetColumns[j]))
                                    {
                                        continue;
                                    }
                                    else
                                    {
                                        columnSheet = Convert.ToInt32(sheetColumns[j]) - 1;
                                    }
                                    string columnValue = objDataSet.Tables[0].Rows[i][columnSheet].ToString().Trim();
                                    if (string.IsNullOrEmpty(columnValue))
                                    {
                                        continue;
                                    }
                                    objdr[columntable] = columnValue;
                                }
                                tempdt.Rows.Add(objdr);
                            }
                        }
                        DetailMessage = "We have received " + objDataSet.Tables[0].Rows.Count + " new Users";
                        if (entList != null)
                        {
                            if (!string.IsNullOrEmpty(DetailMessage))
                            {
                                ViewBag.DetailMessage = DetailMessage + " in the Excel file. Please review the data below, before we import it into the system.";
                            }
                            ViewBag.ColumnMapping     = null;
                            ViewBag.FilePath          = FilePath;
                            ViewBag.ColumnList        = columnlist;
                            ViewBag.SelectedList      = selectedlist;
                            ViewBag.ConfirmImportData = tempdt;
                            if (ViewBag.ConfirmImportData != null)
                            {
                                ViewBag.Title = "Data Preview";
                                return(View("UploadUser"));
                            }
                            else
                            {
                                return(RedirectToAction("Index"));
                            }
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Plese select Excel File.");
                }
            }
            ViewBag.Title = "Column Mapping";
            return(View("UploadUser"));
        }