public ReturnModel <RoadmapItem> UpdateItem(RoadmapItem roadmapItem)
        {
            var result = new ReturnModel <RoadmapItem>();

            try
            {
                var updateRoadmapItem = new RoadmapItem()
                {
                    Title       = roadmapItem.Title,
                    Description = roadmapItem.Description,
                    TargetDate  = roadmapItem.TargetDate,
                    EndDate     = roadmapItem.EndDate,
                    RoadmapId   = roadmapItem.RoadmapId,
                    Status      = 1,
                    ParentId    = roadmapItem.ParentId
                };

                repository.Add(updateRoadmapItem);
                Save();

                result.Data = updateRoadmapItem;
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Exception = ex;
                result.Message   = ex.Message;
            }

            return(result);
        }
        public ReturnModel <RoadmapItem> Create(RoadmapItem roadmapItem)
        {
            var result = new ReturnModel <RoadmapItem>();

            try
            {
                var item = new RoadmapItem()
                {
                    Title     = roadmapItem.Title,
                    RoadmapId = roadmapItem.RoadmapId,
                    ParentId  = roadmapItem.ParentId
                };

                if (roadmapItem.Order > 0)
                {
                    item.Order = roadmapItem.Order;

                    var afterItems = repository.AsIQueryable(x => x.RoadmapId == roadmapItem.RoadmapId &&
                                                             x.ParentId == roadmapItem.ParentId &&
                                                             x.Status != (int)StatusEnum.DeletedRoadmapItem &&
                                                             (x.Order == item.Order || x.Order > item.Order))
                                     .OrderBy(x => x.Order)
                                     .ToList();

                    if (afterItems != null && afterItems.Count > 0)
                    {
                        foreach (var after in afterItems)
                        {
                            after.Order += 1;
                            repository.Update(after);
                        }
                    }
                }

                // En son sıraya ekler
                else
                {
                    var parent = repository.AsIQueryable(x => x.RoadmapId == roadmapItem.RoadmapId &&
                                                         x.Status != (int)StatusEnum.DeletedRoadmapItem &&
                                                         x.ParentId == roadmapItem.ParentId)
                                 .OrderByDescending(x => x.Order)
                                 .FirstOrDefault();

                    if (parent != null)
                    {
                        item.Order = parent.Order + 1;
                    }
                }

                repository.Add(item);
                Save();

                result.Data = item;
            }
            catch (Exception exception)
            {
                result.IsSuccess = false;
                result.Exception = exception;
                result.Message   = exception.Message;
            }

            return(result);
        }