public void Save(MapComponentViewModel mapcomponentvm)
        {
            Years year = u_repo.GetYear(mapcomponentvm.YearsId);

            if (year == null || mapcomponentvm.YearsId <= 0)
            {
                throw new MapException(Properties.Settings.Default.ExceptionMapComponentInvalid);
            }


            MapComponent mapcomponent = GetMapComponentFromViewModel(mapcomponentvm);


            if (mapcomponent.Id > 0)
            {
                UpdateMapComponent(mapcomponent, mapcomponentvm.YearsId);
            }
            else
            {
                CreateMapComponent(mapcomponent, mapcomponentvm.YearsId);
            }


            MapComponentViewModel newMapComponent = u_repo.GetMapComponent(mapcomponent.Id).ToMapComponentViewModel();

            newMapComponent.CopyTo(mapcomponentvm);
        }
        /// <summary>
        /// Returns a mapcomponent from a mapcomponentviewmodel
        /// </summary>
        /// <param name="mapcomponent"></param>
        /// <returns></returns>
        public static MapComponent ToMapComponent(this MapComponentViewModel mapcomponentvm)
        {
            MapComponent mapcomponent = new MapComponent();

            mapcomponentvm.CopyTo(mapcomponent);
            return(mapcomponent);
        }
        /// <summary>
        /// Returns a mapcomponent from a mapcomponent viewmodel and copied from mapcomponent
        /// </summary>
        /// <param name="mapcomponent"></param>
        /// <param name="old"></param>
        /// <returns></returns>
        public static MapComponent ToMapComponent(this MapComponentViewModel mapcomponentvm, MapComponent old)
        {
            mapcomponentvm.isSeedling    = old.isSeedling;
            mapcomponentvm.ExternalId    = old.ExternalId;
            mapcomponentvm.PickingNumber = old.PickingNumber;

            mapcomponentvm.CopyTo(old);

            return(old);
        }