/// <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);
        }