public Task <Form> Insert(Form frm) { try { _context.BeginTransaction(); if (frm.Minutos == null) { throw new Exception("Necessário informar o número de minutos do plano"); } if (frm.FranquiaInternet == null) { throw new Exception("Necessário informar o número da franquia de internet do plano"); } if (frm.Valor == null) { throw new Exception("Necessário informar o valor do plano"); } if (frm.TipoPlanoId == null) { throw new Exception("Necessário informar o tipo do plano que está sendo cadastrado"); } if (frm.OperadoraId == null) { throw new Exception("Necessário informar a operadora que esse plano pertence"); } if (frm.DDD == null || frm.DDD.Count == 0) { throw new Exception("Necessário informar a lista de DDD que o plano irá pertencer"); } var dddValido = new List <DDD.DDD>(); foreach (var ddd in frm.DDD) { var item = _dDDRepository.GetByDDD(new DDD.DDD() { Codigo = ddd }); if (item == null) { throw new Exception($"DDD {ddd} inválido. Informar um código de área válido para cadastrar um plano"); } dddValido.Add(item); } frm.StatusRegistro = Context.Model.StatusRegister.Active; var plano = _planoRepository.Insert(frm); frm.Id = plano.Id; foreach (var item in dddValido) { _planoDDDRepository.Insert(new PlanoDDD.PlanoDDD() { DDDId = item.Id, PlanoId = frm.Id }); } _context.Commit(); return(Task.FromResult(frm)); } catch (Exception ex) { _logger.LogError(ex, "PlanoService - Insert"); _context.RollBack(); throw ex; } }