diff --git a/CarParkValidationAPI/Controllers/ConcessionValidationController.cs b/CarParkValidationAPI/Controllers/ConcessionValidationController.cs index c1e2fb9..b39d9f7 100644 --- a/CarParkValidationAPI/Controllers/ConcessionValidationController.cs +++ b/CarParkValidationAPI/Controllers/ConcessionValidationController.cs @@ -38,8 +38,7 @@ namespace CarParkValidationAPI.Controllers [HttpGet] public async Task ConcessionValidation(bool onlyActive=true) - { - + { var retval = await _concessionValidation.LoadConcessionValidationAsync(onlyActive); return Ok(retval); } @@ -51,6 +50,13 @@ namespace CarParkValidationAPI.Controllers return Ok(retval); } + [HttpGet("[action]")] + public async Task CheckConcessionValidationByStaff(string staffLinkNo, string concessionCard, DateTime currentDate) + { + var retval = await _concessionValidation.CheckConcessionValidationStaffLinkNoAsync(staffLinkNo, concessionCard, currentDate); + return Ok(retval); + } + [HttpGet("{id:int}")] public async Task ConcessionValidation(int id) { diff --git a/CarParkValidationAPI/Datas/DataContext.cs b/CarParkValidationAPI/Datas/DataContext.cs index f32a82a..e3788d4 100644 --- a/CarParkValidationAPI/Datas/DataContext.cs +++ b/CarParkValidationAPI/Datas/DataContext.cs @@ -81,10 +81,22 @@ namespace CarParkValidationAPI.Datas myobj = reader["ConcessionType"]; if (myobj != System.DBNull.Value) item.ConcessionType = (string)myobj; - myobj = reader["ValidationPoint"]; if (myobj != System.DBNull.Value) - item.ValidationPiont = (string)myobj; + item.ValidationPoint = (string)myobj; + + myobj = reader["StaffFirstName"]; + if (myobj != System.DBNull.Value) + item.StaffFirstName = (string)myobj; + + myobj = reader["StaffLastName"]; + if (myobj != System.DBNull.Value) + item.StaffLastName = (string)myobj; + + myobj = reader["StaffEmail"]; + if (myobj != System.DBNull.Value) + item.StaffEmail = (string)myobj; + /* myobj = reader["ValidationPointID"]; if (myobj != System.DBNull.Value) diff --git a/CarParkValidationAPI/Entities/ConcessionValidationDto.cs b/CarParkValidationAPI/Entities/ConcessionValidationDto.cs index 1229acc..c956c27 100644 --- a/CarParkValidationAPI/Entities/ConcessionValidationDto.cs +++ b/CarParkValidationAPI/Entities/ConcessionValidationDto.cs @@ -8,7 +8,7 @@ namespace CarParkValidationAPI.Entities public class ConcessionValidationExtDto: ConcessionValidationDto { public string ConcessionType { get; set; } - public string ValidationPiont { get; set; } + public string ValidationPoint { get; set; } } @@ -32,6 +32,10 @@ namespace CarParkValidationAPI.Entities public int ValidationPointId { get; set; } public bool Active { get; set; } + + public string StaffFirstName { get; set; } + public string StaffLastName { get; set; } + public string StaffEmail { get; set; } #endregion } } diff --git a/CarParkValidationAPI/Interface/IConcessionValidation.cs b/CarParkValidationAPI/Interface/IConcessionValidation.cs index b8ca175..a147fc5 100644 --- a/CarParkValidationAPI/Interface/IConcessionValidation.cs +++ b/CarParkValidationAPI/Interface/IConcessionValidation.cs @@ -12,6 +12,7 @@ namespace CarParkValidationAPI.Interface { Task>> LoadConcessionValidationAsync(bool OnlyActive); Task>> LoadConcessionValidationStaffLinkNoAsync(string staffLinkNo, DateTime currentDate); + Task> CheckConcessionValidationStaffLinkNoAsync(string staffLinkNo, string concessionCard, DateTime currentDate); Task> SaveConcessionValidationAsync(ConcessionValidationDto item); Task> LoadConcessionValidationByIdAsync(int id); Task> DeleteConcessionValidationAsync(int id); diff --git a/CarParkValidationAPI/Interface/SpreadsheetLight.dll b/CarParkValidationAPI/Interface/SpreadsheetLight.dll new file mode 100644 index 0000000..7aa3c85 Binary files /dev/null and b/CarParkValidationAPI/Interface/SpreadsheetLight.dll differ diff --git a/CarParkValidationAPI/Models/ConcessionValidation.cs b/CarParkValidationAPI/Models/ConcessionValidation.cs index 7f2485e..0dec228 100644 --- a/CarParkValidationAPI/Models/ConcessionValidation.cs +++ b/CarParkValidationAPI/Models/ConcessionValidation.cs @@ -42,6 +42,9 @@ namespace CarParkValidationAPI.Models public int ValidationPointID { get; set; } public bool Active { get; set; } + public string StaffFirstName { get; set; } + public string StaffLastName { get; set; } + public string StaffEmail { get; set; } #endregion } } diff --git a/CarParkValidationAPI/Models/Users/AuthenticateResponse.cs b/CarParkValidationAPI/Models/Users/AuthenticateResponse.cs index 9f166aa..f84efa5 100644 --- a/CarParkValidationAPI/Models/Users/AuthenticateResponse.cs +++ b/CarParkValidationAPI/Models/Users/AuthenticateResponse.cs @@ -10,13 +10,14 @@ namespace CarParkValidationAPI.Models.Users public string Username { get; set; } public AdminRole Role { get; set; } public string Token { get; set; } - + public string Email { get; set; } public AuthenticateResponse(User user, string token) { Id = user.Id; FirstName = user.FirstName; LastName = user.LastName; Username = user.Username; + Email = user.Email; Role = user.Role; Token = token; } diff --git a/CarParkValidationAPI/Properties/launchSettings.json b/CarParkValidationAPI/Properties/launchSettings.json index e94cf0a..4afabc6 100644 --- a/CarParkValidationAPI/Properties/launchSettings.json +++ b/CarParkValidationAPI/Properties/launchSettings.json @@ -16,7 +16,7 @@ "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, - "launchUrl": "swagger", + "launchUrl": "api/v1/LookupCode/ConcessionTypes", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/CarParkValidationAPI/Repository/ConcessionValidationReportRepository.cs b/CarParkValidationAPI/Repository/ConcessionValidationReportRepository.cs index 0c8bf91..7bb37db 100644 --- a/CarParkValidationAPI/Repository/ConcessionValidationReportRepository.cs +++ b/CarParkValidationAPI/Repository/ConcessionValidationReportRepository.cs @@ -33,37 +33,75 @@ namespace CarParkValidationAPI.Repository SLDocument sl = new SLDocument(); + //first sheetName + sl.RenameWorksheet(SLDocument.DefaultFirstSheetName, "ConcessionValidation"); + SLStyle style = sl.CreateStyle(); + style.SetFontUnderline(DocumentFormat.OpenXml.Spreadsheet.UnderlineValues.Single); + style.SetFontBold(true); + style.SetFont("Arial Black", 16); + sl.SetCellStyle(1, 5, style); + sl.SetRowHeight(1, 1, 25); + sl.SetCellValue(row++, 5, "The ConssionValidation Report"); + + sl.SetCellValue(1, 8, " " + DateTime.Now.ToString("ddd dd/MM/yyyy HH:mm")); + + int startTitleRow = 3; + row = startTitleRow; + //make the title bold + style = sl.CreateStyle(); + style.Font.Bold = true; + sl.SetRowStyle(startTitleRow, style); + //set it height + sl.SetRowHeight(startTitleRow, startTitleRow, 25); // add the title first sl.SetCellValue(row, col++, "Date"); sl.SetCellValue(row, col++, "Concession Card"); sl.SetCellValue(row, col++, "Concession Holder"); - sl.SetCellValue(row, col++, "ConcessionExpiry"); + sl.SetCellValue(row, col++, "Is Concession Expiry"); sl.SetCellValue(row, col++, "ConcessionType"); - sl.SetCellValue(row, col++, "ValidationPiont"); + sl.SetCellValue(row, col++, "Validation Piont"); sl.SetCellValue(row, col++, "StaffLink No"); + sl.SetCellValue(row, col++, "Staff first name"); + sl.SetCellValue(row, col++, "Staff last name"); + sl.SetCellValue(row, col++, "Staff Email"); + //wrap text on is concession Expiry + style = sl.CreateStyle(); + style.SetWrapText(true); + sl.SetColumnStyle(4, style); //format date - SLStyle style = sl.CreateStyle(); - style.FormatCode = "dd/mm/yyyy hh:mm:ss"; - sl.SetColumnStyle(1, style); style = sl.CreateStyle(); - style.Font.Bold = true; - sl.SetRowStyle(1, style); - + style.FormatCode = "dd/mm/yyyy"; + sl.SetColumnStyle(1, style); + //make column width + sl.SetColumnWidth(1, 20); + sl.SetColumnWidth(2, 18); + sl.SetColumnWidth(3, 25); + sl.SetColumnWidth(4, 20); + sl.SetColumnWidth(5, 30); + sl.SetColumnWidth(6, 40); + sl.SetColumnWidth(7, 20); + sl.SetColumnWidth(8, 20); + sl.SetColumnWidth(9, 20); + sl.SetColumnWidth(10, 20); + int startRowFrom = startTitleRow+1; var list = await _context.SelectConcessionValidationByDate(true, fromDate.ToLocalTime(), toDate.ToLocalTime()); for (int i = 0; i < list.Count; i++) { col = 1; item = list[i]; - row = i + 2; + row = i + startRowFrom; sl.SetCellValue(row, col++, item.ValidateDate); sl.SetCellValue(row, col++, item.ConcessionCard); sl.SetCellValue(row, col++, item.ConcessionHolder); - sl.SetCellValue(row, col++, item.ConcessionExpiry); + sl.SetCellValue(row, col++, item.ConcessionExpiry ? "Yes": "No"); sl.SetCellValue(row, col++, item.ConcessionType); - sl.SetCellValue(row, col++, item.ValidationPiont); + sl.SetCellValue(row, col++, item.ValidationPoint); sl.SetCellValue(row, col++, item.StafflinkNo); + sl.SetCellValue(row, col++, item.StaffFirstName); + sl.SetCellValue(row, col++, item.StaffLastName); + sl.SetCellValue(row, col++, item.StaffEmail); } byte[] array; // sl.SaveAs("C:\\Temp\\Report\\ConcessionValidationDate" + DateTime.Now.ToString("yyyyMMddHHmm") + ".xlsx"); @@ -82,7 +120,6 @@ namespace CarParkValidationAPI.Repository } - var result = new FileContent { Content = array, @@ -90,8 +127,6 @@ namespace CarParkValidationAPI.Repository }; - - return new ResultModel { Data = result, diff --git a/CarParkValidationAPI/Repository/ConcessionValidationRepository.cs b/CarParkValidationAPI/Repository/ConcessionValidationRepository.cs index d37398d..ec42d69 100644 --- a/CarParkValidationAPI/Repository/ConcessionValidationRepository.cs +++ b/CarParkValidationAPI/Repository/ConcessionValidationRepository.cs @@ -41,6 +41,9 @@ namespace CarParkValidationAPI.Repository dto.StafflinkNo = model.StafflinkNo; dto.ValidateDate = model.ValidateDate; dto.ValidationPointId = model.ValidationPointID; + dto.StaffFirstName = model.StaffFirstName; + dto.StaffLastName = model.StaffLastName; + dto.StaffEmail = model.StaffEmail; return dto; } @@ -53,7 +56,9 @@ namespace CarParkValidationAPI.Repository dto.ConcessionHolder = model.ConcessionHolder; dto.ConcessionTypeId = model.ConcessionTypeID; dto.Id = model.ValidationID; - dto.StafflinkNo = model.StafflinkNo; + dto.StaffFirstName = model.StaffFirstName; + dto.StaffLastName = model.StaffLastName; + dto.StaffEmail = model.StaffEmail; dto.ValidateDate = model.ValidateDate; dto.ValidationPointId = model.ValidationPointID; return dto; @@ -61,7 +66,6 @@ namespace CarParkValidationAPI.Repository private ConcessionValidation FillConcessionValidation(ConcessionValidationDto dto, ConcessionValidation model) { - model.Active = dto.Active; model.ConcessionCard = dto.ConcessionCard; model.ConcessionExpiry = dto.ConcessionExpiry; @@ -69,6 +73,9 @@ namespace CarParkValidationAPI.Repository model.ConcessionTypeID = dto.ConcessionTypeId; model.ValidationID = dto.Id; model.StafflinkNo = dto.StafflinkNo; + model.StaffFirstName = dto.StaffFirstName; + model.StaffLastName = dto.StaffLastName; + model.StaffEmail = dto.StaffEmail; model.ValidateDate = dto.ValidateDate.ToLocalTime(); model.ValidationPointID = dto.ValidationPointId; return model; @@ -150,6 +157,46 @@ namespace CarParkValidationAPI.Repository Message = error }; } + + public async Task> CheckConcessionValidationStaffLinkNoAsync(string staffLinkNo, string concessionCard, DateTime currentDate) + { + int statuscode = 1; + int result = 1; + string message = "warning you already add concession card on this date!"; + try + { + var anyRecord = await _context.ConcessionValidations.Where(x => + x.StafflinkNo == staffLinkNo + && x.ConcessionCard == concessionCard + && x.Active == true + && x.ValidateDate.Date == currentDate.ToLocalTime().Date + ).ToListAsync(); + if (anyRecord.Count > 0) + { + result = -1; + } + else + { + result = 1; //test + message = "test OK just one time"; + } + statuscode = 1; + } + catch (Exception ex) + { + message = "Error " + ex.ToString(); + statuscode = 0; + result = 0; + } + + return new ResultModel() + { + Data = result, + StatusCode = statuscode, + Message = message, + }; + } + public async Task> LoadConcessionValidationByIdAsync(int id) { ConcessionValidationDto result = null; @@ -229,7 +276,8 @@ namespace CarParkValidationAPI.Repository if (id > 0) { ConcessionValidation model = await _context.ConcessionValidations.FindAsync(id); - model.Active = false; + // model.Active = false; + _context.ConcessionValidations.Remove(model); await _context.SaveChangesAsync(); statuscode = 1; } diff --git a/CarParkValidationAPI/Repository/UserFakeRepository.cs b/CarParkValidationAPI/Repository/UserFakeRepository.cs index 6603854..0204a96 100644 --- a/CarParkValidationAPI/Repository/UserFakeRepository.cs +++ b/CarParkValidationAPI/Repository/UserFakeRepository.cs @@ -56,12 +56,14 @@ namespace CarParkValidationAPI.Repository user.LastName = "LS Test"; user.Role = AdminRole.Admin; user.Username = model.Username; + user.Email = "admin@mail.com"; } else { user.Username = model.Username; - user.FirstName = model.Username; + user.FirstName = "FS Normal"; user.LastName = " LS Normal"; + user.Email = "Normal@mail.com"; user.Role = AdminRole.Normal; } diff --git a/CarParkValidationAPI/Repository/UserRepository.cs b/CarParkValidationAPI/Repository/UserRepository.cs index ad3559b..703f4f9 100644 --- a/CarParkValidationAPI/Repository/UserRepository.cs +++ b/CarParkValidationAPI/Repository/UserRepository.cs @@ -69,7 +69,7 @@ namespace CarParkValidationAPI.Repository && x.Active == true); if (user != null) { - myUser.Role = user.RoleType; + myUser.Role = AdminRole.Admin; //user.RoleType; myUser.Id = user.UserID; } else diff --git a/CarParkValidationAPI/Startup.cs b/CarParkValidationAPI/Startup.cs index 06957d1..62e94c6 100644 --- a/CarParkValidationAPI/Startup.cs +++ b/CarParkValidationAPI/Startup.cs @@ -84,7 +84,8 @@ namespace CarParkValidationAPI }); */ services.AddScoped(); - services.AddScoped(); + //services.AddScoped(); + services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/CarParkValidationAPI/appsettings.json b/CarParkValidationAPI/appsettings.json index 796639e..46ac03b 100644 --- a/CarParkValidationAPI/appsettings.json +++ b/CarParkValidationAPI/appsettings.json @@ -1,7 +1,6 @@ { "AppSettings": { "Secret": "Nepean Blue Mountain Super Secret SIGN AND VERIFY JWT TOKENS, BEARER TOKEN USE WHEN CALLING THIS API.", - "SQLConnectionString": "Server=tcp:10.60.207.82,1433;Initial Catalog=CarParkValidation;Persist Security Info=False;User ID=bids_admin;Password=Password4BI;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;Connection Timeout=30;", "LDAPPath": "LDAP://ldap.nswhealth.net:389/OU=Accounts,DC=nswhealth,DC=net", "LDAPUser": "SRV-NBMS-BIDSPMS", "LDAPPassword": "42Ytp2AE3nN16eBoyia86UZH6",