// GET: ProExp/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ProExpModel proExpModel = await _proExpService.GetProExpByIdAsync(id.Value); if (proExpModel == null) { return(HttpNotFound()); } var deleteVm = new DeleteProExpViewModel { FromDate = proExpModel.FromDate, ToDate = proExpModel.ToDate, CityName = proExpModel.CityName, CompanyName = proExpModel.CompanyName, ProfileTechModels = new List <ProfileTechModel>(await _proExpService.GetAllTechnoFrom(proExpModel)) }; return(View(deleteVm)); }
// GET: ProExp/Details/5 public async Task <ActionResult> Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ProExpModel proExpModel = await _proExpService.GetProExpByIdAsync(id.Value); if (proExpModel == null) { return(HttpNotFound()); } var detailVm = new DetailsProExpViewModel { CityName = proExpModel.CityName, CompanyName = proExpModel.CompanyName, FromDate = proExpModel.FromDate, ToDate = proExpModel.ToDate, ProfileTechModels = new List <ProfileTechModel>(await _proExpService.GetAllTechnoFrom(proExpModel)), }; if (proExpModel.ExperienceDescriptionModel != null && proExpModel.ExperienceDescriptionModel.Count > 0) { detailVm.ExperienceDescriptionModel = proExpModel.ExperienceDescriptionModel[0]; } return(View(detailVm)); }
public async Task <ActionResult> Create( [Bind(Include = "CompanyName, CityName, FromDate, ToDate, ProExpDescription, ProExpName, ProExpPosition")] CreateProExpViewModel proExpViewModel) { if (ModelState.IsValid) { var proExpToAdd = new ProExpModel { CompanyName = proExpViewModel.CompanyName, CityName = proExpViewModel.CityName, FromDate = proExpViewModel.FromDate, ToDate = proExpViewModel.ToDate, ProfileId = _userModel.Id, ExperienceDescriptionModel = new List <ExperienceDescriptionModel>() }; var expProDesc = new ExperienceDescriptionModel { Description = proExpViewModel.ProExpDescription, PositionDesc = proExpViewModel.ProExpPosition, Name = proExpViewModel.ProExpName }; proExpToAdd.ExperienceDescriptionModel.Add(expProDesc); await _proExpService.CreateAsync(proExpToAdd); return(RedirectToAction("Index")); } return(View(proExpViewModel)); }
public async Task <IEnumerable <ProfileTechModel> > GetAllTechnoFrom(ProExpModel proExpModel) { return(await _dbContext.ProExps .Where(x => x.Id == proExpModel.Id) .SelectMany(x => x.Technologies).Join( _dbContext.ProfileTechnologies, techFromProExp => techFromProExp.Id, profileTech => profileTech.TechnologyId, (proExpTech, profileTech) => new ProfileTechModel() { TechnologyName = proExpTech.Title, TechLevelId = profileTech.TechLevelId, TechLevelDescription = profileTech.TechLevel.Description, ProfileId = profileTech.ProfileId, TechnologyId = profileTech.TechnologyId }) .ToListAsync()); }
public async Task <int> CreateAsync(ProExpModel proExpModel) { ProExp entity = new ProExp { ProfileId = proExpModel.ProfileId, FromDate = proExpModel.FromDate, ToDate = proExpModel.ToDate, City = await GetOrCreateCityAsync(proExpModel.CityName), Company = await GetOrCreateCompanyAsync(proExpModel.CompanyName), Technologies = await GetOrCreateTechnoloyAsync(proExpModel.TechnologyModels, proExpModel.ProfileId), ExperienceDescriptions = await CreateOrUpdateExpDescAsync(proExpModel.ExperienceDescriptionModel) }; _dbContext.ProExps.Add(entity); await _dbContext.SaveChangesAsync(); return(entity.Id); }
public async Task <ActionResult> Edit([Bind(Include = "CompanyName, CityName, FromDate, ToDate")] EditProExpViewModel proExpViewModel) { if (ModelState.IsValid) { var proExpEdited = new ProExpModel { Id = proExpViewModel.Id, CityName = proExpViewModel.CityName, CompanyName = proExpViewModel.CompanyName, FromDate = proExpViewModel.FromDate, ToDate = proExpViewModel.ToDate }; await _proExpService.UpdateAsync(proExpEdited.Id, proExpEdited); return(RedirectToAction("Index")); } return(View(proExpViewModel)); }
public async Task <ActionResult> Create([Bind(Include = "CompanyName, CityName, FromDate, ToDate")] CreateProExpViewModel proExpViewModel) { if (ModelState.IsValid) { var proExpToAdd = new ProExpModel { CompanyName = proExpViewModel.CompanyName, CityName = proExpViewModel.CityName, FromDate = proExpViewModel.FromDate, ToDate = proExpViewModel.ToDate, ProfileId = _userModel.Id }; await _proExpService.CreateAsync(proExpToAdd); return(RedirectToAction("Index")); } return(View(proExpViewModel)); }
public async Task <ProExpModel> GetProExpByIdAsync(int id) { ProExpModel toReturn = await _dbContext.ProExps .Where(x => x.Id == id) .Select(x => new ProExpModel { Id = id, CompanyName = x.Company.Name, CityName = x.City.Name, FromDate = x.FromDate, ToDate = x.ToDate }) .SingleOrDefaultAsync(); if (toReturn != null) { toReturn.ExperienceDescriptionModel = await GetExpDescriptionByProExpId(id); } return(toReturn); }
// Conservation d'un seul service qui s'occupe de l'expérience professionnel et qui ajoute des données dans différentes tables. // TODO voir pour refacto ces deux fonctions assez similaires public async Task <int> CreateAsync(ProExpModel proExpModel) { ProExp entity = new ProExp { ProfileId = proExpModel.ProfileId, FromDate = proExpModel.FromDate, ToDate = proExpModel.ToDate }; using (ApplicationContext context = new ApplicationContext()) { // CITY PART var city = await context.Cities .FirstOrDefaultAsync(x => x.Name == proExpModel.CityName); if (city == null) { city = new City { Name = proExpModel.CityName }; } entity.City = city; // COMPANY PART var company = await context.Companies .FirstOrDefaultAsync(x => x.Name == proExpModel.CompanyName); if (company == null) { company = new Company { Name = proExpModel.CompanyName }; } entity.Company = company; // TECHNOLOGY PART if (proExpModel.TechnologyModels != null && proExpModel.TechnologyModels.Count > 0) { foreach (var technologyModel in proExpModel.TechnologyModels) { Technology technology = await context.Technologies.FirstOrDefaultAsync(x => x.Title == technologyModel.Title); if (technology == null) { technology = new Technology { Title = technologyModel.Title }; } entity.Technologies.Add(technology); context.ProfileTechnologies.AddOrUpdate(new ProfileTechnology { ProfileId = proExpModel.ProfileId, TechLevelId = technologyModel.TechLevelId, Technology = technology }); } } context.ProExps.Add(entity); await context.SaveChangesAsync(); } // Description Part with other Service var description = proExpModel.ExperienceDescriptionModel; if (description != null) { description.ProExpId = entity.Id; await _expDescriptionService.CreateAsync(description); } return(entity.Id); }