| } | } | ||||
| _logger.LogInformation($"Change ad expired time"); | _logger.LogInformation($"Change ad expired time"); | ||||
| ad.ExpiredAt = DateTime.UtcNow; | |||||
| ad.ExpiredAt = DateTime.Now; | |||||
| _logger.LogInformation($"Ad expired time changed successfully"); | _logger.LogInformation($"Ad expired time changed successfully"); | ||||
| _context.Entry(ad).State = EntityState.Modified; | _context.Entry(ad).State = EntityState.Modified; |
| FirstName = request.FirstName, | FirstName = request.FirstName, | ||||
| LastName = request.LastName, | LastName = request.LastName, | ||||
| Position = ad.Title, | Position = ad.Title, | ||||
| DateOfApplication = DateTime.UtcNow, | |||||
| DateOfApplication = DateTime.Now, | |||||
| CV = fileName, | CV = fileName, | ||||
| Email = request.Email, | Email = request.Email, | ||||
| PhoneNumber = request.PhoneNumber, | PhoneNumber = request.PhoneNumber, |
| new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString()), | new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString()), | ||||
| new Claim("id", user.Id.ToString()) | new Claim("id", user.Id.ToString()) | ||||
| }), | }), | ||||
| Expires = DateTime.UtcNow.AddMinutes(_authSettings.JwtExpiredTime), | |||||
| Expires = DateTime.Now.AddMinutes(_authSettings.JwtExpiredTime), | |||||
| SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) | SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) | ||||
| }; | }; | ||||
| var token = tokenHandler.CreateToken(tokenDescriptor); | var token = tokenHandler.CreateToken(tokenDescriptor); | ||||
| JwtId = user.Id.ToString(), | JwtId = user.Id.ToString(), | ||||
| UserId = user.Id, | UserId = user.Id, | ||||
| User = user, | User = user, | ||||
| CreationDate = DateTime.UtcNow, | |||||
| ExpiryDate = DateTime.UtcNow.AddMinutes(_authSettings.JwtRefreshExpiredTime) | |||||
| CreationDate = DateTime.Now, | |||||
| ExpiryDate = DateTime.Now.AddMinutes(_authSettings.JwtRefreshExpiredTime) | |||||
| }; | }; | ||||
| var existRefreshToken = await _databaseContext.RefreshTokens.Where(x => x.UserId == user.Id).FirstOrDefaultAsync(); | var existRefreshToken = await _databaseContext.RefreshTokens.Where(x => x.UserId == user.Id).FirstOrDefaultAsync(); | ||||
| { | { | ||||
| existRefreshToken.Token = writedToken; | existRefreshToken.Token = writedToken; | ||||
| existRefreshToken.JwtId = token.Id; | existRefreshToken.JwtId = token.Id; | ||||
| existRefreshToken.CreationDate = DateTime.UtcNow; | |||||
| existRefreshToken.ExpiryDate = DateTime.UtcNow.AddMinutes(_authSettings.JwtRefreshExpiredTime); | |||||
| existRefreshToken.CreationDate = DateTime.Now; | |||||
| existRefreshToken.ExpiryDate = DateTime.Now.AddMinutes(_authSettings.JwtRefreshExpiredTime); | |||||
| if (authenticate) | if (authenticate) | ||||
| { | { | ||||
| var expiryDateTimeUtc = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) | var expiryDateTimeUtc = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) | ||||
| .AddMinutes(expiryDateUnix); | .AddMinutes(expiryDateUnix); | ||||
| if (expiryDateTimeUtc < DateTime.UtcNow) | |||||
| if (expiryDateTimeUtc < DateTime.Now) | |||||
| { | { | ||||
| return new RefreshTokenResultDto | return new RefreshTokenResultDto | ||||
| { | { | ||||
| }; | }; | ||||
| } | } | ||||
| if (DateTime.UtcNow > storedRefreshToken.ExpiryDate) | |||||
| if (DateTime.Now > storedRefreshToken.ExpiryDate) | |||||
| { | { | ||||
| return new RefreshTokenResultDto { Error = "This refresh token has expired" }; | return new RefreshTokenResultDto { Error = "This refresh token has expired" }; | ||||
| } | } | ||||
| return new RefreshTokenResultDto { Error = "This refresh token does not match this JWT" }; | return new RefreshTokenResultDto { Error = "This refresh token does not match this JWT" }; | ||||
| } | } | ||||
| storedRefreshToken.ExpiryDate = DateTime.UtcNow.AddMinutes(_authSettings.JwtRefreshExpiredTime); | |||||
| storedRefreshToken.ExpiryDate = DateTime.Now.AddMinutes(_authSettings.JwtRefreshExpiredTime); | |||||
| await _databaseContext.SaveChangesAsync(); | await _databaseContext.SaveChangesAsync(); | ||||
| if (emailResult) | if (emailResult) | ||||
| { | { | ||||
| email.SentTime = DateTime.UtcNow; | |||||
| email.SentTime = DateTime.Now; | |||||
| } | } | ||||
| //_logger.LogInformation("Save email in db"); | //_logger.LogInformation("Save email in db"); | ||||
| if (emailResult) | if (emailResult) | ||||
| { | { | ||||
| email.SentTime = DateTime.UtcNow; | |||||
| email.SentTime = DateTime.Now; | |||||
| } | } | ||||
| //var dbResult = WriteEmailToDb(email); | //var dbResult = WriteEmailToDb(email); | ||||
| Body = body, | Body = body, | ||||
| IsHtml = isHtml, | IsHtml = isHtml, | ||||
| DontSendBefore = dontSendBefore, | DontSendBefore = dontSendBefore, | ||||
| CreateTime = DateTime.UtcNow | |||||
| CreateTime = DateTime.Now | |||||
| }; | }; | ||||
| public async Task CreateInsuranceCompany(InsuranceCompanyCreateDto insuranceCompanyCreateDto) | public async Task CreateInsuranceCompany(InsuranceCompanyCreateDto insuranceCompanyCreateDto) | ||||
| { | { | ||||
| var insuranceCompany = _mapper.Map<InsuranceCompany>(insuranceCompanyCreateDto); | var insuranceCompany = _mapper.Map<InsuranceCompany>(insuranceCompanyCreateDto); | ||||
| insuranceCompany.CreatedAtUtc = DateTime.UtcNow; | |||||
| insuranceCompany.CreatedAtUtc = DateTime.Now; | |||||
| await _context.InsuranceCompanies.AddAsync(insuranceCompany); | await _context.InsuranceCompanies.AddAsync(insuranceCompany); | ||||
| await _context.SaveChangesAsync(); | await _context.SaveChangesAsync(); | ||||
| } | } | ||||
| throw new EntityNotFoundException($"Insurance company not found"); | throw new EntityNotFoundException($"Insurance company not found"); | ||||
| _mapper.Map(insuranceCompanyUpdateDto, insuranceCompany); | _mapper.Map(insuranceCompanyUpdateDto, insuranceCompany); | ||||
| insuranceCompany.UpdatedAtUtc = DateTime.UtcNow; | |||||
| insuranceCompany.UpdatedAtUtc = DateTime.Now; | |||||
| _context.Entry(insuranceCompany).State = EntityState.Modified; | _context.Entry(insuranceCompany).State = EntityState.Modified; | ||||
| await _context.SaveChangesAsync(); | await _context.SaveChangesAsync(); |
| throw new EntityNotFoundException("Insurance policy not found"); | throw new EntityNotFoundException("Insurance policy not found"); | ||||
| _mapper.Map(insurancePolicyUpdateDto, insurancePolicy); | _mapper.Map(insurancePolicyUpdateDto, insurancePolicy); | ||||
| insurancePolicy.UpdatedAtUtc = DateTime.UtcNow; | |||||
| insurancePolicy.UpdatedAtUtc = DateTime.Now; | |||||
| _context.Entry(insurancePolicy).State = EntityState.Modified; | _context.Entry(insurancePolicy).State = EntityState.Modified; | ||||
| await _context.SaveChangesAsync(); | await _context.SaveChangesAsync(); |
| throw new EntityNotFoundException("Insurer not found"); | throw new EntityNotFoundException("Insurer not found"); | ||||
| _mapper.Map(insurerUpdateDto, insurer); | _mapper.Map(insurerUpdateDto, insurer); | ||||
| insurer.UpdatedAtUtc = DateTime.UtcNow; | |||||
| insurer.UpdatedAtUtc = DateTime.Now; | |||||
| _context.Entry(insurer).State = EntityState.Modified; | _context.Entry(insurer).State = EntityState.Modified; | ||||
| await _context.SaveChangesAsync(); | await _context.SaveChangesAsync(); |
| try | try | ||||
| { | { | ||||
| var result = JsonConvert.DeserializeObject<AuthSuccessResponse>(content); | var result = JsonConvert.DeserializeObject<AuthSuccessResponse>(content); | ||||
| var expires = result.Expires.Value - DateTime.UtcNow; | |||||
| var expires = result.Expires.Value - DateTime.Now; | |||||
| var cacheEntryOptions = new MemoryCacheEntryOptions() | var cacheEntryOptions = new MemoryCacheEntryOptions() | ||||
| .SetSlidingExpiration(TimeSpan.FromSeconds(60)) | .SetSlidingExpiration(TimeSpan.FromSeconds(60)) | ||||
| .SetAbsoluteExpiration(expires) | .SetAbsoluteExpiration(expires) |
| { | { | ||||
| // map dto to db model | // map dto to db model | ||||
| WebhookSubscription subscription = _mapper.Map<WebhookSubscription>(dto); | WebhookSubscription subscription = _mapper.Map<WebhookSubscription>(dto); | ||||
| subscription.CreatedAtUtc = DateTime.UtcNow; | |||||
| subscription.CreatedAtUtc = DateTime.Now; | |||||
| subscription.IsActive = true; | subscription.IsActive = true; | ||||
| // add to db | // add to db |
| [ApiVersion("1.0")] | [ApiVersion("1.0")] | ||||
| [Route("v{version:apiVersion}/ads")] | [Route("v{version:apiVersion}/ads")] | ||||
| [ApiController] | [ApiController] | ||||
| public class AdsController : ControllerBase | public class AdsController : ControllerBase | ||||
| { | { | ||||
| private readonly IAdService _adService; | private readonly IAdService _adService; | ||||
| _adService = adService; | _adService = adService; | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpGet] | [HttpGet] | ||||
| public async Task<IActionResult> GetAll() => | public async Task<IActionResult> GetAll() => | ||||
| Ok(await _adService.GetAllAsync()); | Ok(await _adService.GetAllAsync()); | ||||
| [Authorize] | |||||
| [HttpGet("{id}")] | [HttpGet("{id}")] | ||||
| public async Task<IActionResult> GetById([FromRoute] int id) => | public async Task<IActionResult> GetById([FromRoute] int id) => | ||||
| Ok(await _adService.GetByIdAsync(id)); | Ok(await _adService.GetByIdAsync(id)); | ||||
| [Authorize] | |||||
| [HttpGet("details/{id}")] | [HttpGet("details/{id}")] | ||||
| public async Task<IActionResult> GetAdDetailsById([FromRoute] int id) => | public async Task<IActionResult> GetAdDetailsById([FromRoute] int id) => | ||||
| Ok(await _adService.GetAdDetailsByIdAsync(id)); | Ok(await _adService.GetAdDetailsByIdAsync(id)); | ||||
| [Authorize] | |||||
| [HttpGet("archive")] | [HttpGet("archive")] | ||||
| public async Task<IActionResult> GetArchiveAds() => | public async Task<IActionResult> GetArchiveAds() => | ||||
| Ok(await _adService.GetArchiveAds()); | Ok(await _adService.GetArchiveAds()); | ||||
| [Authorize] | |||||
| [HttpGet("filtered")] | [HttpGet("filtered")] | ||||
| public async Task<IActionResult> GetFilteredAds([FromQuery] AdFilterDto request) => | public async Task<IActionResult> GetFilteredAds([FromQuery] AdFilterDto request) => | ||||
| Ok(await _adService.GetFilteredAdsAsync(request)); | Ok(await _adService.GetFilteredAdsAsync(request)); | ||||
| [Authorize] | |||||
| [HttpPost] | [HttpPost] | ||||
| public async Task<IActionResult> Create([FromBody]AdCreateDto request) | public async Task<IActionResult> Create([FromBody]AdCreateDto request) | ||||
| { | { | ||||
| return StatusCode((int)HttpStatusCode.Created); | return StatusCode((int)HttpStatusCode.Created); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPut("{id}")] | [HttpPut("{id}")] | ||||
| public async Task<IActionResult> Update([FromBody] AdUpdateDto request, [FromRoute]int id) | public async Task<IActionResult> Update([FromBody] AdUpdateDto request, [FromRoute]int id) | ||||
| { | { | ||||
| return Ok(); | return Ok(); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPut("archive-active-ad/{id}")] | [HttpPut("archive-active-ad/{id}")] | ||||
| public async Task<IActionResult> ArchiveActiveAd([FromRoute] int id) | public async Task<IActionResult> ArchiveActiveAd([FromRoute] int id) | ||||
| { | { | ||||
| return Ok(); | return Ok(); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpDelete("{id}")] | [HttpDelete("{id}")] | ||||
| public async Task<IActionResult> DeleteAd([FromRoute]int id) | public async Task<IActionResult> DeleteAd([FromRoute]int id) | ||||
| { | { |
| _applicantService = applicantService; | _applicantService = applicantService; | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpGet] | [HttpGet] | ||||
| public async Task<IActionResult> GetFilteredApplicants([FromQuery] ApplicantFilterDto applicantFilterDto) => | public async Task<IActionResult> GetFilteredApplicants([FromQuery] ApplicantFilterDto applicantFilterDto) => | ||||
| Ok(await _applicantService.GetFilteredApplicants(applicantFilterDto)); | Ok(await _applicantService.GetFilteredApplicants(applicantFilterDto)); | ||||
| return Ok(); | return Ok(); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpGet("processes/{id}")] | [HttpGet("processes/{id}")] | ||||
| public async Task<IActionResult> GetProcesses(int id) | public async Task<IActionResult> GetProcesses(int id) | ||||
| { | { | ||||
| return Ok(await _applicantService.GetApplicantWithSelectionProcessesById(id)); | return Ok(await _applicantService.GetApplicantWithSelectionProcessesById(id)); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpGet("options")] | [HttpGet("options")] | ||||
| public async Task<IActionResult> GetOptions() | public async Task<IActionResult> GetOptions() | ||||
| { | { | ||||
| return Ok(await _applicantService.GetOptions()); | return Ok(await _applicantService.GetOptions()); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPost("selection-init")] | [HttpPost("selection-init")] | ||||
| public async Task<IActionResult> InitSelection(ApplicantProcessRequestDTO model) | public async Task<IActionResult> InitSelection(ApplicantProcessRequestDTO model) | ||||
| { | { | ||||
| return Ok(); | return Ok(); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPost("apply-for-ad")] | [HttpPost("apply-for-ad")] | ||||
| public async Task<IActionResult> ApplyForAd([FromForm]ApplyForAdRequestDto request) | public async Task<IActionResult> ApplyForAd([FromForm]ApplyForAdRequestDto request) | ||||
| { | { |
| _patternService = patternService; | _patternService = patternService; | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpGet] | [HttpGet] | ||||
| public async Task<IActionResult> GetAll() => | public async Task<IActionResult> GetAll() => | ||||
| Ok(await _patternService.GetAllAsync()); | Ok(await _patternService.GetAllAsync()); | ||||
| [Authorize] | |||||
| [HttpGet("{id}")] | [HttpGet("{id}")] | ||||
| public async Task<IActionResult> GetById([FromRoute] int id) => | public async Task<IActionResult> GetById([FromRoute] int id) => | ||||
| Ok(await _patternService.GetByIdAsync(id)); | Ok(await _patternService.GetByIdAsync(id)); | ||||
| [Authorize] | |||||
| [HttpGet("filter")] | [HttpGet("filter")] | ||||
| public async Task<IActionResult> GetFilteredPatterns([FromQuery] FilterPatternDto request) => | public async Task<IActionResult> GetFilteredPatterns([FromQuery] FilterPatternDto request) => | ||||
| Ok(await _patternService.GetFilteredPatternsAsync(request)); | Ok(await _patternService.GetFilteredPatternsAsync(request)); | ||||
| [Authorize] | |||||
| [HttpGet("corresponding-pattern-applicants/{id}")] | [HttpGet("corresponding-pattern-applicants/{id}")] | ||||
| public async Task<IActionResult> GetFilteredPatterns([FromRoute] int id) => | public async Task<IActionResult> GetFilteredPatterns([FromRoute] int id) => | ||||
| Ok(await _patternService.GetCorrespondingPatternApplicants(id)); | Ok(await _patternService.GetCorrespondingPatternApplicants(id)); | ||||
| [Authorize] | |||||
| [HttpPost] | [HttpPost] | ||||
| public async Task<IActionResult> Create([FromBody] PatternCreateDto request) | public async Task<IActionResult> Create([FromBody] PatternCreateDto request) | ||||
| { | { | ||||
| return StatusCode((int)HttpStatusCode.Created); | return StatusCode((int)HttpStatusCode.Created); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPost("schedule-interview")] | [HttpPost("schedule-interview")] | ||||
| public async Task<IActionResult> ScheduleInterview([FromBody] ScheduleInterviewDto request) | public async Task<IActionResult> ScheduleInterview([FromBody] ScheduleInterviewDto request) | ||||
| { | { | ||||
| return Ok(result); | return Ok(result); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPut("{id}")] | [HttpPut("{id}")] | ||||
| public async Task<IActionResult> Update([FromBody]PatternUpdateDto request, [FromRoute]int id) | public async Task<IActionResult> Update([FromBody]PatternUpdateDto request, [FromRoute]int id) | ||||
| { | { | ||||
| return Ok(); | return Ok(); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpDelete("{id}")] | [HttpDelete("{id}")] | ||||
| public async Task<IActionResult> DeletePattern([FromRoute] int id) | public async Task<IActionResult> DeletePattern([FromRoute] int id) | ||||
| { | { |
| _scheduleService = scheduleService; | _scheduleService = scheduleService; | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpGet] | [HttpGet] | ||||
| public async Task<IActionResult> GetSchedule(int month,int year) => | public async Task<IActionResult> GetSchedule(int month,int year) => | ||||
| Ok(await _scheduleService.GetScheduleForCertainPeriod(month, year)); | Ok(await _scheduleService.GetScheduleForCertainPeriod(month, year)); |
| { | { | ||||
| _selectionLevelService = selectionLevelService; | _selectionLevelService = selectionLevelService; | ||||
| } | } | ||||
| //[Authorize] | |||||
| [Authorize] | |||||
| [HttpGet] | [HttpGet] | ||||
| public async Task<IActionResult> GetAll() => | public async Task<IActionResult> GetAll() => | ||||
| Ok(await _selectionLevelService.GetAllAsync()); | Ok(await _selectionLevelService.GetAllAsync()); | ||||
| [Authorize] | |||||
| [HttpGet("filtered")] | [HttpGet("filtered")] | ||||
| public async Task<IActionResult> GetFilteredLevels([FromQuery] SelectionProcessFilterDto request) => | public async Task<IActionResult> GetFilteredLevels([FromQuery] SelectionProcessFilterDto request) => | ||||
| Ok(_selectionLevelService.GetFilteredLevelsAsync(request)); | Ok(_selectionLevelService.GetFilteredLevelsAsync(request)); | ||||
| //[Authorize] | |||||
| [Authorize] | |||||
| [HttpGet("{id}")] | [HttpGet("{id}")] | ||||
| public async Task<IActionResult> GetById([FromRoute] int id) => | public async Task<IActionResult> GetById([FromRoute] int id) => | ||||
| Ok(await _selectionLevelService.GetByIdAsync(id)); | Ok(await _selectionLevelService.GetByIdAsync(id)); |
| //public async Task<IActionResult> GetAll() => | //public async Task<IActionResult> GetAll() => | ||||
| // Ok(await _selectionProcessesService.GetAllAsync()); | // Ok(await _selectionProcessesService.GetAllAsync()); | ||||
| //[Authorize] | |||||
| [Authorize] | |||||
| [HttpPost] | [HttpPost] | ||||
| public async Task<IActionResult> FinishSelectionProcess([FromBody] SelectionProcessCreateDto model) => | public async Task<IActionResult> FinishSelectionProcess([FromBody] SelectionProcessCreateDto model) => | ||||
| Ok(await _selectionProcessesService.FinishSelectionProcess(model)); | Ok(await _selectionProcessesService.FinishSelectionProcess(model)); | ||||
| //[Authorize] | |||||
| [Authorize] | |||||
| [HttpPost("status-update")] | [HttpPost("status-update")] | ||||
| public async Task<IActionResult> UpdateStatus([FromBody] StatusChangeDTO model) | public async Task<IActionResult> UpdateStatus([FromBody] StatusChangeDTO model) | ||||
| { | { | ||||
| return Ok("Status updated."); | return Ok("Status updated."); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPost("interviewer-update")] | [HttpPost("interviewer-update")] | ||||
| public async Task<IActionResult> UpdateInterviewer([FromBody] InterviewerUpdateDTO model) | public async Task<IActionResult> UpdateInterviewer([FromBody] InterviewerUpdateDTO model) | ||||
| { | { |
| _technologyService = technologyService; | _technologyService = technologyService; | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpGet] | [HttpGet] | ||||
| public async Task<IActionResult> GetAll() => | public async Task<IActionResult> GetAll() => | ||||
| Ok(await _technologyService.GetAllAsync()); | Ok(await _technologyService.GetAllAsync()); | ||||
| [Authorize] | |||||
| [HttpGet("{id}")] | [HttpGet("{id}")] | ||||
| public async Task<IActionResult> GetById([FromRoute] int id) => | public async Task<IActionResult> GetById([FromRoute] int id) => | ||||
| Ok(await _technologyService.GetByIdAsync(id)); | Ok(await _technologyService.GetByIdAsync(id)); |
| return Ok(response.Data); | return Ok(response.Data); | ||||
| } | } | ||||
| [Authorize] | |||||
| [HttpPost("verify-invite")] | [HttpPost("verify-invite")] | ||||
| public async Task<IActionResult> VerifyInvite(string email, string token) | public async Task<IActionResult> VerifyInvite(string email, string token) | ||||
| { | { | ||||
| return Ok(result); | return Ok(result); | ||||
| } | } | ||||
| //[Authorize] | |||||
| [Authorize] | |||||
| [HttpPost] | [HttpPost] | ||||
| public async Task<IActionResult> CreateUser([FromBody] CreateUserRequestDto model) | public async Task<IActionResult> CreateUser([FromBody] CreateUserRequestDto model) | ||||
| { | { |
| if (refreshToken == null) | if (refreshToken == null) | ||||
| return; | return; | ||||
| refreshToken.ExpiryDate = DateTime.UtcNow.AddMinutes(30); | |||||
| refreshToken.ExpiryDate = DateTime.Now.AddMinutes(30); | |||||
| await service.UpdateRefreshToken(refreshToken); | await service.UpdateRefreshToken(refreshToken); | ||||
| } | } |
| Id = 1, | Id = 1, | ||||
| Title = "React Developer", | Title = "React Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O", | Offer = "O|O", | ||||
| Id = 1, | Id = 1, | ||||
| Title = "React Developer", | Title = "React Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O" | Offer = "O|O" | ||||
| { | { | ||||
| Title = "React Developer", | Title = "React Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O" | Offer = "O|O" | ||||
| { | { | ||||
| Title = "React Developer", | Title = "React Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O" | Offer = "O|O" | ||||
| { | { | ||||
| Title = "React Developer", | Title = "React Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O" | Offer = "O|O" |
| Id = 1, | Id = 1, | ||||
| Title = "React Developer", | Title = "React Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O", | Offer = "O|O", | ||||
| Id = 2, | Id = 2, | ||||
| Title = ".NET Developer", | Title = ".NET Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow.AddDays(-2), | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(-1), | |||||
| CreatedAt = DateTime.Now.AddDays(-2), | |||||
| ExpiredAt = DateTime.Now.AddDays(-1), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O", | Offer = "O|O", | ||||
| { | { | ||||
| Title = "Vue Developer", | Title = "Vue Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O", | Offer = "O|O", | ||||
| { | { | ||||
| Title = "Vue Developer", | Title = "Vue Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O", | Offer = "O|O", | ||||
| { | { | ||||
| Title = "Vue Developer", | Title = "Vue Developer", | ||||
| MinimumExperience = 0, | MinimumExperience = 0, | ||||
| CreatedAt = DateTime.UtcNow, | |||||
| ExpiredAt = DateTime.UtcNow.AddDays(30), | |||||
| CreatedAt = DateTime.Now, | |||||
| ExpiredAt = DateTime.Now.AddDays(30), | |||||
| KeyResponsibilities = "KR|KR", | KeyResponsibilities = "KR|KR", | ||||
| Requirements = "R|R|R", | Requirements = "R|R|R", | ||||
| Offer = "O|O", | Offer = "O|O", |