protected async Task <BaseResponse <List <DynamicParameters> > > ReadXlsxFile(MemoryStream stream)
        {
            var importExelFrameWork = await _rpTailieu.GetImportTypes((int)HosoType.RevokeDebt);

            if (importExelFrameWork == null)
            {
                return(new BaseResponse <List <DynamicParameters> >("Không tìm thấy importExelFrameWork", null, false));
            }
            var config = await _rpConfig.GetByCode(Constanst.revoke_debt_max_row_import);

            //return null;
            var result   = new TupleModel();
            var workBook = WorkbookFactory.Create(stream);
            var sheet    = workBook.GetSheetAt(0);
            var rows     = sheet.GetRowEnumerator();
            var hasData  = rows.MoveNext();
            var param    = new DynamicParameters();
            var pars     = new List <DynamicParameters>();
            int skipCell = 0;

            if (sheet.PhysicalNumberOfRows - 2 > config.Value)
            {
                return(new BaseResponse <List <DynamicParameters> >($"Số dòng của file không được nhiều hơn {config.Value}", null, false));
            }
            for (int i = 2; i < sheet.PhysicalNumberOfRows; i++)
            {
                try
                {
                    param = new DynamicParameters();
                    var row = sheet.GetRow(i);
                    if (row != null)
                    {
                        if (row.Cells.Count > 1)
                        {
                            bool isNullRow = row.Cells.Count < 20 ? true : false;
                            if (isNullRow)
                            {
                                continue;
                            }
                        }

                        foreach (var col in importExelFrameWork)
                        {
                            try
                            {
                                if (row.GetCell(col.Position) == null)
                                {
                                    param.Add(col.Name, string.Empty);
                                    skipCell += 1;
                                }
                                else
                                {
                                    param.Add(col.Name, BusinessExtentions.TryGetValueFromCell(row.Cells[col.Position - skipCell].ToString(), col.ValueType));
                                }
                            }
                            catch (Exception e)
                            {
                                param = null;
                            }
                        }
                        if (param != null)
                        {
                            skipCell = 0;
                            pars.Add(param);
                        }
                    }
                }
                catch
                {
                }
            }
            return(new BaseResponse <List <DynamicParameters> >(string.Empty, pars, true));
        }
Esempio n. 2
0
        public async Task <List <HosoCourier> > ReadXlsxFile(MemoryStream stream, int createBy)
        {
            var importExelFrameWork = await _rpTailieu.GetImportTypes((int)HosoType.HosoCourrier);

            BusinessExtentions.GetObjectParams(importExelFrameWork);
            //return null;
            var result   = new TupleModel();
            var workBook = WorkbookFactory.Create(stream);
            var sheet    = workBook.GetSheetAt(0);
            var rows     = sheet.GetRowEnumerator();
            var hasData  = rows.MoveNext();
            var param    = new DynamicParameters();
            var pars     = new List <DynamicParameters>();
            int count    = 0;
            var hosos    = new List <HosoCourier>();

            for (int i = 1; i < sheet.PhysicalNumberOfRows; i++)
            {
                try
                {
                    var row = sheet.GetRow(i);
                    if (row != null)
                    {
                        if (row.Cells.Count > 1)
                        {
                            bool isNullRow = row.Cells.Count < 3 ? true : false;
                        }

                        foreach (var col in importExelFrameWork)
                        {
                            param.Add(col.Name, BusinessExtentions.TryGetValueFromCell(row.Cells[col.Position].ToString(), col.ValueType));
                        }
                        pars.Add(param);
                        var hoso = new HosoCourier()
                        {
                            CustomerName = row.Cells[0] != null ? row.Cells[0].ToString() : "",
                            Phone        = row.Cells[1] != null ? row.Cells[1].ToString() : "",
                            Cmnd         = row.Cells[2] != null ? row.Cells[2].ToString() : "",
                            LastNote     = row.Cells[4] != null ? row.Cells[4].ToString() : "",
                            ProvinceId   = row.Cells[5] != null?Convert.ToInt32(row.Cells[5].ToString()) : 0,
                                               DistrictId = row.Cells[6] != null?Convert.ToInt32(row.Cells[6].ToString()) : 0,
                                                                SaleCode  = row.Cells[7] != null ? row.Cells[7].ToString().Trim().ToLower() :string.Empty,
                                                                Status    = (int)HosoCourierStatus.New,
                                                                CreatedBy = createBy
                        };
                        var strAssignee    = row.Cells[3] != null ? row.Cells[3].ToString() : "";
                        var assigneeIdsStr = string.IsNullOrWhiteSpace(strAssignee) ? new List <string>() : strAssignee.Split(',').ToList();
                        var assigneeIds    = (assigneeIdsStr != null && assigneeIdsStr.Any()) ? assigneeIdsStr.Select(s => Convert.ToInt32(s)).ToList() : new List <int>();
                        hoso.AssigneeIds = assigneeIds;
                        hoso.AssignId    = assigneeIds.FirstOrDefault();

                        hoso.GroupId = await _rpCourierProfile.GetGroupIdByNguoiQuanLyId(hoso.AssignId);

                        hosos.Add(hoso);
                        count++;
                    }
                }
                catch
                {
                    return(hosos);
                }
            }
            return(hosos);
        }