public async Task <IActionResult> CreateJobApplication(JobApplicationCreateView model) { if (!ModelState.IsValid) { return(View(model)); } string email = User.FindFirst(x => x.Type.Equals(ClaimTypes.Email)).Value; int? id = _context.Users.Where(x => x.Email == email).First().Id; if (id == null) { return(BadRequest($"id shouldn't not be null")); } JobApplication ja = new JobApplication { JobOfferId = model.JobOfferId, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, EmailAddress = model.EmailAddress, ContactAgreement = model.ContactAgreement, UserId = (int)id }; _storage.AddToStorage(ja, model.FormFile); await _sendgrid.SendMailNotification(ja); await _context.JobApplications.AddAsync(ja); await _context.SaveChangesAsync(); return(RedirectToAction("IndexUser", "Home")); }
public async Task <ActionResult> Edit([FromForm] JobApplicationCreateView model) { if (!ModelState.IsValid) { return(View()); } var application = await _context.JobApplications.Include(x => x.JobOffer).ThenInclude(x => x.CreatedFor).Include(x => x.Applicant).FirstOrDefaultAsync(x => x.Id == model.Id); if (model.CvFile != null) { DeleteCvFromStorage(application.CvHandle); application.CvHandle = UploadCvToStorage(model); } application.AdditionalInformation = model.AdditionalInformation; application.ApplicationStatus = model.ApplicationStatus; application.ApplicationStatusText = EnumHelper.GetDisplayName(model.ApplicationStatus); application.EditedOn = DateTime.Now; await SendApprovedEmail(model.ApplicationStatus, application); _context.Update(application); await _context.SaveChangesAsync(); return(RedirectToAction("Details", new { id = model.Id })); }
public async Task <ActionResult <JobApplication> > PostJobApplication([Bind("CvFile")] JobApplicationCreateView jobApplication) { var user = await _context.Users.FirstOrDefaultAsync(x => x.Name == "Filip"); var offer = await _context.JobOffers.Include(x => x.CreatedFor).FirstOrDefaultAsync(x => x.Id == jobApplication.JobOfferId); var files = HttpContext.Request.Form.Files; if (offer == null) { return(NotFound($"offer not found in DB")); } JobApplication ja = new JobApplication { AdditionalInformation = jobApplication.AdditionalInformation, Applicant = user, ApplicationStatus = BL.Enum.ApplicationStatus.NO_DECISION_MADE, ApplicationStatusText = EnumHelper.GetDisplayName(BL.Enum.ApplicationStatus.NO_DECISION_MADE), CreatedOn = DateTime.Now, CvHandle = UploadCvToStorage(jobApplication), DeletedOn = null, EditedOn = DateTime.Now, JobOffer = offer }; await _context.JobApplications.AddAsync(ja); await _context.SaveChangesAsync(); return(CreatedAtAction("GetJobApplication", new { id = jobApplication.Id }, jobApplication)); }
public async Task <ActionResult> Apply(JobApplicationCreateView model) { if (!ModelState.IsValid) { return(View(model)); } JobApplication ja = new JobApplication { OfferId = model.OfferId, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, EmailAddress = model.EmailAddress, Birthday = model.Birthday, ContactAgreement = model.ContactAgreement }; context.JobApplications.Add(ja); JobOffer jo = context.JobOffers.FirstOrDefault(m => m.Id == model.OfferId); jo.JobApplications.Add(ja); await context.SaveChangesAsync(); return(RedirectToAction("Details", "JobOffer", new { id = model.OfferId })); }
public async Task <ActionResult> Create(int id) { JobApplicationCreateView model = new JobApplicationCreateView(); var jobOffer = _context.JobOffers.FirstOrDefault(x => x.Id == id); model.JobTitle = jobOffer.JobTitle; model.JobOfferId = id; return(View(model)); }
public IActionResult CreateJobApplication(int?id) { if (id == null) { return(BadRequest($"id shouldn't not be null")); } var model = new JobApplicationCreateView { Id = 0, JobOfferId = id.Value }; return(View(model)); }
public async Task <ActionResult> Apply(int?id) { if (id == null) { return(new StatusCodeResult((int)HttpStatusCode.BadRequest)); } var model = new JobApplicationCreateView { OfferId = (int)id, JobOffer = context.JobOffers.FirstOrDefault(o => o.Id == id) }; return(View(model)); }
public async Task <ActionResult> Apply(JobApplicationCreateView model) { if (!ModelState.IsValid) { return(View(model)); } string photoURI = null; if (model.Photo != null) { var photoGUID = Guid.NewGuid().ToString(); var extension = Path.GetExtension(model.Photo.FileName); var photoName = photoGUID + extension; photoURI = await UploadPhotoToBlobStorageAsync(model.Photo, photoName); } string CVURI = null; if (model.CV != null) { var CVGUID = Guid.NewGuid().ToString(); var extension = Path.GetExtension(model.CV.FileName); var fileName = CVGUID + extension; CVURI = await UploadCVToBlobStorageAsync(model.CV, fileName); } var newApplication = new JobApplication() { JobOfferId = model.JobOfferId, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, EmailAddress = model.EmailAddress, CoverLetter = model.CoverLetter, DateOfBirth = model.DateOfBirth, CvUrl = CVURI, PhotoFileName = photoURI, }; _context.JobApplications.Add(newApplication); await _context.SaveChangesAsync(); return(RedirectToAction("Details", "JobOffer", new { id = model.JobOfferId })); }
private string UploadCvToStorage(JobApplicationCreateView model) { var uploads = Path.Combine(env.WebRootPath, "uploads"); bool exists = Directory.Exists(uploads); if (!exists) { Directory.CreateDirectory(uploads); } var fileName = Path.GetFileName(model.CvFile.FileName); var fileStream = new FileStream(Path.Combine(uploads, model.CvFile.FileName), FileMode.Create); string mimeType = model.CvFile.ContentType; byte[] fileData = new byte[model.CvFile.Length]; BlobStorageHelper objBlobService = new BlobStorageHelper(); return(objBlobService.UploadFileToBlob(model.CvFile.FileName, fileData, mimeType)); }
public async Task <ActionResult> Create(int?id) { if (id == null) { return(BadRequest($"id shouldn't not be null")); } var offer = await _context.JobOffers.Include(x => x.CreatedFor).FirstOrDefaultAsync(x => x.Id == id.Value); var model = new JobApplicationCreateView() { JobOffer = offer, JobOfferId = offer.Id }; if (offer == null) { return(NotFound($"offer not found in DB")); } return(View(model)); }
public async Task <ActionResult> Create([FromForm] JobApplicationCreateView model) { if (!ModelState.IsValid) { return(View(model)); } var user = await _context.Users.FirstOrDefaultAsync(x => x.Name == "Filip"); var offer = await _context.JobOffers.Include(x => x.CreatedFor).FirstOrDefaultAsync(x => x.Id == model.JobOfferId); if (offer == null) { return(NotFound($"offer not found in DB")); } JobApplication ja = new JobApplication { AdditionalInformation = model.AdditionalInformation, Applicant = user, ApplicationStatus = BL.Enum.ApplicationStatus.NO_DECISION_MADE, ApplicationStatusText = EnumHelper.GetDisplayName(BL.Enum.ApplicationStatus.NO_DECISION_MADE), CreatedOn = DateTime.Now, CvHandle = UploadCvToStorage(model), DeletedOn = null, EditedOn = DateTime.Now, JobOffer = offer, ApplicantEmail = User.Claims.Where(c => c.Type == "emails").Select(c => c.Value).SingleOrDefault() }; await _context.JobApplications.AddAsync(ja); await _context.SaveChangesAsync(); await PostMessage(EmailType.CREATED, ja); await PostMessageForCreator(ja); return(RedirectToAction("Index", "JobApplication", new { jobOfferId = offer.Id })); }
public async Task <ActionResult> Create(JobApplicationCreateView model) { if (!ModelState.IsValid) { return(View(model)); } var application = new JobApplication { JobOfferId = model.JobOfferId, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, EmailAddress = model.EmailAddress, CoverLetter = model.CoverLetter, DateOfBirth = model.DateOfBirth }; await _context.JobApplications.AddAsync(application); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "JobOffer")); }