nekosune

Untitled

Aug 2nd, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 1.56 KB | None | 0 0
  1. require 'pp'
  2.  
  3. class TableData < ActiveRecord::Base
  4.   attr_accessible :fromdate, :tableData, :todate,:level
  5.   serialize :tableData,Hash
  6.  
  7.   def self.find_date(searchDate)
  8.     self.where{(fromdate <= searchDate) & (todate >= searchDate)}
  9.   end
  10.  
  11.  
  12.   def self.insert_date_range(fromDate,toDate,tableDat)
  13.     start=self.where{(fromdate <= fromDate) & (todate >= fromDate)}
  14.     if(start.any?)
  15.       start=start[0]
  16.       if start.fromdate===fromDate and start.todate === toDate
  17.         start.tableData=tabledat
  18.         return start.save
  19.        
  20.       elsif start.fromdate===fromDate
  21.         if(start.todate > toDate)
  22.  
  23.           start.fromdate=toDate+1
  24.           start.save
  25.         else
  26.           start.delete
  27.         end
  28.       else
  29.         olddate=start.todate
  30.         start.todate=fromDate-1
  31.         start.save
  32.         if(toDate<olddate)
  33.           remain=TableData.new(:tableData=>start.tableData,:fromdate=>toDate+1,:todate=>olddate,:level=>start.level)
  34.           remain.save
  35.         end
  36.       end
  37.     end
  38.     ending=self.where{(fromdate <= toDate) & (todate >= toDate)}
  39.     if(ending.any?)
  40.     ending=ending[0]
  41.     ending.fromdate=toDate+1
  42.     ending.save
  43.     end
  44.     TableData.where{(fromdate > fromDate) & (todate< toDate)}.destroy_all
  45.     lvl=TableData.maximum("level")
  46.     if(lvl.nil?)
  47.       lvl=0
  48.     end
  49.     lvl=lvl+1
  50.     newEntry=TableData.new(:tableData=>tableDat,:fromdate=>fromDate,:todate=>toDate,:level=>lvl)
  51.     newEntry.save
  52.   end
  53.  
  54.   def self.insert_date(date,tableDat)
  55.     self.insert_date_range(date,date,tableDat)
  56.   end
  57. end
Advertisement
Add Comment
Please, Sign In to add comment