Updated

app/models/deal / create_or_update.rb

A
38 lines of codes
4 methods
7.1 complexity/method
6 churn
28.39 complexity
0 duplications
class Deal::CreateOrUpdate
  1. Deal::CreateOrUpdate has no descriptive comment
def initialize(deal, params) @deal = deal @params = params end def call @deal.assign_attributes(@params) return false if @deal.invalid? set_lost_at_and_won_at if should_update_lost_at_or_won_at? @deal.save! @deal end private def should_update_lost_at_or_won_at? @deal.status_changed? || @deal.new_record? end def set_lost_at_and_won_at
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at has approx 9 statements
allow_edit = Current.account.deal_allow_edit_lost_at_won_at if @deal.won? @deal.won_at = Time.current unless allow_edit && @params[:won_at].present?
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls 'Time.current' 2 times Locations: 0 1
@deal.lost_at = nil
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls '@deal.lost_at = nil' 2 times Locations: 0 1
@deal.lost_reason = ''
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls '@deal.lost_reason = ''' 2 times Locations: 0 1
elsif @deal.lost? @deal.lost_at = Time.current unless allow_edit && @params[:lost_at].present?
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls 'Time.current' 2 times Locations: 0 1
@deal.won_at = nil
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls '@deal.won_at = nil' 2 times Locations: 0 1
else @deal.lost_at = nil
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls '@deal.lost_at = nil' 2 times Locations: 0 1
@deal.won_at = nil
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls '@deal.won_at = nil' 2 times Locations: 0 1
@deal.lost_reason = ''
  1. Deal::CreateOrUpdate#set_lost_at_and_won_at calls '@deal.lost_reason = ''' 2 times Locations: 0 1
end end end