Beispiel #1
0
        //-> UploadCustomer
        public async Task <int> UploadCustomer(UploadCustomer uploadExcel)
        {
            if (uploadExcel.ExcelFile.ContentLength < 0)
            {
                throw new HttpException((int)HttpStatusCode.BadRequest, "Not a valid file");
            }

            if (!uploadExcel.ExcelFile.FileName.EndsWith(".xlsx"))
            {
                throw new HttpException((int)HttpStatusCode.BadRequest, "Only .xlsx is allowed");
            }

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    XLWorkbook   Workbook  = new XLWorkbook(uploadExcel.ExcelFile.InputStream);
                    IXLWorksheet WorkSheet = null;
                    WorkSheet = Workbook.Worksheet("sheet1");
                    if (!DocumentHelper.SaveExcelFile(uploadExcel.ExcelFile))
                    {
                        throw new HttpException((int)HttpStatusCode.BadRequest, "Error saving file.");
                    }

                    WorkSheet.FirstRow().Delete();//delete header column
                    int countUpdateRecord = 0;
                    foreach (var row in WorkSheet.RowsUsed())
                    {
                        //var soNumber = row.Cell(1).Value.ToString().Trim().Replace(" ", string.Empty);//Get ist cell. 1 represent column number
                        //var status = row.Cell(2).Value.ToString().Trim().Replace(" ", string.Empty); ;
                        var ex = await db.tblCustomers.FirstOrDefaultAsync(x => x.code.ToLower() == row.Cell(1).Value.ToString().Trim().ToLower() && x.deleted == null);

                        if (ex == null)
                        {
                            var record = new tblCustomer();
                            record.code      = row.Cell(1).Value.ToString().Trim();
                            record.firstName = row.Cell(2).Value.ToString().Trim();
                            db.tblCustomers.Add(record);
                            await db.SaveChangesAsync();

                            countUpdateRecord++;
                        }
                    }
                    transaction.Commit();
                    return(countUpdateRecord);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw new Exception(ex.Message);
                }
            }
        }
 //[ValidateAntiForgeryToken]
 public async Task <String> UploadCustomer(UploadCustomer uploadExcel)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             throw new HttpException((int)HttpStatusCode.BadRequest, ConstantHelper.KEY_IN_REQUIRED_FIELD);
         }
         Response.StatusCode = 200;
         return($"ok{await handler.UploadCustomer(uploadExcel)}");
     }
     catch (HttpException)
     {
         return("no");
     }
 }