Ignore:
Timestamp:
11/13/19 19:37:12 (5 years ago)
Author:
nanardon
Message:

Add Employmentsummary objects (summarize user activity)

Location:
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql.pm

    r2274 r2296  
    1818our $VERSION = (q$Rev$ =~ /^Rev: (\d+) /)[0]; 
    1919 
    20 sub SCHEMA_VERSION { 35 }; 
     20sub SCHEMA_VERSION { 36 }; 
    2121 
    2222=head1 NAME 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Employment.pm

    r2204 r2296  
    345345    if ($res) { 
    346346        my $ouser = $base->get_object('user', $user); 
     347        $ouser->StoreEmployementSummary; 
    347348        $ouser->applyCurrentEmployment; 
    348349    } 
     
    362363        }; 
    363364 
     365        $user->StoreEmployementSummary; 
    364366        $user->applyCurrentEmployment; 
    365367    } 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r2288 r2296  
    21072107    }); 
    21082108    $sth->execute($self->id); 
     2109    warn $self->id; 
    21092110    my @values; 
    21102111    my $prevContrat = ':'; 
     
    21172118        my $curContrat  = $Emp->get_attributes('contratType') || ''; 
    21182119        my $DTfirstday  = DateTime::Format::Pg->parse_datetime( $Emp->get_attributes('firstday') ); 
     2120 
     2121        warn $DTfirstday->ymd('-'); 
    21192122 
    21202123        if ($curContrat ne $prevContrat) { 
     
    21502153 
    21512154    @values 
     2155} 
     2156 
     2157=head2 StoreEmployementSummary 
     2158 
     2159Store into database the employment summary 
     2160 
     2161=cut 
     2162 
     2163sub StoreEmployementSummary { 
     2164    my ( $self ) = @_; 
     2165 
     2166    my $stu = $self->base->db->prepare_cached(q{ 
     2167        UPDATE employmentsum set 
     2168            "user" = ?, 
     2169            firstday = ?, 
     2170            lastday  = ?, 
     2171            contrattype = ?, 
     2172            nodelete = 't' 
     2173        WHERE name = ? 
     2174    }); 
     2175    my $sti = $self->base->db->prepare_cached(q{ 
     2176        INSERT INTO employmentsum 
     2177        ("user", firstday, lastday, contrattype, name, nodelete) 
     2178        VALUES 
     2179        (?, ?, ?, ?, ?, 1) 
     2180    }); 
     2181 
     2182    my @values = $self->EmploymentSummary; 
     2183 
     2184    my @names; 
     2185 
     2186    foreach (@values) { 
     2187        my $name = $self->id . '-' . $_->{firstday}; 
     2188        my $res = $stu->execute($self->id, $_->{firstday}, $_->{lastday}, $_->{contrattype}, $name); 
     2189        if ($res == 0) { 
     2190            $sti->execute($self->id, $_->{firstday}, $_->{lastday}, $_->{contrattype}, $name); 
     2191        } 
     2192        push(@names, $name); 
     2193    } 
     2194 
     2195    my $std = $self->base->db->prepare_cached(q{ 
     2196        DELETE FROM employmentsum WHERE "user" = ? AND name != ALL (?) 
     2197    }); 
     2198    $std->execute($self->id, \@names); 
    21522199} 
    21532200 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/upgrade.pm

    r2273 r2296  
    12691269            ], 
    12701270        }, 
     1271        { 
     1272            ver => 36, 
     1273            sql => [ 
     1274                q{ 
     1275                CREATE TABLE public.employmentsum 
     1276                ( 
     1277                  "user" text NOT NULL, 
     1278                  firstday date NOT NULL DEFAULT now(), 
     1279                  lastday date, 
     1280                  contrattype text, 
     1281                  CONSTRAINT employmentsum_pkey PRIMARY KEY (name), 
     1282                  CONSTRAINT employmentsum_check CHECK (lastday IS NULL OR firstday <= lastday), 
     1283                  CONSTRAINT employmentsum_name_user_fkey FOREIGN KEY ("user") 
     1284                      REFERENCES public."user" (name) MATCH SIMPLE 
     1285                      ON UPDATE CASCADE ON DELETE CASCADE 
     1286                ) 
     1287                INHERITS (public.objects) 
     1288                WITH ( 
     1289                  OIDS=FALSE 
     1290                ); 
     1291 
     1292                CREATE INDEX fki_employmentsum_name_user_fkey 
     1293                  ON public.employmentsum 
     1294                  USING btree 
     1295                  (name COLLATE pg_catalog."default"); 
     1296 
     1297                CREATE INDEX fki_employmentsum_user_fkey 
     1298                  ON public.employmentsum 
     1299                  USING btree 
     1300                  (name COLLATE pg_catalog."default"); 
     1301 
     1302                CREATE INDEX employmentsum_exported_idx 
     1303                  ON public.employmentsum 
     1304                  USING btree 
     1305                  (exported); 
     1306 
     1307                CREATE INDEX employmentsum_rev_idx 
     1308                  ON public.employmentsum 
     1309                  USING btree 
     1310                  (rev); 
     1311 
     1312                CREATE TRIGGER employmentsum_rev_tg 
     1313                  BEFORE INSERT OR UPDATE OR DELETE 
     1314                  ON public.employmentsum 
     1315                  FOR EACH ROW 
     1316                  EXECUTE PROCEDURE public.rev_tg_f(); 
     1317                } 
     1318            ], 
     1319        }, 
    12711320    ); 
    12721321 
Note: See TracChangeset for help on using the changeset viewer.