Exemplo n.º 1
0
        public async Task <IActionResult> Update(int id, UpdateScheduleDetailModel model)
        {
            var entity = _service.ScheduleDetails.Id(id).FirstOrDefault();

            if (entity == null)
            {
                return(NotFound(new AppResultBuilder().NotFound()));
            }
            var validationResult = _service.ValidateUpdateScheduleDetail(User, entity, model);

            if (!validationResult.Valid)
            {
                return(BadRequest(validationResult.Result));
            }
            if (model.IsDefault == true)
            {
                var defaultEntity = _service.ScheduleDetails
                                    .BySchedule(entity.ScheduleId)
                                    .IsDefault().IdOnly().FirstOrDefault();
                if (defaultEntity != null && defaultEntity?.Id != entity.Id)
                {
                    return(BadRequest(ValidationResult.Fail(
                                          new AppResultBuilder().DefaultScheduleDetailExisted())));
                }
            }
            using (var trans = context.Database.BeginTransaction())
            {
                await _service.UpdateScheduleDetailTransactionAsync(entity, model);

                context.SaveChanges();
                trans.Commit();
            }
            return(NoContent());
        }
Exemplo n.º 2
0
 public ValidationResult ValidateUpdateScheduleDetail(ClaimsPrincipal principal,
                                                      ScheduleDetail entity, UpdateScheduleDetailModel model)
 {
     return(ValidationResult.Pass());
 }
Exemplo n.º 3
0
 public async Task UpdateScheduleDetailTransactionAsync(ScheduleDetail entity, UpdateScheduleDetailModel model)
 {
     model.CopyTo(entity);
     if (entity.IsDefault == false)
     {
         var dates = ParseDateStr(model.StartEndDateStr);
         entity.FromTime = dates.Item1; entity.ToTime = dates.Item2;
     }
     else
     {
         entity.FromTime = null;
     } entity.ToTime = null;
     var weekConfigs = model.WeekConfigs.Select(wc =>
     {
         var config = wc.ToDest();
         config.ScheduleDetailId = entity.Id;
         return(config);
     }).ToList();
     var   deleteTask = DeleteAllConfigsOfScheduleDetailAsync(entity);
     var   insertTask = context.BulkInsertAsync(weekConfigs);
     await deleteTask; await insertTask;
 }