public JsonResult Registrar(FiguraDto figuraDto)
        {
            var jsonResponse = new JsonResponse();
            figuraDto.RutaFisicaImagen = Server.MapPath("~/Figuras/");

            var respuesta = figuraDto.Id == null
                ? _figuraAppService.Create(figuraDto)
                : _figuraAppService.Update(figuraDto);

            jsonResponse.Success = respuesta.IsValid;
            jsonResponse.Message = respuesta.ErrorMessage();

            return Json(jsonResponse, JsonRequestBehavior.AllowGet);
        }
        public ValidationResultDto Create(FiguraDto entityDto)
        {
            var entity = MapperHelper.Map<FiguraDto, Figura>(entityDto);

            if(entityDto.Imagen != null)
            {
                var fileNameArchivo = GenerarArchivo(entityDto);
                entity.Estado = (int)TipoEstado.Activo;
                entity.Imagen = string.Format("~/Figuras/{0}", fileNameArchivo);
            }

            var validateResult = _figuraService.Add(entity);

            if (!validateResult.IsValid)
                throw new DefaultException(validateResult.ErrorMessage);

            return ValidationResultDto(validateResult);
        }
        public ValidationResultDto Update(FiguraDto entityDto)
        {
            var entity = MapperHelper.Map<FiguraDto, Figura>(entityDto);

            if (entityDto.Imagen != null)
            {
                var fileNameArchivo = GenerarArchivo(entityDto);
                entity.Imagen = string.Format("/Figuras/{0}", fileNameArchivo);
            }
            else
                entity.Imagen = entityDto.RutaImagen;

            var validateResult = _figuraService.Update(entity);

            if (!validateResult.IsValid)
                throw new DefaultException(validateResult.ErrorMessage);

            return ValidationResultDto(validateResult);
        }
        private string GenerarArchivo(FiguraDto entityDto)
        {
            if (!Directory.Exists(entityDto.RutaFisicaImagen))
                Directory.CreateDirectory(entityDto.RutaFisicaImagen);

            var fileName = string.Format("{0}{1}", entityDto.Id, Path.GetExtension(entityDto.Imagen.FileName));
            var rutaCompletaArchivoImagen = Path.Combine(entityDto.RutaFisicaImagen, fileName);

            if (File.Exists(rutaCompletaArchivoImagen))
                File.Delete(rutaCompletaArchivoImagen);

            entityDto.Imagen.SaveAs(rutaCompletaArchivoImagen);

            return fileName;
        }
        public ValidationResultDto Remove(FiguraDto entityDto)
        {
            var entity = MapperHelper.Map<FiguraDto, Figura>(entityDto);
            var validateResult = _figuraService.Delete(entity);

            if (!validateResult.IsValid)
                throw new DefaultException(validateResult.ErrorMessage);

            return ValidationResultDto(validateResult);
        }