예제 #1
0
        public ActionResult Create(ResumeViewModel viewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View(viewModel));
                }

                var resume = new ResumeDTO
                {
                    ResumeName     = viewModel.ResumeName,
                    ResumeDescript = viewModel.ResumeDescript,
                    EmployeeId     = viewModel.EmployeeId,
                    CategoryId     = viewModel.CategoryId
                };

                resumeService.AddResume(resume);

                return(RedirectToAction("Index"));
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", e.Message);
            }
            return(View(viewModel));
        }
예제 #2
0
        public void EditResume(ResumeDTO resumeDTO)
        {
            if (resumeDTO == null)
            {
                throw new ArgumentNullException(nameof(resumeDTO));
            }

            Resume resume = Database.Resumes.Get(resumeDTO.Id);

            if (resume == null)
            {
                throw new ArgumentOutOfRangeException("Not found resume");
            }

            if (Database.Headings.Get(resumeDTO.HeadingId) == null)
            {
                throw new ArgumentOutOfRangeException("Invalid argument rubricId");
            }

            resume.Title     = resumeDTO.Title;
            resume.Name      = resumeDTO.Name;
            resume.Birthday  = resumeDTO.Birthday;
            resume.Phone     = resumeDTO.Phone;
            resume.Email     = resumeDTO.Email;
            resume.Portfolio = resumeDTO.Portfolio;
            resume.Payment   = resumeDTO.Payment;
            resume.Skills    = resumeDTO.Skills;
            //resume.UserId = resumeDTO.UserId;

            Database.Resumes.Update(resume);
            Database.Save();
        }
예제 #3
0
 private static Resume DTOToResume(ResumeDTO resumeDTO) =>
 new Resume
 {
     ResumeId    = resumeDTO.ResumeId,
     Name        = resumeDTO.Name,
     CandidateId = resumeDTO.CandidateId
 };
예제 #4
0
        public async Task <ActionResult <ResumeDTO> > PatchResume(long id, ResumeDTO resumeDTO)
        {
            User user = await userManager.FindByNameAsync(User.Identity.Name);

            if (resumeDTO == null)
            {
                return(BadRequest());
            }

            if (id != resumeDTO.ResumeId)
            {
                return(BadRequest());
            }

            if (!ResumeExists(id))
            {
                return(NotFound());
            }

            // Check to ensure you're not editing resumes for other people unless admin
            if (!(await userManager.IsInRoleAsync(user, UserRoles.Admin)))
            {
                Resume resume = await _context.Resumes.FindAsync(id);

                if (resume.CandidateId != user.Id)
                {
                    return(Unauthorized("Cannot change the candidate of a resume"));
                }
            }

            _context.Resumes.Update(DTOToResume(resumeDTO));
            await _context.SaveChangesAsync();

            return(Ok(resumeDTO));
        }
예제 #5
0
        public static ResumeDTO parseResume(Resume input)
        {
            ResumeDTO resume = new ResumeDTO()
            {
                AboutMe         = input.AboutMe,
                Address         = input.Address,
                Brief           = input.Brief,
                Email           = input.Email,
                Flags           = input.Flags,
                Interests       = input.Interests,
                Name            = input.Name,
                Surname         = input.Surname,
                Title           = input.Title,
                Visas           = input.Visas,
                Educations      = input.ResumeEducations.Select(e => e.Education).ToList(),
                Jobs            = input.ResumeJobs.Select(j => j.Job).ToList(),
                Skills          = input.ResumeSkills.Select(sk => sk.Skill).ToList(),
                Socials         = input.ResumeSocials.Select(so => so.Social).ToList(),
                SpokenLanguages = input.ResumeSpokenLanguages.Select(sp => sp.SpokenLanguages).ToList(),
                Experiences     = parseExperiences(input.ResumeJobs.Select(j => j.Job)),
                DateCreated     = input.DateCreated,
                Comments        = input.Comments
            };

            return(resume);
        }
예제 #6
0
        public ActionResult Delete(int id)
        {
            ResumeDTO resume     = resumeService.GetResume(id);
            var       mapper     = new MapperConfiguration(cfg => cfg.CreateMap <ResumeDTO, ResumeViewModel>()).CreateMapper();
            var       resumeView = mapper.Map <ResumeDTO, ResumeViewModel>(resume);

            return(View(resumeView));
        }
예제 #7
0
        public void UpdateResume(int id, ResumeDTO resumeDto)
        {
            var resumeForUpdate = GetResumeByID(id);

            if (resumeForUpdate != null)
            {
                _unitOfWork.Resumes.Update(_resumeUpdateMapper.Map <ResumeDTO, Resume>(resumeDto));
            }
        }
