/// <summary> /// Checks Name /// </summary> /// <param name="viewModel">Injected <see cref="AddArenal"/></param> /// <returns>Instance of <see cref="Task{Arenal}"/></returns> public async Task <Arenal> CheckName(AddArenal @viewModel) { Arenal @arenal = await Context.Arenal .AsNoTracking() .TagWith("CheckName") .FirstOrDefaultAsync(x => x.Name == @viewModel.Name); if (@arenal != null) { // Log string @logData = @arenal.GetType().Name + " with Name " + @arenal.Name + " was already found at " + DateTime.Now.ToShortTimeString(); Logger.WriteGetItemFoundLog(@logData); throw new Exception(@arenal.GetType().Name + " with Name " + @viewModel.Name + " already exists"); } return(@arenal); }
/// <summary> /// Adds Arenal Poblacion /// </summary> /// <param name="viewModel">Injected <see cref="AddArenal"/></param> /// <param name="entity">Injected <see cref="Arenal"/></param> public void AddArenalPoblacion(AddArenal @viewModel, Arenal @entity) { @viewModel.PoblacionesId.AsQueryable().ToList().ForEach(async x => { Poblacion @poblacion = await FindPoblacionById(x); ArenalPoblacion @arenalPoblacion = new() { Arenal = @entity, Poblacion = @poblacion, }; @entity.ArenalPoblaciones.Add(@arenalPoblacion); }); }
/// <summary> /// Adds Arenal /// </summary> /// <param name="viewModel">Injected <see cref="AddArenal"/></param> /// <returns>Instance of <see cref="Task{ViewArenal}"/></returns> public async Task <ViewArenal> AddArenal(AddArenal @viewModel) { await CheckName(@viewModel); Arenal @arenal = new() { Name = @viewModel.Name, ArenalPoblaciones = new List <ArenalPoblacion>(), Historicos = new List <Historico>() }; try { await Context.Arenal.AddAsync(@arenal); AddArenalPoblacion(@viewModel, @arenal); await AddHistorico(@arenal); await Context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { await CheckName(@viewModel); } // Log string @logData = @arenal.GetType().ToString() + " with Id " + @arenal.Id + " was added at " + DateTime.Now.ToShortTimeString(); Logger.WriteInsertItemLog(@logData); return(Mapper.Map <ViewArenal>(@arenal));; }