public void Update(StaffSegmentViewModel model)
        {
            var data = _context.AsQueryable <Data.Entities.StaffSegment>().Where(x => x.ID == model.ID).FirstOrDefault();

            if (data == null)
            {
                throw new ArgumentException("Data does not exists.");
            }

            //check if lob already exists
            if (data.Name != model.Name || data.SegmentCategoryID != model.SegmentCategoryID)
            {
                var dataExists = _context.AsQueryable <Data.Entities.StaffSegment>().Where(x => x.Name == model.Name && x.SegmentCategoryID == model.SegmentCategoryID && x.Active == true).FirstOrDefault();
                if (dataExists != null)
                {
                    throw new ArgumentException("Segment name already exists in Segment Category.");
                }
            }

            data.Name = model.Name ?? data.Name;
            data.SegmentCategoryID = model.SegmentCategoryID;
            data.SortOrder         = model.SortOrder ?? data.SortOrder;
            data.ModifiedBy        = model.ModifiedBy;
            data.DateModified      = model.DateModified ?? DateTime.Now;
            data.Active            = model.Active ?? data.Active;
            data.Visible           = model.Visible ?? data.Visible;

            _context.Update <Data.Entities.StaffSegment>(data);
            _context.SaveChanges();
        }
        public StaffSegmentViewModel Create(StaffSegmentViewModel model)
        {
            var dataExists = _context.AsQueryable <Data.Entities.StaffSegment>().Where(x => x.Name == model.Name && x.Active == true && x.SegmentCategoryID == model.SegmentCategoryID).FirstOrDefault();

            if (dataExists != null)
            {
                throw new ArgumentException("Segment name already exists in segment category.");
            }

            var sortOrder = 0;
            var lastData  = _context.AsQueryable <Data.Entities.StaffSegment>().Where(x => x.Active == true && x.SegmentCategoryID == model.SegmentCategoryID).OrderByDescending(x => x.SortOrder).FirstOrDefault();

            if (lastData != null)
            {
                sortOrder = lastData.SortOrder + 1;
            }

            var data = new Data.Entities.StaffSegment()
            {
                Name = model.Name,
                SegmentCategoryID = model.SegmentCategoryID,
                SortOrder         = sortOrder,
                CreatedBy         = model.CreatedBy,
                ModifiedBy        = null,
                DateCreated       = model.DateCreated ?? DateTime.Now,
                DateModified      = null,
                Active            = model.Active ?? true,
                Visible           = model.Visible ?? true
            };

            _context.Add <Data.Entities.StaffSegment>(data);
            _context.SaveChanges();

            model.ID      = data.ID;
            model.Active  = data.Active;
            model.Visible = data.Visible;
            return(model);
        }