forked from openSNP/snpr
-
Notifications
You must be signed in to change notification settings - Fork 6
/
zipgenotypingfiles.rb
37 lines (34 loc) · 1.6 KB
/
zipgenotypingfiles.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
require 'resque'
class Zipgenotypingfiles
@queue = :zipgenotyping
def self.perform(phenotype_id, variation, target_address)
@user_phenotypes = UserPhenotype.search do
with :phenotype_id, phenotype_id
fulltext variation
end.results
@genotyping_files = []
@user_phenotypes.each do |up|
@user = User.find_by_id(up.user_id)
print @user
if @user.genotypes.length != 0
@user.genotypes.each do |g|
@genotyping_files << g
end
end
end
if @genotyping_files != []
@time = Time.now.to_s.gsub(":","_")
if File.exists?(::Rails.root.to_s+"/public/data/zip/"+phenotype_id.to_s+"."+@time.to_s.gsub(" ","_")+".zip") == false
Zip::ZipFile.open(::Rails.root.to_s+"/public/data/zip/"+phenotype_id.to_s+"."+@time.to_s.gsub(" ","_")+".zip", Zip::ZipFile::CREATE) do |zipfile|
@genotyping_files.each do |gen_file|
zipfile.add("user"+gen_file.user_id.to_s+"_file"+gen_file.id.to_s+"_yearofbirth"+gen_file.user.yearofbirth+"_sex"+gen_file.user.sex+"."+gen_file.filetype+".txt", ::Rails.root.to_s+"/public/data/"+ gen_file.fs_filename)
end
end
end
system("chmod 777 "+::Rails.root.to_s+"/public/data/zip/"+phenotype_id.to_s+"."+@time.to_s.gsub(" ","_")+".zip")
UserMailer.genotyping_results(target_address,"/data/zip/"+phenotype_id.to_s+"."+@time.to_s.gsub(" ","_")+".zip",Phenotype.find_by_id(phenotype_id).characteristic,variation).deliver
else
UserMailer.no_genotyping_results(target_address,Phenotype.find_by_id(phenotype_id).characteristic,variation).deliver
end
end
end