예제 #8
0
        public void EditResume_NullElement_ShouldThrowException()
        {
            //arrange
            var Resume = new ResumeDTO {
                Id = It.IsAny <int>()
            };

            //act & assert
            NUnit.Framework.Assert.Throws <ArgumentOutOfRangeException>(() => resumeService.EditResume(Resume));
        }
예제 #9
0
        public ActionResult Edit(int id)
        {
            ResumeDTO resume     = resumeService.GetResume(id);
            var       mapper     = new MapperConfiguration(cfg => cfg.CreateMap <ResumeDTO, ResumeViewModel>()).CreateMapper();
            var       resumeView = mapper.Map <ResumeViewModel>(resume);

            ViewBag.CategoryId = new SelectList(categoryService.GetCategories(), "CategoryId", "CategoryName", resumeView.CategoryId);
            ViewBag.EmployeeId = new SelectList(employeeService.GetEmployees(), "EmployeeId", "EmployeeLastName", resumeView.EmployeeId);

            return(View(resumeView));
        }
예제 #10
0
        public void CreateResume_TryToCreateResume_ShouldRepositoryCreateOnce()
        {
            var Resume = new ResumeDTO {
                Id = It.IsAny <int>()
            };

            // act
            resumeService.CreateResume(Resume);

            //assert
            resumeRepository.Verify(x => x.Create(It.IsAny <Resume>()));
        }
예제 #11
0
        public IActionResult Get(int id)
        {
            var resume = _resumeService.Get(id);

            if (resume == null)
            {
                return(NotFound());
            }
            var resumeDTO = new ResumeDTO(resume);

            return(Ok(resumeDTO));
        }
예제 #12
0
        public void AddResume(ResumeDTO resumeDto)
        {
            _unitOfWork.Resumes.Create(new Resume
            {
                Info             = resumeDto.Info,
                Position         = resumeDto.Position,
                PreferablySalary = resumeDto.PreferablySalary,
                ResumeTitile     = resumeDto.ResumeTitile,
                Vacancies        = new List <Vacansy>()
            });

            _unitOfWork.Save();
        }
예제 #13
0
        public void EditResume_EditResume_ShoudRepositoryEditOnce()
        {//
         //arrange
            var resume = new ResumeDTO {
                Id = It.IsAny <int>(), City = It.IsAny <string>()
            };

            resumeRepository.Setup(x => x.Get(It.IsAny <int>())).Returns(new Resume {
                Id = It.IsAny <int>(), City = It.IsAny <string>()
            });

            //act & assert
            NUnit.Framework.Assert.Throws <ArgumentOutOfRangeException>(() => resumeService.EditResume(resume));
        }
예제 #14
0
        public void CreateResume_TryToCreateResume_ShouldRepositoryCreateOnce()
        {
            var Resume = new ResumeDTO {
                Id = It.IsAny <int>()
            };

            uow.Setup(x => x.Rubrics.Get(It.IsAny <int>())).Returns(new Rubric()
            {
            });
            // act
            resumeService.CreateResume(Resume);

            //assert
            resumeRepository.Verify(x => x.Create(It.IsAny <Resume>()));
        }
예제 #15
0
        public void RemoveResume(ResumeDTO resumeDTO)
        {
            if (resumeDTO == null)
            {
                throw new ArgumentNullException(nameof(resumeDTO));
            }

            if (Database.Resumes.Get(resumeDTO.Id) == null)
            {
                throw new ArgumentOutOfRangeException("Not found resume");
            }

            Database.Resumes.Delete(resumeDTO.Id);
            Database.Save();
        }
예제 #16
0
        public IActionResult Post([FromBody] Resume resume)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var createdResume = _resumeService.Create(resume);

            if (createdResume == null)
            {
                return(BadRequest());
            }
            var createdResumeDTO = new ResumeDTO(createdResume);

            return(Ok(createdResumeDTO));
        }
예제 #17
0
        public IActionResult Put([FromBody] Resume resume)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var updatedResume = _resumeService.Update(resume);

            if (updatedResume == null)
            {
                return(NotFound());
            }
            var updatedResumeDTO = new ResumeDTO(updatedResume);

            return(Ok(updatedResumeDTO));
        }
예제 #18
0
        public void RemoveResume_DeleteNullValue()
        {
            var resume = new ResumeDTO {
                Id = It.IsAny <int>(), Name = It.IsAny <string>()
            };

            resumeRepository.Setup(x => x.Get(It.IsAny <int>())).Returns(new Resume {
                Id = It.IsAny <int>(), Name = It.IsAny <string>()
            });

            //act
            resumeService.RemoveResume(resume);

            //assert
            resumeRepository.Verify(x => x.Delete(It.IsAny <int>()));
        }
