private async Task <List <ExperienceDescription> > CreateOrUpdateExpDescAsync (IList <ExperienceDescriptionModel> experienceDescriptionModels) { if (experienceDescriptionModels == null || experienceDescriptionModels.Count <= 0) { return(null); } List <ExperienceDescription> toReturn = new List <ExperienceDescription>(); foreach (var expDescription in experienceDescriptionModels) { var expDescTemp = new ExperienceDescription(); if (expDescription.Id != null) { expDescTemp.Id = expDescription.Id.Value; _dbContext.ExperienceDescriptions.Attach(expDescTemp); } expDescTemp.Name = expDescription.Name; expDescTemp.Description = expDescription.Description; expDescTemp.Position = await GetOrCreatePositionAsync(expDescription.PositionDesc); toReturn.Add(expDescTemp); } return(toReturn); }
// TODO réaliser complètement ce service pour alléger les fonctions du service ProExpService ?? // Oui car on peut l'ajouter après une fermeture d'using, est ce bien? Askip ça évitera d'avoir une fonction de 150 lignes public async Task <int> UpdateAsync(int id, ExperienceDescriptionModel expDescModel) { using (ApplicationContext context = new ApplicationContext()) { var entity = new ExperienceDescription { Id = id, Description = expDescModel.Description, Name = expDescModel.Name, ProExpId = expDescModel.ProExpId, }; var position = await context.Positions .FirstOrDefaultAsync(x => x.Description == expDescModel.PositionDesc); if (position == null) { position = new Position { Description = expDescModel.PositionDesc }; } entity.Position = position; context.ExperienceDescriptions.AddOrUpdate(entity); await context.SaveChangesAsync(); return(entity.Id); } }
public IActionResult StoreOrUpdateData([FromBody] JObject data, ExperienceDescription expDesc) { try { expDesc = new ExperienceDescription(); string userId = data["userId"].ToObject <string>(); string internshipId = data["internshipId"].ToObject <string>(); string taskId = data["taskId"].ToObject <string>(); string date = data["taskDate"].ToObject <string>(); int noOfTimes = data["noOfTimes"].ToObject <int>(); expDesc.NoOfTimes = noOfTimes; expDesc.TaskId = taskId; expDesc.UserId = userId; expDesc.InternshipId = internshipId; expDesc.Date = date; expDesc.IsChecked = true; var check = _context.ExperiencesDescriptions.AsQueryable() .Any(expColl => expColl.TaskId == expDesc.TaskId && expColl.Date == date && expColl.UserId == expDesc.UserId); if (check) { var filter = Builders <ExperienceDescription> .Filter.Eq(x => x.TaskId, taskId); var filter2 = Builders <ExperienceDescription> .Filter.Eq(x => x.UserId, userId); filter = filter & filter2 & (Builders <ExperienceDescription> .Filter.Eq(x => x.Date, date)); if (noOfTimes == 0) { _context.ExperiencesDescriptions.UpdateOneAsync(filter, Builders <ExperienceDescription> .Update.Set("NoOfTimes", expDesc.NoOfTimes) .Set("IsChecked", false)); } else { _context.ExperiencesDescriptions.UpdateOneAsync(filter, Builders <ExperienceDescription> .Update.Set("NoOfTimes", expDesc.NoOfTimes) .Set("IsChecked", true)); } } else { _context.ExperiencesDescriptions.InsertOne(expDesc); } } catch (Exception ex) { throw ex; } return(Ok()); }
public async Task <bool> RemoveAsync(int id) { using (ApplicationContext context = new ApplicationContext()) { ExperienceDescription entity = await context.ExperienceDescriptions.FirstOrDefaultAsync(x => x.Id == id); if (entity != null) { context.ExperienceDescriptions.Remove(entity); } await context.SaveChangesAsync(); return(true); } }