Exemple #1
0
        public async Task <ActionResult <ActivityViewModel> > DeleteActivity(int id)
        {
            Activity activity = await dbContext.Activities.FindAsync(id);

            if (activity is null)
            {
                return(NotFound($"There is not Activity with the id = {id}"));
            }

            Qualification qualification = await dbContext.Qualifications.Include(a => a.Activities)
                                          .Where(q => q.Id == activity.QualificationId).FirstOrDefaultAsync();

            if (qualification is null)
            {
                return(BadRequest($"There is no Qualification with the id = {activity.QualificationId}"));
            }

            qualification.Activities.RemoveAll(a => a.Id == activity.Id);
            qualification.Calculate();

            dbContext.Activities.Remove(activity);
            dbContext.Qualifications.Update(qualification);
            await dbContext.SaveChangesAsync();

            return(_mapper.Map <ActivityViewModel>(activity));
        }
        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));
        }