예제 #19
0
        public void EditResume_EditResume_ShoudRepositoryEditOnce()
        {//
         //arrange
            var resume = new ResumeDTO {
                Id = It.IsAny <int>(), City = It.IsAny <string>()
            };

            resumeRepository.Setup(x => x.Get(It.IsAny <int>())).Returns(new Resume {
                Id = It.IsAny <int>(), City = It.IsAny <string>()
            });
            resumeRepository.Setup(x => x.Get(It.IsAny <int>())).Returns(new Resume());

            uow.Setup(x => x.Rubrics.Get(It.IsAny <int>())).Returns(new Rubric());
            // act
            resumeService.EditResume(resume);

            //assert
            resumeRepository.Verify(x => x.Update(It.IsAny <Resume>()));
        }
예제 #20
0
        public void UpdateResume(ResumeDTO resumeDTO)
        {
            Resume resume = Database.Resumes.Get(resumeDTO.ResumeId);

            if (resume == null)
            {
                throw new ValidationException("Резюме не найдено", "");
            }

            resume.ResumeName     = resumeDTO.ResumeName;
            resume.ResumeDescript = resumeDTO.ResumeDescript;
            resume.EmployeeId     = resumeDTO.EmployeeId;
            resume.Date           = DateTime.Now;
            resume.CategoryId     = resumeDTO.CategoryId;
            // resume.Employee.EmployeeId = resumeDTO.Employee.EmployeeId;

            Database.Resumes.Update(resume);
            Database.Save();
        }
예제 #21
0
        public void CreateResume(ResumeDTO resumeDTO)
        {
            if (resumeDTO == null)
            {
                throw new ArgumentNullException(nameof(resumeDTO));
            }

            if (resumeDTO.Id != 0 && Database.Resumes.Get(resumeDTO.Id) != null)
            {
                throw new ArgumentOutOfRangeException("Found duplicate id resume");
            }

            if (Database.Rubrics.Get(resumeDTO.RubricId) == null)
            {
                throw new ArgumentOutOfRangeException("Invalid argument rubricId");
            }

            Database.Resumes.Create(Mapper.Map <ResumeDTO, Resume>(resumeDTO));
            Database.Save();
        }
예제 #22
0
        public void AddResume(ResumeDTO resumeDTO)
        {
            Employee employee = Database.Employees.Get(resumeDTO.EmployeeId);

            if (employee == null)
            {
                throw new ValidationException("Чуловек не найден", "");
            }

            Resume resume = new Resume
            {
                Date           = DateTime.UtcNow,
                ResumeName     = resumeDTO.ResumeName,
                EmployeeId     = employee.EmployeeId,
                ResumeDescript = resumeDTO.ResumeDescript,
                CategoryId     = resumeDTO.CategoryId
            };

            Database.Resumes.Create(resume);
            Database.Save();
        }
예제 #23
0
        public IHttpActionResult Add(ResumeViewModel resumeView)
        {
            ResumeDTO resumeDTO = Mapper.Map <ResumeViewModel, ResumeDTO>(resumeView);

            resumeDTO.User = userService.GetUsers().Where(x => x.UserName == User.Identity.Name).FirstOrDefault();

            try
            {
                resumeService.CreateResume(resumeDTO);

                return(Ok("Resume is created"));
            }
            catch (ArgumentNullException)
            {
                return(BadRequest("Not correct input data"));
            }
            catch (ArgumentOutOfRangeException ex)
            {
                return(BadRequest(ex.ParamName));
            }
        }
예제 #24
0
        public void EditResume(ResumeDTO resumeDTO)
        {
            if (resumeDTO == null)
            {
                throw new ArgumentNullException(nameof(resumeDTO));
            }

            Resume resume = Database.Resumes.Get(resumeDTO.Id);

            if (resume == null)
            {
                throw new ArgumentOutOfRangeException("Not found resume");
            }

            if (Database.Rubrics.Get(resumeDTO.RubricId) == null)
            {
                throw new ArgumentOutOfRangeException("Invalid argument rubricId");
            }

            resume.Title           = resumeDTO.Title;
            resume.Surname         = resumeDTO.Surname;
            resume.Name            = resumeDTO.Name;
            resume.MiddleName      = resumeDTO.MiddleName;
            resume.Birthday        = resumeDTO.Birthday;
            resume.Gender          = resumeDTO.Gender;
            resume.City            = resumeDTO.City;
            resume.Phone           = resumeDTO.Phone;
            resume.Email           = resumeDTO.Email;
            resume.Skype           = resumeDTO.Skype;
            resume.RubricId        = resumeDTO.RubricId;
            resume.Portfolio       = resumeDTO.Portfolio;
            resume.DesiredPosition = resumeDTO.DesiredPosition;
            resume.Payment         = resumeDTO.Payment;
            resume.Skills          = resumeDTO.Skills;
            //resume.UserId = resumeDTO.UserId;

            Database.Resumes.Update(resume);
            Database.Save();
        }
