Beispiel #1
0
        public async Task <IActionResult> UploadEmployeeRecords(IFormFile excelfile)
        {
            if (excelfile == null || excelfile.Length == 0)
            {
                ViewBag.Error           = "Please Select a excel file <br/>";
                TempData["UserMessage"] = "Please Select a excel file.";
                TempData["Title"]       = "Error.";

                return(View(nameof(Index)));
            }
            IFormFile file = Request.Form.Files["excelfile"];

            if (excelfile.FileName.EndsWith("xls") || excelfile.FileName.EndsWith("xlsx"))
            {
                string lastrecord      = "";
                int    recordCount     = 0;
                string message         = "";
                string fileContentType = file.ContentType;
                byte[] fileBytes       = new byte[file.Length];
                var    data            = file.OpenReadStream();


                using (var package = new ExcelPackage(file.OpenReadStream()))
                {
                    ExcelValidation myExcel       = new ExcelValidation();
                    var             currentSheet  = package.Workbook.Worksheets;
                    var             workSheet     = currentSheet.First();
                    var             noOfCol       = workSheet.Dimension.End.Column;
                    var             noOfRow       = workSheet.Dimension.End.Row;
                    int             requiredField = 4;


                    string validCheck = myExcel.ValidateExcel(noOfRow, workSheet, requiredField);
                    if (!validCheck.Equals("Success"))
                    {
                        //string row = "";
                        //string column = "";
                        string[] ssizes = validCheck.Split(' ');

                        string lineError = $"Line/Row number {ssizes[0]}  and column {ssizes[1]} is not rightly formatted, Please Check for anomalies ";
                        //ViewBag.LineError = lineError;
                        ViewBag.Message = lineError;
                        RedirectToAction(nameof(Create));
                    }

                    var studentId = DateTime.Now.Ticks;
                    for (int row = 2; row <= noOfRow; row++)
                    {
                        string firstName    = workSheet.Cells[row, 1].Value.ToString().Trim();
                        string lastName     = workSheet.Cells[row, 2].Value.ToString().Trim();
                        string mobileNumber = workSheet.Cells[row, 3].Value.ToString().Trim();
                        string department   = workSheet.Cells[row, 4].Value.ToString().Trim();

                        var dept = _dept?.SearchDepartment(department);

                        var generateNumber = new EmployeeRepo();

                        try
                        {
                            var employee = new Employee()
                            {
                                FirstName      = firstName,
                                LastName       = lastName,
                                MobileNumber   = mobileNumber,
                                Department     = dept,
                                EmployeeNumber = generateNumber.GenerateEmployeeNumber(dept.Name)
                            };

                            _context.Employees.Add(employee);
                            recordCount++;
                            // lastrecord = $"The last Updated record has the Last Name {student.LastName} and First Name {student.FirstName} with Student Id {student.StudentId}";
                        }
                        catch (Exception ex)
                        {
                            ViewBag.ErrorInfo    = "Please Leave no column or row Empty/Blank";
                            ViewBag.ErrorMessage = ex.Message;
                            return(View("ErrorException"));
                        }
                    }
                    await _context.SaveChangesAsync();

                    message = $"You have successfully Uploaded {recordCount} records...  and {lastrecord}";
                    TempData["UserMessage"] = message;
                    TempData["Title"]       = "Success.";
                }
                return(RedirectToAction("Index", "Employees"));
            }
            return(View());
        }