public Tank GetTank(string name)
 {
     return(_tankRep.GetTank(name));
 }
 public Tank GetTank(string name)
 {
     return(_repository.GetTank(name));
 }
        public IActionResult GetTank(Guid terminalId, Guid dispenserId, Guid fuelTypeId, Guid tankId, string fields,
                                     [FromHeader(Name = "Accept")] string mediaType)
        {
            TankResourceParameters tankResourceParameters = new TankResourceParameters();

            tankResourceParameters.TermimalId  = terminalId;
            tankResourceParameters.DispenserId = dispenserId;
            tankResourceParameters.TermimalId  = fuelTypeId;

            if (!MediaTypeHeaderValue.TryParse(mediaType,
                                               out MediaTypeHeaderValue parsedMediaType))
            {
                return(BadRequest());
            }

            if (!_propertyCheckerService.TypeHasProperties <TankDto>
                    (fields))
            {
                return(BadRequest());
            }

            var tankFromRepo = _tankRepository.GetTank(tankResourceParameters, tankId);

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

            var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                               .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

            IEnumerable <LinkDto> links = new List <LinkDto>();

            if (includeLinks)
            {
                links = CreateLinksForTank(terminalId.ToString(), dispenserId.ToString(), fuelTypeId.ToString(), tankId.ToString(), fields);
            }

            var primaryMediaType = includeLinks ?
                                   parsedMediaType.SubTypeWithoutSuffix
                                   .Substring(0, parsedMediaType.SubTypeWithoutSuffix.Length - 8)
              : parsedMediaType.SubTypeWithoutSuffix;

            // full tank
            if (primaryMediaType == "vnd.marvin.tank.full")
            {
                var fullResourceToReturn = _mapper.Map <TankFullDto>(tankFromRepo)
                                           .ShapeData(fields) as IDictionary <string, object>;

                if (includeLinks)
                {
                    fullResourceToReturn.Add("links", links);
                }

                return(Ok(fullResourceToReturn));
            }

            // friendly tank
            var friendlyResourceToReturn = _mapper.Map <TankDto>(tankFromRepo)
                                           .ShapeData(fields) as IDictionary <string, object>;

            if (includeLinks)
            {
                friendlyResourceToReturn.Add("links", links);
            }

            return(Ok(friendlyResourceToReturn));
        }