public async Task<IHttpActionResult> CreateNsnCatalogItem(NsnCatalogItemDTO item)
        {
            // TODO: post a picture

            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var result = await _service.AddNsnCatalogItem(item);

            return CreatedAtRoute("api/NsnCatalog", new { id = result.Id }, result);
        }
        public async Task<NsnCatalogItemDTO> AddNsnCatalogItem(NsnCatalogItemDTO dto)
        {
            var model = ConvertNsnCatalogItemDTOtoModel(dto);
            model.AddedOn = DateTime.Now;

            db.NsnCatalog.Add(model);
            await db.SaveChangesAsync();

            dto.AddedOn = model.AddedOn;
            dto.Id = model.Id;

            return dto;
        }
        public async Task<IHttpActionResult> UpdateNsnCatalogItem(int id, NsnCatalogItemDTO item)
        {
            if (!ModelState.IsValid)
                return BadRequest(ModelState);

            if (id != item.Id)
                return BadRequest();

            try
            {
                await _service.UpdateNsnCatalogItem(item);
            }
            catch (KeyNotFoundException)
            {
                return NotFound();
            }
            catch (System.Data.Entity.Infrastructure.DbUpdateConcurrencyException)
            {
                return InternalServerError();
            }


            return Ok();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        /// <exception cref="KeyNotFoundException"></exception>
        /// <exception cref="System.Data.Entity.Infrastructure.DbUpdateConcurrencyException"></exception>
        public async Task<NsnCatalogItemDTO> UpdateNsnCatalogItem(NsnCatalogItemDTO dto)
        {
            if (dto.Id <= 0)
                throw new ArgumentException();

            var model = await db.NsnCatalog.FindAsync(dto.Id);

            if (model == null)
                throw new KeyNotFoundException();

            dto.LastUpdated = DateTime.Now;
            // TODO: implement update logic

            try
            {
                await db.SaveChangesAsync();
            }
            catch (System.Data.Entity.Infrastructure.DbUpdateConcurrencyException)
            {
                throw;
            }

            return dto;
        }
        private NsnCatalogItem ConvertNsnCatalogItemDTOtoModel(NsnCatalogItemDTO dto)
        {
            var model = new NsnCatalogItem
            {
                Name = dto.Name,
                Desc = dto.Description,
                NatoStockNumber = dto.NatoStockNumber,
                UnitIssueId = dto.UnitIssueId,
                ItemClassId = dto.ItemClassId,
                AddedOn = dto.AddedOn,
                LastUpdated = dto.LastUpdated,
            };

            return model;
        }
        private NsnCatalogItemDTO ConvertNsnCatalogItemModelToDto(NsnCatalogItem model)
        {
            NsnCatalogItemDTO dto = new NsnCatalogItemDTO
            {
                Id = model.Id,
                Name = model.Name,
                NatoStockNumber = model.NatoStockNumber,
                LastUpdated = model.LastUpdated,
                AddedOn = model.AddedOn,
                Description = model.Desc,
                PictureUri = CreatePictureUri(model.ImageSrc)
            };

            if (model.UnitIssue != null)
            {
                dto.UnitIssueId = model.UnitIssue.Id;
                dto.UnitIssueTag = model.UnitIssue.Tag;
                dto.UnitIssue = model.UnitIssue.Name;
            }
            
            if (model.ItemClass != null)
            {
                dto.ItemClassId = model.ItemClass.Id;
                dto.ItemClass = model.ItemClass.Class;
            }

            return dto;
        }