/// <summary> /// Adds Poblacion /// </summary> /// <param name="viewModel">Injected <see cref="AddPoblacion"/></param> /// <returns>Instance of <see cref="Task{ViewPoblacion}"/></returns> public async Task <ViewPoblacion> AddPoblacion(AddPoblacion @viewModel) { await CheckName(@viewModel); Poblacion @poblacion = new() { Name = @viewModel.Name, Provincia = await FindProvinciaById(@viewModel.ProvinciaId), ImageUri = @viewModel.ImageUri }; try { await Context.Poblacion.AddAsync(@poblacion); await Context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { await CheckName(@viewModel); } // Log string logData = @poblacion.GetType().Name + " with Id " + @poblacion.Id + " was added at " + DateTime.Now.ToShortTimeString(); Logger.WriteInsertItemLog(logData); return(Mapper.Map <ViewPoblacion>(@poblacion)); }
/// <summary> /// Checks Name /// </summary> /// <param name="viewModel">Injected <see cref="AddPoblacion"/></param> /// <returns>Instance of <see cref="Task{Poblacion}"/></returns> public async Task <Poblacion> CheckName(AddPoblacion @viewModel) { Poblacion @poblacion = await Context.Poblacion .AsNoTracking() .TagWith("CheckName") .FirstOrDefaultAsync(x => x.Name == @viewModel.Name); if (@poblacion != null) { // Log string @logData = @poblacion.GetType().Name + " with Name " + @poblacion.Name + " was already found at " + DateTime.Now.ToShortTimeString(); Logger.WriteGetItemFoundLog(@logData); throw new Exception(@poblacion.GetType().Name + " with Name " + @viewModel.Name + " already exists"); } return(@poblacion); }