public async Task <IActionResult> Create(EspecialidadViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var entity = _mapper.Map <Especialidad>(vm);
                await _repository.Add(entity);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(vm));
        }
        // GET: Especialidad/Delete/5
        public async Task <IActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var especialidad = await _repository.GetById(id.Value);

            if (especialidad == null)
            {
                return(NotFound());
            }

            var vm = new EspecialidadViewModel
            {
                Id     = especialidad.Id,
                Nombre = especialidad.Nombre
            };

            return(View(vm));
        }
        public async Task <IActionResult> Edit(int id, EspecialidadViewModel vm)
        {
            if (id != vm.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var entity = new Especialidad
                    {
                        Id     = vm.Id,
                        Nombre = vm.Nombre
                    };

                    await _repository.Update(entity);
                }
                catch (DbUpdateConcurrencyException)
                {
                    var isExists = await EspecialidadExists(vm.Id);

                    if (!isExists)
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(vm));
        }