Пример #1
0
        public ResponseModel <List <ManageEmployeeListViewModel> > ValidateFileData(IEnumerable <DataRow> datalist)
        {
            ResponseModel <List <ManageEmployeeListViewModel> > response = new ResponseModel <List <ManageEmployeeListViewModel> >();

            response.Entity = new List <ManageEmployeeListViewModel>();
            StringBuilder sbError    = new StringBuilder();
            List <int>    skipedRows = new List <int>();
            int           rowNum     = 2;

            if (datalist != null && datalist.Any())
            {
                foreach (DataRow row in datalist)
                {
                    sbError.Length = 0;
                    StringBuilder validationError            = new StringBuilder();
                    ManageEmployeeListViewModel employeeData = new ManageEmployeeListViewModel()
                    {
                        FullName = row[0] != DBNull.Value ? row[0].ToString() : "",
                        // DateOfBirth = row[1] != DBNull.Value ? Convert.ToDateTime(row[1]) : (DateTime?)null,
                        //Gender = row[2] != DBNull.Value ? row[2].ToString() : "",
                        //Salary = row[3] != DBNull.Value ? Convert.ToDecimal(row[3]) : (Decimal?)null,
                        Designation = row[4] != DBNull.Value ? row[4].ToString() : ""
                    };

                    if (row[0] != DBNull.Value || row[1] != DBNull.Value || row[2] != DBNull.Value || row[3] != DBNull.Value || row[4] != DBNull.Value)
                    {
                        if (row[0] == DBNull.Value)
                        {
                            validationError.Append(" FullName is Blank.");
                        }

                        if (row[1] == DBNull.Value)
                        {
                            validationError.Append(" DateOfBirth is Blank.");
                        }
                        else
                        {
                            string[] dateFormats =
                            {
                                "dd.MM.yyyy hh:mm:ss tt",
                                "dd-MM-yyyy hh:mm:ss tt",
                                "dd/MM/yyyy hh:mm:ss tt",
                                "MM/dd/yyyy hh:mm:ss tt",
                                "M/d/yyyy hh:mm:ss tt",
                                "yyyy/MM/dd hh:mm:ss tt",
                                "dd-MM-yyyy hh:mm:ss tt",
                                "yyyy-MM-dd hh:mm:ss tt",
                                "MM-dd-yyyy hh:mm:ss tt"
                            };
                            if (IsValidDate(row[1].ToString(), dateFormats))
                            {
                                employeeData.DateOfBirth = row[1] != DBNull.Value ? Convert.ToDateTime(row[1]) : (DateTime?)null;
                            }
                            else
                            {
                                validationError.Append(" Invalid Date Format in DateOfBirth.");
                            }
                        }

                        if (row[2] == DBNull.Value)
                        {
                            validationError.Append(" Gender is Blank.");
                        }
                        else
                        {
                            string gender = row[2] != DBNull.Value ? row[2].ToString() : "";
                            _genderRepository.Find(x => x.IsDeleted == false && x.Name == gender).Select(y => y.Id);
                            employeeData.Gender = _genderRepository.Find(x => x.IsDeleted == false && x.Name == gender).Select(y => y.Id).FirstOrDefault();
                        }
                        if (row[3] == DBNull.Value)
                        {
                            validationError.Append(" Salary is Blank.");
                        }
                        else
                        {
                            if (IsDecimal(row[3].ToString()))
                            {
                                employeeData.Salary = row[3] != DBNull.Value ? Convert.ToDecimal(row[3]) : (Decimal?)null;
                            }
                            else
                            {
                                validationError.Append(" Salary is not in numeric.");
                            }
                        }

                        if (row[4] == DBNull.Value)
                        {
                            validationError.Append(" Designation is Blank.");
                        }

                        if (validationError.Length > 0)
                        {
                            sbError.Append("Row: " + rowNum);
                            sbError.Append(validationError);
                            response.ExcelValidationError.Add(sbError.ToString());
                            response.Validation = false;
                        }
                        else
                        {
                            response.Entity.Add(employeeData);
                        }
                    }
                    else
                    {
                        skipedRows.Add(rowNum);
                    }
                    rowNum++;
                }
                if (skipedRows.Count > 0)
                {
                    response.SkipedRow = string.Join(",", skipedRows);
                }
            }
            return(response);
        }