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()); }
public ValidationResult ValidateUpdateScheduleDetail(ClaimsPrincipal principal, ScheduleDetail entity, UpdateScheduleDetailModel model) { return(ValidationResult.Pass()); }
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; }