예제 #25
0
        private List <ResumeDTO> ConvertResumeList(List <Resume> resumeList)
        {
            var convertedResumeList = new List <ResumeDTO>();

            resumeList.ForEach(resume =>
            {
                var convertedResume = new ResumeDTO
                {
                    contact_info = new ContactInfoDTO {
                        name = new Models.Name
                        {
                            formatted_name = resume.contact_info.name.formatted_name
                        }
                    },
                };

                ExperienceDTO previewsExperience = null;
                convertedResume.experience       = new List <ExperienceDTO>();
                resume.experience.ForEach(experience =>
                {
                    var experienceDto        = new ExperienceDTO();
                    experienceDto.title      = experience.title;
                    experienceDto.start_date = experience.start_date;
                    experienceDto.end_date   = experience.end_date;
                    if (previewsExperience != null)
                    {
                        previewsExperience.GapDaysBetweenJobs = (int)(experience.start_date - previewsExperience.end_date).TotalDays;
                    }

                    previewsExperience = experienceDto;

                    convertedResume.experience.Add(experienceDto);
                });
                convertedResumeList.Add(convertedResume);
            });

            return(convertedResumeList);
        }
예제 #26
0
        public async Task <ActionResult <ResumeDTO> > PostResume(ResumeDTO resumeDTO)
        {
            User user = await userManager.FindByNameAsync(User.Identity.Name);

            if (resumeDTO == null)
            {
                return(BadRequest());
            }

            // Assign resume to logged in user
            Resume resume = DTOToResume(resumeDTO);

            if ((resume.CandidateId != user.Id) && !(await userManager.IsInRoleAsync(user, UserRoles.Admin)))
            {
                return(Unauthorized("Cannot create a resume for another candidate"));
            }
            resume.CandidateId = user.Id;

            _context.Resumes.Add(resume);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("PostResume", resumeDTO));
        }
예제 #27
0
 // PUT: api/Resume/5
 public void Put(int id, [FromBody] ResumeDTO resumeDTO)
 {
     _resumeService.UpdateResume(id, resumeDTO);
 }
예제 #28
0
 // POST: api/Resume
 public void Post([FromBody] ResumeDTO resumeDTO)
 {
     _resumeService.AddResume(resumeDTO);
 }
예제 #29
0
        public static void WriteHardResume(string dateFolder, Resume resume)
        {
            ResumeFiles files   = new ResumeFiles(dateFolder);
            string      ymlPath = files.HardResume;

            // write to json
            string jsonDCircle = JsonConvert.SerializeObject(
                resume,
                new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                Formatting            = Formatting.Indented,
                ContractResolver      = new DefaultContractResolver
                {
                    NamingStrategy = new CamelCaseNamingStrategy()
                }
            }
                );

            string jsonPath = ymlPath.Replace("yml", "json");

            Resume resumeDCircle = JsonConvert.DeserializeObject <Resume>(jsonDCircle);

            ResumeDTO parsed = parseResume(resumeDCircle);

            string json = JsonConvert.SerializeObject(
                parsed,
                new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                Formatting            = Formatting.Indented,
                ContractResolver      = new DefaultContractResolver
                {
                    NamingStrategy = new CamelCaseNamingStrategy()
                }
            }
                );

            using (StreamWriter w = new StreamWriter(jsonPath))
            {
                w.Write(json);
                Console.WriteLine("##############################");
                Console.WriteLine($"JSON wrote at {jsonPath}");
            }

            //write to yml
            var serializer = new YamlDotNet.Serialization.SerializerBuilder()
                             .DisableAliases()
                             .Build();

            string yaml;

            using (StringWriter w = new StringWriter())
            {
                serializer.Serialize(w, parsed);
                yaml = w.ToString();
            }

            using (StreamWriter w2 = new StreamWriter(ymlPath))
            {
                w2.Write(yaml);
                Console.WriteLine("##############################");
                Console.WriteLine($"YML wrote at {ymlPath}");
            }

            // write to javascript
            string javascript = "exports.hardResume = " + json;
            string jsPath     = files.JavaScriptPath;

            Console.WriteLine(jsPath);
            using (StreamWriter w3 = new StreamWriter(jsPath))
            {
                w3.Write(javascript);
                Console.WriteLine("##############################");
                Console.WriteLine($"JS wrote at {jsPath}");
            }
        }