class SlackSmartBot module Commands module General module Teams module Memos def delete_memo_team(user, team_name, memo_id) save_stats(__method__) if answer.empty? get_teams() team_id_user = "#{user.team_id}_#{user.name}" if @teams.key?(team_name.to_sym) assigned_members = @teams[team_name.to_sym].members.values.flatten assigned_members.uniq! all_team_members = assigned_members.dup team_members = [] if @teams[team_name.to_sym].channels.key?("members") @teams[team_name.to_sym].channels["members"].each do |ch| get_channels_name_and_id() unless @channels_id.key?(ch) tm = get_channel_members(@channels_id[ch]) tm.each do |m| user_info = find_user(m) team_members << "#{user_info.team_id}_#{user_info.name}" unless user_info.is_app_user or user_info.is_bot end end end team_members.flatten! team_members.uniq! all_team_members += team_members all_team_members.uniq! end if !@teams.key?(team_name.to_sym) respond "It seems like the team *#{team_name}* doesn't exist.\nRelated commands `add team TEAM_NAME PROPERTIES`, `see team TEAM_NAME`, `see teams`" elsif !(all_team_members + config.team_id_masters).flatten.include?(team_id_user) respond "You have to be a member of the team or a Master admin to be able to delete a memo of the team." elsif !@teams[team_name.to_sym].key?(:memos) or @teams[team_name.to_sym][:memos].empty? or !@teams[team_name.to_sym][:memos].memo_id.include?(memo_id.to_i) respond "It seems like there is no memo with id #{memo_id}" elsif @teams[team_name.to_sym][:memos].memo_id.include?(memo_id.to_i) memo_selected = @teams[team_name.to_sym][:memos].select { |m| m.memo_id == memo_id.to_i }[-1] if memo_selected.privacy == "personal" and memo_selected.user != team_id_user respond "Only the creator can delete a personal memo." else if answer.empty? message = @teams[team_name.to_sym][:memos].select { |memo| memo.memo_id == memo_id.to_i }.message.join ask "do you really want to delete the memo #{memo_id} (#{message}) from #{team_name} team? (yes/no)" else case answer when /yes/i, /yep/i, /sure/i answer_delete memos = [] message = "" get_teams() @teams[team_name.to_sym][:memos].each do |memo| if memo.memo_id != memo_id.to_i memos << memo else message = memo.message memos_file = File.join(config.path, "teams", "t_#{team_name}_memos.yaml.deleted") File.open(memos_file, "a+") { |file| file.flock(File::LOCK_EX) file.write("#{Utils::Encryption.encrypt([memo].to_yaml.gsub(/^---\s*$/, ""),config)}\n\n") file.flock(File::LOCK_UN) } end end @teams[team_name.to_sym][:memos] = memos update_teams() respond "The memo has been deleted from team #{team_name}: #{message}" when /no/i, /nope/i, /cancel/i answer_delete respond "Ok, the memo was not deleted" else respond "I don't understand" ask "do you really want to delete the memo from #{team_name} team? (yes/no)" end end end end end end end end end end