public async Task <IActionResult> Create(AreaResource resource)
        {
            var response = new SingleModelResponse <AreaResource>();

            if (resource == null)
            {
                response.DidError     = true;
                response.ErrorMessage = "Input cannot be null.";
                return(response.ToHttpResponse());
            }

            try
            {
                var area = new Area();
                _mapper.Map(resource, area);

                var entity = await _areaRepository.AddAsync(area);

                response.Model   = _mapper.Map(entity, resource);
                response.Message = "The data was saved successfully";
            }
            catch (Exception ex)
            {
                response.DidError     = true;
                response.ErrorMessage = ex.ToString();
            }

            return(response.ToHttpResponse());
        }
        public async Task <IActionResult> GetAsync(int id)
        {
            var response = new SingleModelResponse <AreaResource>();

            try
            {
                var entity = await _areaRepository.Query().Include(x => x.Functions)
                             .FirstOrDefaultAsync(x => x.Id == id);

                if (entity == null)
                {
                    response.DidError     = true;
                    response.ErrorMessage = "Input could not be found.";
                    return(response.ToHttpResponse());
                }

                var resource = new AreaResource();
                _mapper.Map(entity, resource);
                response.Model = resource;
            }
            catch (Exception ex)
            {
                response.DidError     = true;
                response.ErrorMessage = ex.Message;
            }

            return(response.ToHttpResponse());
        }
        public async Task <IActionResult> Delete(int id)
        {
            var response = new SingleModelResponse <AreaResource>();

            try
            {
                var areaWithFunctions = await _areaRepository.Query().Include(x => x.Functions)
                                        .SingleOrDefaultAsync(x => x.Id == id);

                foreach (var function in areaWithFunctions.Functions)
                {
                    function.IdArea = null;
                }

                var entity = await _areaRepository.DeleteAsync(id);

                var resource = new AreaResource();
                response.Model   = _mapper.Map(entity, resource);
                response.Message = "The record was deleted successfully";
            }
            catch (Exception ex)
            {
                response.DidError     = true;
                response.ErrorMessage = ex.Message;
            }

            return(response.ToHttpResponse());
        }
        public async Task <IActionResult> Update(int id, AreaResource resource)
        {
            var response = new SingleModelResponse <AreaResource>();

            if (resource == null)
            {
                response.DidError     = true;
                response.ErrorMessage = "Input cannot be null.";
                return(response.ToHttpResponse());
            }
            try
            {
                var area = await _areaRepository.FindAsync(x => x.Id == id);

                if (area == null || resource == null)
                {
                    response.DidError     = true;
                    response.ErrorMessage = "Input could not be found.";
                    return(response.ToHttpResponse());
                }

                _mapper.Map(resource, area);

                await _areaRepository.UpdateAsync(area);

                response.Model   = _mapper.Map(area, resource);
                response.Message = "The data was saved successfully";
            }
            catch (Exception ex)
            {
                response.DidError     = true;
                response.ErrorMessage = ex.ToString();
            }

            return(response.ToHttpResponse());
        }
 public async Task <IActionResult> Update(int id, [FromBody] AreaResource resource)
 {
     return(await _areaService.Update(id, resource));
 }
 public async Task <IActionResult> Create([FromBody] AreaResource resource)
 {
     return(await _areaService.Create(resource));
 }