public static ShortApplicationViewModel ApplicationToShortViewModel(ExpertApplication application, Subject subject) => new ShortApplicationViewModel { Status = application.Status.ToString(), DateTimeCreated = application.DateTimeCreated, SubjectName = subject.SubjectName };
public static ExpertApplicationResponse Create(ExpertApplication application, User applicant, Country country) { return(new ExpertApplicationResponse { Id = application.Id, Address = applicant.Address, DocumentType = application.DocumentType.FromDomain(), Sex = application.Sex, Areas = application.ExpertApplicationAreas.Select(s => (int)s.AreaId).ToArray(), Why = application.Why, LastName = application.LastName, LinkedInLink = application.LinkedInLink, BitcointalkLink = application.BitcointalkLink, City = application.City, FirstName = application.FirstName, DocumentNumber = application.DocumentNumber, BirthDate = application.BirthDate, FacebookLink = application.FacebookLink, Description = application.Description, CvUrl = application.CvUrl, PhotoUrl = application.PhotoUrl, ScanUrl = application.ScanUrl, CountryIsoCode = country.Code }); }
public static PendingExpertApplicationsResponse Create(ExpertApplication expertApplication) { return(new PendingExpertApplicationsResponse { Id = expertApplication.Id, ApplyDate = expertApplication.ApplyDate, FirstName = expertApplication.FirstName, LastName = expertApplication.LastName }); }
public static ApplicationViewModel ApplicationToViewModel(ExpertApplication application, Subject subject, ApplicationUser user) => new ApplicationViewModel { ApplicationId = application.ID, Status = application.Status, Motivation = application.Motivation, DateTimeCreated = application.DateTimeCreated, SubjectName = subject.SubjectName, UserId = user.Id, UserName = user.UserName };
public async Task CreateApplicationAsync(CreateExpertApplicationRequest request, long userId, AzureFile cv, AzureFile scan, AzureFile photo) { var country = await GetCountryAsync(request.CountryIsoCode); var expertApplication = new ExpertApplication { FirstName = request.FirstName, LastName = request.LastName, Sex = request.Sex, ApplicantId = userId, BirthDate = request.BirthDate, CountryId = country.Id, City = request.City, Description = request.Description, Why = request.Why, FacebookLink = request.FacebookLink, LinkedInLink = request.LinkedInLink, BitcointalkLink = request.BitcointalkLink, DocumentNumber = request.DocumentNumber, DocumentType = request.DocumentType.ToDomain(), ApplyDate = _clock.UtcNow }; expertApplication.SetAreas(request.Areas); _expertApplicationRepository.Add(expertApplication); await _expertApplicationRepository.SaveChangesAsync(); var applicationId = expertApplication.Id.ToString(); var scanName = $"application-{applicationId}/scan-{Guid.NewGuid()}{scan.Extension}"; var photoName = $"application-{applicationId}/photo-{Guid.NewGuid()}{photo.Extension}"; var cvName = $"application-{applicationId}/cv-{Guid.NewGuid()}{cv.Extension}"; var links = await Task.WhenAll(_expertApplicationsStorageProvider.UploadAndGetUriAsync(scanName, scan), _expertApplicationsStorageProvider.UploadAndGetUriAsync(cvName, cv), _expertApplicationsStorageProvider.UploadAndGetUriAsync(photoName, photo)); expertApplication.ScanUrl = links[0]; expertApplication.CvUrl = links[1]; expertApplication.PhotoUrl = links[2]; await _expertApplicationRepository.SaveChangesAsync(); }
public void Add(ExpertApplication expertApplication) => _editContext.ExpertApplications.Add(expertApplication);
public async Task <ActionResult <ApplicationViewModel> > PostApplication(ApplicationViewModel applicationViewModel) { var user = await _userManager.FindByNameAsync(User.Identity.Name); if (user == null) { return(NotFound()); } var subject = await _context.Subjects.Where(x => x.SubjectName == applicationViewModel.SubjectName).FirstOrDefaultAsync(); if (subject == null) { return(NotFound("Subject not found")); } var application = new ExpertApplication { Motivation = applicationViewModel.Motivation, DateTimeCreated = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm")), SubjectId = subject.ID, UserId = user.Id, }; //Checks if the user has an pending application for the subject he is applying in List <ExpertApplication> expertApplications = await _context.ExpertApplications.Where(x => x.UserId == user.Id).ToListAsync(); if (expertApplications.Count != 0) { foreach (var userApplication in expertApplications) { if (userApplication.SubjectId == application.SubjectId && userApplication.Status == ApplicationStatus.Pending) { return(StatusCode(400, "You already have an active request for this subject!")); } if (userApplication.SubjectId == application.SubjectId && userApplication.ReviewedBy != null) { int value = DateTime.Compare(userApplication.ReviewedOn.AddMinutes(2), DateTime.Now); bool TimePassed = value != 1; if (TimePassed == false) { return(StatusCode(400, "Your last request was to recent. you can apply 2 minutes after your last request has been denied.")); } if (TimePassed && userApplication.SubjectId == application.SubjectId && userApplication.Status == ApplicationStatus.Denied) { userApplication.Status = ApplicationStatus.Pending; userApplication.ReviewedBy = null; await _context.SaveChangesAsync(); return(StatusCode(200, "Your application for " + applicationViewModel.SubjectName + " has been set to Pending")); } return(StatusCode(400, "You have applied for this subject already or have been approved!")); } } } _context.ExpertApplications.Add(application); await _context.SaveChangesAsync(); return(StatusCode(200, "Your application for " + applicationViewModel.SubjectName + " has been submitted")); }