public void Add(IEnumerable <int> listPersonId, DayExtensions dayExtension)
        {
            var persons       = _context.Persons.Include(p => p.DayExtensions).Where(p => listPersonId.Contains(p.Id));
            var extensionType =
                _context.ExtensionTypes.FirstOrDefault(e => e.Id.Equals(dayExtension.ExtensionTypeId));

            dayExtension.CreatedAt = DateTimeOffset.Now;
            foreach (var person in persons)
            {
                if (!ValidateMaxHours(person.DayExtensions
                                      .Where(d => d.AffectationDate.Equals(dayExtension.AffectationDate)).Sum(d => d.HoursNumber) + dayExtension.HoursNumber))
                {
                    var newDayExtension = GetNewInstance(dayExtension, extensionType);
                    person.DayExtensions.Add(newDayExtension);
                    _context.Update(person);
                }
                else
                {
                    _validationService.Add("HoursNumber", Enumerations.ErrorType.Warning,
                                           string.Format(ErrorMessages.MaxHours, $"{person.Name} {person.LastName}"));
                }

                _context.SaveChanges();
            }
        }
 public DayExtensions GetNewInstance(DayExtensions dayExtensions, ExtensionTypes extensionTypes)
 {
     return(new DayExtensions
     {
         AffectationDate = dayExtensions.AffectationDate,
         CreatedAt = DateTimeOffset.Now,
         ExtensionType = extensionTypes,
         ExtensionTypeId = dayExtensions.ExtensionTypeId,
         HoursNumber = dayExtensions.HoursNumber,
         PersonsId = dayExtensions.PersonsId,
         State = dayExtensions.State,
         RequestDate = DateTime.Now,
         ModificatedAt = DateTimeOffset.Now,
     });
 }
#pragma warning disable CS1998 // El método asincrónico carece de operadores "await" y se ejecutará de forma sincrónica. Puede usar el operador 'await' para esperar llamadas API que no sean de bloqueo o 'await Task.Run(...)' para hacer tareas enlazadas a la CPU en un subproceso en segundo plano.
        public async Task <ActionResult> Delete([DataSourceRequest] DataSourceRequest request, DayExtensions model)
#pragma warning restore CS1998 // El método asincrónico carece de operadores "await" y se ejecutará de forma sincrónica. Puede usar el operador 'await' para esperar llamadas API que no sean de bloqueo o 'await Task.Run(...)' para hacer tareas enlazadas a la CPU en un subproceso en segundo plano.
        {
            _dayExtensionsBL.Delete(model.Id);

            ModelState.AddError(_validationService);

            return(Json(ModelState.ToDataSourceResult()));
        }
        public JsonResult Add([DataSourceRequest] DataSourceRequest request, List <int> personsIds, DayExtensions model)
        {
            ModelState.Remove("PersonsId");

            if (ModelState.IsValid)
            {
                _dayExtensionsBL.Add(personsIds, model);

                ModelState.AddError(_validationService);
            }

            return(Json(ModelState.ToDataSourceResult()));
        }
Example #5
0
        public async Task <ActionResult> Delete([DataSourceRequest] DataSourceRequest request, DayExtensions model)
        {
            _dayExtensionsBL.Delete(model.Id);

            ModelState.AddError(_validationService);

            return(Json(ModelState.ToDataSourceResult()));
        }