//[ValidateAntiForgeryToken]
 public async Task <String> UploadRetailer(UploadRetailer uploadExcel)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             throw new HttpException((int)HttpStatusCode.BadRequest, ConstantHelper.KEY_IN_REQUIRED_FIELD);
         }
         Response.StatusCode = 200;
         return($"ok{await handler.UploadRetailer(uploadExcel)}");
     }
     catch (Exception ex)
     {
         return(ex.Message);
     }
 }
Example #2
0
        //-> UploadRetailer
        public async Task <int> UploadRetailer(UploadRetailer 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");
            }


            string code = string.Empty;

            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); ;
                        int?custID   = null;
                        var custCode = row.Cell(1).Value.ToString().Trim();
                        var cust     = await db.tblCustomers.FirstOrDefaultAsync(x => x.deleted == null& x.code == custCode);

                        if (cust != null)
                        {
                            custID = cust.id;
                        }
                        code = row.Cell(4).Value.ToString().ToLower().Trim();
                        var _record = await db.tblRetailers.FirstOrDefaultAsync(x => x.retl_Deleted == null &&
                                                                                x.retl_Code.ToLower().Trim() == code &&
                                                                                x.retl_CustomerID == cust.id);

                        if (_record == null)
                        {
                            var record = new tblRetailer();
                            record.retl_Name       = row.Cell(5).Value.ToString().Trim();
                            record.retl_Code       = row.Cell(4).Value.ToString().Trim();
                            record.retl_District   = row.Cell(7).Value.ToString().Trim();
                            record.retl_Province   = row.Cell(9).Value.ToString().Trim();
                            record.retl_Phone      = row.Cell(10).Value.ToString().Trim();
                            record.retl_Phone2     = row.Cell(11).Value.ToString().Trim();
                            record.retl_CustomerID = custID;
                            db.tblRetailers.Add(record);
                            await db.SaveChangesAsync();

                            countUpdateRecord++;
                        }
                    }
                    transaction.Commit();
                    return(countUpdateRecord);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw new Exception($"Customer Number: {code} not found");
                }
            }
        }