Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

SaveImportedDataService.cs 4.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Bytescout.Spreadsheet;
  2. using System.Globalization;
  3. namespace Diligent.WebAPI.Business.Services
  4. {
  5. public class SaveImportedDataService : ISaveImportedDataService
  6. {
  7. private readonly ILogger<SaveImportedDataService> _logger;
  8. private readonly IAdService _adService;
  9. public SaveImportedDataService(ILogger<SaveImportedDataService> logger, IAdService adService)
  10. {
  11. _logger = logger;
  12. _adService = adService;
  13. }
  14. public async Task<List<ApplicantImportDto>> Save()
  15. {
  16. List<ApplicantImportDto> applicants = new List<ApplicantImportDto>();
  17. try
  18. {
  19. _logger.LogInformation("Unoirtubg data from file...");
  20. var path = Path.Combine(Directory.GetCurrentDirectory(), "Files", "s.xlsx");
  21. Spreadsheet document = new Spreadsheet();
  22. document.LoadFromFile(path);
  23. _logger.LogInformation("File is opened successfully");
  24. var worksheetsNumber = document.Workbook.Worksheets.Count;
  25. _logger.LogInformation($"File contains {worksheetsNumber} sheets");
  26. for (int k = 0; k < worksheetsNumber; k++)
  27. {
  28. var worksheets = document.Workbook.Worksheets[k];
  29. var position = worksheets.Name;
  30. _logger.LogInformation($"Import data for Ad {position}");
  31. var ad = await _adService.ImportAsync(new AdCreateDto
  32. {
  33. Title = position,
  34. TechnologiesIds = new(),
  35. MinimumExperience = 0,
  36. WorkHour = "FullTime",
  37. Requirements = "",
  38. Offer = "",
  39. KeyResponsibilities = "",
  40. EmploymentType = position.Contains("praksa") ? "Intership" : "Work",
  41. CreatedAt = DateTime.Now,
  42. ExpiredAt = DateTime.Now
  43. });
  44. int i = 2;
  45. while (true)
  46. {
  47. if (String.IsNullOrEmpty(worksheets.Cell(i, 0).ToString()))
  48. break;
  49. var name = worksheets.Cell(i, 0).ToString().Split(' ');
  50. var a = new ApplicantImportDto
  51. {
  52. FirstName = name[0],
  53. LastName = name[1],
  54. Email = worksheets.Cell(i, 1).ToString(),
  55. CV = worksheets.Cell(i, 2).ToString(),
  56. ApplicationChannel = worksheets.Cell(i, 6).ToString(),
  57. Comment = worksheets.Cell(i, 7).ToString(),
  58. Position = position,
  59. Ad = ad,
  60. TypeOfEmployment = position.Contains("praksa") ? "Praksa" : "Posao"
  61. };
  62. _logger.LogInformation($"Loaded user {a.FirstName} {a.LastName}");
  63. try
  64. {
  65. string str = worksheets.Cell(i, 3).ToString();
  66. if(!string.IsNullOrEmpty(str))
  67. a.DateOfApplication = DateTime.ParseExact(str, "dd.MM.yyyy.", CultureInfo.InvariantCulture);
  68. }
  69. catch (Exception ex)
  70. {
  71. _logger.LogError("Incorect date time for this candidate");
  72. }
  73. applicants.Add(a);
  74. _logger.LogInformation("Candidate added successfully in the list");
  75. i++;
  76. }
  77. }
  78. }
  79. catch (Exception e)
  80. {
  81. _logger.LogError(e.Message);
  82. throw new FileNotFoundException("File is not uploaded!");
  83. }
  84. return applicants;
  85. }
  86. }
  87. }