Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'pp'
- class TableData < ActiveRecord::Base
- attr_accessible :fromdate, :tableData, :todate,:level
- serialize :tableData,Hash
- def self.find_date(searchDate)
- self.where{(fromdate <= searchDate) & (todate >= searchDate)}
- end
- def self.insert_date_range(fromDate,toDate,tableDat)
- start=self.where{(fromdate <= fromDate) & (todate >= fromDate)}
- if(start.any?)
- start=start[0]
- if start.fromdate===fromDate and start.todate === toDate
- start.tableData=tabledat
- return start.save
- elsif start.fromdate===fromDate
- if(start.todate > toDate)
- start.fromdate=toDate+1
- start.save
- else
- start.delete
- end
- else
- olddate=start.todate
- start.todate=fromDate-1
- start.save
- if(toDate<olddate)
- remain=TableData.new(:tableData=>start.tableData,:fromdate=>toDate+1,:todate=>olddate,:level=>start.level)
- remain.save
- end
- end
- end
- ending=self.where{(fromdate <= toDate) & (todate >= toDate)}
- if(ending.any?)
- ending=ending[0]
- ending.fromdate=toDate+1
- ending.save
- end
- TableData.where{(fromdate > fromDate) & (todate< toDate)}.destroy_all
- lvl=TableData.maximum("level")
- if(lvl.nil?)
- lvl=0
- end
- lvl=lvl+1
- newEntry=TableData.new(:tableData=>tableDat,:fromdate=>fromDate,:todate=>toDate,:level=>lvl)
- newEntry.save
- end
- def self.insert_date(date,tableDat)
- self.insert_date_range(date,date,tableDat)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment