Пример #1
0
        public ActionResult Import(ImportModel obj)
        {
            try
            {
                // Kiểm tra đã submit file lên
                if (Request.Files.Count == 0)
                {
                    ViewBag.Mess = "Không tìm thấy file";
                }
                else
                {
                    var file = Request.Files[0];
                    if (file.ContentType != excelContentType && file.ContentType != excel2010ContentType)
                    {
                        ViewBag.Mess = "Vui lòng chọn file excel";
                    }
                    else
                    {
                        var pathSource = ConfigurationManager.AppSettings["FolderUploadPath"];
                        if (string.IsNullOrEmpty(pathSource)) return Content("Không tìm thấy đường dẫn file");

                        // Lưu đường dẫn file theo mã hồ sơ
                        var duongDan = pathSource + "/ImportReport/";
                        if (!Directory.Exists(duongDan)) Directory.CreateDirectory(duongDan);

                        //Post file lên thư mục tạm (Temp)
                        string path = Path.Combine(duongDan, file.FileName);
                        file.SaveAs(path);

                        //Sau khi upload xong= > đọc dữ liệu trong file này
                        //Code này là lấy đường dẫn của file excel bỏ vào connection string (có thể tham khảo trên trang ConnectionStrings.com)
                        string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", path);
                        //"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
                        OleDbConnection connection = new OleDbConnection();
                        connection.ConnectionString = excelConnectionString;
                        OleDbCommand command = new OleDbCommand("Select * from [Sheet1$]", connection);
                        connection.Open();
                        DbDataReader dr = command.ExecuteReader();

                        //Sau khi lấy dữ liệu vào dr => Insert vào trong SQL Server
                        //Lấy chuỗi kết nối tới SQL server, database là DBImportDataFromExcel
                        // Integrated Security=True
                        //string sqlConnectionString = String.Format(@"Data Source={0};Initial Catalog={1};{2}", "(local)\\SQLSERVER", "Test", "user id=sa;          password=123456");
                        var sqlConnectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

                        // Lấy tên bảng dữ liệu
                        //var objPhanHeChucNang = db.Ht_PhanHeChucNang.FirstOrDefault(o => o.PhanHeChucNang_ID == obj.PhanHeChucNang);
                        //var lastIndex = objPhanHeChucNang.ControllerName.Substring(objPhanHeChucNang.ControllerName.Length - 1, 1);
                        //if (lastIndex == "s")
                        //    objPhanHeChucNang.ControllerName = objPhanHeChucNang.ControllerName.Substring(0, objPhanHeChucNang.ControllerName.Length - 1);

                        // Ép kiểu sang object
                        var dt = new DataTable();
                        dt.Load(dr);

                        connection.Dispose();

                        ImportToDB(dt, obj);
                        ViewBag.Mess = "Nhập dữ liệu thành công";

                        // import dữ liệu vào table trong database
                        //SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
                        //bulkInsert.DestinationTableName = objPhanHeChucNang.ControllerName;//Tên bảng muốn chèn dữ liệu vào
                        //bulkInsert.WriteToServer(dr);
                    }
                }
                GetViewBag();
                return View();
            }
            catch (DbEntityValidationException ex)
            {
                var exc = new ExceptionViewer();
                ViewBag.Mess = exc.GetError(ex);
                GetViewBag();
                return View();
            }
        }
