public IActionResult PrivilegeCode(PrivilegeCodeValidate model) { if (!_loginServices.isInAdminRoles(this.GetRoles())) { return(RedirectToAction("Login", "Accounts")); } model.PrivilegeCodes = new List <PrivilegeCode>(); return(View("PrivilegeCode", model)); }
public async Task <IActionResult> ModifyPrivilegeCode(PrivilegeCodeValidate model, IFormFile file) { if (!_loginServices.isInAdminRoles(this.GetRoles())) { return(RedirectToAction("Login", "Accounts")); } var pri = this._context.Privileges.Where(w => w.PrivilegeID == model.PrivilegeID).FirstOrDefault(); if (pri == null) { ModelState.AddModelError("Error", "ไม่พบข้อมูลสิทธิพิเศษ"); } if (ModelState.IsValid) { if (model.valid) { if (model.PrivilegeCodes != null && model.PrivilegeCodes.Count() > 0) { foreach (var item in model.PrivilegeCodes) { item.PrivilegeID = model.PrivilegeID; item.EffectiveDate = DateUtil.ToDate(item.effDate); item.ExpiryDate = DateUtil.ToDate(item.expDate); item.Status = item.Status; item.MaxUse = item.MaxUse; item.Create_On = DateUtil.Now(); this._context.PrivilegeCodes.Add(item); } this._context.SaveChanges(); return(RedirectToAction("PrivilegeCode", new { result = 1, PrivilegeID = model.PrivilegeID })); } } else { if (file == null) { ModelState.AddModelError("Error", "ไม่พบข้อมูลไฟล์นำเข้า"); } else { model.PrivilegeCodes = new List <PrivilegeCode>(); model.PrivilegeCodeFails = new List <PrivilegeCodeFail>(); ModelState.Clear(); using (var memoryStream = new MemoryStream()) { await file.CopyToAsync(memoryStream).ConfigureAwait(false); using (var package = new ExcelPackage(memoryStream)) { var workbook = package.Workbook; var worksheet = workbook.Worksheets.First(); var rowCount = worksheet.Dimension?.Rows; var colCount = worksheet.Dimension?.Columns; if (rowCount.HasValue && colCount.HasValue) { for (int row = 2; row <= rowCount.Value; row++) { try { var cformat = worksheet.Cells["C" + row].Style.Numberformat.Format; var eformat = worksheet.Cells["D" + row].Style.Numberformat.Format; worksheet.Cells["C" + row].Style.Numberformat.Format = "dd/MM/yyyy HH:mm"; worksheet.Cells["D" + row].Style.Numberformat.Format = "dd/MM/yyyy HH:mm"; var code = worksheet.Cells["A" + row].Value != null ? worksheet.Cells["A" + row].Value.ToString() : ""; var maxuse = worksheet.Cells["B" + row].Value != null ? worksheet.Cells["B" + row].Value.ToString() : ""; var eff = worksheet.Cells["C" + row].Value != null ? worksheet.Cells["C" + row].Value : null; var exp = worksheet.Cells["D" + row].Value != null ? worksheet.Cells["D" + row].Value : null; var status = worksheet.Cells["E" + row].Value != null ? worksheet.Cells["E" + row].Value.ToString() : ""; var msg = new StringBuilder(); if (string.IsNullOrEmpty(code)) { msg.AppendLine("ไม่พบข้อมูล Code"); } else { var pricode = this._context.PrivilegeCodes.Where(w => w.Code == code).FirstOrDefault(); if (pricode != null) { msg.AppendLine("Code ซ้ำในระบบ"); } } var pcode = new PrivilegeCode(); pcode.PrivilegeID = pri.PrivilegeID; pcode.Code = code; pcode.MaxUse = NumUtil.ParseInteger(maxuse); if (pcode.MaxUse == 0) { pcode.MaxUse = 1; } if (!string.IsNullOrEmpty(cformat) && cformat[0].ToString().ToLower() == "m") { pcode.EffectiveDate = (DateTime)eff; } else { pcode.EffectiveDate = DateUtil.ToDate(eff.ToString()); } if (!string.IsNullOrEmpty(eformat) && eformat[0].ToString().ToLower() == "m") { pcode.ExpiryDate = (DateTime)exp; } else { pcode.ExpiryDate = DateUtil.ToDate(exp.ToString()); } if (eff != null) { if (pcode.EffectiveDate == null) { pcode.EffectiveDate = DateTime.FromOADate((double)NumUtil.ParseDecimal(eff)); } } if (exp != null) { if (pcode.ExpiryDate == null) { pcode.ExpiryDate = DateTime.FromOADate((double)NumUtil.ParseDecimal(exp)); } } pcode.effDate = DateUtil.ToDisplayDate(pcode.EffectiveDate); pcode.expDate = DateUtil.ToDisplayDate(pcode.ExpiryDate); pcode.Status = StatusType.InActive; if (status == "Y") { pcode.Status = StatusType.Active; } if (string.IsNullOrEmpty(msg.ToString())) { model.PrivilegeCodes.Add(pcode); } else { model.PrivilegeCodes.Clear(); var fail = new PrivilegeCodeFail(); fail.Code = code; fail.EffectiveDate = pcode.effDate; fail.ExpiryDate = pcode.expDate; fail.MaxUse = pcode.MaxUse; fail.message = msg.ToString(); fail.Status = pcode.Status.toStatusName(); fail.row = row; model.PrivilegeCodeFails.Add(fail); } } catch (Exception ex) { ModelState.AddModelError("Error", ex.Message); } } } else { ModelState.AddModelError("Error", "รูปแบบไฟล์ไม่ถูกต้องหรือไม่มีข้อมูล"); } } } } } } return(View("PrivilegeCode", model)); }