/****
         * IEnumerable<apan_CommunityMap> communityMaps = (from m in context.apan_CommunityMap
         *                                                      where m.GroupId == groupId
         *                                                      select m).ToList();
         *
         *      int totalCount = communityMaps.Count();
         *      switch (sortBy)
         *      {
         *          case SortBy.Title:
         *              if (sortOrder == SortOrder.Descending)
         *                  communityMaps = communityMaps.OrderByDescending(m => m.Title).Skip(pageIndex * pageSize).Take(pageSize);
         *              else
         *                  communityMaps = communityMaps.OrderBy(m => m.Title).Skip(pageIndex * pageSize).Take(pageSize);
         *              break;
         *          case SortBy.CreatedDateTimeUtc:
         *              if (sortOrder == SortOrder.Descending)
         *                  communityMaps = communityMaps.OrderByDescending(m => m.CreatedDateTimeUtc).Skip(pageIndex * pageSize).Take(pageSize);
         *              else
         *                  communityMaps = communityMaps.OrderBy(m => m.CreatedDateTimeUtc).Skip(pageIndex * pageSize).Take(pageSize);
         *              break;
         *          case SortBy.ModifiedDateTimeUtc:
         *          default:
         *              if (sortOrder == SortOrder.Descending)
         *                  communityMaps = communityMaps.OrderByDescending(m => m.ModifiedDateTimeUtc).Skip(pageIndex * pageSize).Take(pageSize);
         *              else
         *                  communityMaps = communityMaps.OrderBy(m => m.ModifiedDateTimeUtc).Skip(pageIndex * pageSize).Take(pageSize);
         *              break;
         *      }
         *
         *      return new PagedList<Map>(
         *          communityMaps.Select(n => new Map { Id = n.Id, Title = n.Title, Description = n.Description, GroupId = n.GroupId, CreatedByUserId = n.CreatedByUserId, CreatedDateTimeUtc = n.CreatedDateTimeUtc, ModifiedByUserId = n.ModifiedByUserId, ModifiedDateTimeUtc = n.ModifiedDateTimeUtc }),
         *          pageSize,
         *          pageIndex,
         *          totalCount);
         */


        internal static CoriaMapBook GetCoriaMapBookByGroupId_MapBookName(int groupId, string mapBookName)
        {
            Func <MapBook, CoriaMapBook> toCoriaMapBook = (MapBook fromMapBook) => ToCoriaMapBook(fromMapBook, new CoriaMapBook());
            MapBook mapbook = GetMapBookByGroupId_MapBookName(groupId, mapBookName);

            return(toCoriaMapBook(mapbook));
        }
        internal static Map CreateMap(Map map)
        {
            MapBook mapbook = GetMapBook(map.MapTypeId);

            if (mapbook != null)
            {
                //if(map.MapBook.ApplicationId != null)
                try
                {
                    using (KhartaDataModel dbcontext = new KhartaDataModel())
                    {
                        map = dbcontext.Maps.Add(map);
                        dbcontext.SaveChanges();
                        return(map);
                    }
                }
                catch (Exception ex)
                {
                    string error = ex.InnerException.Message;
                    InternalApi.Utility.CoriaException csEx = new Utility.CoriaException(CSExceptionType.LoggableException, ex.InnerException.Message, null);
                    csEx.Log();

                    return(map);
                }
            }
            else
            {
                return(map);
            }
        }
 internal static void DeleteCoriaMapBookApplication(Guid id)
 {
     using (KhartaDataModel dbcontext = new KhartaDataModel())
     {
         var result = (from m in dbcontext.MapBooks
                       where m.ApplicationId.Equals(id)
                       select m).FirstOrDefault();
         MapBook mapbook = result;
         dbcontext.MapBooks.Remove(mapbook);
         dbcontext.SaveChanges();
     }
 }
        private static MapBook GetMapBookByGroupId_MapBookName(int groupId, string mapBookName)
        {
            using (KhartaDataModel dbcontext = new KhartaDataModel())
            {
                MapBook mapbook = (from m in dbcontext.MapBooks
                                   where m.GroupId.Equals(groupId) &&
                                   m.SafeName.Equals(mapBookName)
                                   select m).FirstOrDefault();

                return(mapbook);
            }
        }
        internal static PagedList <CoriaMap> CoriaMapPagedList(MapBook mapbook, int pageIndex, int pageSize, string sortBy, string sortOrder)
        {
            if (mapbook == null)
            {
                return(null);
            }
            // Func<Map, CoriaMap> toCoriaMap = (Map fromMap) => ToCoriaMap(fromMap, new CoriaMap());

            //PagedList<CoriaMap > coriaMapList = new PagedList<CoriaMap>();
            PagedList <Map> MapList    = MapPagedList(mapbook, pageIndex, pageSize, sortBy, sortOrder);
            int             totalCount = MapList.Count();

            return(new PagedList <CoriaMap>(
                       MapList.Select(n => new CoriaMap(n)),
                       pageSize,
                       pageIndex,
                       totalCount));
        }
 internal static PagedList <Map> MapPagedList(MapBook mapbook, int pageIndex, int pageSize, string sortBy, string sortOrder)
 {
     if (mapbook == null)
     {
         return(null);
     }
     using (KhartaDataModel dbcontext = new KhartaDataModel())
     {
         int skip = pageIndex * pageSize;
         // PagedList<Map> mapList = new PagedList<Map>();
         IList <Map> mapList = new List <Map>();
         mapList = (from m in dbcontext.Maps
                    where m.MapTypeId.Equals(mapbook.ApplicationId)
                    orderby m.SafeName ascending
                    select m).Skip(skip).Take(pageSize).ToList();
         int totalCount = mapList.Count();
         return(new PagedList <Map>(mapList, pageSize, pageIndex, totalCount));;
     }
 }
        internal static CoriaMapBook CreateNewMapBookApplication(CoriaMapBook coriaMapBook)
        {
            Func <CoriaMapBook, MapBook> toMapBook      = (CoriaMapBook fromCoriaMapBook) => ToMapBook(fromCoriaMapBook, new MapBook());
            Func <MapBook, CoriaMapBook> toCoriaMapBook = (MapBook fromMapBook) => ToCoriaMapBook(fromMapBook, new CoriaMapBook());

            try
            {
                using (KhartaDataModel dbcontext = new KhartaDataModel())
                {
                    MapBook mapbook = dbcontext.MapBooks.Add(toMapBook(coriaMapBook));
                    dbcontext.SaveChanges();
                    return(toCoriaMapBook(mapbook));
                }
            }
            catch (Exception ex)
            {
                //TODO: log exception
                var exception = ex;
                throw;
            }
        }
 internal static MapBook ToMapBook(CoriaMapBook fromCoriaMapBook, MapBook toMapBook)
 {
     return((MapBook)ConvertFromPropertiesTo(fromCoriaMapBook, toMapBook));
 }
 internal static CoriaMapBook ToCoriaMapBook(MapBook fromMapBook, CoriaMapBook toCoriaMapBook)
 {
     return((CoriaMapBook)ConvertFromPropertiesTo(fromMapBook, toCoriaMapBook));
 }