コード例 #1
0
        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"));
        }
コード例 #2
0
        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 }));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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 }));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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 }));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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));
        }
コード例 #11
0
        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 }));
        }
コード例 #12
0
        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"));
        }