public RegisteredAnimal MarkAs(string userId, Guid rAnimalId, Status status, string title, string description, Coordinate coordinates)
        {
            if (status.Equals(Status.Found))
            {
                var foundRAnimal = _registeredAnimalProvider.Get(rAnimalId);
                if (foundRAnimal == null)
                {
                    throw new ApiException(HttpStatusCode.Forbidden, ApiError.NotFound);
                }
                if (!foundRAnimal.UserId.Equals(userId))
                {
                    throw new ApiException(HttpStatusCode.Forbidden, ApiError.AccessForbidden);
                }

                //remove from animal list
                _animalDataProvider.Remove(foundRAnimal.Animal);

                //remove link
                foundRAnimal.Animal = null;
                _registeredAnimalProvider.Update(foundRAnimal);

                _unitOfWork.Commit();

                return(RegisteredAnimalMapper.DtoS(foundRAnimal));
            }

            var lostRAnimal = _registeredAnimalProvider.Get(rAnimalId);

            if (lostRAnimal == null)
            {
                throw new ApiException(HttpStatusCode.Forbidden, ApiError.NotFound);
            }
            if (!lostRAnimal.UserId.Equals(userId))
            {
                throw new ApiException(HttpStatusCode.Forbidden, ApiError.AccessForbidden);
            }

            var animal = new DAL.Entity.Animal()
            {
                Image       = lostRAnimal.Image,
                Title       = string.IsNullOrEmpty(title) ? lostRAnimal.Name : title,
                Description = string.IsNullOrEmpty(description) ? "" : description,
                UploadDate  = DateTimeOffset.Now,
                Status      = Status.Lost,
                Coordinates = new List <DAL.Entity.Coordinate>()
                {
                    CoordinateMapper.StoD(coordinates)
                }
            };

            lostRAnimal.Animal = animal;

            var updatedAnimal = _registeredAnimalProvider.Update(lostRAnimal);

            _unitOfWork.Commit();

            return(RegisteredAnimalMapper.DtoS(updatedAnimal));
        }
 public static SAnimal DtoS(DAnimal source)
 {
     return(BaseMapper.DtoS(source));
 }