Пример #2
0
        private void ImportToDB(DataTable dt, ImportModel obj)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                switch (obj.PhanHeChucNang)
                {
                    case 10: // Hạ tầng kỹ thuật
                        List<HaTangKyThuatCNTT> listHaTang = dt.DataTableToList<HaTangKyThuatCNTT>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listHaTang.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 10 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.HaTangKyThuatCNTT.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.HaTangKyThuatCNTT.RemoveRange(listBaoCaoRemove);
                        }
                        
                        foreach (var item in listHaTang)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.HaTangKyThuatCNTT.Add(item);
                            db.SaveChanges();
                        }
                        break;

                    case 11: // Hạ tầng nhân lực CNTT
                        List<HaTangNhanLucCNTT> listHaTangNhanLuc = dt.DataTableToList<HaTangNhanLucCNTT>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listHaTangNhanLuc.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 11 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.HaTangNhanLucCNTT.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.HaTangNhanLucCNTT.RemoveRange(listBaoCaoRemove);
                        }

                        foreach (var item in listHaTangNhanLuc)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.HaTangNhanLucCNTT.Add(item);
                            db.SaveChanges();
                        }
                        break;

                    case 12: // Ứng dụng CNTT
                        List<UngDungCNTT> listUngDungCNTT = dt.DataTableToList<UngDungCNTT>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listUngDungCNTT.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 12 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.UngDungCNTT.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.UngDungCNTT.RemoveRange(listBaoCaoRemove);
                        }

                        foreach (var item in listUngDungCNTT)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.UngDungCNTT.Add(item);
                            db.SaveChanges();
                        }
                        break;

                    case 14: // Cổng thông tin điện tử
                        List<CongThongTinDienTu> listCongThongTinDienTu = dt.DataTableToList<CongThongTinDienTu>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listCongThongTinDienTu.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 14 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.CongThongTinDienTu.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.CongThongTinDienTu.RemoveRange(listBaoCaoRemove);
                        }

                        foreach (var item in listCongThongTinDienTu)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.CongThongTinDienTu.Add(item);
                            db.SaveChanges();
                        }
                        break;

                    case 15: // Hạ tầng kỹ thuật CNTT cấp Huyện
                        List<HaTangKyThuatCNTT_Huyen> listHaTangKyThuatCNTT_Huyen = dt.DataTableToList<HaTangKyThuatCNTT_Huyen>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listHaTangKyThuatCNTT_Huyen.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 15 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.HaTangKyThuatCNTT_Huyen.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.HaTangKyThuatCNTT_Huyen.RemoveRange(listBaoCaoRemove);
                        }

                        foreach (var item in listHaTangKyThuatCNTT_Huyen)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.HaTangKyThuatCNTT_Huyen.Add(item);
                            db.SaveChanges();
                        }
                        break;

                    case 16: // Hạ tầng nhân lực CNTT cấp Huyện
                        List<HaTangNhanLucCNTT_Huyen> listHaTangNhanLucCNTT_Huyen = dt.DataTableToList<HaTangNhanLucCNTT_Huyen>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listHaTangNhanLucCNTT_Huyen.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 16 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.HaTangNhanLucCNTT_Huyen.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.HaTangNhanLucCNTT_Huyen.RemoveRange(listBaoCaoRemove);
                        }

                        foreach (var item in listHaTangNhanLucCNTT_Huyen)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.HaTangNhanLucCNTT_Huyen.Add(item);
                            db.SaveChanges();
                        }
                        break;

                    case 20: // Cổng Thông Tin Điện Tử Cấp Huyện
                        List<CongThongTinDienTu_Huyen> listCongThongTinDienTu_Huyen = dt.DataTableToList<CongThongTinDienTu_Huyen>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listCongThongTinDienTu_Huyen.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 20 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.CongThongTinDienTu_Huyen.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.CongThongTinDienTu_Huyen.RemoveRange(listBaoCaoRemove);
                        }

                        foreach (var item in listCongThongTinDienTu_Huyen)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.CongThongTinDienTu_Huyen.Add(item);
                            db.SaveChanges();
                        }
                        break;

                    case 21: // Ứng Dụng CNTT Cấp Huyện
                        List<UngDungCNTT_Huyen> listUngDungCNTT_Huyen = dt.DataTableToList<UngDungCNTT_Huyen>();

                        // Xóa dữ liệu cũ
                        if (obj.DeleteFirst)
                        {
                            var listDonVi_ID = listUngDungCNTT_Huyen.Select(o => o.DonVi_ID);

                            // Lấy các lịch nhập đã được tạo
                            var listLich = db.Ht_LichNhapLieu.Where(o => o.PhanHe_ID == 21 && o.DotBaoCao_ID == obj.DotBaoCao && o.Nam == obj.Nam && o.ChucNang_ID == TrangThaiNhapLieu.DaGui && listDonVi_ID.Contains(o.DonVi_ID));
                            var listLichID = listLich.Select(o => o.LichNhap_ID);
                            db.Ht_LichNhapLieu.RemoveRange(listLich);

                            var listBaoCaoRemove = db.UngDungCNTT_Huyen.Where(o => listLichID.Contains(o.LichNhap_ID));
                            db.UngDungCNTT_Huyen.RemoveRange(listBaoCaoRemove);
                        }

                        foreach (var item in listUngDungCNTT_Huyen)
                        {
                            // Tạo lịch nhập
                            var objLich = new Ht_LichNhapLieu
                            {
                                ChucNang_ID = TrangThaiNhapLieu.DaGui,
                                DenNgay = obj.DenNgay,
                                DonVi_ID = item.DonVi_ID,
                                DotBaoCao_ID = obj.DotBaoCao,
                                Nam = obj.Nam,
                                PhanHe_ID = obj.PhanHeChucNang,
                                TrangThai = TrangThai.HoatDong,
                                TuNgay = obj.TuNgay
                            };
                            db.Ht_LichNhapLieu.Add(objLich);
                            db.SaveChanges();

                            // Import bản ghi báo cáo vào db
                            item.LichNhap_ID = objLich.LichNhap_ID;
                            item.Success = Convert.ToByte(TrangThaiNhapLieu.DaGui);
                            db.UngDungCNTT_Huyen.Add(item);
                            db.SaveChanges();
                        }
                        break;
                }
                scope.Complete();
            }
        }