public async Task <ActionResult <ActivityViewModel> > UpdateActivy(int id, [FromBody] ActivityEditModel activityEdit) { Activity activity = await dbContext.Activities.FindAsync(id); if (activity is null) { return(NotFound($"Actividad no encontrada: {id}")); } Qualification qualification = await dbContext.Qualifications.Include(a => a.Activities) .Where(q => q.Id == activity.QualificationId).FirstOrDefaultAsync(); if (qualification is null) { return(BadRequest($"La actividad con id {activity.QualificationId} no existe")); } decimal diff = activityEdit.Percent - activity.Percent; if (qualification.TotalActivityPercent + diff > 1) { return(BadRequest($"Superó el porcentaje permitido")); } _mapper.Map(activityEdit, activity); dbContext.Activities.Update(activity); qualification.Activities.RemoveAll(a => a.Id == activity.Id); if (!qualification.AddActivity(activity)) { return(BadRequest($"The activity cannot be added, the percentage of the activity exceeds the allowed")); } qualification.Calculate(); dbContext.Update(qualification); await dbContext.SaveChangesAsync(); return(_mapper.Map <ActivityViewModel>(activity)); }
public async Task <ActionResult <ActivityViewModel> > SaveActivity([FromBody] ActivityInputModel activityInput) { Qualification qualification = await dbContext.Qualifications.Include(a => a.Activities) .Where(q => q.Id == activityInput.QualificationId).FirstOrDefaultAsync(); if (qualification is null) { return(BadRequest($"There is no Qualification with the id = {activityInput.QualificationId}")); } Activity activity = _mapper.Map <Activity>(activityInput); if (!qualification.AddActivity(activity)) { return(BadRequest($"The activity cannot be added, the percentage of the activity exceeds the allowed")); } qualification.Calculate(); dbContext.Qualifications.Update(qualification); await dbContext.SaveChangesAsync(); return(_mapper.Map <ActivityViewModel>(activity)); }