CourseWork_KPO/CandidateReviewDatabaseImplement/Models/Vacancy.cs

109 lines
3.5 KiB
C#

using CandidateReviewContracts.BindingModels;
using CandidateReviewContracts.ViewModels;
using CandidateReviewDataModels.Enums;
using CandidateReviewDataModels.Models;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CandidateReviewDatabaseImplement.Models
{
public class Vacancy : IVacancyModel
{
[Required]
public int CompanyId { get; set; }
[Required]
public string JobTitle { get; set; } = string.Empty;
[Required]
public string Requirements { get; set; } = string.Empty;
[Required]
public string Responsibilities { get; set; } = string.Empty;
[Required]
public JobTypeEnum JobType { get; set; }
public string? Salary { get; set; }
public string? Description { get; set; }
[Required]
public VacancyStatusEnum Status { get; set; }
[Required]
public DateTime CreatedAt { get; set; }
public string? Tags { get; set; }
public int Id { get; set; }
public virtual Company Company { get; set; }
[ForeignKey("VacancyId")]
public virtual List<Resume> Resumes { get; set; } = new();
public static Vacancy? Create(VacancyBindingModel model)
{
if (model == null)
{
return null;
}
return new Vacancy()
{
Id = model.Id,
CompanyId = model.CompanyId,
JobTitle = model.JobTitle,
Requirements = model.Requirements,
Responsibilities = model.Responsibilities,
JobType = model.JobType,
Salary = model.Salary,
Description = model.Description,
Status = model.Status,
CreatedAt = DateTime.Now.ToUniversalTime(),
Tags = model.Tags
};
}
public static Vacancy Create(VacancyViewModel model)
{
return new Vacancy
{
Id = model.Id,
CompanyId = model.CompanyId,
JobTitle = model.JobTitle,
Requirements = model.Requirements,
Responsibilities = model.Responsibilities,
JobType = model.JobType,
Salary = model.Salary,
Description = model.Description,
Status = model.Status,
CreatedAt = DateTime.Now.ToUniversalTime(),
Tags = model.Tags
};
}
public void Update(VacancyBindingModel model)
{
if (model == null)
{
return;
}
CompanyId = model.CompanyId;
JobTitle = model.JobTitle;
Requirements = model.Requirements;
Responsibilities = model.Responsibilities;
JobType = model.JobType;
Salary = model.Salary;
Description = model.Description;
Status = model.Status;
Tags = model.Tags;
}
public VacancyViewModel GetViewModel => new()
{
Id = Id,
CompanyId = CompanyId,
JobTitle = JobTitle,
Requirements = Requirements,
Responsibilities = Responsibilities,
JobType = JobType,
Salary = Salary,
Description = Description,
Status = Status,
CreatedAt = CreatedAt,
Tags = Tags
};
}
}