{"version":3,"file":"main.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAiE;AACJ;AAEjB;AACP;AACC;IAOzB,cAAc,SAAd,cAAc;IAKvB,YAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAJzB,gBAAW,GAAG,kEAAW,CAAC;QAGjC,kBAAa,GAAG,GAAG,0EAAmB,IAAI,8EAAuB,EAAE,CAAC;IACjC,CAAC;IACpC,eAAe;QACX,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC3B,mDAAM,CAAC,yDAA8B,CAAC,CACzC,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;CACJ;;YAzBQ,8CAAK;;AASD,cAAc;IAL1B,wDAAS,CAAC;QACP,QAAQ,EAAE,UAAU;QACpB,uEAAqC;;KAExC,CAAC;GACW,cAAc,CAgB1B;AAhB0B;;;;;;;;;;;;;;;;;;;;;;;;ACZoB;AACI;AACV;AACE;AACQ;AACV;IAa5B,WAAW,SAAX,WAAW;CAAG;AAAd,WAAW;IAXvB,uDAAQ,CAAC;QACN,YAAY,EAAE,CAAC,4DAAc,CAAC;QAC9B,OAAO,EAAE;YACL,yDAAY;YACZ,iDAAY;YACZ,6DAAc;YACd,sEAAuB,CAAC;gBACpB,MAAM,EAAE,CAAC,oDAAU,CAAC;aACvB,CAAC;SACL;KACJ,CAAC;GACW,WAAW,CAAG;AAAH;;;;;;;;;;;;;;;;;;ACjBoD;AACzB;AAEnD,MAAM,GAAG,GAAG,IAAI,oFAAc,EAAE,CAAC;AAE1B,MAAM,UAAU,GAAwB;IAC3C,qBAAqB;IACrB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,QAAQ;IACb,mFAAmF;IACnF,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IAC5B,SAAS,EAAE,4DAAc;CAC5B,CAAC;;;;;;;;;;;;;;;;;;ACZ6E;AACpC;AAE3C,MAAM,GAAG,GAAG,IAAI,oFAAc,EAAE,CAAC;AAE1B,MAAM,sBAAsB,GAAwB;IACvD,+BAA+B;IAC/B,IAAI,EAAE,qBAAqB;IAC3B,GAAG,EAAE,cAAc;IACnB,6FAA6F;IAC7F,SAAS,EAAE,mEAA0D;CACxE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNqB;AACqB;AACb;AACiC;AACH;AAEf;AACoC;AACtC;IAS/B,oCAAoC,SAApC,oCAAoC;IAW7C,YACY,GAAmB,EACnB,KAA2B;QAD3B,QAAG,GAAH,GAAG,CAAgB;QACnB,UAAK,GAAL,KAAK,CAAsB;QAJvC,WAAM,GAAG,IAAI,CAAC;QACd,qBAAgB,GAAG,IAAI,+CAAa,CAAgC,CAAC,CAAC,CAAC;IAIpE,CAAC;IAEJ,QAAQ;QACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,+CAAwB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yDAAkC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,eAAe;QACX,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IACD,WAAW;QACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,gBAAgB;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAM,CAAC,kDAAwB,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAM,CAAC,6CAAsB,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC7B,mDAAM,CAAC,4DAAqC,CAAC,EAC7C,mDAAG,CAAC,CAAC,CAAC,EAAE,CAAC,sDAAK,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACjC,mDAAM,CAAC,yDAA+B,CAAC,EACvC,mDAAG,CAAC,QAAQ,CAAC,EAAE,CACX,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,qDAAqD;YAC3D,QAAQ;SACX,CAAC,CACL,CACJ,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAM,CAAC,qDAA2B,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,wBAAwB,GAAG,oDAAa,CAAC;YAC1C,IAAI,CAAC,cAAc;YACnB,OAAO;YACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uDAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC,CAAC,IAAI,CACH,mDAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,8CAA8C;YACpD,MAAM;YACN,QAAQ;SACX,CAAC,CACL,EACD,mDAAG,CACC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CACnB,MAAM,CAAC,MAAM,CACT,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;YACtC,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAC/C,CAAC,CAAC,CAAC,CACX,EACD,mDAAG,CAAC,QAAQ,CAAC,EAAE,CACX,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,uDAAuD;YAC7D,QAAQ;SACX,CAAC,CACL,CACJ,CAAC;QACF,oDAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAChD,IAAI,CAAC,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAClC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CACf,IAAI,yDAA+B,CAAC;gBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,OAAO,CAAC,SAAS;aAClC,CAAC,CACL,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC;IACD,kBAAkB,KAAI,CAAC;IACvB,WAAW,CAAC,KAAK;QACb,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACJ;;YAjGQ,oFAAc;YANN,8CAAK;;;4BAmBjB,iDAAK;;AAHG,oCAAoC;IALhD,yDAAS,CAAC;QACP,QAAQ,EAAE,kCAAkC;QAC5C,+FAA6D;;KAEhE,CAAC;GACW,oCAAoC,CAuFhD;AAvFgD;;;;;;;;;;;;;;;;;ACvBS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAjB;AACM;AACL;AACmC;AAC/B;AACiC;AACQ;AACpC;AACiB;AAC8B;AACxC;AAC4B;AAC6B;AACA;AAC7B;AACS;AAC7B;AACY;AACE;AACD;AACE;AACwE;AAC7B;IA0C/G,wBAAwB,SAAxB,wBAAwB;CAAG;AAA3B,wBAAwB;IAxCpC,wDAAQ,CAAC;QACN,YAAY,EAAE;YACV,gGAAoC;YACpC,2GAA2B;YAC3B,+FAAuB;YACvB,4HAAgC;YAChC,4HAAgC;YAChC,+FAAuB;YACvB,yGAA0B;YAC1B,4EAAiB;YACjB,mKAA4C;YAC5C,sIAAmC;SACtC;QACD,OAAO,EAAE;YACL,0DAAY;YACZ,8DAAc;YACd,+DAAY;YACZ,uEAAuB,CAAC;gBACpB,MAAM,EAAE,CAAC,6EAAsB,CAAC;aACnC,CAAC;YACF,gEAAsB,CAClB,2FAAmD,EACnD,sEAA8B,CACjC;YACD,gEAAsB,CAClB,8FAAoD,EACpD,wEAA8B,CACjC;YACD,gEAAsB,CAClB,+FAAoD,EACpD,yEAA8B,CACjC;YACD,oEAAwB,CAAC;gBACrB,wFAAyB;gBACzB,0FAAyB;gBACzB,2FAAyB;aAC5B,CAAC;SACL;QACD,OAAO,EAAE,CAAC,gGAAoC,EAAE,2GAA2B,CAAC;KAC/E,CAAC;GACW,wBAAwB,CAAG;AAAH;;;;;;;;;;;;;;;;;;;;;;;;;;AChEa;AACP;AACP;AAEC;AAC2B;AACA;AAEV;AACyB;IAQlE,yBAAyB,SAAzB,yBAA0B,SAAQ,2DAAc;IAMzD,YACY,IAAgB,EACd,GAAmB,EACnB,SAAoC;QAE9C,KAAK,CAAC,SAAS,CAAC,CAAC;QAJT,SAAI,GAAJ,IAAI,CAAY;QACd,QAAG,GAAH,GAAG,CAAgB;QACnB,cAAS,GAAT,SAAS,CAA2B;QAR1C,QAAG,GAAG,GAAG,8EAAuB,oBAAoB,CAAC;QACrD,2BAAsB,GAAG,GAAG,8EAAuB,qBAAqB,CAAC;QACzE,8BAAyB,GAAG,GAAG,8EAAuB,yBAAyB,CAAC;QAChF,0BAAqB,GAAG,GAAG,8EAAuB,qBAAqB,CAAC;IAQhF,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CACpD,mDAAG,CAAC,GAAG,CAAC,EAAE,CACN,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,GAAG,CAAC;YACJ,EAAE,EAAE,CAAC,CAAC,aAAa;YACnB,MAAM,EAAE;gBACJ,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC9C,WAAW,EACP,CAAC,IAAI,CAAC,CAAC,MAAM;oBACT,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;oBACtB,CAAC,CAAC,CAAC,CAAC,aAAa;aAC5B;SACJ,CAAC,CAAC,CACN,CACJ,CAAC;IACN,CAAC;IACD,GAAG,CACC,kBAAuC;QAEvC,iHAAiH;QAEjH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsC,IAAI,CAAC,GAAG,EAAE;YAChE,qBAAqB,EAAE,kBAAkB;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,sBAAsB;QAClB,OAAO,IAAI,CAAC,IAAI;aACX,GAAG,CAAuB,IAAI,CAAC,sBAAsB,CAAC;aACtD,IAAI,CACD,mDAAG,CAAC,WAAW,CAAC,EAAE,CACd,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClB,GAAG,CAAC;YACJ,uCAAuC;YACvC,EAAE,EAAE,CAAC,CAAC,cAAc;SACvB,CAAC,CAAC,CACN,CACJ,CAAC;IACV,CAAC;IACD,sBAAsB,CAClB,mBAAyC;QAEzC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,kDAAkD;YACxD,mBAAmB;SACtB,CAAC,CAAC;QACH,yGAAyG;QAEzG,OAAO,IAAI,CAAC,IAAI;aACX,GAAG,CACA,IAAI,CAAC,sBAAsB,EAC3B;YACI,sBAAsB,EAAE,mBAAmB;SAC9C,CACJ;aACA,IAAI,CACD,mDAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAChB,GAAG,WAAW;YACd,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/B,GAAG,CAAC;gBACJ,uCAAuC;gBACvC,EAAE,EAAE,CAAC,CAAC,cAAc;aACvB,CAAC,CAAC;SACN,CAAC,CAAC,CACN,CAAC;IACV,CAAC;IACD,0BAA0B;QACtB,OAAO,IAAI,CAAC,IAAI;aACX,GAAG,CAMF,IAAI,CAAC,yBAAyB,CAAC;aAChC,IAAI,CACD,mDAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EACzC,mDAAG,CAAC,IAAI,CAAC,EAAE,CACP,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,sBAAsB;YAC/B,KAAK,EAAE,CAAC,CAAC,wBAAwB;SACpC,CAAC,CAAC,CACN,CACJ,CAAC;IACV,CAAC;IACD,sBAAsB;QAClB,OAAO,IAAI,CAAC,IAAI;aACX,GAAG,CAAQ,IAAI,CAAC,qBAAqB,CAAC;aACtC,IAAI,CAAC,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,sBAAsB,CAClB,YAAkC;QAElC,2GAA2G;QAE3G,OAAO,IAAI,CAAC,IAAI;aACX,GAAG,CAAwB,IAAI,CAAC,qBAAqB,EAAE;YACpD,sBAAsB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3C,kBAAkB,EAAE,CAAC,CAAC,WAAW;gBACjC,aAAa,EAAE,CAAC,CAAC,MAAM;gBACvB,WAAW,EAAE,CAAC,CAAC,WAAW;aAC7B,CAAC,CAAC;SACN,CAAC;aACD,IAAI,CACD,mDAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACT,GAAG,IAAI;YACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzB,MAAM,EAAE;oBACJ,UAAU,EACN,CAAC,IAAI,CAAC,CAAC,MAAM;wBACT,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;wBACrB,CAAC,CAAC,2DAAsB;oBAChC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;iBACjD;aACJ,CAAC,CAAC;SACN,CAAC,CAAC,CACN,CAAC;IACV,CAAC;IAEO,cAAc,CAAC,IAAS;QAC5B,OAAO;YACH,GAAG,IAAI;YACP,WAAW,EAAE,IAAI,CAAC,kBAAkB;YACpC,IAAI,EAAE,IAAI,CAAC,kBAAkB;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,WAAW,EAAE,IAAI,CAAC,sBAAsB;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACtC,qBAAqB;SACxB,CAAC;IACN,CAAC;CACJ;;YArKQ,4DAAU;YASV,oFAAc;YAPd,8CAAK;;AAeD,yBAAyB;IAHrC,yDAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;GACW,yBAAyB,CAoJrC;AApJqC;;;;;;;;;;;;;;;;;;;;;;;;ACjByC;AAGG;IAUrE,2BAA2B,SAA3B,2BAA2B;IAapC,YAAoB,GAAmB;QAAnB,QAAG,GAAH,GAAG,CAAgB;QAZvC,mBAAc,GAAG,IAAI,CAAC;QACtB,2BAAsB,GAAG,KAAK,CAAC;QAUd,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;IACnB,CAAC;IAT3C,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CACvB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,oBAAoB,CAClE,CAAC;IACN,CAAC;IAOD,QAAQ,KAAI,CAAC;IACb,oBAAoB,CAAC,MAAe;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,kDAAkD;YACxD,MAAM;SACT,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;IACzC,CAAC;IACD,aAAa,CAAC,IAAa;QACvB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,2CAA2C;YACjD,IAAI;SACP,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACzE,CAAC;CACJ;;YAxCQ,oFAAc;;;uBAalB,gDAAK;wBAML,gDAAK;4BACL,gDAAK;wBAEL,iDAAM;;AAZE,2BAA2B;IALvC,wDAAS,CAAC;QACP,QAAQ,EAAE,wBAAwB;QAClC,qFAAmD;;KAEtD,CAAC;GACW,2BAA2B,CA8BvC;AA9BuC;;;;;;;;;;;;;;;;;;;;;;;;;ACbuC;AAC3C;AAEO;IAW9B,4CAA4C,SAA5C,4CAA4C;IAarD,YAAoB,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;QADpB,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;IACrB,CAAC;IAZzC,IAAoB,QAAQ,CAAC,KAA4B;QACrD,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChC,KAAK,EAAE,CAAC,CAAC,WAAW;gBACpB,KAAK,EAAE,CAAC,CAAC,aAAa;aACzB,CAAC,CAAC,CAAC;SACP;IACL,CAAC;IAOD,QAAQ,KAAI,CAAC;IACb,qBAAqB,CAAC,MAAyB;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACf,yDAAiC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAC3D,CAAC;IACN,CAAC;CACJ;;YAlCQ,8CAAK;;;uBAcT,gDAAK;4BAQL,gDAAK;wBAEL,gDAAK;wBACL,iDAAM;;AAZE,4CAA4C;IALxD,wDAAS,CAAC;QACP,QAAQ,EAAE,2CAA2C;QACrD,wGAAsE;;KAEzE,CAAC;GACW,4CAA4C,CAqBxD;AArBwD;;;;;;;;;;;;;;;;;;;;;;;;;;ACdsB;AAKG;AACjB;AAC5B;IAQxB,mCAAmC,SAAnC,mCAAmC;IAwD5C,YAAoB,GAAmB;QAAnB,QAAG,GAAH,GAAG,CAAgB;QALtB,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;QACnD,wBAAmB,GAAG,IAAI,+CAAa,CAAoB,CAAC,CAAC,CAAC;QACxE,WAAM,GAAqC,EAAE,CAAC;IAGJ,CAAC;IApD3C,IAAoB,aAAa,CAAC,KAAqB;QACnD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,uDAAuD;YAC7D,KAAK;SACR,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;YACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAClC,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CACtD,CAAC;YACF,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;aAC/C;SACJ;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;YAAE,OAAO;SAAE;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAC/B,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CACxC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,mDAAmD;YACzD,KAAK;YACL,GAAG;SACN,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE;YACN,OAAO;SACV;QACD,GAAG,CAAC,cAAc,CAAC;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAS;SACpB,CAAC,CAAC;QACH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,UAAU,KAAK,2DAAsB,EAAE;YAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;SAC1C;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,0DAAqB,EAAE;YAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;SACzC;IACL,CAAC;IACD,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAQD,QAAQ,KAAI,CAAC;IACb,aAAa,CAAC,IAAqB;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,mDAAmD;YACzD,IAAI;YACJ,wBAAwB,EAAE,IAAI,CAAC,MAAM;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC,CAAC;IACP,CAAC;IACD,aAAa,CAAC,IAAqB;QAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,mDAAmD;YACzD,CAAC,EAAE,IAAI;YACP,wBAAwB,EAAE,IAAI,CAAC,MAAM;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,2DAAsB,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;QAE/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,eAAe,CAAC,IAAqB;QACjC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,qDAAqD;YAC3D,CAAC,EAAE,IAAI;YACP,wBAAwB,EAAE,IAAI,CAAC,MAAM;SACxC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAChD,CAAC;QACF,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SACjE;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAG7B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,aAAa,CAAC,IAAqB;QAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,mDAAmD;YACzD,IAAI;SACP,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1E,CAAC;CACJ;;YAtHQ,oFAAc;;;uBAWlB,gDAAK;oBACL,gDAAK;4BAEL,gDAAK;wBA+CL,iDAAM;kCACN,iDAAM;;AApDE,mCAAmC;IAL/C,wDAAS,CAAC;QACP,QAAQ,EAAE,iCAAiC;QAC3C,8FAA4D;;KAE/D,CAAC;GACW,mCAAmC,CA4G/C;AA5G+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRzB;AACqB;AACb;AACkB;AACD;AACA;AAIkC;AAC5C;AAG6B;IAOtD,gCAAgC,SAAhC,gCAAgC;IAQzC,YACY,KAA2B,EAC3B,GAAmB;QADnB,UAAK,GAAL,KAAK,CAAsB;QAC3B,QAAG,GAAH,GAAG,CAAgB;QALd,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;QACnD,uBAAkB,GAAG,IAAI,+CAAa,CAAU,CAAC,CAAC,CAAC;QACrD,WAAM,GAAG,IAAI,CAAC;IAInB,CAAC;IAEJ,QAAQ;QACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yDAA+B,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mDAAyB,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oDAA0B,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IACD,WAAW;QACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,gBAAgB;QACZ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACtC,mDAAM,CAAC,0EAAmB,CAAC,EAC3B,oDAAG,CAAC,CAAC,CAAC,EAAE,CAAC,sDAAK,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,IAAI,CAAC,mBAAmB;aACnB,IAAI,CAAC,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAClC,SAAS,CAAC,WAAW,CAAC,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACb,IAAI,EAAE,0DAA0D;gBAChE,WAAW;gBACX,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC;aACnD,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACxB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAChD,CAAC;QACN,CAAC,CAAC,CAAC;QACP,SAAS;QACT,mDAAmD;QACnD,qBAAqB;QACrB,gDAAgD;QAChD,KAAK;QACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC/B,mDAAM,CAAC,mFAA4B,CAAC,EACpC,oDAAG,CAAC,CAAC,CAAC,EAAE,CACJ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACR,KAAK,EAAE,CAAC,CAAC,QAAQ;YACjB,KAAK,EAAE,CAAC,CAAC,QAAQ;SACpB,CAAC,CAAC,CACN,CACJ,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC/B,mDAAM,CAAC,oDAA0B,CAAC,EAClC,oDAAG,CAAC,CAAC,CAAC,EAAE,CACJ,CAAC;aACI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,OAAO;YAChB,KAAK,EAAE,CAAC,CAAC,SAAS;SACrB,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACtD,CACJ,CAAC;IACN,CAAC;IAED,oBAAoB,CAAC,MAA2B;QAC5C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,wDAAwD;YAC9D,MAAM;SACT,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CACf,yDAA+B,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAClE,CAAC;IACN,CAAC;CACJ;;YA9FgB,8CAAK;YAQb,oFAAc;;;4BAelB,gDAAK;wBACL,iDAAM;iCACN,iDAAM;;AANE,gCAAgC;IAL5C,wDAAS,CAAC;QACP,QAAQ,EAAE,8BAA8B;QACxC,2FAAyD;;KAE5D,CAAC;GACW,gCAAgC,CA2E5C;AA3E4C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACftB;AAMC;AACS;AACA;AAC6B;AACK;AACxB;AAGuC;IAQrE,uBAAuB,SAAvB,uBACT,SAAQ,6CAA2B;IAwBnC,YACY,GAAmB,EACjB,KAAwB;QAElC,KAAK,EAAE,CAAC;QAHA,QAAG,GAAH,GAAG,CAAgB;QACjB,UAAK,GAAL,KAAK,CAAmB;QAhB7B,gBAAW,GAAiB,EAAE,CAAC;QACvB,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;QAM7D,yBAAoB,GAAa,EAAE,CAAC;QAKpC,uBAAkB,GAAG,qFAA8B,CAAC;QAC5C,WAAM,GAAG,IAAI,CAAC;QAMlB,IAAI,CAAC,MAAM,GAAG,mCAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,qDAAS,CAChC;YACI,WAAW,EAAE,IAAI,uDAAW,EAAE;YAC9B,UAAU,EAAE,IAAI,uDAAW,EAAE;SAChC,EACD,CAAC,IAAqB,EAA2B,EAAE;YAC/C,IACI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK;gBAC7B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,EAC9B;gBACE,OAAO,IAAI,CAAC;aACf;YACD,OAAO;gBACH,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC,CACJ,CAAC;IACN,CAAC;IA3CD,IAAoB,YAAY,CAAC,KAAmB;QAChD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IACD,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAuCD,QAAQ;QACJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;aAAM;YACH,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAChC;IACL,CAAC;IACD,WAAW;QACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,WAAW,CAAC,OAAsB;QAC9B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE;YACxD,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,CAAC;IACD,SAAS;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC/C,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,kBAAkB;QACd,+CAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC;aACxD,IAAI,CACD,yDAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,6DAAY,CAAC,IAAI,CAAC,EAClB,oDAAG,CAAC,GAAG,EAAE,CACL,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,0DAA0D;SACnE,CAAC,CACL,CACJ;aACA,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QACP,+CAAS,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC;aACjD,IAAI,CACD,yDAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,6DAAY,CAAC,IAAI,CAAC,CACrB;aACA,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACX,CAAC;IACD,eAAe;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC/C,MAAM,KAAK,GACP,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3B,GAAG,CAAC;YACJ,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY;YAC5D,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ;SACxD,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,yCAAyC;YAC/C,QAAQ;YACR,KAAK;YACL,MAAM;SACT,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,eAAe,CAAC,IAAuB;QACnC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IACD,YAAY;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;YAC5B,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,sCAAsC;YAC5C,kBAAkB,EAAE,IAAI,CAAC,KAAK;YAC9B,mBAAmB,EAAE,IAAI,CAAC,aAAa;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;CA8DJ;;YAtMQ,oFAAc;YAzBnB,4DAAiB;;;2BAsChB,gDAAK;0BAML,gDAAK;wBACL,iDAAM;wBACN,oDAAS,SAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;qCACvC,oDAAS,SAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,qDAAU,EAAE,MAAM,EAAE,IAAI,EAAE;8BAEhE,oDAAS,SAAC,WAAW,EAAE,EAAE,IAAI,EAAE,qDAAU,EAAE,MAAM,EAAE,IAAI,EAAE;;AAhBjD,uBAAuB;IALnC,wDAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,iFAA+C;;KAElD,CAAC;GACW,uBAAuB,CA8LnC;AA9LmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClC2C;AACnC;AACb;AAEqC;AAIc;AAC5C;AAG8B;IAMvD,0BAA0B,SAA1B,0BAA0B;IAQnC,YACY,KAA2B,EAC3B,GAAmB;QADnB,UAAK,GAAL,KAAK,CAAsB;QAC3B,QAAG,GAAH,GAAG,CAAgB;QAJd,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;QAMzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,0DAAgC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,8DAAoC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACtC,mDAAM,CAAC,2EAAmB,CAAC,EAC3B,qDAAK,EAAE,EACP,mDAAG,CAAC,CAAC,CAAC,EAAE,CAAC,sDAAK,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC,mDAAM,CAAC,2EAAmB,CAAC,EAC3B,qDAAK,EAAE,EACP,uDAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAChC,mDAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAC/B,uDAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChB,0DAAS,CAAC,CAAC,CAAC,EACZ,oDAAG,CAAC,cAAc,CAAC,EAAE,CACjB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,4BAA4B;YAClC,cAAc;SACjB,CAAC,CACL,CACJ,CAAC;QACF,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC3C,mDAAM,CAAC,+FAAuC,CAAC,CAClD,CAAC;IACN,CAAC;IACD,wBAAwB,CAAC,MAA0B;QAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,qDAAqD;YAC3D,MAAM;SACT,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CACf,0DAAgC,CAAC,EAAE,mBAAmB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CACtE,CAAC;IACN,CAAC;CACJ;;YAlEgB,8CAAK;YAOb,oFAAc;;;4BAelB,gDAAK;wBACL,iDAAM;;AANE,0BAA0B;IALtC,wDAAS,CAAC;QACP,QAAQ,EAAE,uBAAuB;QACjC,oFAAkD;;KAErD,CAAC;GACW,0BAA0B,CAiDtC;AAjDsC;;;;;;;;;;;;;;;;;;;;;;;;;;AClBwC;AAC1C;AAC4B;AACiB;IAUrE,iBAAiB,SAAjB,iBAAiB;IA4E1B,YAAoB,GAAmB;QAAnB,QAAG,GAAH,GAAG,CAAgB;QA3E9B,mBAAc,GAAG,CAAC,CAAC;QAC5B,aAAQ,GAGF,EAAE,CAAC;QAmEQ,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;QACnD,2BAAsB,GAAG,IAAI,+CAAa,CAAqB,CAAC,CAAC,CAAC;QACrE,YAAO,GAAuB,EAAwB,CAAC;QAC9D,WAAM,GAAwC,EAAE,CAAC;IACP,CAAC;IAtE3C,IAAW,YAAY;QACnB,IAAI,KAAK,CAAC;QACV,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YAC/D,IAAI,EAAE,CAAC,OAAO,EAAE;gBACZ,MAAM,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI;gBACvC,yCAAyC;gBACzC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAC3B,CAAC;gBACF,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;aACxB;QACL,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;IAKD,IAAoB,aAAa,CAAC,KAAqB;QACnD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,qCAAqC;YAC3C,KAAK;SACR,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;YACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAClC,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CACtD,CAAC;YACF,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;aAC/C;SACJ;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;YAC/B,OAAO;SACV;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAC/B,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CACxC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,iCAAiC;YACvC,KAAK;YACL,GAAG;SACN,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE;YACN,OAAO;SACV;QACD,GAAG,CAAC,cAAc,CAAC;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAS;SACpB,CAAC,CAAC;QACH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,UAAU,KAAK,2DAAsB,EAAE;YAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;SAC1C;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,0DAAqB,EAAE;YAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;SACzC;IACL,CAAC;IACD,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAOD,QAAQ,KAAI,CAAC;IAEb,aAAa,CAAC,IAAwB;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,iCAAiC;YACvC,IAAI;YACJ,yBAAyB,EAAE,IAAI,CAAC,MAAM;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC,CAAC;IACP,CAAC;IACD,aAAa,CAAC,IAAwB;QAClC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,iCAAiC;YACvC,IAAI;YACJ,yBAAyB,EAAE,IAAI,CAAC,MAAM;SACzC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,2DAAsB,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,eAAe,CAAC,IAAwB;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,mCAAmC;YACzC,CAAC,EAAE,IAAI;YACP,yBAAyB,EAAE,IAAI,CAAC,MAAM;SACzC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACrD;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,aAAa,CAAC,IAAwB;QAClC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,iCAAiC;YACvC,IAAI;SACP,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;CACJ;;YAxIQ,oFAAc;;;6BAWlB,gDAAK;sCAkBL,gDAAK;oBACL,gDAAK;oCACL,gDAAK;4BAEL,gDAAK;wBAiDL,iDAAM;qCACN,iDAAM;;AAzEE,iBAAiB;IAL7B,wDAAS,CAAC;QACP,QAAQ,EAAE,aAAa;QACvB,0EAAwC;;KAE3C,CAAC;GACW,iBAAiB,CA8H7B;AA9H6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbN;AACwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD+B;AACnC;AACb;AAEM;AACW;AACyB;AAMR;AACI;IAMxD,gCAAgC,SAAhC,gCAAgC;IAMzC,YACY,KAA2B,EAC3B,kBAA4C;QAD5C,UAAK,GAAL,KAAK,CAAsB;QAC3B,uBAAkB,GAAlB,kBAAkB,CAA0B;QALvC,cAAS,GAAG,IAAI,uDAAY,EAAe,CAAC;IAM1D,CAAC;IAEJ,QAAQ;QACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uFAA8B,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sDAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAChC,mDAAM,CAAC,4EAAmB,CAAC,EAC3B,mDAAG,CAAC,CAAC,CAAC,EAAE,CACJ,sDAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE,CAC7C,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAC7C,CACJ,CACJ,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAChC,mDAAM,CAAC,+DAAqC,CAAC,EAC7C,mDAAG,CAAC,KAAK,CAAC,EAAE,CACR,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,KAAK,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC,CACN,CACJ,CAAC;IACN,CAAC;IACD,iBAAiB,CAAC,MAA4B;QAC1C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACf,uFAA8B,CAAC;YAC3B,mBAAmB,EAAE,MAAM;SAC9B,CAAC,CACL,CAAC;IACN,CAAC;CACJ;;YA7DgB,8CAAK;YAKA,8DAAwB;;;uBAczC,gDAAK;4BACL,gDAAK;wBACL,iDAAM;;AAHE,gCAAgC;IAL5C,wDAAS,CAAC;QACP,QAAQ,EAAE,8BAA8B;QACxC,2FAAyD;;KAE5D,CAAC;GACW,gCAAgC,CA2C5C;AA3C4C;;;;;;;;;;;;;;;;;;;;;;;;;ACnBkC;AAEG;AACP;IAS9D,uBAAuB,SAAvB,uBACT,SAAQ,6CAA4B;IAOpC,YAAoB,GAAmB;QACnC,KAAK,EAAE,CAAC;QADQ,QAAG,GAAH,GAAG,CAAgB;QAFhC,YAAO,GAAuB,EAAwB,CAAC;QAC9D,WAAM,GAAwC,EAAE,CAAC;IAGjD,CAAC;IACD,QAAQ,KAAI,CAAC;IACb,UAAU,CAAC,MAAoC;QAC3C,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,aAAa,CAAC,IAAwB;QAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ;aAC/B,MAAM,CACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAC/D;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,WAAW;YACpB,KAAK,EAAE,CAAC,CAAC,aAAa;SACzB,CAAC,CAAC,CAAC;QACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,uCAAuC;YAC7C,WAAW,EAAE,IAAI;YACjB,kBAAkB,EAAE,IAAI,CAAC,MAAM;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC,CAAC;IACP,CAAC;IACD,aAAa,CAAC,IAAwB;QAClC,aAAa;QACb,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACb,IAAI,EAAE,uCAAuC;gBAC7C,CAAC,EAAE,IAAI;gBACP,kBAAkB,EAAE,IAAI,CAAC,MAAM;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,2DAAsB,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;IACL,CAAC;IACD,eAAe,CAAC,IAAwB;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,yCAAyC;YAC/C,IAAI;YACJ,kBAAkB,EAAE,IAAI,CAAC,MAAM;SAClC,CAAC,CAAC;QACH,MAAM,KAAK,GAAI,IAAI,CAAC,KAA8B,CAAC,SAAS,CACxD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAC1C,CAAC;QACF,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,qBAAqB,CAAC,IAAwB;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,+CAA+C;YACrD,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,QAAQ;aACf,MAAM,CACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAC/D;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,WAAW;YACpB,KAAK,EAAE,CAAC,CAAC,aAAa;SACzB,CAAC,CAAC,CAAC;IACZ,CAAC;CACJ;;YA1FQ,oFAAc;;;uBAalB,gDAAK;2BACL,gDAAK;;AAJG,uBAAuB;IALnC,wDAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,iFAA+C;;KAElD,CAAC;GACW,uBAAuB,CAgFnC;AAhFmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZc;AAM3C,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,iDAAiD,EACjD,kDAAK,EAA+C,CACvD,CAAC;AAEK,MAAM,oBAAoB,GAAG,yDAAY,CAC5C,+CAA+C,EAC/C,kDAAK,EAA4C,CACpD,CAAC;AAEK,MAAM,uBAAuB,GAAG,yDAAY,CAC/C,kDAAkD,EAClD,kDAAK,EAA4C,CACpD,CAAC;AAEK,MAAM,qBAAqB,GAAG,yDAAY,CAC7C,gDAAgD,EAChD,kDAAK,EAA+C,CACvD,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,mDAAmD,EACnD,kDAAK,EAA+C,CACvD,CAAC;AAEK,MAAM,uBAAuB,GAAG,yDAAY,CAC/C,kDAAkD,EAClD,kDAAK,EAAoD,CAC5D,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,mDAAmD,EACnD,kDAAK,EAAuD,CAC/D,CAAC;AAEK,MAAM,uBAAuB,GAAG,yDAAY,CAC/C,kDAAkD,EAClD,kDAAK,EAAkB,CAC1B,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,mDAAmD,EACnD,kDAAK,EAAqB,CAC7B,CAAC;AAEK,MAAM,uBAAuB,GAAG,yDAAY,CAC/C,kDAAkD,CACrD,CAAC;AACK,MAAM,qBAAqB,GAAG,yDAAY,CAC7C,gDAAgD,CACnD,CAAC;AACK,MAAM,qBAAqB,GAAG,yDAAY,CAC7C,+CAA+C,EAC/C,kDAAK,EAA+C,CACvD,CAAC;AACK,MAAM,eAAe,GAAG,yDAAY,CACvC,2CAA2C,CAC9C,CAAC;AACK,MAAM,gBAAgB,GAAG,yDAAY,CACxC,4CAA4C,EAC5C,kDAAK,EAAgC,CACxC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEyC;AACmB;AACkB;AACX;AACvB;AAC0B;AACG;AACD;IAG7D,yBAAyB,SAAzB,yBAAyB;IAgGlC,YACY,QAAiB,EACjB,OAAkC,EAClC,eAAgC;QAFhC,aAAQ,GAAR,QAAQ,CAAS;QACjB,YAAO,GAAP,OAAO,CAA2B;QAClC,oBAAe,GAAf,eAAe,CAAiB;QAlG5C,qBAAgB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,wEAAyC,CAAC,EACjD,yDAAS,CAAC,GAAG,EAAE;YACX,oDAAoD;YACpD,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,CACnC,uDAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACZ,yEAA0C,CAAC;oBACvC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;iBAClD,CAAC;aACL,CAAC,EACF,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,2BAAsB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,8EAA+C,CAAC,EACvD,yDAAS,CAAC,MAAM,CAAC,EAAE,CACf,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CACnB,uDAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,qDAA2B,CAC3B;oBACI,GAAG,IAAI;yBACF,MAAM,CACH,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,MAAM,CAAC,UAAU;wBACnB,0DAAqB,CAC5B;yBACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC1B,CAAC,MAAM,CAAC,wDAA8B,CAAC,CAC3C;gBACD,+EAAgD,CAAC;oBAC7C,kBAAkB,EAAE,IAAI;iBAC3B,CAAC;aACL,CAAC,EACF,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,iCAA4B,GAAG,2DAAY,CAAC,GAAG,EAAE;YAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,8EAA+C,CAAC,EACvD,mDAAG,CAAC,MAAM,CAAC,EAAE,CACT,iFAAkD,CAAC;gBAC/C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACpD,GAAG,CAAC;oBACJ,MAAM,EAAE;wBACJ,UAAU,EAAE,2DAAsB;wBAClC,OAAO,EAAE,SAAS;qBACrB;iBACJ,CAAC,CAAC;aACN,CAAC,CACL,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,2BAAsB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,8EAA+C,CAAC,EACvD,yDAAS,CAAC,MAAM,CAAC,EAAE,CACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAC5C,yDAAS,CAAC,IAAI,CAAC,EAAE,CACb,2DAAiC,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,CAAC,CAAC;oBACI,iFAAkD,CAC9C;wBACI,kBAAkB,EAAE,IAAI,CAAC,KAAK;qBACjC,CACJ;oBACD,IAAI,wDAA8B,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CACb,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,MAAM,CAAC,UAAU;wBACnB,2DAAsB,CAC7B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CACzC;iBACJ;gBACH,CAAC,CAAC;oBACI,IAAI,qDAA2B,CAC3B,6DAAmC,CAAC,IAAI,CAAC,CAC5C;oBACD,iFAAkD,CAC9C;wBACI,kBAAkB,EAAE,IAAI,CAAC,KAAK;qBACjC,CACJ;iBACJ,CACV,EACD,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IAKA,CAAC;CACP;;YA9GQ,kDAAO;YAKP,mFAAyB;YAHzB,uEAAe;;AAOX,yBAAyB;IADrC,0DAAU,EAAE;GACA,yBAAyB,CAqGrC;AArGqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEVyC;AACvB;AAEiB;AAGlE,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAO1D,MAAM,OAAO,GAChB,iEAAmB,CAAoB;IACnC,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa;CAC9D,CAAC,CAAC;AAEA,MAAM,YAAY,GAAU,OAAO,CAAC,eAAe,CAAC;IACvD,qCAAqC;IACrC,YAAY,EAAE,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,0DAAa,CAC1C,YAAY,EACZ,+CAAE,CAAC,6EAA6C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAChE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAClD,EACD,+CAAE,CAAC,gFAAgD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACnE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CACrD,EACD,+CAAE,CAAC,8EAA8C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACjE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACpD,EACD,+CAAE,CAAC,iFAAiD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACpE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACvD,EACD,+CAAE,CAAC,gFAAgD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACnE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CACrD,EACD,+CAAE,CAAC,iFAAiD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACpE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACvD,EACD,+CAAE,CAAC,gFAAgD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACnE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CACtC,EACD,+CAAE,CAAC,iFAAiD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACpE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CACxC,EACD,+CAAE,CAAC,+EAA+C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAClE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACnD,EACD,+CAAE,CAAC,gFAAgD,EAAE,KAAK,CAAC,EAAE,CACzD,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAC3B,EACD,+CAAE,CAAC,yEAAyC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9D,GAAG,KAAK;IACR,YAAY,EAAE,MAAM,CAAC,YAAY;CACpC,CAAC,CAAC,CACN,CAAC;AAEK,SAAS,OAAO,CAAC,KAAwB,EAAE,MAAc;IAC5D,OAAO,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;;;;;;;;;;;;;;;;;;;;;;;AC/DmE;AACG;AAEhE,MAAM,6BAA6B,GAAG,kEAAqB,CAEhE,qFAAmD,CAAC,CAAC;AAEhD,MAAM,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACd,GAAG,6EAA2C,CAAC,6BAA6B,CAAC,CAAC;AAExE,MAAM,kBAAkB,GAAG,2DAAc,CAC5C,6BAA6B,EAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CACtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBgD;AAI3C,MAAM,uBAAuB,GAAG,yDAAY,CAC/C,mDAAmD,EACnD,kDAAK,EAAiD,CACzD,CAAC;AAEK,MAAM,qBAAqB,GAAG,yDAAY,CAC7C,iDAAiD,EACjD,kDAAK,EAA8C,CACtD,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,EACpD,kDAAK,EAA8C,CACtD,CAAC;AAEK,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,kDAAkD,EAClD,kDAAK,EAAiD,CACzD,CAAC;AAEK,MAAM,yBAAyB,GAAG,yDAAY,CACjD,qDAAqD,EACrD,kDAAK,EAAiD,CACzD,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,EACpD,kDAAK,EAAsD,CAC9D,CAAC;AAEK,MAAM,yBAAyB,GAAG,yDAAY,CACjD,qDAAqD,EACrD,kDAAK,EAAyD,CACjE,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,EACpD,kDAAK,EAAkB,CAC1B,CAAC;AAEK,MAAM,yBAAyB,GAAG,yDAAY,CACjD,qDAAqD,EACrD,kDAAK,EAAqB,CAC7B,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,CACvD,CAAC;AAEK,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,yCAAyC,CAC5C,CAAC;AACK,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,yCAAyC,EACzC,kDAAK,EAAiD,CACzD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3DyC;AACmB;AACkB;AAEJ;AACD;AACH;AAC1B;IAGjC,yBAAyB,SAAzB,yBAAyB;IAsElC,YACY,QAAiB,EACjB,OAAkC;QADlC,aAAQ,GAAR,QAAQ,CAAS;QACjB,YAAO,GAAP,OAAO,CAA2B;QAvE9C,4BAAuB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,iFAAgD,CAAC,EACxD,yDAAS,CAAC,GAAG,EAAE,CACX,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,IAAI,CACtC,uDAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,qDAA2B,CAC3B;oBACI,GAAG,IAAI;yBACF,MAAM,CACH,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,MAAM,CAAC,UAAU;wBACnB,0DAAqB,CAC5B;yBACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC1B,CAAC,MAAM,CAAC,wDAA8B,CAAC,CAC3C;gBACD,kFAAiD,CAAC;oBAC9C,mBAAmB,EAAE,IAAI;iBAC5B,CAAC;aACL,CAAC,EACF,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,4BAAuB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,iFAAgD,CAAC,EACxD,yDAAS,CAAC,MAAM,CAAC,EAAE,CACf,IAAI,CAAC,OAAO;iBACP,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,CAAC;iBAClD,IAAI,CACD,yDAAS,CAAC,IAAI,CAAC,EAAE,CACb,2DAAiC,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,CAAC,CAAC;oBACI,oFAAmD,CAC/C;wBACI,mBAAmB,EAAE,IAAI,CAAC,KAAK;qBAClC,CACJ;oBACD,IAAI,wDAA8B,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CACb,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,MAAM,CAAC,UAAU;wBACnB,2DAAsB,CAC7B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAClC;iBACJ;gBACH,CAAC,CAAC;oBACI,IAAI,qDAA2B,CAC3B,6DAAmC,CAC/B,IAAI,CACP,CACJ;oBACD,oFAAmD,CAC/C;wBACI,mBAAmB,EAAE,IAAI,CAAC,KAAK;qBAClC,CACJ;iBACJ,CACV,EACD,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACR,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IAKA,CAAC;CACP;;YAnFQ,kDAAO;YAIP,mFAAyB;;AAKrB,yBAAyB;IADrC,yDAAU,EAAE;GACA,yBAAyB,CA0ErC;AA1EqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEVyC;AACvB;AAEa;AAE9D,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAM5D,MAAM,OAAO,GAChB,iEAAmB,CAAc;IAC7B,QAAQ,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW;CACtD,CAAC,CAAC;AAEA,MAAM,YAAY,GAAU,OAAO,CAAC,eAAe,CAAC;AACvD,qCAAqC;CACxC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,0DAAa,CACpC,YAAY,EACZ,+CAAE,CAAC,gFAAwC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC3D,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACnD,EACD,+CAAE,CAAC,mFAA2C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC9D,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACtD,EACD,+CAAE,CAAC,iFAAyC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC5D,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACrD,EACD,+CAAE,CAAC,oFAA4C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/D,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACxD,EACD,+CAAE,CAAC,mFAA2C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC9D,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACtD,EACD,+CAAE,CAAC,oFAA4C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/D,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACxD,EACD,+CAAE,CAAC,mFAA2C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC9D,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CACtC,EACD,+CAAE,CAAC,oFAA4C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/D,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CACxC,EACD,+CAAE,CAAC,kFAA0C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC7D,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACpD,EACD,+CAAE,CAAC,mFAA2C,EAAE,KAAK,CAAC,EAAE,CACpD,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAC3B,CACJ,CAAC;AAEK,SAAS,OAAO,CAAC,KAAwB,EAAE,MAAc;IAC5D,OAAO,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;;;;;;;;;;;;;;;;;;;;;;ACxDmE;AACK;AAElE,MAAM,6BAA6B,GAAG,kEAAqB,CAEhE,wFAAoD,CAAC,CAAC;AAEjD,MAAM,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACd,GAAG,+EAA2C,CAAC,6BAA6B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZ7B;AAO3C,MAAM,uBAAuB,GAAG,yDAAY,CAC/C,mDAAmD,EACnD,kDAAK,EAAiD,CACzD,CAAC;AAEK,MAAM,qBAAqB,GAAG,yDAAY,CAC7C,iDAAiD,EACjD,kDAAK,EAA8C,CACtD,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,EACpD,kDAAK,EAA8C,CACtD,CAAC;AAEK,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,kDAAkD,EAClD,kDAAK,EAAiD,CACzD,CAAC;AAEK,MAAM,yBAAyB,GAAG,yDAAY,CACjD,qDAAqD,EACrD,kDAAK,EAAiD,CACzD,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,EACpD,kDAAK,EAAsD,CAC9D,CAAC;AAEK,MAAM,yBAAyB,GAAG,yDAAY,CACjD,qDAAqD,EACrD,kDAAK,EAAyD,CACjE,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,EACpD,kDAAK,EAAkB,CAC1B,CAAC;AAEK,MAAM,yBAAyB,GAAG,yDAAY,CACjD,qDAAqD,EACrD,kDAAK,EAAqB,CAC7B,CAAC;AAEK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,oDAAoD,CACvD,CAAC;AACK,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,kDAAkD,CACrD,CAAC;AACK,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,mDAAmD,EACnD,kDAAK,EAAiD,CACzD,CAAC;AACK,MAAM,0BAA0B,GAAG,yDAAY,CAClD,uDAAuD,CAC1D,CAAC;AACK,MAAM,2BAA2B,GAAG,yDAAY,CACnD,wDAAwD,EACxD,kDAAK,EAA6C,CACrD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpEyC;AACmB;AAES;AAEI;AACA;AAC7B;AAC0B;IAG3D,yBAAyB,SAAzB,yBAAyB;IA8ElC,YACY,QAAiB,EACjB,OAAkC;QADlC,aAAQ,GAAR,QAAQ,CAAS;QACjB,YAAO,GAAP,OAAO,CAA2B;QA/E9C,4BAAuB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,gFAAgD,CAAC,EACxD,yDAAS,CAAC,GAAG,EAAE,CACX,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,IAAI,CACtC,mDAAG,CAAC,IAAI,CAAC,EAAE,CACP,iFAAiD,CAAC;gBAC9C,mBAAmB,EAAE,IAAI;aAC5B,CAAC,CACL,EACD,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,4BAAuB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,gFAAgD,CAAC,EACxD,yDAAS,CAAC,MAAM,CAAC,EAAE,CACf,IAAI,CAAC,OAAO;iBACP,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,CAAC;iBAClD,IAAI,CACD,yDAAS,CAAC,IAAI,CAAC,EAAE,CACb,2DAAiC,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,CAAC,CAAC;oBACI,mFAAmD,CAC/C;wBACI,mBAAmB,EAAE,IAAI,CAAC,KAAK;qBAClC,CACJ;oBACD,IAAI,wDAA8B,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CACb,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,MAAM,CAAC,UAAU;wBACnB,2DAAsB,CAC7B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAC9B;oBACD,IAAI,qDAA2B,CAC3B,6DAAmC,CAC/B,IAAI,CACP,CACJ;iBACJ;gBACH,CAAC,CAAC;oBACI,IAAI,qDAA2B,CAC3B,6DAAmC,CAC/B,IAAI,CACP,CACJ;oBACD,mFAAmD,CAC/C;wBACI,mBAAmB,EAAE,IAAI,CAAC,KAAK;qBAClC,CACJ;iBACJ,CACV,EACD,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACR,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,gCAA2B,GAAG,2DAAY,CAAC,GAAG,EAAE;YAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,oFAAoD,CAAC,EAC5D,yDAAS,CAAC,GAAG,EAAE,CACX,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,IAAI,CAC1C,mDAAG,CAAC,IAAI,CAAC,EAAE,CACP,qFAAqD,CAAC;gBAClD,uBAAuB,EAAE,IAAI;aAChC,CAAC,CACL,EACD,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IAIA,CAAC;CACP;;YA5FQ,kDAAO;YAKP,mFAAyB;;AAKrB,yBAAyB;IADrC,yDAAU,EAAE;GACA,yBAAyB,CAkFrC;AAlFqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEXyC;AACvB;AAEmB;AAGpE,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAM5D,MAAM,OAAO,GAChB,iEAAmB,EAAsB,CAAC;AAEvC,MAAM,YAAY,GAAU,OAAO,CAAC,eAAe,CAAC;IACvD,uBAAuB,EAAE,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,0DAAa,CAC3C,YAAY,EACZ,+CAAE,CAAC,+EAA+C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAClE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACnD,EACD,+CAAE,CAAC,kFAAkD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACrE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACtD,EACD,+CAAE,CAAC,gFAAgD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACnE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACrD,EACD,+CAAE,CAAC,mFAAmD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACtE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACxD,EACD,+CAAE,CAAC,kFAAkD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACrE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CACtD,EACD,+CAAE,CAAC,mFAAmD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACtE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACxD,EACD,+CAAE,CAAC,kFAAkD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACrE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CACtC,EACD,+CAAE,CAAC,mFAAmD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACtE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CACxC,EACD,+CAAE,CAAC,iFAAiD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACpE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACpD,EACD,+CAAE,CAAC,kFAAkD,EAAE,KAAK,CAAC,EAAE,CAC3D,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAC3B,EACD,+CAAE,CACE,qFAAqD,EACrD,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAChB,GAAG,KAAK;IACR,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;CAC1D,CAAC,CACL,CACJ,CAAC;AAEK,SAAS,OAAO,CAAC,KAAwB,EAAE,MAAc;IAC5D,OAAO,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;;;;;;;;;;;;;;;;;;;;;;;AC9DmE;AACI;AAEjE,MAAM,6BAA6B,GAAG,kEAAqB,CAEhE,uFAAoD,CAAC,CAAC;AAEjD,MAAM,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACd,GAAG,8EAA2C,CAAC,6BAA6B,CAAC,CAAC;AACxE,MAAM,6BAA6B,GAAG,2DAAc,CACvD,6BAA6B,EAC7B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,uBAAuB,CACzC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChByC;AACE;AACA;AACD;AACE;AACA;AACC;AACA;AACF;AACkB;;;;;;;;;;;;;;;;;;;;;;;;ACTb;AACd;IAQvB,yBAAyB,SAAzB,yBAAyB;IAClC,YAAoB,KAA6B;QAA7B,UAAK,GAAL,KAAK,CAAwB;IAAG,CAAC;IAErD,QAAQ,KAAI,CAAC;CAChB;;YAZQ,8CAAK;;AAQD,yBAAyB;IALrC,wDAAS,CAAC;QACP,QAAQ,EAAE,sBAAsB;QAChC,mFAAiD;;KAEpD,CAAC;GACW,yBAAyB,CAIrC;AAJqC;;;;;;;;;;;;;;;;;ACTQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAC;AACN;AACK;AACJ;AACS;AACyC;AACA;AAC7C;AACU;AACF;IAmB1C,aAAa,SAAb,aAAa;CAAG;AAAhB,aAAa;IAjBzB,uDAAQ,CAAC;QACN,YAAY,EAAE,CAAC,qGAAyB,CAAC;QACzC,OAAO,EAAE;YACL,yDAAY;YACZ,6DAAc;YACd,+DAAsB,CAClB,sEAA8B,EAC9B,2DAAmB,CACtB;YACD,oEAAwB,CAAC,CAAC,kEAAc,CAAC,CAAC;YAC1C,sEAAuB,CAAC;gBACpB,MAAM,EAAE,CAAC,wDAAY,CAAC;aACzB,CAAC;YACF,qGAAwB;SAC3B;QACD,sCAAsC;KACzC,CAAC;GACW,aAAa,CAAG;AAAH;;;;;;;;;;;;;;;;;;;;;AC5B0C;AACQ;AACF;AAE1E,oCAAoC;AACiC;AACpC;AAEjC,MAAM,GAAG,GAAG,IAAI,oFAAc,EAAE,CAAC;AAE1B,MAAM,YAAY,GAAwB;IAC7C,qBAAqB;IACrB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,UAAU;IACf,mFAAmF;IACnF,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IAC5B,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACvB,OAAO,EAAE;QACL;YACI,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC,yDAAU,EAAE,kFAAiB,CAAC;YACrC,SAAS,EAAE,6EAAe;SAC7B;KACJ;IACD,SAAS,EAAE,wDAAqC;CACnD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACzB2D;AAClB;AACgC;AACzB;AAC0B;AACxC;AAKC;IAQxB,cAAc,SAAd,cAAe,SAAQ,mFAAc;IAG9C,YACY,IAAgB,EACd,GAAmB,EACnB,SAAoC;QAE9C,KAAK,CAAC,SAAS,CAAC,CAAC;QAJT,SAAI,GAAJ,IAAI,CAAY;QACd,QAAG,GAAH,GAAG,CAAgB;QACnB,cAAS,GAAT,SAAS,CAA2B;QAL1C,QAAG,GAAG,GAAG,8EAAuB,UAAU,CAAC;QAC3C,gBAAW,GAAG,GAAG,8EAAuB,oBAAoB,CAAC;IAOrE,CAAC;IACD,GAAG,CAAC,WAAoB,EAAE,SAAkB;QACxC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;QAC9B,oBAAoB;QAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;QACtD,GAAG;QACH,IAAI,SAAS,EAAE;YACX,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,oBAAoB;YAC1B,WAAW;YACX,SAAS;YACT,IAAI;SACP,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,IAAI,CAAC,CAAC,IAAI,CACtC,mDAAG,CAAC,GAAG,CAAC,EAAE,CACN,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,GAAG,CAAC;YACJ,MAAM,EAAE;gBACJ,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC9C,WAAW,EACP,CAAC,IAAI,CAAC,CAAC,MAAM;oBACT,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;oBACtB,CAAC,CAAC,CAAC,CAAC,aAAa;aAC5B;SACJ,CAAC,CAAC,CACN,CACJ,CAAC;IACN,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC;IACD,qBAAqB,CACjB,SAA4B;QAE5B,qGAAqG;QAErG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,IAAI,CAAC,WAAW,EAChB;YACI,qBAAqB,EAAE,SAAS;SACnC,CACJ,CAAC;IACN,CAAC;CACJ;;YAvEQ,4DAAU;YACV,oFAAc;YACd,8CAAK;;AAaD,cAAc;IAH1B,yDAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;GACW,cAAc,CAwD1B;AAxD0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBS;AACF;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEF0B;AAO3C,MAAM,YAAY,GAAG,yDAAY,CACpC,6BAA6B,EAC7B,kDAAK,EAA2B,CACnC,CAAC;AAEK,MAAM,UAAU,GAAG,yDAAY,CAClC,2BAA2B,EAC3B,kDAAK,EAAwB,CAChC,CAAC;AAEK,MAAM,aAAa,GAAG,yDAAY,CACrC,8BAA8B,EAC9B,kDAAK,EAAwB,CAChC,CAAC;AAEK,MAAM,WAAW,GAAG,yDAAY,CACnC,4BAA4B,EAC5B,kDAAK,EAA2B,CACnC,CAAC;AAEK,MAAM,cAAc,GAAG,yDAAY,CACtC,+BAA+B,EAC/B,kDAAK,EAA2B,CACnC,CAAC;AAEK,MAAM,aAAa,GAAG,yDAAY,CACrC,8BAA8B,EAC9B,kDAAK,EAAgC,CACxC,CAAC;AAEK,MAAM,cAAc,GAAG,yDAAY,CACtC,+BAA+B,EAC/B,kDAAK,EAAmC,CAC3C,CAAC;AAEK,MAAM,aAAa,GAAG,yDAAY,CACrC,8BAA8B,EAC9B,kDAAK,EAAkB,CAC1B,CAAC;AAEK,MAAM,cAAc,GAAG,yDAAY,CACtC,+BAA+B,EAC/B,kDAAK,EAAqB,CAC7B,CAAC;AAEK,MAAM,aAAa,GAAG,yDAAY,CAAC,8BAA8B,CAAC,CAAC;AACnE,MAAM,WAAW,GAAG,yDAAY,CACnC,4BAA4B,EAC5B,kDAAK,EAGD,CACP,CAAC;AACK,MAAM,qBAAqB,GAAG,yDAAY,CAC7C,wCAAwC,CAC3C,CAAC;AACK,MAAM,sBAAsB,GAAG,yDAAY,CAC9C,yCAAyC,EACzC,kDAAK,EAAoC,CAC5C,CAAC;AACK,MAAM,qBAAqB,GAAG,yDAAY,CAC7C,wCAAwC,EACxC,kDAAK,EAAoC,CAC5C,CAAC;AACK,MAAM,wBAAwB,GAAG,yDAAY,CAChD,2CAA2C,EAC3C,kDAAK,EAAoC,CAC5C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1EyC;AACmB;AAEkB;AAE5B;AACT;AACS;AACiB;IAGxD,cAAc,SAAd,cAAc;IA6FvB,YAAoB,QAAiB,EAAU,OAAuB;QAAlD,aAAQ,GAAR,QAAQ,CAAS;QAAU,YAAO,GAAP,OAAO,CAAgB;QA5FtE,iBAAY,GAAG,2DAAY,CAAC,GAAG,EAAE;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,yDAA0B,CAAC,EAClC,yDAAS,CAAC,MAAM,CAAC,EAAE,CACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACvD,uDAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,qDAA2B,CAC3B;oBACI,GAAG,IAAI;yBACF,MAAM,CACH,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,MAAM,CAAC,UAAU;wBACnB,0DAAqB,CAC5B;yBACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC1B,CAAC,MAAM,CAAC,wDAA8B,CAAC,CAC3C;gBACD,0DAA2B,CAAC;oBACxB,QAAQ,EAAE,IAAI;iBACjB,CAAC;aACL,CAAC,EACF,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,2BAAsB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,mEAAoC,CAAC,EAC5C,yDAAS,CAAC,GAAG,EAAE,CACX,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CACrC,uDAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACZ,oEAAqC,CAAC;oBAClC,SAAS,EAAE,IAAI;iBAClB,CAAC;aACL,CAAC,EACF,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,iCAA4B,GAAG,2DAAY,CAAC,GAAG,EAAE;YAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,mEAAoC,CAAC,EAC5C,mDAAG,CAAC,MAAM,CAAC,EAAE,CACT,sEAAuC,CAAC;gBACpC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClC,GAAG,CAAC;oBACJ,MAAM,EAAE;wBACJ,UAAU,EAAE,2DAAsB;wBAClC,OAAO,EAAE,SAAS;qBACrB;iBACJ,CAAC,CAAC;aACN,CAAC,CACL,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,2BAAsB,GAAG,2DAAY,CAAC,GAAG,EAAE;YACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,qDAAM,CAAC,mEAAoC,CAAC,EAC5C,yDAAS,CAAC,MAAM,CAAC,EAAE,CACf,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACrD,yDAAS,CAAC,IAAI,CAAC,EAAE,CACb,2DAAiC,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,CAAC,CAAC;oBACI,sEAAuC,CAAC;wBACpC,SAAS,EAAE,IAAI,CAAC,KAAK;qBACxB,CAAC;oBACF,IAAI,wDAA8B,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CACb,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,MAAM,CAAC,UAAU;wBACnB,2DAAsB,CAC7B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAC1C;iBACJ;gBACH,CAAC,CAAC;oBACI,IAAI,qDAA2B,CAC3B,6DAAmC,CAAC,IAAI,CAAC,CAC5C;oBACD,sEAAuC,CAAC;wBACpC,SAAS,EAAE,IAAI,CAAC,KAAK;qBACxB,CAAC;iBACL,CACV,EACD,0DAAU,CAAC,8DAAoC,CAAC,CACnD,CACJ,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IAEsE,CAAC;CAC7E;;YAxGQ,kDAAO;YAMP,4DAAc;;AAIV,cAAc;IAD1B,0DAAU,EAAE;GACA,cAAc,CA8F1B;AA9F0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEXoD;AACvB;AAEJ;AAG7C,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAMtC,MAAM,OAAO,GAA2B,iEAAmB,CAAU;IACxE,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa;CACpD,CAAC,CAAC;AAEI,MAAM,YAAY,GAAU,OAAO,CAAC,eAAe,CAAC;IACvD,WAAW,EAAE,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,0DAAa,CAChC,YAAY,EACZ,+CAAE,CAAC,wDAAyB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC5C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CACxC,EACD,+CAAE,CAAC,2DAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3C,EACD,+CAAE,CAAC,yDAA0B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC7C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC1C,EACD,+CAAE,CAAC,4DAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAChD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC7C,EACD,+CAAE,CAAC,2DAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3C,EACD,+CAAE,CAAC,4DAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAChD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC7C,EACD,+CAAE,CAAC,2DAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CACtC,EACD,+CAAE,CAAC,4DAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAChD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CACxC,EACD,+CAAE,CAAC,0DAA2B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC9C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CACzC,EACD,+CAAE,CAAC,2DAA4B,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EACnE,+CAAE,CAAC,oEAAqC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACxD,OAAO;QACH,GAAG,KAAK;QACR,WAAW,EAAE,MAAM,CAAC,SAAS;KAChC,CAAC;AACN,CAAC,CAAC,EACF,+CAAE,CAAC,sEAAuC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC1D,OAAO;QACH,GAAG,KAAK;QACR,WAAW,EAAE;YACT,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CACvB,CAAC,CAAC,EAAE,CACA,CAAC,MAAM,CAAC,SAAS;iBACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;iBAC1B,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CACtC;YACD,GAAG,MAAM,CAAC,SAAS;SACtB;KACJ,CAAC;AACN,CAAC,CAAC,CACL,CAAC;AAEK,SAAS,OAAO,CAAC,KAAwB,EAAE,MAAc;IAC5D,OAAO,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;;;;;;;;;;;;;;;;;;;;;;;AC1EmE;AACnB;AAE1C,MAAM,kBAAkB,GAAG,kEAAqB,CACnD,gEAA8B,CACjC,CAAC;AAEK,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,GAC9D,kEAAgC,CAAC,kBAAkB,CAAC,CAAC;AAElD,MAAM,wBAAwB,GAAG,2DAAc,CAClD,kBAAkB,EAClB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbgC;AACF;AACE;AACA;AACE;AACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIlB;AACqB;AACE;AAClB;AACqB;AAKzB;AAC8C;AAC7B;AAGF;AAMC;AAC6B;AACM;AACvC;AAC+B;AAC3B;AAEmB;AAE3D,IAAK,eAKJ;AALD,WAAK,eAAe;IAChB,yDAAM;IACN,2DAAO;IACP,qDAAI;IACJ,iEAAU;AACd,CAAC,EALI,eAAe,KAAf,eAAe,QAKnB;IAMY,YAAY,SAAZ,YAAY;IAqErB,YACY,GAAmB,EACnB,MAAqB,EACrB,SAAgC,EAChC,WAA2C,EAC3C,SAAgC,EACjC,QAAmB,EAClB,WAAkC,EAClC,EAAgB,EAChB,aAA4B,EAC5B,OAAuB;QATvB,QAAG,GAAH,GAAG,CAAgB;QACnB,WAAM,GAAN,MAAM,CAAe;QACrB,cAAS,GAAT,SAAS,CAAuB;QAChC,gBAAW,GAAX,WAAW,CAAgC;QAC3C,cAAS,GAAT,SAAS,CAAuB;QACjC,aAAQ,GAAR,QAAQ,CAAW;QAClB,gBAAW,GAAX,WAAW,CAAuB;QAClC,OAAE,GAAF,EAAE,CAAc;QAChB,kBAAa,GAAb,aAAa,CAAe;QAC5B,YAAO,GAAP,OAAO,CAAgB;QA9EnC,eAAU,GAAoB,eAAe,CAAC,MAAM,CAAC;QAErD,aAAQ,GAAG,IAAI,CAAC;QAEhB,gBAAW,GAAG,KAAK,CAAC;QAQpB,8BAAyB,GAAG,KAAK,CAAC;QAElC,2BAAsB,GAAG,IAAI,CAAC;QAkBtB,oBAAe,GAAG,IAAI,CAAC;QAIxB,UAAK,GAAG,gBAAgB,CAAC;QACzB,eAAU,GAAG,CAAC,CAAC;QACf,0BAAqB,GAAG,KAAK,CAAC;QAC9B,iBAAY,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAMvD,wBAAmB,GAAG,IAAI,gDAAa,CAAM,CAAC,CAAC,CAAC;QAChD,yBAAoB,GAAG,IAAI,gDAAa,CAAM,CAAC,CAAC,CAAC;QAWzD,yBAAoB,GAAG,KAAK,CAAC;QAC7B,0BAAqB,GAAG,KAAK,CAAC;QAC9B,iBAAY,GAAG,EAAE,CAAC;QAGlB,sBAAiB,GAAG,uBAAuB,CAAC;QAIrC,cAAS,GAAc,EAAE,CAAC;QAC1B,kBAAa,GAAa,EAAE,CAAC;QAahC,mBAAmB;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,qDAAyB,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,WAAW;QACP,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,eAAe;QACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SAC3C;QACD,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,UAAU,CAAC,GAAG,EAAE;YACZ,sBAAsB;YACtB,+EAA+E;YAC/E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IACD,gBAAgB;QACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oDAAM,CAAC,oDAAoB,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oDAAM,CAAC,gDAAgB,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACjC,oDAAM,CAAC,oEAAyB,CAAC,CACpC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAC9B,oDAAM,CAAC,6DAA6B,CAAC,CACxC,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACrC,oDAAM,CAAC,4DAAkC,CAAC,CAC7C,CAAC;IACN,CAAC;IACD,kBAAkB;QACd,IAAI,CAAC,KAAK;aACL,IAAI,CAAC,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC3C,SAAS,CAAC,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;gBACzC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC1C,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACjC,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAC1B,CAAC;aACL;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,OAAO;aACP,IAAI,CACD,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EACrC,qEAAoB,EAAE,CACzB;aACA,SAAS,CAAC,eAAe,CAAC,EAAE;YACzB,IAAI,eAAe,EAAE;gBACjB,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC9B,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,EAAE;wBAC1B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;qBACpC;oBACD,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,EAAE;wBAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;qBAChC;oBACD,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,EAAE;wBAC1B,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;qBACzC;oBACD,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,EAAE;wBAC1B,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;qBACzC;gBACL,CAAC,CAAC,CAAC;aACN;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,SAAS;aACT,IAAI,CACD,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EACrC,qEAAoB,EAAE,CACzB;aACA,SAAS,CAAC,QAAQ,CAAC,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACb,IAAI,EAAE,0BAA0B;gBAChC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,QAAQ;aACX,CAAC,CAAC;YAEH,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YAEnC,IAAI,QAAQ,CAAC,gBAAgB,KAAK,EAAE,EAAE;gBAClC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC;gBAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;iBAAM;gBACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC9B;QACL,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACzB,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EACrC,+DAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CACjC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACb,IAAI,EAAE,+CAA+C;gBACrD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,QAAQ;aACX,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE;gBAC5B,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;aAC5D;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc;aACd,IAAI,CAAC,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC3C,SAAS,CAAC,CAAC,CAAC,EAAE;YACX,0BAA0B;YAC1B,yCAAyC;YACzC,WAAW;YACX,yCAAyC;YACzC,IAAI;YACJ,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC1B,+DAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CACjC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC9B,IAAI,CAAC,SAAS,CAAC,QAAQ,CACnB,IAAI,uDAA6B,CAAC;gBAC9B,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,EAAE;aAChB,CAAC,CACL,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IACD,QAAQ;QACJ,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAChC,oDAAM,CAAC,qDAA2B,CAAC,CACtC,CAAC;QAEF,IAAI,CAAC,OAAO;aACP,IAAI,CAAC,0DAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC1C,SAAS,CAAC,MAAM,CAAC,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,WAAW;aACX,IAAI,CACD,oDAAM,CAAC,yDAA+B,CAAC,EACvC,0DAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CACxC;aACA,SAAS,CAAC,CAAC,CAAC,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACb,IAAI,EAAE,4CAA4C;gBAClD,CAAC;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,gBAAgB,GAAG,mCAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACvD;iBAAM;aACN;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IACD,UAAU;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IACD,cAAc;QACV,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SAC1C;IACL,CAAC;IACD,eAAe;QACX,IAAI,CAAC,WAAW,CAAC,QAAQ,CACrB,IAAI,yDAA+B,CAAC;YAChC,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI;YAChC,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,CAAC;SAClB,CAAC,CACL,CAAC;IACN,CAAC;IACD,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SACjC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACzB;YACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBACvD,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;YACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAChC;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,iBAAiB,CAAC,KAAK;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,IAAI,IAAI,CAAC,UAAU,KAAK,eAAe,CAAC,OAAO,EAAE;YAC7C,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACpD;aAAM;YACH,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,yBAAyB;oBAC1B,CAAC,IAAI,CAAC,yBAAyB,CAAC;aACvC;iBAAM;gBACH,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;aAC9D;SACJ;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;IACD,mBAAmB,CAAC,KAAK;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,WAAW,CAAC,MAAM;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACtB,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;YAC/C,CAAC,EAAE,GAAG,CAAC,CAAC;SACX;IACL,CAAC;IACD,uBAAuB,CAAC,KAAK;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAE/C,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,KAAK,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;IACD,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAK;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,OAAO;SACV;QACD,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,IAAI,IAAI,IAAI,EAAE;gBACd,IAAI,IAAI,IAAI,QAAQ,EAAE;oBAClB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;wBACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;qBACpC;iBACJ;aACJ;SACJ;aAAM;YACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;IACD,oBAAoB,CAAC,KAAK;QACtB,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;IACL,CAAC;IACD,uBAAuB,CAAC,KAAK;QACzB,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IACD,cAAc,CAAC,OAAgB;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,mBAAmB,CAAC,KAAK;QACrB,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IACD,sBAAsB,CAAC,KAAK;QACxB,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,CAAC;YACN,SAAS,EAAE,CAAC,CAAC;YACb,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,WAAW;SAC5B,CAAC,CAAC;IACP,CAAC;IACD,4BAA4B,CAAC,KAAK;QAC9B,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC3C,CAAC;IACD,4BAA4B,CAAC,KAAK;QAC9B,eAAe;QACf,8BAA8B;QAC9B,IAAI;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC3C,CAAC;IACD,oBAAoB,CAAC,KAAK;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrC,CAAC;IACM,IAAI,CAAC,OAAgB;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iDAAuB,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kDAAwB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,EAAE,CACN,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAW,EAC5D;YACI,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE;SAC1B,CACJ,CAAC;IACN,CAAC;IACD,eAAe;QACX,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACxC,CAAC;IACD,QAAQ;QACJ,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QAChC,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC;IACxC,CAAC;IACD,SAAS;QACL,OAAO,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IACpC,CAAC;IACD,QAAQ;QACJ,OAAO,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;IACpC,CAAC;IACD,SAAS;QACL,OAAO,IAAI,CAAC,UAAU,KAAK,eAAe,CAAC,OAAO,CAAC;IACvD,CAAC;IACD,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU,CAAC;IAC1D,CAAC;IACD,MAAM;QACF,OAAO,IAAI,CAAC,UAAU,KAAK,eAAe,CAAC,IAAI,CAAC;IACpD,CAAC;IACD,kBAAkB;QACd,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC;IAC7C,CAAC;IACD,mBAAmB;QACf,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC;IAC9C,CAAC;IACD,sBAAsB;QAClB,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;IACjD,CAAC;IACD,gBAAgB;QACZ,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;IAC3C,CAAC;IACD,SAAS;QACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5C,cAAc,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACnB,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,6BAA6B;IACjC,CAAC;IACD,oBAAoB;QAChB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IACD,oBAAoB;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;CACJ;;YA7dQ,oFAAc;YADd,8EAAa;YApBL,+CAAK;YAAL,+CAAK;YAAL,+CAAK;YAJlB,qDAAS;YAaJ,+EAAqB;YARrB,wDAAY;YAgBjB,wEAAa;YAMR,6EAAc;;;6BA6ClB,qDAAS,SAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;0CAE5C,qDAAS,SAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;8BAiBhD,qDAAS,SAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,sDAAU,EAAE;wBAE7D,qDAAS,SAAC,WAAW,EAAE,EAAE,IAAI,EAAE,4DAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;AAlDvD,YAAY;IALxB,yDAAS,CAAC;QACP,QAAQ,EAAE,aAAa;QACvB,qEAAmC;;KAEtC,CAAC;GACW,YAAY,CA2cxB;AA3cwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjD2C;AACxB;AAEY;AACE;AACX;AACG;AACS;AACnB;AACJ;IAMvB,kBAAkB,SAAlB,kBAAkB;IAQ3B,YACY,KAAY,EACb,GAAiB,EAChB,GAAmB;QAFnB,UAAK,GAAL,KAAK,CAAO;QACb,QAAG,GAAH,GAAG,CAAc;QAChB,QAAG,GAAH,GAAG,CAAgB;QAVxB,gBAAW,GAAG,kEAAW,CAAC;QAC1B,oBAAe,GAAG,IAAI,CAAC;QAGtB,WAAM,GAAG,IAAI,CAAC;QAQlB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAM,CAAC,mDAAoB,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,eAAe;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAM,CAAC,yDAA8B,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS;aACT,IAAI,CACD,yDAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,yBAAyB;SAC5B;aACA,SAAS,CAAC,QAAQ,CAAC,EAAE;YAClB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC;QAC7D,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACtC,mDAAM,CAAC,6DAA4B,CAAC,iBAAiB,CAAC,CAAC,EACvD,uDAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChB,oDAAG,CAAC,OAAO,CAAC,EAAE,CACV,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,wCAAwC;YAC9C,OAAO;SACV,CAAC,CACL,CACJ,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACnC,mDAAM,CAAC,6DAA4B,CAAC,kBAAkB,CAAC,CAAC,EACxD,uDAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAChB,oDAAG,CAAC,OAAO,CAAC,EAAE,CACV,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,qCAAqC;YAC3C,OAAO;SACV,CAAC,CACL,CACJ,CAAC;IACN,CAAC;IACD,WAAW;QACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;CACJ;;YA/DgB,8CAAK;YAIb,wDAAY;YAEZ,oEAAc;;AAQV,kBAAkB;IAL9B,yDAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,4EAA0C;;KAE7C,CAAC;GACW,kBAAkB,CAiD9B;AAjD8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACf/B;AAOA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;IAQasB,gBAAgB,SAAhBA,gBAAgB;AAuBzBC,cACWC,GADX,EAEYC,KAFZ,EAGYC,SAHZ,EAIYC,EAJZ,EAKYC,GALZ,EAK+B;AAJpB;AACC;AACA;AACA;AACA;AAvBZ,iBAAQ,aAAR;AAEA,kBAAS,MAAT;AAEA,mBAAU,IAAV;AAEO,kBAAS,IAAT;AAEA,iCAAoC,EAApC;AACA,uBAA2B,EAA3B;AACA,sBAA0B,EAA1B;AAeH,SAAKA,GAAL,CAASC,OAAT,CAAiB;AAAEC,UAAI,EAAE;AAAR,KAAjB;AACH;;AAEMC,MAAI,CAACC,OAAD,EAAmBC,GAAnB,EAAsB;AAC7B,SAAKL,GAAL,CAASM,KAAT,CAAe;AAAEJ,UAAI,EAAE,mBAAR;AAA6BE;AAA7B,KAAf;AACA,SAAKP,KAAL,CAAWU,QAAX,CAAoBjB,iDAAA,EAApB;AACA,SAAKO,KAAL,CAAWU,QAAX,CAAoBjB,kDAAA,CAAyB;AAAEc;AAAF,KAAzB,CAApB;AACA,SAAKL,EAAL,CAAQW,EAAR,CAAWN,OAAO,CAACO,SAAR,CAAkBC,WAAlB,GAAgCC,OAAhC,CAAwC,GAAxC,EAA6C,GAA7C,CAAX,EAA8D;AAC1DT,aAAO,EAAE,EAAE,GAAGA,OAAL;AAAcU,aAAK,EAAET;AAArB;AADiD,KAA9D;AAGH;;AAEDU,aAAW;AACP,SAAKC,MAAL,GAAc,KAAd;AACH;;AAEDC,iBAAe;AACXC,WAAO,CAACC,GAAR,CAAY,CACR,KAAKC,WAAL,CAAiB,aAAjB,EAAgC,OAAhC,CADQ,EAER,KAAKC,YAAL,CAAkB,aAAlB,CAFQ,CAAZ,EAIKC,IAJL,CAIU,MAAK;AACP,WAAKtB,GAAL,CAASC,OAAT,CAAiB;AAAEC,YAAI,EAAE;AAAR,OAAjB;AACH,KANL,EAOKqB,KAPL,CAOWC,CAAC,IAAG;AACP,WAAKxB,GAAL,CAASyB,KAAT,CAAe;AACXvB,YAAI,EAAE,sCADK;AAEXsB;AAFW,OAAf;AAIH,KAZL;AAcA,SAAKE,KAAL,GAAa,aAAb;AACA,SAAKC,MAAL,GAAc,aAAd;AACAC,cAAU,CAAC,MAAK;AACZ,YAAMC,IAAI,GAAGC,QAAQ,CAACC,cAAT,CAAwB,gBAAxB,CAAb;AACA,UAAIF,IAAJ,EAAUA,IAAI,CAACvD,KAAL,CAAW0D,OAAX,GAAqB,GAArB;AACb,KAHS,EAGP,GAHO,CAAV;AAIH;;AACDC,UAAQ;AACJ,SAAKC,cAAL,GAAsB,KAAKC,cAAL,EAAtB,CADI,CAEJ;;AACA,SAAKC,OAAL,GAAe,KAAKtC,SAAL,CACVuC,IADU,CAEPpD,0DAAS,CAACqD,CAAC,IAAI,KAAKtB,MAAX,CAFF,EAGPrC,oDAAM,CAACO,iEAAD,CAHC,EAKVsD,SALU,CAKAC,IAAI,IAAG;AACd,UAAIA,IAAI,CAACC,KAAT,EAAgB;AACZ,aAAKA,KAAL,GAAaD,IAAI,CAACC,KAAlB;AACH;AACJ,KATU,CAAf;AAWA,SAAK7C,KAAL,CACKwC,IADL,CAEQ1D,oDAAM,CAACQ,0EAAD,CAFd,EAGQF,0DAAS,CAAC,MAAM,KAAK+B,MAAZ,CAHjB,EAIQjC,wEAAuB,CAAC,oBAAD,CAJ/B,EAMKyD,SANL,CAMeI,QAAQ,IAAG;AAClB,WAAK/C,KAAL,CAAWU,QAAX,CACId,qEAAA,CAAgC;AAC5BqD,sBAAc,EAAEF,QAAQ,CAACE,cADG;AAE5BC,oBAAY,EAAE;AAFc,OAAhC,CADJ;;AAOA,UAAIH,QAAQ,CAACI,kBAAT,IAA+B,CAAnC,EAAsC;AAClC,aAAKnD,KAAL,CAAWU,QAAX,CACIf,mEAAA,CAA+B;AAC3B0D,qBAAW,EAAE;AADc,SAA/B,CADJ;AAMA,aAAKrD,KAAL,CAAWU,QAAX,CACIf,mEAAA,CAA+B;AAC3B0D,qBAAW,EAAE;AADc,SAA/B,CADJ;AAMA,aAAKrD,KAAL,CAAWU,QAAX,CACIf,mEAAA,CAA+B;AAC3B0D,qBAAW,EAAE;AADc,SAA/B,CADJ;AAKH,OAlBD,MAkBO,IACHN,QAAQ,CAACI,kBAAT,IAA+B,KAA/B,IACAJ,QAAQ,CAACI,kBAAT,IAA+B,KAF5B,EAGL;AACE,aAAKnD,KAAL,CAAWU,QAAX,CACIf,mEAAA,CAA+B;AAC3B0D,qBAAW,EAAE;AADc,SAA/B,CADJ;AAMA,aAAKrD,KAAL,CAAWU,QAAX,CACIf,mEAAA,CAA+B;AAC3B0D,qBAAW,EAAE;AADc,SAA/B,CADJ;AAKH,OAfM,MAeA;AACH,aAAKrD,KAAL,CAAWU,QAAX,CACIf,mEAAA,CAA+B;AAC3B0D,qBAAW,EAAE;AADc,SAA/B,CADJ;AAKH;AACJ,KAtDL;AAwDA,SAAKC,OAAL,GAAe,KAAKtD,KAAL,CACVwC,IADU,CAEPpD,0DAAS,CAACqD,CAAC,IAAI,KAAKtB,MAAX,CAFF,EAGPrC,oDAAM,CAACQ,sEAAD,CAHC,EAKVqD,SALU,CAKAa,IAAI,IAAG;AACd,WAAKC,WAAL,GAAmB,EAAnB;AACA,WAAKC,UAAL,GAAkB,EAAlB;;AACA,UAAIF,IAAI,CAACT,QAAL,CAAcY,YAAlB,EAAgC;AAC5B,aAAKC,YAAL,GAAoBJ,IAAI,CAACT,QAAL,CAAcY,YAAlC;AACH;;AACD,UAAIH,IAAI,CAACK,qBAAT,EAAgC;AAC5B,aAAKC,qBAAL,GAA6BN,IAAI,CAACK,qBAAlC;AAEA,aAAKC,qBAAL,CAA2BC,OAA3B,CAAmCvD,GAAG,IAAG;AACrCA,aAAG,CAACwD,aAAJ,CAAkBD,OAAlB,CAA0BxD,OAAO,IAAG;AAChC,gBAAIA,OAAO,CAACO,SAAR,IAAqB,IAAzB,EAA+B;AAC3B,kBACIP,OAAO,CAACO,SAAR,KACA0C,IAAI,CAACT,QAAL,CAAckB,gBAFlB,EAGE;AACE,qBAAKC,cAAL,GAAsB3D,OAAtB;AACH;;AACD,mBAAKmD,UAAL,CAAgBS,IAAhB,CAAqB;AACjBC,qBAAK,EAAE7D,OAAO,CAAC8D,YADE;AAEjBC,oBAAI,EAAE,EAFW;AAGjBC,uBAAO,EAAE,MAAM,KAAKjE,IAAL,CAAUC,OAAV,EAAmBC,GAAnB;AAHE,eAArB;AAKH;AACJ,WAdD;AAgBA,eAAKiD,WAAL,CAAiBU,IAAjB,CAAsB;AAClBC,iBAAK,EAAE5D,GAAG,CAACgE,YADO;AAElBF,gBAAI,EAAE,EAFY;AAGlBG,iBAAK,EAAE,KAAKf;AAHM,WAAtB;AAMA,eAAKA,UAAL,GAAkB,EAAlB;AACH,SAxBD,EAH4B,CA4B5B;AACA;AAEA;;AACA,aAAKgB,OAAL,GAAe,KAAKjB,WAApB;AAEA,aAAK1D,GAAL,CAAS4E,KAAT,GAAiB,CACb;AACI;AACAL,cAAI,EAAE,gBAFV;AAGIM,oBAAU,EAAE,CAAC,WAAD,CAHhB;AAIIC,eAAK,EAAE,WAJX;AAKI;AACA;AACA;AACA;AACA;AACAN,iBAAO,EAAEO,KAAK,IAAG;AACb,iBAAK3E,GAAL,CAASC,OAAT,CAAiB;AACbC,kBAAI,EAAE,mBADO;AAEbyE;AAFa,aAAjB;;AAIA,gBAAI,KAAK/E,GAAL,CAASgF,oBAAT,IAAiC,IAArC,EAA2C;AACvC,mBAAKhF,GAAL,CAASgF,oBAAT,GACI,CAAC,KAAKhF,GAAL,CAASgF,oBADd;AAEH;;AACD,gBAAI,KAAKhF,GAAL,CAASiF,qBAAT,IAAkC,IAAtC,EAA4C;AACxC,mBAAKjF,GAAL,CAASiF,qBAAT,GACI,CAAC,KAAKjF,GAAL,CAASiF,qBADd;AAEH,aAZY,CAab;;AACH;AAxBL,SADa,EA2Bb;AACI;AACAV,cAAI,EAAE,kBAFV;AAGIM,oBAAU,EAAE,CAAC,MAAD,CAHhB;AAIIC,eAAK,EAAE,MAJX;AAKIN,iBAAO,EAAEO,KAAK,IAAG;AACb,gBAAI,KAAK/E,GAAL,CAASgF,oBAAT,IAAiC,IAArC,EAA2C;AACvC,mBAAKhF,GAAL,CAASgF,oBAAT,GACI,CAAC,KAAKhF,GAAL,CAASgF,oBADd;AAEH;;AACD,gBAAI,KAAKhF,GAAL,CAASiF,qBAAT,IAAkC,IAAtC,EAA4C;AACxC,mBAAKjF,GAAL,CAASiF,qBAAT,GACI,CAAC,KAAKjF,GAAL,CAASiF,qBADd;AAEH;;AACD,iBAAK7E,GAAL,CAASC,OAAT,CAAiB;AACbC,kBAAI,EAAE,cADO;AAEbyE;AAFa,aAAjB,EATa,CAab;AACH;AAnBL,SA3Ba,EAgDb;AACI;AACAR,cAAI,EAAE,0BAFV;AAGI;AACAO,eAAK,EAAE,kBAJX;AAKIN,iBAAO,EAAEO,KAAK,IAAG;AACb,iBAAK/E,GAAL,CAASkF,4BAAT,CAAsCH,KAAtC;;AACA,gBAAI,KAAK/E,GAAL,CAASgF,oBAAT,IAAiC,IAArC,EAA2C;AACvC,mBAAKhF,GAAL,CAASgF,oBAAT,GACI,CAAC,KAAKhF,GAAL,CAASgF,oBADd;AAEH;;AACD,gBAAI,KAAKhF,GAAL,CAASiF,qBAAT,IAAkC,IAAtC,EAA4C;AACxC,mBAAKjF,GAAL,CAASiF,qBAAT,GACI,CAAC,KAAKjF,GAAL,CAASiF,qBADd;AAEH;AACJ;AAfL,SAhDa,EAiEb;AACI;AACAV,cAAI,EAAE,kCAFV;AAGI;AACAO,eAAK,EAAE,gBAJX;AAKIN,iBAAO,EAAEO,KAAK,IAAG;AACb,iBAAK/E,GAAL,CAASmF,oBAAT,CAA8BJ,KAA9B;;AACA,gBAAI,KAAK/E,GAAL,CAASgF,oBAAT,IAAiC,IAArC,EAA2C;AACvC,mBAAKhF,GAAL,CAASgF,oBAAT,GACI,CAAC,KAAKhF,GAAL,CAASgF,oBADd;AAEH;;AACD,gBAAI,KAAKhF,GAAL,CAASiF,qBAAT,IAAkC,IAAtC,EAA4C;AACxC,mBAAKjF,GAAL,CAASiF,qBAAT,GACI,CAAC,KAAKjF,GAAL,CAASiF,qBADd;AAEH;AACJ;AAfL,SAjEa,EAkFb;AACI;AACAV,cAAI,EAAE,sBAFV;AAGI;AACAO,eAAK,EAAE,UAJX;AAKIM,eAAK,EAAE,KAAKpF,GAAL,CAASqF,YALpB;AAMIC,yBAAe,EAAE,KAAKtF,GAAL,CAASuF,iBAN9B;AAOIf,iBAAO,EAAEO,KAAK,IAAG;AACb,gBAAI,KAAK/E,GAAL,CAASgF,oBAAT,IAAiC,IAArC,EAA2C;AACvC,mBAAKhF,GAAL,CAASgF,oBAAT,GACI,CAAC,KAAKhF,GAAL,CAASgF,oBADd;AAEH;;AACD,iBAAKhF,GAAL,CAASiF,qBAAT,GACI,CAAC,KAAKjF,GAAL,CAASiF,qBADd;AAEH;AAdL,SAlFa,EAkGb;AACI;AACAH,eAAK,EAAE,UAFX;AAGIP,cAAI,EAAE,iBAHV;AAII;AACAC,iBAAO,EAAEO,KAAK,IAAG;AACb,gBAAI,KAAK/E,GAAL,CAASiF,qBAAT,IAAkC,IAAtC,EAA4C;AACxC,mBAAKjF,GAAL,CAASiF,qBAAT,GACI,CAAC,KAAKjF,GAAL,CAASiF,qBADd;AAEH;;AACD,iBAAKjF,GAAL,CAASgF,oBAAT,GACI,CAAC,KAAKhF,GAAL,CAASgF,oBADd;AAEH;AAZL,SAlGa,CAgHb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtJa,SAAjB;AAwJH;AACJ,KAtMU,CAAf;AAuMH,GAjVwB,CAmVzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEAzC,gBAAc;AACV,QAAIiD,MAAJ;AACA,QAAIlF,IAAJ;;AAEA,QAAImF,MAAM,CAACC,WAAP,CAAmBC,UAAvB,EAAmC;AAC/BH,YAAM,GAAGC,MAAM,CAACC,WAAP,CAAmBC,UAA5B;;AACA,UAAIH,MAAM,KAAK,GAAf,EAAoB;AAChBA,cAAM,GAAG,CAAT;AACH,OAJ8B,CAI7B;;AACL;;AAED,QAAIC,MAAM,CAACC,WAAP,CAAmBE,gBAAnB,CAAoC,YAApC,CAAJ,EAAuD;AACnDtF,UAAI,GACAmF,MAAM,CAACC,WAAP,CAAmBE,gBAAnB,CAAoC,YAApC,EAAkD,CAAlD,EAAqDC,SADzD;;AAGA,UAAIvF,IAAI,KAAK,UAAb,EAAyB;AACrBkF,cAAM,GAAG,CAAT;AACH;;AACD,UAAIlF,IAAI,KAAK,QAAb,EAAuB;AACnBkF,cAAM,GAAG,CAAT;AACH;;AACD,UAAIlF,IAAI,KAAK,cAAb,EAA6B;AACzBkF,cAAM,GAAG,CAAT;AACH;AACJ;;AACD,WAAOA,MAAP;AACH;;AAEDhE,aAAW,CAACM,KAAD,EAAgBgE,IAAI,GAAG,MAAvB,EAA6B;AAC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W,EAahB5J,2DAAK,CACD,SADC,EAEDC,2DAAK,CAAC;AACF4J,WAAO,EAAE;AADP,GAAD,CAFJ,CAbW,EAmBhB7J,2DAAK,CACD,QADC,EAEDC,2DAAK,CAAC;AACF4J,WAAO,EAAE;AADP,GAAD,CAFJ,CAnBW,EAyBhB3J,gEAAU,CACN,mCADM,EAENH,6DAAO,CAAC,sCAAD,CAFD,CAzBM,EA6BhBG,gEAAU,CACN,mCADM,EAENH,6DAAO,CAAC,sCAAD,CAFD,CA7BM,CAAb,CADC,CAzDL;;AAAA,CAAD,CA+F0B,GAAvBsK,uBAAuB,CAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7gCY;AACkD;AACpB;AACW;AACT;AACI;AACH;AACqB;AACjC;AACJ;AACiB;AACR;AACO;AACD;AACV;AACa;AAM9B;AACgC;AACF;AACmB;AACtC;AACiB;AACV;AACM;AACG;AACN;AAC6B;AACM;AAC2C;AACM;AACpD;AACH;AACY;AAC6B;AACM;AACnC;AACT;AACmB;AACM;AAC7C;AACX;AACsB;AAC2C;AACM;AACjD;AACqB;AAClB;AACT;AACG;AAC6B;AACM;AAC9D;AAC+C;AAC7B;AACmC;AAC7B;AACd;AACQ;AACY;AACA;AACjB;AACK;AACqB;AACT;AAC1B;AACS;AACW;AACd;AACiB;AAC8D;AACM;AACrD;AAC1B;AACc;AACS;AAC1B;AACW;AACS;AACmC;AACP;AACM;AAC9C;AACgC;AACpB;AACX;AAC+C;AACM;AAChD;AACoC;AAC7B;AAClB;AACc;AACd;AACG;AACU;AACF;AACR;AACL;AACJ;AACN;AACH;AACG;AAC6B;AAChB;AACF;AACiC;AACxB;AACN;AACM;AACN;AACY;AACH;AACO;AACJ;AACiD;AACN;AACjE;AACE;AACA;AACsC;AACN;AACnC;AAC4D;AAC9C;AACwC;AACsB;AACN;AAC5C;AACkD;AACN;AAC5C;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sBAAsB,sBAAsB,sBAAsB;;;;;;;;;;ACFrvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnSA;;;;;;;;;;ACAA;;;;;;;;;;ACAA","sources":["./src/app/about/about.component.ts","./src/app/about/about.module.ts","./src/app/about/about.route.ts","./src/app/account/account-allocations/account-allocation.route.ts","./src/app/account/account-allocations/account-allocations-container/account-allocations-container.component.ts","./src/app/account/account-allocations/account-allocations-container/index.ts","./src/app/account/account-allocations/account-allocations.module.ts","./src/app/account/account-allocations/account-allocations.service.ts","./src/app/account/account-allocations/account-allocations/account-allocations.component.ts","./src/app/account/account-allocations/accounts-receivable-contract-container/accounts-receivable-contract-container.component.ts","./src/app/account/account-allocations/accounts-receivable-contract/accounts-receivable-contract.component.ts","./src/app/account/account-allocations/cost-allocation-container/cost-allocation-container.component.ts","./src/app/account/account-allocations/cost-allocation/cost-allocation.component.ts","./src/app/account/account-allocations/facility-container/facility-container.component.ts","./src/app/account/account-allocations/facility/facility.component.ts","./src/app/account/account-allocations/index.ts","./src/app/account/account-allocations/posting-account-container/posting-account-container.component.ts","./src/app/account/account-allocations/posting-account/posting-account.component.ts","./src/app/account/account-allocations/store/account-allocation.actions.ts","./src/app/account/account-allocations/store/account-allocation.effects.ts","./src/app/account/account-allocations/store/account-allocation.model.ts","./src/app/account/account-allocations/store/account-allocation.reducer.ts","./src/app/account/account-allocations/store/account-allocation.selectors.ts","./src/app/account/account-allocations/store/account-posting-type.actions.ts","./src/app/account/account-allocations/store/account-posting-type.effects.ts","./src/app/account/account-allocations/store/account-posting-type.model.ts","./src/app/account/account-allocations/store/account-posting-type.reducer.ts","./src/app/account/account-allocations/store/account-posting-type.selectors.ts","./src/app/account/account-allocations/store/facility-allocation.actions.ts","./src/app/account/account-allocations/store/facility-allocation.effects.ts","./src/app/account/account-allocations/store/facility-allocation.model.ts","./src/app/account/account-allocations/store/facility-allocation.reducer.ts","./src/app/account/account-allocations/store/facility-allocation.selectors.ts","./src/app/account/account-allocations/store/index.ts","./src/app/account/account-container/account-container.component.ts","./src/app/account/account-container/index.ts","./src/app/account/account.module.ts","./src/app/account/account.route.ts","./src/app/account/account.service.ts","./src/app/account/index.ts","./src/app/account/store/account-contract.model.ts","./src/app/account/store/account.actions.ts","./src/app/account/store/account.effects.ts","./src/app/account/store/account.model.ts","./src/app/account/store/account.reducer.ts","./src/app/account/store/account.selectors.ts","./src/app/account/store/index.ts","./src/app/app.component.ts","./src/app/app.footer.component.ts","./src/app/app.menu.component.ts","./src/app/app.module.ts","./src/app/app.profile.component.ts","./src/app/app.service.ts","./src/app/app.topbar.component.ts","./src/app/attachment-view-feature/attachment-view-feature.component.ts","./src/app/attachment-view-feature/attachment.module.ts","./src/app/attachment-view-feature/attachment.route.ts","./src/app/attachment-view-feature/attachment.service.ts","./src/app/auth/auth-interceptor.ts","./src/app/auth/auth.module.ts","./src/app/auth/authentication.service.ts","./src/app/auth/company-access-dialog/company-access-dialog.component.ts","./src/app/auth/index.ts","./src/app/auth/pin-dialog/index.ts","./src/app/auth/pin-dialog/pin-dialog.component.ts","./src/app/auth/sign-in/dialog/index.ts","./src/app/auth/sign-in/dialog/sign-in-dialog.component.ts","./src/app/auth/sign-in/index.ts","./src/app/auth/sign-in/sign-in.component.ts","./src/app/auth/store/auth.actions.ts","./src/app/auth/store/auth.effects.ts","./src/app/auth/store/auth.reducer.ts","./src/app/auth/store/index.ts","./src/app/burden/burden-container/burden-container.component.ts","./src/app/burden/burden-filters-container/burden-filters-container.component.ts","./src/app/burden/burden-filters-presenter/burden-filters-presenter.component.ts","./src/app/burden/burden-presenter/burden-presenter.component.ts","./src/app/burden/burden.module.ts","./src/app/burden/burden.route.ts","./src/app/checkup/CheckupRoute.ts","./src/app/checkup/checkup.module.ts","./src/app/checkup/checkup.service.ts","./src/app/checkup/features/checkup-feature.component.ts","./src/app/checkup/features/index.ts","./src/app/checkup/presenters/checkup-presenter.component.ts","./src/app/checkup/store/checkup.actions.ts","./src/app/checkup/store/checkup.effects.ts","./src/app/checkup/store/checkup.model.ts","./src/app/checkup/store/checkup.reducer.ts","./src/app/checkup/store/index.ts","./src/app/class/class.module.ts","./src/app/class/class.service.ts","./src/app/class/feature/class-feature.component.ts","./src/app/class/presenter/class-presenter.component.ts","./src/app/class/store/contract-class.actions.ts","./src/app/class/store/contract-class.effects.ts","./src/app/class/store/contract-class.reducer.ts","./src/app/common/IAttachment.ts","./src/app/common/Interfaces.ts","./src/app/common/abstract-form-group-component.ts","./src/app/common/abstract-ng-model-component.ts","./src/app/common/cache-buster-interceptor.ts","./src/app/common/deepEquals.ts","./src/app/common/flatDeep.ts","./src/app/common/index.ts","./src/app/common/safe.pipe.ts","./src/app/common/service-testing-helper.ts","./src/app/company-calendar/company-calendar-feature/company-calendar-feature.component.ts","./src/app/company-calendar/company-calendar-presenter/company-calendar-presenter.component.ts","./src/app/company-calendar/company-calendar.module.ts","./src/app/company-calendar/company-calendar.route.ts","./src/app/company-setting/CompanySettingRoute.ts","./src/app/company-setting/company-setting-feature/company-setting-feature.component.ts","./src/app/company-setting/company-setting-presenter/company-setting-presenter.component.ts","./src/app/company-setting/company-setting.module.ts","./src/app/company-setting/company-setting.service.ts","./src/app/company-setting/index.ts","./src/app/company-setting/store/company-setting.actions.ts","./src/app/company-setting/store/company-setting.effects.ts","./src/app/company-setting/store/company-setting.model.ts","./src/app/company-setting/store/company-setting.reducer.ts","./src/app/company-setting/store/index.ts","./src/app/contract-cumulative/contract-cumulative.module.ts","./src/app/contract-cumulative/contract-cumulative.service.ts","./src/app/contract-cumulative/feature/contract-cumulative-feature.component.ts","./src/app/contract-cumulative/presenter/contract-cumulative-presenter.component.ts","./src/app/contract-cumulative/store/contract-cumulative.actions.ts","./src/app/contract-cumulative/store/contract-cumulative.effects.ts","./src/app/contract-cumulative/store/contract-cumulative.reducer.ts","./src/app/contract-management/contract-management.module.ts","./src/app/contract-management/contract-management.service.ts","./src/app/contract-management/features/contract-management-features.component.ts","./src/app/contract-management/presenters/contract-management-presenters.component.ts","./src/app/contract-management/store/charge-number-management.actions.ts","./src/app/contract-management/store/charge-number-management.effects.ts","./src/app/contract-management/store/charge-number-management.model.ts","./src/app/contract-management/store/charge-number-management.reducer.ts","./src/app/contract-management/store/contract-management.actions.ts","./src/app/contract-management/store/contract-management.effects.ts","./src/app/contract-management/store/contract-management.reducer.ts","./src/app/contract-management/store/funding-mod.actions.ts","./src/app/contract-management/store/funding-mod.effects.ts","./src/app/contract-management/store/funding-mod.reducer.ts","./src/app/contract-management/store/index.ts","./src/app/contract-management/store/invoice-cycle.actions.ts","./src/app/contract-management/store/invoice-cycle.effects.ts","./src/app/contract-management/store/invoice-cycle.reducer.ts","./src/app/contract-structure/contract-structure.module.ts","./src/app/contract-structure/contract-structure.service.ts","./src/app/contract-structure/features/contract-structure-features.component.ts","./src/app/contract-structure/presenters/contract-structure-presenters.component.ts","./src/app/contract-structure/store/actions.ts","./src/app/contract-structure/store/effects.ts","./src/app/contract-structure/store/reducer.ts","./src/app/customer-admin/customer-admin-feature/customer-admin-feature.component.ts","./src/app/customer-admin/customer-admin-presenter/customer-admin-presenter.component.ts","./src/app/customer-admin/customer-admin.module.ts","./src/app/customer-admin/customer-admin.route.ts","./src/app/customer-admin/customer-admin.service.ts","./src/app/customer-admin/store/advisors/advisor.actions.ts","./src/app/customer-admin/store/advisors/advisor.effects.ts","./src/app/customer-admin/store/advisors/advisor.reducer.ts","./src/app/customer-admin/store/company-info/company-info.actions.ts","./src/app/customer-admin/store/company-info/company-info.effects.ts","./src/app/customer-admin/store/company-info/company-info.reducer.ts","./src/app/dashboard/dashboard-feature/dashboard-feature.component.ts","./src/app/dashboard/dashboard-presenter/dashboard-presenter.component.ts","./src/app/dashboard/dashboard.module.ts","./src/app/dashboard/dashboard.route.ts","./src/app/data-services/accrual-period/accrual-period.data-service.ts","./src/app/data-services/accrual-period/accrual-period.model.ts","./src/app/data-services/accrual-period/index.ts","./src/app/data-services/address/address.data-service.ts","./src/app/data-services/address/address.model.ts","./src/app/data-services/address/index.ts","./src/app/data-services/budget-cycle/budget-cycle.data-service.ts","./src/app/data-services/budget-cycle/budget-cycle.model.ts","./src/app/data-services/budget-cycle/index.ts","./src/app/data-services/budget-level/budget-level.data-service.ts","./src/app/data-services/budget-level/budget-level.model.ts","./src/app/data-services/budget-level/index.ts","./src/app/data-services/burden/burden.data-service.ts","./src/app/data-services/burden/burden.model.ts","./src/app/data-services/burden/index.ts","./src/app/data-services/chargenumber/chargenumber.data-service.ts","./src/app/data-services/chargenumber/chargenumber.model.ts","./src/app/data-services/chargenumber/index.ts","./src/app/data-services/company-access/company-access.data-service.ts","./src/app/data-services/company-access/company-access.model.ts","./src/app/data-services/company-access/index.ts","./src/app/data-services/company-calendar/company-calendar.data-service.ts","./src/app/data-services/company-calendar/company-calendar.model.ts","./src/app/data-services/company-calendar/index.ts","./src/app/data-services/contract/contract.data-service.ts","./src/app/data-services/contract/contract.model.ts","./src/app/data-services/contract/index.ts","./src/app/data-services/contract/summary/contract-summary.data-service.ts","./src/app/data-services/contract/summary/contract-summary.model.ts","./src/app/data-services/contract/summary/index.ts","./src/app/data-services/cumulative-upload/cumulative-upload.data-service.ts","./src/app/data-services/cumulative-upload/cumulative-upload.model.ts","./src/app/data-services/cumulative-upload/index.ts","./src/app/data-services/dashboard-settings/dashboard-settings.data-service.ts","./src/app/data-services/dashboard-settings/dashboard-settings.model.ts","./src/app/data-services/dashboard-settings/index.ts","./src/app/data-services/dashboard/accrual/accrual.data-service.ts","./src/app/data-services/dashboard/accrual/accrual.model.ts","./src/app/data-services/dashboard/accrual/index.ts","./src/app/data-services/dashboard/dr-status/dr-status.data-service.ts","./src/app/data-services/dashboard/dr-status/dr-status.model.ts","./src/app/data-services/dashboard/dr-status/index.ts","./src/app/data-services/dashboard/funding/funding.data-service.ts","./src/app/data-services/dashboard/funding/funding.model.ts","./src/app/data-services/dashboard/funding/index.ts","./src/app/data-services/dashboard/status/index.ts","./src/app/data-services/dashboard/status/role-status.data-service.ts","./src/app/data-services/dashboard/status/role-status.model.ts","./src/app/data-services/data-services.module.ts","./src/app/data-services/defer-billing/defer-billing.data-service.ts","./src/app/data-services/defer-billing/defer-billing.model.ts","./src/app/data-services/defer-billing/index.ts","./src/app/data-services/efaact.data-service.ts","./src/app/data-services/efaact.dynamic-data-service.ts","./src/app/data-services/email-audit/email-audit.data-service.ts","./src/app/data-services/email-audit/email-audit.model.ts","./src/app/data-services/email-audit/index.ts","./src/app/data-services/employee-payroll-item/employee-payroll-item.data-service.ts","./src/app/data-services/employee-payroll-item/employee-payroll-item.model.ts","./src/app/data-services/employee-payroll-item/index.ts","./src/app/data-services/employee-validation/employee-validation.data-service.ts","./src/app/data-services/employee-validation/employee-validation.model.ts","./src/app/data-services/employee-validation/index.ts","./src/app/data-services/entity-metadata.ts","./src/app/data-services/fee-history/fee-history.data-service.ts","./src/app/data-services/fee-history/fee-history.model.ts","./src/app/data-services/fee-history/index.ts","./src/app/data-services/fee-level/fee-level.data-service.ts","./src/app/data-services/fee-level/fee-level.model.ts","./src/app/data-services/fee-level/fee-on-ga/fee-on-ga.data-service.ts","./src/app/data-services/fee-level/fee-on-ga/fee-on-ga.model.ts","./src/app/data-services/fee-level/fee-on-ga/index.ts","./src/app/data-services/fee-level/index.ts","./src/app/data-services/index.ts","./src/app/data-services/indirect-rate-adjust/index.ts","./src/app/data-services/indirect-rate-adjust/indirect-rate-adjust.data-service.ts","./src/app/data-services/indirect-rate-adjust/indirect-rate-adjust.model.ts","./src/app/data-services/indirect-rate-history/index.ts","./src/app/data-services/indirect-rate-history/indirect-rate-history.data-service.ts","./src/app/data-services/indirect-rate-history/indirect-rate-history.model.ts","./src/app/data-services/indirect-rate-review/index.ts","./src/app/data-services/indirect-rate-review/indirect-rate-review.data-service.ts","./src/app/data-services/indirect-rate-review/indirect-rate-review.model.ts","./src/app/data-services/invoice-contract-cycle/index.ts","./src/app/data-services/invoice-contract-cycle/invoice-contract-cycle.data-service.ts","./src/app/data-services/invoice-contract-cycle/invoice-contract-cycle.model.ts","./src/app/data-services/invoice-register/index.ts","./src/app/data-services/invoice-register/invoice-register.data-service.ts","./src/app/data-services/invoice-register/invoice-register.model.ts","./src/app/data-services/invoice/index.ts","./src/app/data-services/invoice/invoice.data-service.ts","./src/app/data-services/invoice/invoice.model.ts","./src/app/data-services/invoice/setup/address/index.ts","./src/app/data-services/invoice/setup/address/invoice-address-setup.data-service.ts","./src/app/data-services/invoice/setup/address/invoice-address-setup.model.ts","./src/app/data-services/invoice/setup/index.ts","./src/app/data-services/invoice/setup/invoice-address-type/index.ts","./src/app/data-services/invoice/setup/invoice-address-type/invoice-address-type.data-service.ts","./src/app/data-services/invoice/setup/invoice-address-type/invoice-address-type.model.ts","./src/app/data-services/invoice/setup/invoice-detail-options/index.ts","./src/app/data-services/invoice/setup/invoice-detail-options/invoice-detail-options.data-service.ts","./src/app/data-services/invoice/setup/invoice-detail-options/invoice-detail-options.model.ts","./src/app/data-services/invoice/setup/invoice-property/index.ts","./src/app/data-services/invoice/setup/invoice-property/invoice-property.data-service.ts","./src/app/data-services/invoice/setup/invoice-property/invoice-property.model.ts","./src/app/data-services/invoice/setup/invoice-session-type/index.ts","./src/app/data-services/invoice/setup/invoice-session-type/invoice-session-type.data-service.ts","./src/app/data-services/invoice/setup/invoice-session-type/invoice-session-type.model.ts","./src/app/data-services/invoice/setup/invoice/index.ts","./src/app/data-services/invoice/setup/invoice/invoice-setup.data-service.ts","./src/app/data-services/invoice/setup/invoice/invoice-setup.interceptor.ts","./src/app/data-services/invoice/setup/invoice/invoice-setup.model.ts","./src/app/data-services/invoice/setup/selections/index.ts","./src/app/data-services/invoice/setup/selections/invoice-selections.data-service.ts","./src/app/data-services/invoice/setup/selections/invoice-selections.model.ts","./src/app/data-services/invoice/setup/session/index.ts","./src/app/data-services/invoice/setup/session/invoice-session-setup.data-service.ts","./src/app/data-services/invoice/setup/session/invoice-session-setup.model.ts","./src/app/data-services/job-audit/index.ts","./src/app/data-services/job-audit/job-audit.data-service.ts","./src/app/data-services/job-audit/job-audit.model.ts","./src/app/data-services/job-timer/index.ts","./src/app/data-services/job-timer/job-timer.data-service.ts","./src/app/data-services/job-timer/job-timer.model.ts","./src/app/data-services/manage-users/index.ts","./src/app/data-services/manage-users/login.model.ts","./src/app/data-services/manage-users/manage-users.data-service.ts","./src/app/data-services/manual-adjustment/index.ts","./src/app/data-services/manual-adjustment/manual-adjustment.data-service.ts","./src/app/data-services/manual-adjustment/manual-adjustment.model.ts","./src/app/data-services/merge/index.ts","./src/app/data-services/merge/merge.data-service.ts","./src/app/data-services/merge/merge.model.ts","./src/app/data-services/payrate-override/index.ts","./src/app/data-services/payrate-override/payrate-override.data-service.ts","./src/app/data-services/payrate-override/payrate-override.model.ts","./src/app/data-services/payroll-validation/index.ts","./src/app/data-services/payroll-validation/payroll-validation.data-service.ts","./src/app/data-services/payroll-validation/payroll-validation.model.ts","./src/app/data-services/payroll/payroll-export/index.ts","./src/app/data-services/payroll/payroll-export/payroll-export.data-service.ts","./src/app/data-services/payroll/payroll-export/payroll-export.model.ts","./src/app/data-services/premium-pay/index.ts","./src/app/data-services/premium-pay/premium-pay.data-service.ts","./src/app/data-services/premium-pay/premium-pay.model.ts","./src/app/data-services/project-budget/index.ts","./src/app/data-services/project-budget/project-budget-update.model.ts","./src/app/data-services/project-budget/project-budget.data-service.ts","./src/app/data-services/project-budget/project-budget.model.ts","./src/app/data-services/pto-policy/assignment/index.ts","./src/app/data-services/pto-policy/assignment/pto-policy-assignment.data-service.ts","./src/app/data-services/pto-policy/assignment/pto-policy-assignment.model.ts","./src/app/data-services/pto-policy/setup/index.ts","./src/app/data-services/pto-policy/setup/pto-policy.data-service.ts","./src/app/data-services/pto-policy/setup/pto-policy.model.ts","./src/app/data-services/rate-ceiling/index.ts","./src/app/data-services/rate-ceiling/rate-ceiling.data-service.ts","./src/app/data-services/rate-ceiling/rate-ceiling.model.ts","./src/app/data-services/rate-planning/index.ts","./src/app/data-services/rate-planning/rate-planning.data-service.ts","./src/app/data-services/rate-planning/rate-planning.model.ts","./src/app/data-services/recalculate-transactions/recalculate-contracts/index.ts","./src/app/data-services/recalculate-transactions/recalculate-contracts/recalculate-contracts.data-service.ts","./src/app/data-services/recalculate-transactions/recalculate-contracts/recalculate-contracts.model.ts","./src/app/data-services/recalculate-transactions/recalculate-schedules/index.ts","./src/app/data-services/recalculate-transactions/recalculate-schedules/recalculate-schedules.data-service.ts","./src/app/data-services/recalculate-transactions/recalculate-schedules/recalculate-schedules.model.ts","./src/app/data-services/recalculate-transactions/recalculate-settings/index.ts","./src/app/data-services/recalculate-transactions/recalculate-settings/recalculate-settings.data-service.ts","./src/app/data-services/recalculate-transactions/recalculate-settings/recalculate-settings.model.ts","./src/app/data-services/reconciliation/index.ts","./src/app/data-services/reconciliation/reconciliation-fields/index.ts","./src/app/data-services/reconciliation/reconciliation-fields/reconciliation-field.data-service.ts","./src/app/data-services/reconciliation/reconciliation-fields/reconciliation-field.model.ts","./src/app/data-services/reconciliation/reconciliation-templates/index.ts","./src/app/data-services/reconciliation/reconciliation-templates/reconciliation-template.data-service.ts","./src/app/data-services/reconciliation/reconciliation-templates/reconciliation-template.model.ts","./src/app/data-services/reconciliation/reconciliation.data-service.ts","./src/app/data-services/reconciliation/reconciliation.model.ts","./src/app/data-services/registration/index.ts","./src/app/data-services/registration/registration.data-service.ts","./src/app/data-services/registration/registration.model.ts","./src/app/data-services/service-item/history/index.ts","./src/app/data-services/service-item/history/service-item-history.data-service.ts","./src/app/data-services/service-item/history/service-item-history.model.ts","./src/app/data-services/service-item/index.ts","./src/app/data-services/signature-policy/index.ts","./src/app/data-services/signature-policy/signature-policy.data-service.ts","./src/app/data-services/signature-policy/signature-policy.model.ts","./src/app/data-services/timecard-class/index.ts","./src/app/data-services/timecard-class/timecard-class.data-service.ts","./src/app/data-services/timecard-class/timecard-class.model.ts","./src/app/data-services/timecard-sequence/index.ts","./src/app/data-services/timecard-sequence/timecard-sequence.data-service.ts","./src/app/data-services/timecard-sequence/timecard-sequence.model.ts","./src/app/data-services/toaster/index.ts","./src/app/data-services/toaster/toast.model.ts","./src/app/data-services/toaster/toaster.data-service.ts","./src/app/data-services/vendor/index.ts","./src/app/data-services/vendor/vendor.data-service.ts","./src/app/data-services/vendor/vendor.model.ts","./src/app/defer-billing/defer-billing-feature/defer-billing-feature.component.ts","./src/app/defer-billing/defer-billing-presenter/defer-billing-presenter.component.ts","./src/app/defer-billing/defer-billing.module.ts","./src/app/defer-billing/defer-billing.route.ts","./src/app/efaact-configuration/efaact-configuration.module.ts","./src/app/efaact-material/efaact-material.module.ts","./src/app/efaact-routing/ContractClassRoute.ts","./src/app/efaact-routing/ContractCumulativeRoute.ts","./src/app/efaact-routing/ContractMgmtRoute.ts","./src/app/efaact-routing/ContractStructureRoute.ts","./src/app/efaact-routing/ExpenseItemRoute.ts","./src/app/efaact-routing/ExpensesRoute.ts","./src/app/efaact-routing/FixedPriceRoute.ts","./src/app/efaact-routing/LogoRoute.ts","./src/app/efaact-routing/OversignTimeRoute.ts","./src/app/efaact-routing/UserEntryDatesRoute.ts","./src/app/efaact-routing/efaact-routing.module.ts","./src/app/efaact-routing/process-resolver.ts","./src/app/efaact-routing/roles-groups-routing.module.ts","./src/app/efaact-routing/time-card-routing.module.ts","./src/app/email-audit/email-audit-container/email-audit-container.component.ts","./src/app/email-audit/email-audit-container/index.ts","./src/app/email-audit/email-audit-presenter/email-audit-presenter.component.ts","./src/app/email-audit/email-audit-presenter/index.ts","./src/app/email-audit/email-audit.module.ts","./src/app/email-audit/email-audit.route.ts","./src/app/email-audit/index.ts","./src/app/employee-validation/employee-validation-container/employee-validation-container.component.ts","./src/app/employee-validation/employee-validation-presenter/employee-validation-presenter.component.ts","./src/app/employee-validation/employee-validation.module.ts","./src/app/employee-validation/employee-validation.route.ts","./src/app/expense-item/expense-item.module.ts","./src/app/expense-item/expense-item.service.ts","./src/app/expense-item/feature/expense-item-feature.component.ts","./src/app/expense-item/presenter/expense-item-presenter.component.ts","./src/app/expense-item/store/expense-item.actions.ts","./src/app/expense-item/store/expense-item.effects.ts","./src/app/expense-item/store/expense-item.reducer.ts","./src/app/expenses/ExpenseSection.ts","./src/app/expenses/IExpenseLine.ts","./src/app/expenses/IExpenseReceipt.ts","./src/app/expenses/IExpenseSummary.ts","./src/app/expenses/IExpenseTask.ts","./src/app/expenses/IPaymentMethod.ts","./src/app/expenses/ITravelMode.ts","./src/app/expenses/city.service.ts","./src/app/expenses/expense-enums.ts","./src/app/expenses/expense-routing.module.ts","./src/app/expenses/expense.service.ts","./src/app/expenses/expenses.module.ts","./src/app/expenses/features/expense-add/expense-add-feature.component.ts","./src/app/expenses/features/expense-add/index.ts","./src/app/expenses/features/expense-list/expense-list-feature.component.ts","./src/app/expenses/features/expense-list/index.ts","./src/app/expenses/features/expense-pdbo-feature/expense-pdbo-feature.component.ts","./src/app/expenses/features/expense-pdbo-feature/index.ts","./src/app/expenses/features/expense-receipt-view-feature/expense-receipt-view-feature.component.ts","./src/app/expenses/features/expense-receipt-view-feature/index.ts","./src/app/expenses/features/index.ts","./src/app/expenses/index.ts","./src/app/expenses/presenters/expense-add/expense-add.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-add.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-city-state-zip/expense-detail-city-state-zip-container/expense-detail-city-state-zip-container.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-city-state-zip/expense-detail-city-state-zip-container/index.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-city-state-zip/expense-detail-city-state-zip-presenter/expense-detail-city-state-zip.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-city-state-zip/expense-detail-city-state-zip-presenter/index.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-city-state-zip/index.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-mileage/expense-detail-mileage.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-mileage/index.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-per-diem/expense-detail-per-diem.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-per-diem/index.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-receipt/expense-detail-receipt.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-receipt/index.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-selector/expense-detail-selector.component.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/expense-detail-selector/index.ts","./src/app/expenses/presenters/expense-add/expense-detail-add/index.ts","./src/app/expenses/presenters/expense-add/expense-receipt-add/expense-receipt-selector/expense-receipt-selector.component.ts","./src/app/expenses/presenters/expense-add/expense-receipt-add/expense-receipt-selector/index.ts","./src/app/expenses/presenters/expense-add/expense-receipt-add/index.ts","./src/app/expenses/presenters/expense-add/expense-summary-add/expense-summary-add.component.ts","./src/app/expenses/presenters/expense-add/expense-summary-add/index.ts","./src/app/expenses/presenters/expense-add/index.ts","./src/app/expenses/presenters/expense-list/expense-detail-list/expense-detail-list.component.ts","./src/app/expenses/presenters/expense-list/expense-detail-list/index.ts","./src/app/expenses/presenters/expense-list/expense-list.component.ts","./src/app/expenses/presenters/expense-list/expense-receipt-list/expense-receipt-list.component.ts","./src/app/expenses/presenters/expense-list/expense-receipt-list/index.ts","./src/app/expenses/presenters/expense-list/expense-summary-list/expense-summary-list.component.ts","./src/app/expenses/presenters/expense-list/expense-summary-list/index.ts","./src/app/expenses/presenters/expense-list/index.ts","./src/app/expenses/presenters/expense-pdbo/expense-pdbo.component.ts","./src/app/expenses/presenters/expense-pdbo/index.ts","./src/app/expenses/presenters/expense-receipt-view-presenter/expense-receipt-view-presenter.component.ts","./src/app/expenses/presenters/expense-receipt-view-presenter/index.ts","./src/app/expenses/presenters/index.ts","./src/app/expenses/store/actions.ts","./src/app/expenses/store/city/city.actions.ts","./src/app/expenses/store/city/city.effects.ts","./src/app/expenses/store/city/city.model.ts","./src/app/expenses/store/city/city.reducer.ts","./src/app/expenses/store/city/index.ts","./src/app/expenses/store/effects.ts","./src/app/expenses/store/index.ts","./src/app/expenses/store/reducer.ts","./src/app/fee-level/feature/fee-level-feature.component.ts","./src/app/fee-level/fee-level.module.ts","./src/app/fee-level/fee-level.route.ts","./src/app/fee-level/presenter/fee-level-presenter.component.ts","./src/app/fixed-price/components/fixed-price-tab/fixed-price.component.ts","./src/app/fixed-price/containers/fixed-price-shell/fixed-price-shell.component.ts","./src/app/fixed-price/fixed-price.module.ts","./src/app/fixed-price/fixed-price.service.ts","./src/app/fixed-price/store/actions.ts","./src/app/fixed-price/store/effects.ts","./src/app/fixed-price/store/reducer.ts","./src/app/groups/feature/groups-feature.component.ts","./src/app/groups/feature/index.ts","./src/app/groups/groups.module.ts","./src/app/groups/groups.service.ts","./src/app/groups/index.ts","./src/app/groups/presenters/groups-add/groups-add.component.ts","./src/app/groups/presenters/groups-add/index.ts","./src/app/groups/presenters/groups-presenters.component.ts","./src/app/groups/presenters/index.ts","./src/app/groups/store/actions.ts","./src/app/groups/store/effects.ts","./src/app/groups/store/index.ts","./src/app/groups/store/reducer.ts","./src/app/help-desk/feature/help-desk-feature.component.ts","./src/app/help-desk/feature/index.ts","./src/app/help-desk/help-desk.module.ts","./src/app/help-desk/help-desk.route.ts","./src/app/help-desk/presenters/help-desk.component.ts","./src/app/help-desk/presenters/index.ts","./src/app/import/import-container/import-container.component.ts","./src/app/import/import-container/index.ts","./src/app/import/import-presenter/import-presenter.component.ts","./src/app/import/import-presenter/index.ts","./src/app/import/import.module.ts","./src/app/import/import.route.ts","./src/app/import/import.service.ts","./src/app/indirect-jobs/IndirectJobsRoute.ts","./src/app/indirect-jobs/features/indirect-jobs-features.component.ts","./src/app/indirect-jobs/indirect-jobs.module.ts","./src/app/indirect-jobs/indirect-jobs.service.ts","./src/app/indirect-jobs/presenters/indirect-jobs-presenters.component.ts","./src/app/indirect-jobs/store/actions.ts","./src/app/indirect-jobs/store/effects.ts","./src/app/indirect-jobs/store/reducer.ts","./src/app/indirect-rate/index.ts","./src/app/indirect-rate/indirect-rate-container/index.ts","./src/app/indirect-rate/indirect-rate-container/indirect-rate-container.component.ts","./src/app/indirect-rate/indirect-rate-cost-center/index.ts","./src/app/indirect-rate/indirect-rate-cost-center/indirect-rate-cost-center-container/index.ts","./src/app/indirect-rate/indirect-rate-cost-center/indirect-rate-cost-center-container/indirect-rate-cost-center-container.component.ts","./src/app/indirect-rate/indirect-rate-cost-center/indirect-rate-cost-center/index.ts","./src/app/indirect-rate/indirect-rate-cost-center/indirect-rate-cost-center/indirect-rate-cost-center.component.ts","./src/app/indirect-rate/indirect-rate-history/index.ts","./src/app/indirect-rate/indirect-rate-history/indirect-rate-history-container/index.ts","./src/app/indirect-rate/indirect-rate-history/indirect-rate-history-container/indirect-rate-history-container.component.ts","./src/app/indirect-rate/indirect-rate-history/indirect-rate-history-presenter/index.ts","./src/app/indirect-rate/indirect-rate-history/indirect-rate-history-presenter/indirect-rate-history-presenter.component.ts","./src/app/indirect-rate/indirect-rate-management/index.ts","./src/app/indirect-rate/indirect-rate-management/indirect-rate-management-container/index.ts","./src/app/indirect-rate/indirect-rate-management/indirect-rate-management-container/indirect-rate-management-container.component.ts","./src/app/indirect-rate/indirect-rate-management/indirect-rate-management-presenter/index.ts","./src/app/indirect-rate/indirect-rate-management/indirect-rate-management-presenter/indirect-rate-management-presenter.component.ts","./src/app/indirect-rate/indirect-rate-review/index.ts","./src/app/indirect-rate/indirect-rate-review/indirect-rate-review-container/index.ts","./src/app/indirect-rate/indirect-rate-review/indirect-rate-review-container/indirect-rate-review-container.component.ts","./src/app/indirect-rate/indirect-rate-review/indirect-rate-review-presenter/index.ts","./src/app/indirect-rate/indirect-rate-review/indirect-rate-review-presenter/indirect-rate-review-presenter.component.ts","./src/app/indirect-rate/indirect-rate-rule/index.ts","./src/app/indirect-rate/indirect-rate-rule/indirect-rate-rule-container/index.ts","./src/app/indirect-rate/indirect-rate-rule/indirect-rate-rule-container/indirect-rate-rule-container.component.ts","./src/app/indirect-rate/indirect-rate-rule/indirect-rate-rule-presenter/index.ts","./src/app/indirect-rate/indirect-rate-rule/indirect-rate-rule-presenter/indirect-rate-rule.component.ts","./src/app/indirect-rate/indirect-rate-structure/index.ts","./src/app/indirect-rate/indirect-rate-structure/indirect-rate-structure-container/index.ts","./src/app/indirect-rate/indirect-rate-structure/indirect-rate-structure-container/indirect-rate-structure-container.component.ts","./src/app/indirect-rate/indirect-rate-structure/indirect-rate-structure-presenter/index.ts","./src/app/indirect-rate/indirect-rate-structure/indirect-rate-structure-presenter/indirect-rate-structure.component.ts","./src/app/indirect-rate/indirect-rate.module.ts","./src/app/indirect-rate/indirect-rate.route.ts","./src/app/indirect-rate/indirect-rate.service.ts","./src/app/indirect-rate/indirect-rate/index.ts","./src/app/indirect-rate/indirect-rate/indirect-rate.component.ts","./src/app/indirect-rate/indirect.route.ts","./src/app/indirect-rate/store/index.ts","./src/app/indirect-rate/store/indirect-rate-cost-center/index.ts","./src/app/indirect-rate/store/indirect-rate-cost-center/indirect-rate-cost-center.actions.ts","./src/app/indirect-rate/store/indirect-rate-cost-center/indirect-rate-cost-center.effects.ts","./src/app/indirect-rate/store/indirect-rate-cost-center/indirect-rate-cost-center.model.ts","./src/app/indirect-rate/store/indirect-rate-cost-center/indirect-rate-cost-center.reducer.ts","./src/app/indirect-rate/store/indirect-rate-cost-center/indirect-rate-cost-center.selectors.ts","./src/app/indirect-rate/store/indirect-rate-rule/index.ts","./src/app/indirect-rate/store/indirect-rate-rule/indirect-rate-rule.actions.ts","./src/app/indirect-rate/store/indirect-rate-rule/indirect-rate-rule.effects.ts","./src/app/indirect-rate/store/indirect-rate-rule/indirect-rate-rule.model.ts","./src/app/indirect-rate/store/indirect-rate-rule/indirect-rate-rule.reducer.ts","./src/app/indirect-rate/store/indirect-rate-rule/indirect-rate-rule.selectors.ts","./src/app/indirect-rate/store/indirect-rate-structure/index.ts","./src/app/indirect-rate/store/indirect-rate-structure/indirect-rate-structure.actions.ts","./src/app/indirect-rate/store/indirect-rate-structure/indirect-rate-structure.effects.ts","./src/app/indirect-rate/store/indirect-rate-structure/indirect-rate-structure.model.ts","./src/app/indirect-rate/store/indirect-rate-structure/indirect-rate-structure.reducer.ts","./src/app/indirect-rate/store/indirect-rate-structure/indirect-rate-structure.selectors.ts","./src/app/internal-admin/internal-admin-feature/internal-admin-feature.component.ts","./src/app/internal-admin/internal-admin-presenter/internal-admin-presenter.component.ts","./src/app/internal-admin/internal-admin.module.ts","./src/app/internal-admin/internal-admin.route.ts","./src/app/internal-admin/internal-admin.service.ts","./src/app/internal-admin/store/efaact-customer/efaact-customer.actions.ts","./src/app/internal-admin/store/efaact-customer/efaact-customer.effects.ts","./src/app/internal-admin/store/efaact-customer/efaact-customer.reducer.ts","./src/app/internal-admin/store/jobs/jobs.actions.ts","./src/app/internal-admin/store/jobs/jobs.effects.ts","./src/app/internal-admin/store/jobs/jobs.reducer.ts","./src/app/internal-admin/store/queue-job/queue-job.actions.ts","./src/app/internal-admin/store/queue-job/queue-job.effects.ts","./src/app/internal-admin/store/queue-job/queue-job.reducer.ts","./src/app/invoice/invoice.module.ts","./src/app/invoice/invoice.route.ts","./src/app/invoice/management/index.ts","./src/app/invoice/management/invoice-charge-number/invoice-charge-number.component.ts","./src/app/invoice/management/invoice-cycle/invoice-cycle.component.ts","./src/app/invoice/management/invoice-management-container/index.ts","./src/app/invoice/management/invoice-management-container/invoice-management-container.component.ts","./src/app/invoice/management/invoice-management.module.ts","./src/app/invoice/management/invoice-management.route.ts","./src/app/invoice/management/invoice-management.service.ts","./src/app/invoice/management/invoice-management/index.ts","./src/app/invoice/management/invoice-management/invoice-management.component.ts","./src/app/invoice/management/store/charge-number/index.ts","./src/app/invoice/management/store/charge-number/invoice-charge-number.actions.ts","./src/app/invoice/management/store/charge-number/invoice-charge-number.effects.ts","./src/app/invoice/management/store/charge-number/invoice-charge-number.model.ts","./src/app/invoice/management/store/charge-number/invoice-charge-number.reducer.ts","./src/app/invoice/management/store/charge-number/invoice-charge-number.selectors.ts","./src/app/invoice/management/store/index.ts","./src/app/invoice/management/store/invoice/index.ts","./src/app/invoice/management/store/invoice/invoice.actions.ts","./src/app/invoice/management/store/invoice/invoice.effects.ts","./src/app/invoice/management/store/invoice/invoice.model.ts","./src/app/invoice/management/store/invoice/invoice.reducer.ts","./src/app/invoice/management/store/invoice/invoice.selectors.ts","./src/app/invoice/management/store/session-number/index.ts","./src/app/invoice/management/store/session-number/invoice-session-number.actions.ts","./src/app/invoice/management/store/session-number/invoice-session-number.effects.ts","./src/app/invoice/management/store/session-number/invoice-session-number.model.ts","./src/app/invoice/management/store/session-number/invoice-session-number.reducer.ts","./src/app/invoice/management/store/session-number/invoice-session-number.selectors.ts","./src/app/invoice/register/index.ts","./src/app/invoice/register/invoice-register-container/index.ts","./src/app/invoice/register/invoice-register-container/invoice-register-container.component.ts","./src/app/invoice/register/invoice-register-filters-presenter/invoice-register-filters-presenter.component.ts","./src/app/invoice/register/invoice-register-presenter/index.ts","./src/app/invoice/register/invoice-register-presenter/invoice-register-presenter.component.ts","./src/app/invoice/register/invoice-register.module.ts","./src/app/invoice/register/invoice-register.route.ts","./src/app/invoice/renumbering/index.ts","./src/app/invoice/renumbering/invoice-date-range.route.ts","./src/app/invoice/renumbering/invoice-renumbering.module.ts","./src/app/invoice/renumbering/invoice-renumbering.route.ts","./src/app/invoice/renumbering/invoice-session-number-container/index.ts","./src/app/invoice/renumbering/invoice-session-number-container/invoice-session-number-container.component.ts","./src/app/invoice/renumbering/invoice-session-number/index.ts","./src/app/invoice/renumbering/invoice-session-number/invoice-session-number.component.ts","./src/app/invoice/setup/index.ts","./src/app/invoice/setup/invoice-address/index.ts","./src/app/invoice/setup/invoice-address/invoice-address-add/index.ts","./src/app/invoice/setup/invoice-address/invoice-address-add/invoice-address-add.component.ts","./src/app/invoice/setup/invoice-address/invoice-address.component.ts","./src/app/invoice/setup/invoice-selections/index.ts","./src/app/invoice/setup/invoice-selections/invoice-selection-add/invoice-selection-add.component.ts","./src/app/invoice/setup/invoice-selections/invoice-selections.component.ts","./src/app/invoice/setup/invoice-session-update-dialog/invoice-session-update-dialog.component.ts","./src/app/invoice/setup/invoice-session/index.ts","./src/app/invoice/setup/invoice-session/invoice-session.component.ts","./src/app/invoice/setup/invoice-setup-container/index.ts","./src/app/invoice/setup/invoice-setup-container/invoice-setup-container.component.ts","./src/app/invoice/setup/invoice-setup-filters-container/invoice-setup-filters-container.component.ts","./src/app/invoice/setup/invoice-setup-filters-presenter/invoice-setup-filters-presenter.component.ts","./src/app/invoice/setup/invoice-setup-presenter/invoice-setup-presenter.component.ts","./src/app/invoice/setup/invoice-setup-update-dialog/invoice-setup-update-dialog.component.ts","./src/app/invoice/setup/invoice-setup.module.ts","./src/app/invoice/setup/invoice-setup.route.ts","./src/app/invoice/setup/invoice/index.ts","./src/app/invoice/setup/invoice/invoice.component.ts","./src/app/job-audit/job-audit-container/index.ts","./src/app/job-audit/job-audit-container/job-audit-container.component.ts","./src/app/job-audit/job-audit-presenter/index.ts","./src/app/job-audit/job-audit-presenter/job-audit-presenter.component.ts","./src/app/job-audit/job-audit.module.ts","./src/app/job-audit/job-audit.route.ts","./src/app/leave-adjustment/LeaveAdjustmentRoute.ts","./src/app/leave-adjustment/feature/leave-adjustment-feature.component.ts","./src/app/leave-adjustment/leave-adjustment.module.ts","./src/app/leave-adjustment/leave-adjustment.service.ts","./src/app/leave-adjustment/presenter/leave-adjustment-presenter.component.ts","./src/app/leave-adjustment/store/current-leave-summary.actions.ts","./src/app/leave-adjustment/store/current-leave-summary.effects.ts","./src/app/leave-adjustment/store/current-leave-summary.reducer.ts","./src/app/leave-adjustment/store/leave-adjustment.actions.ts","./src/app/leave-adjustment/store/leave-adjustment.effects.ts","./src/app/leave-adjustment/store/leave-adjustment.reducer.ts","./src/app/leave-request/feature/index.ts","./src/app/leave-request/feature/leave-request.feature.ts","./src/app/leave-request/index.ts","./src/app/leave-request/leave-request.module.ts","./src/app/leave-request/leave-request.route.ts","./src/app/leave-request/leave-request.service.ts","./src/app/leave-request/presenters/leave-request.component.ts","./src/app/leave-request/store/index.ts","./src/app/leave-request/store/leave-request.actions.ts","./src/app/leave-request/store/leave-request.effects.ts","./src/app/leave-request/store/leave-request.model.ts","./src/app/leave-request/store/leave-request.reducer.ts","./src/app/leave-request/store/leave-request.selectors.ts","./src/app/login/login.component.ts","./src/app/logo/feature/logo-feature.component.ts","./src/app/logo/logo.module.ts","./src/app/logo/logo.service.ts","./src/app/logo/presenter/logo-presenter.component.ts","./src/app/logo/store/logo.actions.ts","./src/app/logo/store/logo.effects.ts","./src/app/logo/store/logo.reducer.ts","./src/app/lookups/CalcType.ts","./src/app/lookups/IAuthorizationClass.ts","./src/app/lookups/IAuthorizationType.ts","./src/app/lookups/IContractType.ts","./src/app/lookups/IDayOfWeek.ts","./src/app/lookups/IDirectReport.ts","./src/app/lookups/IEntityFilter.ts","./src/app/lookups/IExpenseItem.ts","./src/app/lookups/ILocale.ts","./src/app/lookups/ILocation.ts","./src/app/lookups/IPerDiemLocal.ts","./src/app/lookups/IServiceItem.ts","./src/app/lookups/ISplitDay.ts","./src/app/lookups/IState.ts","./src/app/lookups/ITask.ts","./src/app/lookups/ITimeZone.ts","./src/app/lookups/ITravelType.ts","./src/app/lookups/IUserGroup.ts","./src/app/lookups/IndirectType.ts","./src/app/lookups/auth-class-lookup.service.ts","./src/app/lookups/calc-type.service.ts","./src/app/lookups/color.model.ts","./src/app/lookups/color.service.ts","./src/app/lookups/contract-types-lookup.service.ts","./src/app/lookups/country-area-lookup.service.ts","./src/app/lookups/days-of-week.service.ts","./src/app/lookups/direct-reports-lookup.service.ts","./src/app/lookups/entity-filter.service.ts","./src/app/lookups/expense-item-lookup.service.ts","./src/app/lookups/index.ts","./src/app/lookups/indirect-labor-types-lookup.service.ts","./src/app/lookups/iuser-id-format.ts","./src/app/lookups/locale-lookup.service.ts","./src/app/lookups/lookups.module.ts","./src/app/lookups/message-delivery-type.model.ts","./src/app/lookups/message-delivery-type.service.ts","./src/app/lookups/mobile-provider.model.ts","./src/app/lookups/mobile-provider.service.ts","./src/app/lookups/payroll-frequency.service.ts","./src/app/lookups/payroll-item-lookup.service.ts","./src/app/lookups/per-diem-lookup.service.ts","./src/app/lookups/posting-type.model.ts","./src/app/lookups/schedule-date.service.ts","./src/app/lookups/service-item-lookup.service.ts","./src/app/lookups/split-day.service.ts","./src/app/lookups/state-lookup.service.ts","./src/app/lookups/store/actions.ts","./src/app/lookups/store/effects.ts","./src/app/lookups/store/index.ts","./src/app/lookups/store/reducers.ts","./src/app/lookups/store/schedule-date.actions.ts","./src/app/lookups/store/schedule-date.effects.ts","./src/app/lookups/store/schedule-date.model.ts","./src/app/lookups/store/schedule-date.reducer.ts","./src/app/lookups/store/schedule-date.selectors.ts","./src/app/lookups/tasks-lookup.service.ts","./src/app/lookups/time-zone.service.ts","./src/app/lookups/travel-type-lookup.service.ts","./src/app/lookups/user-authorization-type-lookup.service.ts","./src/app/lookups/user-group-lookup.service.ts","./src/app/lookups/user-id-format.service.ts","./src/app/main-menu/main-menu.component.ts","./src/app/main/main.component.ts","./src/app/manage-users/index.ts","./src/app/manage-users/manage-users-bulk-update-presenter/manage-users-bulk-update-presenter.component.ts","./src/app/manage-users/manage-users-container/index.ts","./src/app/manage-users/manage-users-container/manage-users-container.component.ts","./src/app/manage-users/manage-users-presenter/index.ts","./src/app/manage-users/manage-users-presenter/manage-users-presenter.component.ts","./src/app/manage-users/manage-users.module.ts","./src/app/manage-users/manage-users.route.ts","./src/app/manual-adjustment/manual-adjustment-feature/manual-adjustment-feature.component.ts","./src/app/manual-adjustment/manual-adjustment-presenter/manual-adjustment-presenter.component.ts","./src/app/manual-adjustment/manual-adjustment.module.ts","./src/app/manual-adjustment/manual-adjustment.route.ts","./src/app/member/member.component.ts","./src/app/merge/merge-feature/merge-feature.component.ts","./src/app/merge/merge-presenter/merge-presenter.component.ts","./src/app/merge/merge.module.ts","./src/app/merge/merge.route.ts","./src/app/oversign-time/oversign-time-feature/oversign-time-feature.component.ts","./src/app/oversign-time/oversign-time-presenter/oversign-time-presenter.component.ts","./src/app/oversign-time/oversign-time.module.ts","./src/app/oversign-time/oversign-time.service.ts","./src/app/oversign-time/store/oversign-time.actions.ts","./src/app/oversign-time/store/oversign-time.effects.ts","./src/app/oversign-time/store/oversign-time.reducer.ts","./src/app/payrate-override/payrate-override-container/payrate-override-container.component.ts","./src/app/payrate-override/payrate-override.module.ts","./src/app/payrate-override/payrate-override.route.ts","./src/app/payrate-override/payrate-override.service.ts","./src/app/payrate-override/payrate-override/payrate-override.component.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item-container/employee-payroll-item-container.component.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item-container/index.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item-filter/employee-payroll-item-filter.component.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item-filter/index.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item-presenter/employee-payroll-item-presenter.component.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item-presenter/index.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item.route.ts","./src/app/payroll/employee-payroll-item/employee-payroll-item.services.ts","./src/app/payroll/employee-payroll-item/index.ts","./src/app/payroll/item/index.ts","./src/app/payroll/item/payroll-item-feature/index.ts","./src/app/payroll/item/payroll-item-feature/payroll-item-feature.component.ts","./src/app/payroll/item/payroll-item.route.ts","./src/app/payroll/item/payroll-item.service.ts","./src/app/payroll/item/payroll-item/index.ts","./src/app/payroll/item/payroll-item/payroll-item.component.ts","./src/app/payroll/item/store/index.ts","./src/app/payroll/item/store/payroll-item-employee.actions.ts","./src/app/payroll/item/store/payroll-item-employee.effects.ts","./src/app/payroll/item/store/payroll-item-employee.reducer.ts","./src/app/payroll/item/store/payroll-item-employee.selectors.ts","./src/app/payroll/item/store/payroll-item.actions.ts","./src/app/payroll/item/store/payroll-item.effects.ts","./src/app/payroll/item/store/payroll-item.model.ts","./src/app/payroll/item/store/payroll-item.reducer.ts","./src/app/payroll/item/store/payroll-item.selectors.ts","./src/app/payroll/payroll-export/payroll-export-container/index.ts","./src/app/payroll/payroll-export/payroll-export-container/payroll-export-container.component.ts","./src/app/payroll/payroll-export/payroll-export-presenter/index.ts","./src/app/payroll/payroll-export/payroll-export-presenter/payroll-export-presenter.component.ts","./src/app/payroll/payroll-export/payroll-export.module.ts","./src/app/payroll/payroll-export/payroll-export.route.ts","./src/app/payroll/payroll.module.ts","./src/app/payroll/third-party/index.ts","./src/app/payroll/third-party/payroll-codes/index.ts","./src/app/payroll/third-party/payroll-codes/payroll-codes.component.ts","./src/app/payroll/third-party/payroll-item-association/payroll-item-association.component.ts","./src/app/payroll/third-party/store/file-format.model.ts","./src/app/payroll/third-party/store/general-ledger.model.ts","./src/app/payroll/third-party/store/index.ts","./src/app/payroll/third-party/store/payroll-code.model.ts","./src/app/payroll/third-party/store/third-party-payroll.actions.ts","./src/app/payroll/third-party/store/third-party-payroll.effects.ts","./src/app/payroll/third-party/store/third-party-payroll.model.ts","./src/app/payroll/third-party/store/third-party-payroll.reducer.ts","./src/app/payroll/third-party/store/third-party-payroll.selectors.ts","./src/app/payroll/third-party/third-party-payroll-container/index.ts","./src/app/payroll/third-party/third-party-payroll-container/third-party-payroll-container.component.ts","./src/app/payroll/third-party/third-party-payroll-export/third-party-payroll-export.component.ts","./src/app/payroll/third-party/third-party-payroll-file-format/third-party-payroll-file-format.component.ts","./src/app/payroll/third-party/third-party-payroll.route.ts","./src/app/payroll/third-party/third-party.service.ts","./src/app/premium-pay/premium-pay-container/premium-pay-container.component.ts","./src/app/premium-pay/premium-pay.module.ts","./src/app/premium-pay/premium-pay.route.ts","./src/app/premium-pay/premium-pay/premium-pay.component.ts","./src/app/project-budget/budget-upload.service.ts","./src/app/project-budget/project-budget-add-container/project-budget-add-container.component.ts","./src/app/project-budget/project-budget-add/project-budget-add.component.ts","./src/app/project-budget/project-budget-container/project-budget-container.component.ts","./src/app/project-budget/project-budget-contract/project-budget-contract.component.ts","./src/app/project-budget/project-budget.module.ts","./src/app/project-budget/project-budget.route.ts","./src/app/project-budget/project-budget/project-budget.component.ts","./src/app/project-budget/store/budget-upload.actions.ts","./src/app/project-budget/store/budget-upload.effects.ts","./src/app/project-budget/store/budget-upload.reducer.ts","./src/app/pto-policy/assignment-presenter/assignment-presenter.component.ts","./src/app/pto-policy/pto-policy-feature/pto-policy-feature.component.ts","./src/app/pto-policy/pto-policy-presenter/pto-policy-presenter.component.ts","./src/app/pto-policy/pto-policy.module.ts","./src/app/pto-policy/pto-policy.route.ts","./src/app/pto-policy/setup-presenter/setup-presenter.component.ts","./src/app/quick-access/quick-access.component.ts","./src/app/quickbooks/access-granted/access-granted.component.ts","./src/app/quickbooks/access-revoked/access-revoked.component.ts","./src/app/quickbooks/quick-books-connect/quick-books-connect.component.ts","./src/app/quickbooks/quickbooks-revoke-access/quickbooks-revoke-access.component.ts","./src/app/quickbooks/quickbooks.module.ts","./src/app/quickbooks/quickbooks.route.ts","./src/app/quickbooks/quickbooks.services.ts","./src/app/quickbooks/send-hours/send-bill-presenter/send-bill-presenter.component.ts","./src/app/quickbooks/send-hours/send-hours-container/send-hours-container.component.ts","./src/app/quickbooks/send-hours/send-hours-filter/send-hours-filter.component.ts","./src/app/quickbooks/send-hours/send-hours-presenter/send-hours-presenter.component.ts","./src/app/quickbooks/send-invoice/send-invoice-container/index.ts","./src/app/quickbooks/send-invoice/send-invoice-container/send-invoice-container.component.ts","./src/app/quickbooks/send-invoice/send-invoice-filter/index.ts","./src/app/quickbooks/send-invoice/send-invoice-filter/send-invoice-filter.component.ts","./src/app/quickbooks/send-invoice/send-invoice-presenter/index.ts","./src/app/quickbooks/send-invoice/send-invoice-presenter/send-invoice-presenter.component.ts","./src/app/quickbooks/send-invoice/send-invoice.module.ts","./src/app/quickbooks/send-invoice/send-invoice.route.ts","./src/app/quickbooks/send-journal-entry/index.ts","./src/app/quickbooks/send-journal-entry/send-journal-entry-container/index.ts","./src/app/quickbooks/send-journal-entry/send-journal-entry-container/send-journal-entry-container.component.ts","./src/app/quickbooks/send-journal-entry/send-journal-entry-filter/index.ts","./src/app/quickbooks/send-journal-entry/send-journal-entry-filter/send-journal-entry-filter.component.ts","./src/app/quickbooks/send-journal-entry/send-journal-entry-presenter/index.ts","./src/app/quickbooks/send-journal-entry/send-journal-entry-presenter/send-journal-entry-presenter.component.ts","./src/app/quickbooks/send-purchases/send-purchases-container/send-purchases-container.component.ts","./src/app/quickbooks/send-purchases/send-purchases-filter/send-purchases-filter.component.ts","./src/app/quickbooks/send-purchases/send-purchases-presenter/send-purchases-presenter.component.ts","./src/app/quickbooks/send-purchases/send-purchases.module.ts","./src/app/quickbooks/send-purchases/send-purchases.route.ts","./src/app/quickbooks/store/index.ts","./src/app/quickbooks/store/quickbooks.actions.ts","./src/app/quickbooks/store/quickbooks.effects.ts","./src/app/quickbooks/store/quickbooks.reducer.ts","./src/app/quickbooks/store/quickbooks.selectors.ts","./src/app/quickbooks/sync-lists/sync-lists.component.ts","./src/app/rate-ceiling/rate-ceiling-feature/rate-ceiling-feature.component.ts","./src/app/rate-ceiling/rate-ceiling-presenter/rate-ceiling-presenter.component.ts","./src/app/rate-ceiling/rate-ceiling.module.ts","./src/app/rate-ceiling/rate-ceiling.route.ts","./src/app/rate-planning/rate-planning-feature/rate-planning-feature.component.ts","./src/app/rate-planning/rate-planning-presenter/rate-planning-presenter.component.ts","./src/app/rate-planning/rate-planning.module.ts","./src/app/recalculate-transactions/contracts-presenter/contracts-presenter.component.ts","./src/app/recalculate-transactions/recalculate-transactions-feature/recalculate-transactions-feature.component.ts","./src/app/recalculate-transactions/recalculate-transactions-presenter/recalculate-transactions-presenter.component.ts","./src/app/recalculate-transactions/recalculate-transactions.module.ts","./src/app/recalculate-transactions/recalculate-transactions.route.ts","./src/app/recalculate-transactions/schedules-presenter/schedules-presenter.component.ts","./src/app/recalculate-transactions/settings-presenter/settings-presenter.component.ts","./src/app/reconciliation/index.ts","./src/app/reconciliation/reconciliation-container/index.ts","./src/app/reconciliation/reconciliation-container/reconciliation-container.component.ts","./src/app/reconciliation/reconciliation-export/reconciliation-export.component.ts","./src/app/reconciliation/reconciliation-file-format/reconciliation-file-format.component.ts","./src/app/reconciliation/reconciliation-filters/reconciliation-filters.component.ts","./src/app/reconciliation/reconciliation-memorize-template-popup/reconciliation-memorize-template-popup.component.ts","./src/app/reconciliation/reconciliation-share-template-popup/reconciliation-share-template-popup.component.ts","./src/app/reconciliation/reconciliation.module.ts","./src/app/reconciliation/reconciliation.route.ts","./src/app/reconciliation/reconciliation/reconciliation.component.ts","./src/app/registration/index.ts","./src/app/registration/registration-container/index.ts","./src/app/registration/registration-container/registration-container.component.ts","./src/app/registration/registration-presenter/index.ts","./src/app/registration/registration-presenter/registration-presenter.component.ts","./src/app/registration/registration.module.ts","./src/app/registration/registration.route.ts","./src/app/reminder/index.ts","./src/app/reminder/reminder-add/reminder-add.component.ts","./src/app/reminder/reminder-container/index.ts","./src/app/reminder/reminder-container/reminder-container.component.ts","./src/app/reminder/reminder.module.ts","./src/app/reminder/reminder.route.ts","./src/app/reminder/reminder.service.ts","./src/app/reminder/reminder/index.ts","./src/app/reminder/reminder/reminder.component.ts","./src/app/reminder/store/index.ts","./src/app/reminder/store/reminder-schedule-type.model.ts","./src/app/reminder/store/reminder-type.model.ts","./src/app/reminder/store/reminder.actions.ts","./src/app/reminder/store/reminder.effects.ts","./src/app/reminder/store/reminder.model.ts","./src/app/reminder/store/reminder.reducer.ts","./src/app/reminder/store/reminder.selectors.ts","./src/app/report-list/report-list.component.ts","./src/app/report/report.component.ts","./src/app/reporting/features/reporting-feature.component.ts","./src/app/reporting/index.ts","./src/app/reporting/presenters/reporting.component.ts","./src/app/reporting/report.service.ts","./src/app/reporting/reporting.module.ts","./src/app/reporting/store/index.ts","./src/app/reporting/store/report.actions.ts","./src/app/reporting/store/report.effects.ts","./src/app/reporting/store/report.model.ts","./src/app/reporting/store/report.reducer.ts","./src/app/router.config.ts","./src/app/router.hooks.ts","./src/app/rows-per-page/rows-per-page.component.ts","./src/app/rows-per-page/rows-per-page.module.ts","./src/app/service-item/index.ts","./src/app/service-item/posting-item/posting-item.component.ts","./src/app/service-item/service-item-container/index.ts","./src/app/service-item/service-item-container/service-item-container.component.ts","./src/app/service-item/service-item-history/service-item-history.component.ts","./src/app/service-item/service-item.module.ts","./src/app/service-item/service-item.route.ts","./src/app/service-item/service-item.service.ts","./src/app/service-item/service-item/index.ts","./src/app/service-item/service-item/service-item.component.ts","./src/app/service-item/store/index.ts","./src/app/service-item/store/service-item.actions.ts","./src/app/service-item/store/service-item.effects.ts","./src/app/service-item/store/service-item.model.ts","./src/app/service-item/store/service-item.reducer.ts","./src/app/service-item/store/service-item.selectors.ts","./src/app/service-item/sync-dialog/sync-dialog-container/sync-dialog-container.component.ts","./src/app/service-item/sync-dialog/sync-dialog-presenter/sync-dialog-presenter.component.ts","./src/app/shared/EditGrid.ts","./src/app/shared/StopClickPropagation.ts","./src/app/shared/category/categories.service.ts","./src/app/shared/category/category-detail/category-detail.component.ts","./src/app/shared/category/category-detail/index.ts","./src/app/shared/category/category-list/category-list.component.ts","./src/app/shared/category/category-list/index.ts","./src/app/shared/category/category.component.ts","./src/app/shared/category/category.model.ts","./src/app/shared/category/index.ts","./src/app/shared/column-search/column-search.component.ts","./src/app/shared/columnResize.ts","./src/app/shared/decorators/from-store.ts","./src/app/shared/decorators/index.ts","./src/app/shared/decorators/with-logging.ts","./src/app/shared/directives/index.ts","./src/app/shared/directives/let/ef-let.ts","./src/app/shared/ef-checkbox/ef-checkbox.component.ts","./src/app/shared/ef-dropdown/ef-dropdown.component.ts","./src/app/shared/efaact-primeng.module.ts","./src/app/shared/errors-sidenav/DisplayErrors.ts","./src/app/shared/errors-sidenav/IShowErrors.ts","./src/app/shared/errors-sidenav/errors-sidenav.component.ts","./src/app/shared/errors-sidenav/errors-sidenav.module.ts","./src/app/shared/errors-sidenav/index.ts","./src/app/shared/errors-sidenav/store/actions.ts","./src/app/shared/errors-sidenav/store/effects.ts","./src/app/shared/errors-sidenav/store/index.ts","./src/app/shared/errors-sidenav/store/reducers.ts","./src/app/shared/errors-sidenav/util.ts","./src/app/shared/feature-flag/feature-flag-config.ts","./src/app/shared/feature-flag/feature-flag.ts","./src/app/shared/formatDateProperties.ts","./src/app/shared/formatForApiCall.ts","./src/app/shared/guid.ts","./src/app/shared/index.ts","./src/app/shared/loading/index.ts","./src/app/shared/loading/loading-container/index.ts","./src/app/shared/loading/loading-container/loading-container.component.ts","./src/app/shared/loading/loading-interceptor.ts","./src/app/shared/loading/loading-service.service.ts","./src/app/shared/loading/loading.ts","./src/app/shared/loading/presenters/index.ts","./src/app/shared/loading/presenters/loading.component.ts","./src/app/shared/loading/store/actions.ts","./src/app/shared/loading/store/index.ts","./src/app/shared/loading/store/reducer.ts","./src/app/shared/modal-dialog/confirm/UnsavedChanges.service.ts","./src/app/shared/modal-dialog/confirm/confirm.component.ts","./src/app/shared/modal-dialog/confirm/index.ts","./src/app/shared/modal-dialog/confirm/unsaved-changes.component.ts","./src/app/shared/modal-dialog/dialog.component.ts","./src/app/shared/modal-dialog/dialog.service.ts","./src/app/shared/modal-dialog/index.ts","./src/app/shared/p-datatable-editor.directive.ts","./src/app/shared/process/index.ts","./src/app/shared/process/process-detail/index.ts","./src/app/shared/process/process-detail/process-detail.component.ts","./src/app/shared/process/process-list/index.ts","./src/app/shared/process/process-list/process-list.component.ts","./src/app/shared/process/process.component.ts","./src/app/shared/process/process.enum.ts","./src/app/shared/process/store/index.ts","./src/app/shared/process/store/process.actions.ts","./src/app/shared/process/store/process.model.ts","./src/app/shared/process/store/process.reducer.ts","./src/app/shared/process/store/process.selectors.ts","./src/app/shared/put-interceptor.ts","./src/app/shared/selectEditor.ts","./src/app/shared/services/index.ts","./src/app/shared/services/logging/LogLevelEnum.ts","./src/app/shared/services/logging/index.ts","./src/app/shared/services/logging/logging.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/status-icon/index.ts","./src/app/shared/status-icon/status-icon.component.ts","./src/app/shared/status-icon/status-icon.module.ts","./src/app/shared/status-icon/status-icon.ts","./src/app/shared/util/ItemLookup.ts","./src/app/shared/util/fastpivot.ts","./src/app/shared/util/filter-by.pipe.ts","./src/app/shared/util/get-dynamic-columns.ts","./src/app/shared/util/groupBy.ts","./src/app/shared/util/handleOnOpen.ts","./src/app/shared/util/index.ts","./src/app/shared/util/is-array.ts","./src/app/shared/util/is-element-visible.ts","./src/app/shared/util/is-light-color.ts","./src/app/shared/util/key-value.ts","./src/app/shared/util/on-push-change-detection.ts","./src/app/shared/util/order-by.pipe.ts","./src/app/shared/util/uniqby.ts","./src/app/store/actions.ts","./src/app/store/core/core.actions.ts","./src/app/store/core/core.reducer.ts","./src/app/store/core/index.ts","./src/app/store/effects.ts","./src/app/store/index.ts","./src/app/store/reducers.ts","./src/app/store/store.spec.ts","./src/app/store/versionReducer.ts","./src/app/tabulator.service.ts","./src/app/task-timer/store/task-timer.actions.ts","./src/app/task-timer/store/task-timer.effects.ts","./src/app/task-timer/store/task-timer.reducer.ts","./src/app/task-timer/store/timer-history/task-timer-history.actions.ts","./src/app/task-timer/store/timer-history/task-timer-history.effects.ts","./src/app/task-timer/store/timer-history/task-timer-history.reducer.ts","./src/app/task-timer/task-timer-feature/task-timer-feature.component.ts","./src/app/task-timer/task-timer-presenter/task-timer-presenter.component.ts","./src/app/task-timer/task-timer.module.ts","./src/app/task-timer/task-timer.route.ts","./src/app/task-timer/task-timer.service.ts","./src/app/theme-toggle/theme-toggle.component.ts","./src/app/timecard/index.ts","./src/app/timecard/itime-card.ts","./src/app/timecard/managementActionService.ts","./src/app/timecard/store/direct-reports-with-time-status.actions.ts","./src/app/timecard/store/direct-reports-with-time-status.effects.ts","./src/app/timecard/store/direct-reports-with-time-status.reducer.ts","./src/app/timecard/store/iauthorized-task.actions.ts","./src/app/timecard/store/iauthorized-task.effects.ts","./src/app/timecard/store/iauthorized-task.reducer.ts","./src/app/timecard/store/index.ts","./src/app/timecard/store/management-action.actions.ts","./src/app/timecard/store/management-action.effects.ts","./src/app/timecard/store/time-card-documentation.actions.ts","./src/app/timecard/store/time-card-documentation.effects.ts","./src/app/timecard/store/time-card-documentation.reducer.ts","./src/app/timecard/store/time-card-submit.actions.ts","./src/app/timecard/store/time-card-submit.effects.ts","./src/app/timecard/store/time-card.actions.ts","./src/app/timecard/store/time-card.effects.ts","./src/app/timecard/store/time-card.reducer.ts","./src/app/timecard/store/time-card.selectors.ts","./src/app/timecard/store/weekly-summary.actions.ts","./src/app/timecard/store/weekly-summary.effects.ts","./src/app/timecard/store/weekly-summary.reducer.ts","./src/app/timecard/time-card-documentation-feature/index.ts","./src/app/timecard/time-card-documentation-feature/time-card-documentation-feature.component.ts","./src/app/timecard/time-card-documentation-presenter/index.ts","./src/app/timecard/time-card-documentation-presenter/time-card-documentation-presenter.component.ts","./src/app/timecard/time-card-feature/index.ts","./src/app/timecard/time-card-feature/time-card-feature.component.ts","./src/app/timecard/time-card-presenter/index.ts","./src/app/timecard/time-card-presenter/time-card-presenter.component.ts","./src/app/timecard/time-card.module.ts","./src/app/timecard/time-card.service.ts","./src/app/toaster/index.ts","./src/app/toaster/service/index.ts","./src/app/toaster/service/toaster-service.ts","./src/app/toaster/toaster-container/index.ts","./src/app/toaster/toaster-container/toaster-container.component.ts","./src/app/toaster/toaster-presenter/index.ts","./src/app/toaster/toaster-presenter/toaster-presenter.component.ts","./src/app/toaster/toaster.module.ts","./src/app/user-authorizations/index.ts","./src/app/user-authorizations/store/IUserAuthorization.ts","./src/app/user-authorizations/store/IUserAuthorizationRequest.ts","./src/app/user-authorizations/store/IUserAuthorizationResponse.ts","./src/app/user-authorizations/store/index.ts","./src/app/user-authorizations/store/pending-authorization.model.ts","./src/app/user-authorizations/store/user-authorization.actions.ts","./src/app/user-authorizations/store/user-authorization.effects.ts","./src/app/user-authorizations/store/user-authorization.model.ts","./src/app/user-authorizations/store/user-authorization.reducer.ts","./src/app/user-authorizations/store/user-authorization.selectors.ts","./src/app/user-authorizations/update-multiple-authorizations/update-multiple-authorizations.component.ts","./src/app/user-authorizations/user-authorization-container/index.ts","./src/app/user-authorizations/user-authorization-container/user-authorization-container.component.ts","./src/app/user-authorizations/user-authorization.route.ts","./src/app/user-authorizations/user-authorization/index.ts","./src/app/user-authorizations/user-authorization/user-authorization.component.ts","./src/app/user-authorizations/user-authorizations.module.ts","./src/app/user-authorizations/user-authorizations.service.ts","./src/app/user-info/IUser.ts","./src/app/user-info/IUserColor.ts","./src/app/user-info/IUserInfo.ts","./src/app/user-info/IUserRole.ts","./src/app/user-info/index.ts","./src/app/user-info/store/index.ts","./src/app/user-info/store/user-info.effects.ts","./src/app/user-info/store/user.actions.ts","./src/app/user-info/store/user.reducer.ts","./src/app/user-info/user-info.component.ts","./src/app/user-info/user-info.module.ts","./src/app/user-info/user-info.service.ts","./src/app/user-role/IUserRole.ts","./src/app/user-role/index.ts","./src/app/user-role/store/actions.ts","./src/app/user-role/store/index.ts","./src/app/user-role/store/reducers.ts","./src/app/user-role/store/user-role.effects.ts","./src/app/user-role/user-role.component.ts","./src/app/user-role/user-role.module.ts","./src/app/user-role/user-role.service.ts","./src/app/user-selector/presenters/user-selector-dropdown.component.ts","./src/app/user-selector/user-selector.module.ts","./src/app/user-setting/feature/index.ts","./src/app/user-setting/feature/user-setting.feature.ts","./src/app/user-setting/index.ts","./src/app/user-setting/presenters/index.ts","./src/app/user-setting/presenters/user-setting.component.ts","./src/app/user-setting/store/index.ts","./src/app/user-setting/store/user-setting.actions.ts","./src/app/user-setting/store/user-setting.effects.ts","./src/app/user-setting/store/user-setting.model.ts","./src/app/user-setting/store/user-setting.reducer.ts","./src/app/user-setting/store/user-setting.selectors.ts","./src/app/user-setting/user-setting.module.ts","./src/app/user-setting/user-setting.route.ts","./src/app/user-setting/user-setting.service.ts","./src/app/userentrydates/features/userentrydates-features.component.ts","./src/app/userentrydates/presenters/userentrydates-presenters.component.ts","./src/app/userentrydates/store/actions.ts","./src/app/userentrydates/store/effects.ts","./src/app/userentrydates/store/reducer.ts","./src/app/userentrydates/userentrydates.module.ts","./src/app/userentrydates/userentrydates.service.ts","./src/app/vendor/vendor-container/index.ts","./src/app/vendor/vendor-container/vendor-container.component.ts","./src/app/vendor/vendor-presenter/vendor-presenter.component.ts","./src/app/vendor/vendor.module.ts","./src/app/vendor/vendor.route.ts","./src/environments/environment.staging.ts","./src/main.ts","./src/app/attachment-view-feature/index.js","./src/app/common/formatMoney.js","./src/app/shared/modernizr.js","./node_modules/moment/locale|sync|/^/.*$","ignored|C:\\Users\\kevinm\\source\\repos\\efaactcentral\\efaact.central\\efaact.central.web\\node_modules\\xlsx|crypto","ignored|C:\\Users\\kevinm\\source\\repos\\efaactcentral\\efaact.central\\efaact.central.web\\node_modules\\xlsx|fs","ignored|C:\\Users\\kevinm\\source\\repos\\efaactcentral\\efaact.central\\efaact.central.web\\node_modules\\xlsx|stream"],"sourcesContent":["import { AfterViewInit, Component, OnInit } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { Store, select } from '@ngrx/store';\r\nimport * as fromRoot from '../store';\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ef-about',\r\n templateUrl: './about.component.html',\r\n styleUrls: ['./about.component.css']\r\n})\r\nexport class AboutComponent implements AfterViewInit {\r\n public environment = environment;\r\n public version$: Observable;\r\n eFAACTApiVersion: string;\r\n eFAACTVersion = `${environment.version}-${environment.environment}`;\r\n constructor(private store: Store) {}\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.version$ = this.store.pipe(\r\n select(fromRoot.Version.selectVersion)\r\n );\r\n this.version$.pipe(take(1)).subscribe(v => {\r\n this.eFAACTApiVersion = v;\r\n });\r\n }, 0);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { AboutComponent } from './about.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { AboutRoute } from './about.route';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared';\r\n\r\n@NgModule({\r\n declarations: [AboutComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [AboutRoute]\r\n })\r\n ]\r\n})\r\nexport class AboutModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { AboutComponent } from './about.component';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const AboutRoute: Ng2StateDeclaration = {\r\n // name: 'Account.**'\r\n name: 'about',\r\n url: '/about',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.AccountModule)\r\n data: { requiresAuth: true },\r\n component: AboutComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromAccountAllocation from '.';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const AccountAllocationRoute: Ng2StateDeclaration = {\r\n // name: 'AccountAllocation.**'\r\n name: 'account.allocations',\r\n url: '/allocations',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.AccountAllocationModule)\r\n component: fromAccountAllocation.AccountAllocationsContainerComponent\r\n};\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromCommon from '../../../shared';\r\nimport * as fromShared from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromAccounts from '../../store';\r\nimport { AccountContract } from '../../store/account-contract.model';\r\nimport { Account } from '../../store/account.model';\r\nimport * as reducer from '../store/account-allocation.reducer';\r\n@Component({\r\n selector: 'ef-account-allocations-container',\r\n templateUrl: './account-allocations-container.component.html',\r\n styleUrls: ['./account-allocations-container.component.scss']\r\n})\r\nexport class AccountAllocationsContainerComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @Input() selectedError: fromCommon.IStatusMessage;\r\n process$: Observable;\r\n accounts$: Observable;\r\n contracts$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n active = true;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.setupObservables();\r\n this.store.dispatch(fromAccounts.getAccounts({ AccountType: '' }));\r\n this.store.dispatch(fromAccounts.getContractARAccounts());\r\n }\r\n ngAfterViewInit() {\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.accounts$ = this.store.pipe(select(fromAccounts.selectAll));\r\n this.contracts$ = this.store.pipe(\r\n select(fromAccounts.selectContractARAccounts),\r\n map(x => clone(x))\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'AccountAllocationsContainerComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.accounts$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'AccountAllocationsContainerComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'AccountAllocationsContainerComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n setupSubscriptions() {}\r\n onShowError(event) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n}\r\n","export * from './account-allocations-container.component';\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromAccountAllocations from './store/account-allocation.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { AccountAllocationsEffects } from './store/account-allocation.effects';\r\nimport { AccountAllocationsContainerComponent } from './account-allocations-container';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { AccountAllocationRoute } from './account-allocation.route';\r\nimport { AccountAllocationsComponent } from './account-allocations/account-allocations.component';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { PostingAccountComponent } from './posting-account/posting-account.component';\r\nimport { PostingAccountContainerComponent } from './posting-account-container/posting-account-container.component';\r\nimport { CostAllocationContainerComponent } from './cost-allocation-container/cost-allocation-container.component';\r\nimport { CostAllocationComponent } from './cost-allocation/cost-allocation.component';\r\nimport { FacilityContainerComponent } from './facility-container/facility-container.component';\r\nimport { FacilityComponent } from './facility/facility.component';\r\nimport * as fromFacilityAllocation from './store/facility-allocation.reducer';\r\nimport { FacilityAllocationEffects } from './store/facility-allocation.effects';\r\nimport * as fromAccountPostingType from './store/account-posting-type.reducer';\r\nimport { AccountPostingTypeEffects } from './store/account-posting-type.effects';\r\nimport { AccountsReceivableContractContainerComponent } from './accounts-receivable-contract-container/accounts-receivable-contract-container.component';\r\nimport { AccountsReceivableContractComponent } from './accounts-receivable-contract/accounts-receivable-contract.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AccountAllocationsContainerComponent,\r\n AccountAllocationsComponent,\r\n PostingAccountComponent,\r\n PostingAccountContainerComponent,\r\n CostAllocationContainerComponent,\r\n CostAllocationComponent,\r\n FacilityContainerComponent,\r\n FacilityComponent,\r\n AccountsReceivableContractContainerComponent,\r\n AccountsReceivableContractComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n UIRouterModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [AccountAllocationRoute]\r\n }),\r\n StoreModule.forFeature(\r\n fromAccountAllocations.accountAllocationsFeatureKey,\r\n fromAccountAllocations.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromFacilityAllocation.facilityAllocationsFeatureKey,\r\n fromFacilityAllocation.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromAccountPostingType.accountPostingTypesFeatureKey,\r\n fromAccountPostingType.reducer\r\n ),\r\n EffectsModule.forFeature([\r\n AccountAllocationsEffects,\r\n FacilityAllocationEffects,\r\n AccountPostingTypeEffects\r\n ])\r\n ],\r\n exports: [AccountAllocationsContainerComponent, AccountAllocationsComponent]\r\n})\r\nexport class AccountAllocationsModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport { IGenericResponse, ResponseStatus } from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { LoadingService } from '../../shared/loading';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromRoot from '../../store';\r\nimport { AccountAllocation, FacilityAllocation } from './store';\r\nimport { AccountPostingType } from './store/account-posting-type.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccountAllocationsService extends LoadingService {\r\n private uri = `${environment.apiLocation}/AccountAllocation`;\r\n private facilityAllocationsUri = `${environment.apiLocation}/FacilityAllocation`;\r\n private facilityAllocationTypeUri = `${environment.apiLocation}/FacilityAllocationType`;\r\n private accountPostingTypeUri = `${environment.apiLocation}/AccountPostingType`;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n\r\n get(): Observable {\r\n return this.http.get(this.uri).pipe(\r\n map(res =>\r\n res.map(x => ({\r\n ...x,\r\n id: x.Accountlistid,\r\n Status: {\r\n StatusCode: x && x.Status ? x.Status.StatusCode : 0,\r\n Message: x && x.Status ? x.Status.Message : '',\r\n MsgEntityID:\r\n x && x.Status\r\n ? x.Status.MsgEntityID\r\n : x.Accountlistid\r\n }\r\n }))\r\n )\r\n );\r\n }\r\n put(\r\n accountAllocations: AccountAllocation[]\r\n ): Observable> {\r\n // return getTestServiceError(19, accountAllocations as AccountAllocation[], 'Accountlistid');\r\n\r\n return this.http.put>(this.uri, {\r\n AccountAllocationList: accountAllocations\r\n });\r\n }\r\n getFacilityAllocations(): Observable {\r\n return this.http\r\n .get(this.facilityAllocationsUri)\r\n .pipe(\r\n map(allocations =>\r\n allocations.map(x => ({\r\n ...x,\r\n // id: `${x.Costcenterid}${x.Ratecode}`\r\n id: x.CCratecodedesc\r\n }))\r\n )\r\n );\r\n }\r\n putFacilityAllocations(\r\n facilityAllocations: FacilityAllocation[]\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'AccountAllocationsService:putFacilityAllocations',\r\n facilityAllocations\r\n });\r\n // return getTestServiceError(19, facilityAllocations as FacilityAllocation[], 'id');\r\n\r\n return this.http\r\n .put>(\r\n this.facilityAllocationsUri,\r\n {\r\n FacilityAllocationList: facilityAllocations\r\n }\r\n )\r\n .pipe(\r\n map(allocations => ({\r\n ...allocations,\r\n Items: allocations.Items.map(x => ({\r\n ...x,\r\n // id: `${x.Costcenterid}${x.Ratecode}`\r\n id: x.CCratecodedesc\r\n }))\r\n }))\r\n );\r\n }\r\n getFacilityAllocationTypes(): Observable {\r\n return this.http\r\n .get<\r\n {\r\n Facilityallocationtypeid: number;\r\n FacilityAllocationtype: string;\r\n IsActive: boolean;\r\n }[]\r\n >(this.facilityAllocationTypeUri)\r\n .pipe(\r\n map(resp => resp.filter(x => x.IsActive)),\r\n map(resp =>\r\n resp.map(x => ({\r\n label: x.FacilityAllocationtype,\r\n value: x.Facilityallocationtypeid\r\n }))\r\n )\r\n );\r\n }\r\n getAccountPostingTypes(): Observable {\r\n return this.http\r\n .get(this.accountPostingTypeUri)\r\n .pipe(map(res => res.map(x => this.mapPostingType(x))));\r\n }\r\n putAccountPostingTypes(\r\n postingTypes: AccountPostingType[]\r\n ): Observable> {\r\n // return getTestServiceError(19, postingTypes as AccountPostingType[], 'PostingType');\r\n\r\n return this.http\r\n .put>(this.accountPostingTypeUri, {\r\n AccountPostingTypeList: postingTypes.map(x => ({\r\n Accountpostingtype: x.PostingType,\r\n Accountlistid: x.ListID,\r\n Defaultitem: x.Defaultitem\r\n }))\r\n })\r\n .pipe(\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(x => ({\r\n ...this.mapPostingType(x),\r\n Status: {\r\n StatusCode:\r\n x && x.Status\r\n ? x.Status.StatusCode\r\n : ResponseStatus.Success,\r\n Message: x && x.Status ? x.Status.Message : ''\r\n }\r\n }))\r\n }))\r\n );\r\n }\r\n\r\n private mapPostingType(item: any): AccountPostingType {\r\n return {\r\n ...item,\r\n PostingType: item.Accountpostingtype,\r\n Name: item.Accountpostingname,\r\n AccountType: item.Accounttype,\r\n ListID: item.Accountlistid,\r\n Description: item.Accountpostingtypedesc,\r\n Defaultitem: item.Defaultitem,\r\n Status: { StatusCode: 0, Message: '' }\r\n // id: Guid.newGuid()\r\n };\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Contract } from '../store';\r\nimport { Account } from '../../store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { AccountContract } from '../../store/account-contract.model';\r\nimport { IStatusMessage, ResponseStatus } from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-account-allocations',\r\n templateUrl: './account-allocations.component.html',\r\n styleUrls: ['./account-allocations.component.scss']\r\n})\r\nexport class AccountAllocationsComponent implements OnInit {\r\n hideARContract = true;\r\n showFacilityAllocation = false;\r\n @Input() accounts: Account[];\r\n public get arAccounts(): Account[] {\r\n return this.accounts.filter(\r\n x => x.AccountType.toLocaleLowerCase() === 'accountsreceivable'\r\n );\r\n }\r\n @Input() contracts: AccountContract[];\r\n @Input() selectedError: IStatusMessage;\r\n\r\n @Output() public ShowError = new EventEmitter();\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit() {}\r\n onHasFacilityExpense($event: boolean) {\r\n this.log.verbose({\r\n type: 'AccountAllocationsComponent:onHasFacilityExpense',\r\n $event\r\n });\r\n this.showFacilityAllocation = $event;\r\n }\r\n onStatusClick(item: Account) {\r\n this.log.verbose({\r\n type: 'AccountAllocationsComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.AccountListID });\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Contract } from '../store';\r\nimport * as fromAccount from '../../store';\r\nimport { AccountContract } from '../../store/account-contract.model';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { IStatusMessage } from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-accounts-receivable-contract-container',\r\n templateUrl: './accounts-receivable-contract-container.component.html',\r\n styleUrls: ['./accounts-receivable-contract-container.component.scss']\r\n})\r\nexport class AccountsReceivableContractContainerComponent implements OnInit {\r\n @Input() public set accounts(value: fromAccount.Account[]) {\r\n if (value) {\r\n this.accountItems = value.map(x => ({\r\n label: x.AccountCode,\r\n value: x.AccountListID\r\n }));\r\n }\r\n }\r\n @Input() selectedError: IStatusMessage;\r\n accountItems: SelectItem[];\r\n @Input() contracts: AccountContract[];\r\n @Output() public ShowError = new EventEmitter();\r\n constructor(private store: Store) {}\r\n\r\n ngOnInit() {}\r\n onSaveAccountContract($event: AccountContract[]) {\r\n this.store.dispatch(\r\n fromAccount.putContractARAccounts({ contracts: $event })\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Contract } from '../store';\r\nimport { Account } from '../../store';\r\nimport { AccountContract } from '../../store/account-contract.model';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { ResponseStatus, IStatusMessage } from '../../../shared';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-accounts-receivable-contract',\r\n templateUrl: './accounts-receivable-contract.component.html',\r\n styleUrls: ['./accounts-receivable-contract.component.scss']\r\n})\r\nexport class AccountsReceivableContractComponent implements OnInit {\r\n @Input() accounts: SelectItem[];\r\n @Input() items: AccountContract[];\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.log.verbose({\r\n type: 'AccountsReceivableContractComponent:selectedError:set',\r\n value,\r\n });\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) { return; }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'AccountsReceivableContractComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n @Output() public ShowError = new EventEmitter();\r\n @Output() SaveAccountContract = new ReplaySubject(1);\r\n cloned: { [i: string]: AccountContract } = {};\r\n editing: AccountContract;\r\n\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit() {}\r\n onRowEditInit(item: AccountContract) {\r\n this.cloned[item.Contractlistid] = { ...item };\r\n this.editing = item;\r\n this.log.verbose({\r\n type: 'AccountsReceivableContractComponent:onRowEditInit',\r\n item,\r\n clonedAccountAllocations: this.cloned,\r\n editing: this.editing\r\n });\r\n }\r\n onRowEditSave(item: AccountContract) {\r\n this.log.verbose({\r\n type: 'AccountsReceivableContractComponent:onRowEditSave',\r\n r: item,\r\n clonedAccountAllocations: this.cloned\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n\r\n this.SaveAccountContract.next([item]);\r\n delete this.cloned[item.Contractlistid];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: AccountContract) {\r\n this.log.verbose({\r\n type: 'AccountsReceivableContractComponent:onRowEditCancel',\r\n r: item,\r\n clonedAccountAllocations: this.cloned\r\n });\r\n const index = this.items.findIndex(\r\n x => x.Contractlistid === item.Contractlistid\r\n );\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.Contractlistid]);\r\n }\r\n this.items = [...this.items];\r\n this.items = [...this.items];\r\n\r\n\r\n delete this.cloned[item.Contractlistid];\r\n delete this.editing;\r\n }\r\n onStatusClick(item: AccountContract) {\r\n this.log.verbose({\r\n type: 'AccountsReceivableContractComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.Contractlistid });\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport * as fromLookups from '../../../lookups';\r\nimport { IStatusMessage } from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\nimport { AccountAllocation } from '../store';\r\nimport * as reducer from '../store/account-allocation.reducer';\r\nimport * as selectors from '../store/account-allocation.selectors';\r\n\r\n@Component({\r\n selector: 'ef-cost-allocation-container',\r\n templateUrl: './cost-allocation-container.component.html',\r\n styleUrls: ['./cost-allocation-container.component.scss']\r\n})\r\nexport class CostAllocationContainerComponent implements OnInit, OnDestroy {\r\n accountAllocations$: Observable;\r\n expenseType$: Observable;\r\n costCenters$: Observable;\r\n @Input() selectedError: IStatusMessage;\r\n @Output() public ShowError = new EventEmitter();\r\n @Output() HasFacilityExpense = new ReplaySubject(1);\r\n private active = true;\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(fromStore.getAccountAllocations());\r\n this.store.dispatch(fromStore.getExpenseTypes());\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n this.setupObservables();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.accountAllocations$ = this.store.pipe(\r\n select(selectors.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.accountAllocations$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(allocations => {\r\n this.log.verbose({\r\n type: 'CostAllocationContainerComponent:accountAllocations$:FCE',\r\n allocations,\r\n FCE: allocations.find(x => x.Calctype === 'FCE')\r\n });\r\n this.HasFacilityExpense.next(\r\n !!allocations.find(x => x.Calctype === 'FCE')\r\n );\r\n });\r\n // .pipe(\r\n // map(x => x.find(y => y.Calctype === 'FCE')),\r\n // map(x => !!x),\r\n // map(x => this.HasFacilityExpense.next(x))\r\n // );\r\n this.expenseType$ = this.store.pipe(\r\n select(selectors.selectExpenseTypes),\r\n map(c =>\r\n c.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }))\r\n )\r\n );\r\n this.costCenters$ = this.store.pipe(\r\n select(fromLookups.getCostCenters),\r\n map(c =>\r\n c\r\n .map(x => ({\r\n value: x.GroupID,\r\n label: x.GroupName\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n }\r\n\r\n onSaveCostAllocation($event: AccountAllocation[]) {\r\n this.log.verbose({\r\n type: 'CostAllocationContainerComponent:onSaveCostAllocation$',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromStore.putAccountAllocations({ accountAllocations: $event })\r\n );\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ValidationErrors\r\n} from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { fromEvent } from 'rxjs';\r\nimport { takeWhile, tap, throttleTime } from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { EditGrid } from '../../../shared';\r\nimport { SelectItem, Table } from '../../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { AccountAllocation } from '../store';\r\n\r\n@Component({\r\n selector: 'ef-cost-allocation',\r\n templateUrl: './cost-allocation.component.html',\r\n styleUrls: ['./cost-allocation.component.scss']\r\n})\r\nexport class CostAllocationComponent\r\n extends EditGrid\r\n implements OnInit, OnDestroy, OnChanges {\r\n filteredItems: AccountAllocation[];\r\n private _expenseTypes: SelectItem[];\r\n @Input() public set expenseTypes(value: SelectItem[]) {\r\n this._expenseTypes = value;\r\n }\r\n public get expenseTypes(): SelectItem[] {\r\n return this._expenseTypes;\r\n }\r\n @Input() costCenters: SelectItem[] = [];\r\n @Output() public ShowError = new EventEmitter();\r\n @ViewChild('dataTable', { static: true }) dataTable: Table;\r\n @ViewChild('clearBulkUpdates', { read: ElementRef, static: true })\r\n clearBulkUpdatesButton: ElementRef;\r\n @ViewChild('applyBulk', { read: ElementRef, static: true })\r\n applyBulkButton: ElementRef;\r\n selectedExpenseTypes: string[] = [];\r\n moment: any;\r\n public showNA: boolean;\r\n showCostCenters: boolean;\r\n public updateFormGroup: FormGroup;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.updateFormGroup = new FormGroup(\r\n {\r\n expenseType: new FormControl(),\r\n costCenter: new FormControl()\r\n },\r\n (ctrl: AbstractControl): ValidationErrors | null => {\r\n if (\r\n ctrl.get('expenseType').value ||\r\n ctrl.get('costCenter').value\r\n ) {\r\n return null;\r\n }\r\n return {\r\n invalid: true\r\n };\r\n }\r\n );\r\n }\r\n ngOnInit() {\r\n this.setupSubscriptions();\r\n if (this.costCenters && this.costCenters.length > 1) {\r\n this.showCostCenters = true;\r\n } else {\r\n this.showCostCenters = false;\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes && changes.items && changes.items.currentValue) {\r\n this.updateFilter();\r\n }\r\n }\r\n clearBulk() {\r\n const controls = this.updateFormGroup.controls;\r\n controls['costCenter'].setValue(null);\r\n controls['expenseType'].setValue(null);\r\n }\r\n setupSubscriptions() {\r\n fromEvent(this.clearBulkUpdatesButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(1000),\r\n tap(() =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationsComponent:clearBulkUpdatesButton:click'\r\n })\r\n )\r\n )\r\n .subscribe(() => {\r\n this.clearBulk();\r\n });\r\n fromEvent(this.applyBulkButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(1000)\r\n )\r\n .subscribe(() => {\r\n this.applyBulkUpdate();\r\n this.clearBulk();\r\n });\r\n }\r\n applyBulkUpdate() {\r\n const controls = this.updateFormGroup.controls;\r\n const items: AccountAllocation[] =\r\n (this.dataTable && this.dataTable.selection) || [];\r\n const mapped = items.map(x => ({\r\n ...x,\r\n Costcenterid: controls['costCenter'].value || x.Costcenterid,\r\n Calctype: controls['expenseType'].value || x.Calctype\r\n }));\r\n this.log.verbose({\r\n type: 'CostAllocationComponent:applyBulkUpdate',\r\n controls,\r\n items,\r\n mapped\r\n });\r\n this.SaveItem.next(mapped);\r\n this.selected = [];\r\n }\r\n onRowEditCancel(item: AccountAllocation) {\r\n super.onRowEditCancel(item);\r\n this.updateFilter();\r\n }\r\n updateFilter() {\r\n this.filteredItems = this.showNA\r\n ? this.items\r\n : this.items &&\r\n this.items.filter(x => x.Calctype.toUpperCase() !== 'NA');\r\n this.log.verbose({\r\n type: 'CostAllocationComponent:updateFilter',\r\n accountAllocations: this.items,\r\n filteredAllocations: this.filteredItems\r\n });\r\n this.cdRef.detectChanges();\r\n }\r\n // onRowEditInit(item: AccountAllocation) {\r\n // this.cloned[item.Accountlistid] = { ...item };\r\n // this.editing = item;\r\n // this.log.verbose({\r\n // type: 'CostAllocationComponent:onRowEditInit',\r\n // item,\r\n // items: this.items,\r\n // cloned: this.cloned,\r\n // editing: this.editing\r\n // });\r\n // this.selected = [item];\r\n // }\r\n // onRowEditSave(item: AccountAllocation) {\r\n // this.log.verbose({\r\n // type: 'CostAllocationComponent:onRowEditSave',\r\n // item,\r\n // clonedAccountAllocations: this.cloned,\r\n // selectedAccountAllocations: this.selected\r\n // });\r\n // item.Status.StatusCode = ResponseStatus.Loading;\r\n // item.Status.Message = 'Saving';\r\n\r\n // const items = [\r\n // {\r\n // ...item,\r\n // Calctype: item.Calctype,\r\n // Costcenterid: item.Costcenterid,\r\n // Status: item.Status\r\n // }\r\n // ];\r\n // this.SaveItem.next(items);\r\n // delete this.cloned[item.Accountlistid];\r\n // delete this.editing;\r\n // this.selected = [];\r\n // }\r\n // onRowEditCancel(item: AccountAllocation) {\r\n // this.log.verbose({\r\n // type: 'CostAllocationComponent:onRowEditCancel',\r\n // item,\r\n // items: this.items,\r\n // cloned: this.cloned\r\n // });\r\n // const index = this.items.findIndex(\r\n // x => x.Accountlistid === item.Accountlistid\r\n // );\r\n // if (index >= 0) {\r\n // this.items.splice(index, 1, this.cloned[item.Accountlistid]);\r\n // }\r\n // this.items = [...this.items];\r\n\r\n // delete this.cloned[item.Accountlistid];\r\n // delete this.editing;\r\n // this.selected = [];\r\n // }\r\n // onStatusClick(item: AccountAllocation) {\r\n // this.log.verbose({\r\n // type: 'CostAllocationComponent:onStatusClick',\r\n // item\r\n // });\r\n // this.ShowError.emit({ open: true, MsgEntityID: item.Accountlistid });\r\n // }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, share, startWith, tap } from 'rxjs/operators';\r\nimport { IStatusMessage } from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\nimport { FacilityAllocation } from '../store/facility-allocation.model';\r\nimport * as reducer from '../store/facility-allocation.reducer';\r\nimport * as selectors from '../store/facility-allocation.selectors';\r\n@Component({\r\n selector: 'ef-facility-container',\r\n templateUrl: './facility-container.component.html',\r\n styleUrls: ['./facility-container.component.scss']\r\n})\r\nexport class FacilityContainerComponent implements OnInit {\r\n facilityAllocation$: Observable;\r\n showAllocationWarning$: Observable;\r\n facilityAllocationTypes$: Observable;\r\n allocationType$: Observable;\r\n @Input() selectedError: IStatusMessage;\r\n @Output() public ShowError = new EventEmitter();\r\n\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {\r\n this.store.dispatch(fromStore.getFacilityAllocations());\r\n this.store.dispatch(fromStore.getFacilityAllocationTypes());\r\n }\r\n\r\n ngOnInit() {\r\n this.facilityAllocation$ = this.store.pipe(\r\n select(selectors.selectAll),\r\n share(),\r\n map(x => clone(x))\r\n );\r\n this.allocationType$ = this.store.pipe(\r\n select(selectors.selectAll),\r\n share(),\r\n filter(x => !!x && x.length > 0),\r\n map(x => x[0].Allocationtypeid),\r\n filter(x => !!x),\r\n startWith(1),\r\n tap(allocationType =>\r\n this.log.verbose({\r\n type: 'FacilityContainerComponent',\r\n allocationType\r\n })\r\n )\r\n );\r\n this.facilityAllocationTypes$ = this.store.pipe(\r\n select(selectors.selectFacilityAllocationTypes)\r\n );\r\n }\r\n onSaveFacilityAllocation($event: FacilityAllocation) {\r\n this.log.verbose({\r\n type: 'FacilityContainerComponent:onSaveFacilityAllocation',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromStore.putFacilityAllocations({ facilityAllocations: [$event] })\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { ResponseStatus, IStatusMessage } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { FacilityAllocation } from '../store';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-facility',\r\n templateUrl: './facility.component.html',\r\n styleUrls: ['./facility.component.scss']\r\n})\r\nexport class FacilityComponent implements OnInit {\r\n @Input() allocationType = 1;\r\n messages: {\r\n severity: 'warn';\r\n detail: 'Changing Allocation type affects all allocations';\r\n }[] = [];\r\n public get columnHeader(): string {\r\n let label;\r\n document.getElementsByName('rgAllocationType').forEach((rb: any) => {\r\n if (rb.checked) {\r\n const t = this.facilityAllocationTypes.find(\r\n // tslint:disable-next-line:triple-equals\r\n x => x.value == rb.value\r\n );\r\n label = t && t.label;\r\n }\r\n });\r\n return label;\r\n }\r\n @Input() facilityAllocationTypes: SelectItem[];\r\n @Input() items: FacilityAllocation[];\r\n @Input() showAllocationWarning: boolean;\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.log.verbose({\r\n type: 'FacilityComponent:selectedError:set',\r\n value\r\n });\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'FacilityComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n @Output() public ShowError = new EventEmitter();\r\n @Output() SaveFacilityAllocation = new ReplaySubject(1);\r\n public editing: FacilityAllocation = {} as FacilityAllocation;\r\n cloned: { [i: number]: FacilityAllocation } = {};\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit() {}\r\n\r\n onRowEditInit(item: FacilityAllocation) {\r\n this.cloned[item.id] = { ...item };\r\n this.editing = item;\r\n this.log.verbose({\r\n type: 'FacilityComponent:onRowEditInit',\r\n item,\r\n clonedFacilityAllocations: this.cloned,\r\n editing: this.editing\r\n });\r\n }\r\n onRowEditSave(item: FacilityAllocation) {\r\n this.log.verbose({\r\n type: 'FacilityComponent:onRowEditSave',\r\n item,\r\n clonedFacilityAllocations: this.cloned\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n item.Allocationtypeid = this.allocationType;\r\n this.SaveFacilityAllocation.next(item);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: FacilityAllocation) {\r\n this.log.verbose({\r\n type: 'FacilityComponent:onRowEditCancel',\r\n r: item,\r\n clonedFacilityAllocations: this.cloned\r\n });\r\n\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n this.items = [...this.items];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onStatusClick(item: FacilityAllocation) {\r\n this.log.verbose({\r\n type: 'FacilityComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.id });\r\n }\r\n}\r\n","export * from './store';\r\nexport * from './account-allocations-container';\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport * as fromLookups from '../../../lookups';\r\nimport { PostingType, ServiceItemLookupService } from '../../../lookups';\r\nimport { IStatusMessage, SelectItem } from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { Account } from '../../store/account.model';\r\nimport { AccountPostingType } from '../store';\r\nimport * as reducer from '../store/account-allocation.reducer';\r\nimport * as actions from '../store/account-posting-type.actions';\r\nimport * as selectors from '../store/account-posting-type.selectors';\r\n@Component({\r\n selector: 'ef-posting-account-container',\r\n templateUrl: './posting-account-container.component.html',\r\n styleUrls: ['./posting-account-container.component.scss']\r\n})\r\nexport class PostingAccountContainerComponent implements OnInit {\r\n @Input() accounts: Account[];\r\n @Input() selectedError: IStatusMessage;\r\n @Output() public ShowError = new EventEmitter();\r\n postingTypes$: Observable;\r\n postingItems$: Observable;\r\n constructor(\r\n private store: Store,\r\n private serviceItemService: ServiceItemLookupService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(actions.getAccountPostingTypes());\r\n this.store.dispatch(new fromLookups.LoadServiceItems(true, true, true));\r\n this.setupObservables();\r\n }\r\n\r\n setupObservables() {\r\n this.postingTypes$ = this.store.pipe(\r\n select(selectors.selectAll),\r\n map(x =>\r\n clone(x).sort((a: PostingType, b: PostingType) =>\r\n a.PostingType.localeCompare(b.PostingType)\r\n )\r\n )\r\n );\r\n this.postingItems$ = this.store.pipe(\r\n select(fromLookups.getOtherChargeItemsLookup),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.ServiceItem,\r\n value: item.SIListID\r\n }))\r\n )\r\n );\r\n }\r\n onSavePostingType($event: AccountPostingType[]) {\r\n this.store.dispatch(\r\n actions.putAccountPostingTypes({\r\n AccountPostingTypes: $event\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Account } from '../../store/account.model';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { ResponseStatus, IStatusMessage, EditGrid } from '../../../shared';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { AccountPostingType } from '../store';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\n@Component({\r\n selector: 'ef-posting-account',\r\n templateUrl: './posting-account.component.html',\r\n styleUrls: ['./posting-account.component.scss']\r\n})\r\nexport class PostingAccountComponent\r\n extends EditGrid\r\n implements OnInit {\r\n @Input() accounts: Account[];\r\n @Input() postingItems: SelectItem[];\r\n postingAccounts: SelectItem[];\r\n public editing: AccountPostingType = {} as AccountPostingType;\r\n cloned: { [i: number]: AccountPostingType } = {};\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n ngOnInit() {}\r\n onEditInit($event: { data: AccountPostingType }) {\r\n this.editing = { ...$event.data };\r\n }\r\n onRowEditInit(item: AccountPostingType) {\r\n this.postingAccounts = this.accounts\r\n .filter(\r\n x => x.AccountType === item.AccountType || !item.AccountType\r\n )\r\n .map(x => ({\r\n label: x.AccountCode,\r\n value: x.AccountListID\r\n }));\r\n this.cloned[item.PostingType] = { ...item };\r\n this.editing = item;\r\n this.log.verbose({\r\n type: 'PostingAccountComponent:onRowEditInit',\r\n postingType: item,\r\n clonedPostingTypes: this.cloned,\r\n editing: this.editing\r\n });\r\n }\r\n onRowEditSave(item: AccountPostingType) {\r\n // validation\r\n if (item && item.ListID) {\r\n this.log.verbose({\r\n type: 'PostingAccountComponent:onRowEditSave',\r\n r: item,\r\n clonedPostingTypes: this.cloned\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n this.SaveItem.next([item]);\r\n delete this.cloned[item.PostingType];\r\n delete this.editing;\r\n }\r\n }\r\n onRowEditCancel(item: AccountPostingType) {\r\n this.log.verbose({\r\n type: 'PostingAccountComponent:onRowEditCancel',\r\n item,\r\n clonedPostingTypes: this.cloned\r\n });\r\n const index = (this.items as AccountPostingType[]).findIndex(\r\n x => x.PostingType === item.PostingType\r\n );\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.PostingType]);\r\n }\r\n this.items = [...this.items];\r\n\r\n delete this.cloned[item.PostingType];\r\n delete this.editing;\r\n }\r\n getAccountsForPosting(item: AccountPostingType) {\r\n this.log.verbose({\r\n type: 'PostingAccountComponent:getAccountsForPosting',\r\n item,\r\n accounts: this.accounts\r\n });\r\n return this.accounts\r\n .filter(\r\n x => x.AccountType === item.AccountType || !item.AccountType\r\n )\r\n .map(x => ({\r\n label: x.AccountCode,\r\n value: x.AccountListID\r\n }));\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { AccountAllocation } from './account-allocation.model';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\n\r\nexport const loadAccountAllocations = createAction(\r\n '[AccountAllocation/API] Load AccountAllocations',\r\n props<{ accountAllocations: AccountAllocation[] }>()\r\n);\r\n\r\nexport const addAccountAllocation = createAction(\r\n '[AccountAllocation/API] Add AccountAllocation',\r\n props<{ accountAllocation: AccountAllocation }>()\r\n);\r\n\r\nexport const upsertAccountAllocation = createAction(\r\n '[AccountAllocation/API] Upsert AccountAllocation',\r\n props<{ accountAllocation: AccountAllocation }>()\r\n);\r\n\r\nexport const addAccountAllocations = createAction(\r\n '[AccountAllocation/API] Add AccountAllocations',\r\n props<{ accountAllocations: AccountAllocation[] }>()\r\n);\r\n\r\nexport const upsertAccountAllocations = createAction(\r\n '[AccountAllocation/API] Upsert AccountAllocations',\r\n props<{ accountAllocations: AccountAllocation[] }>()\r\n);\r\n\r\nexport const updateAccountAllocation = createAction(\r\n '[AccountAllocation/API] Update AccountAllocation',\r\n props<{ accountAllocation: Update }>()\r\n);\r\n\r\nexport const updateAccountAllocations = createAction(\r\n '[AccountAllocation/API] Update AccountAllocations',\r\n props<{ accountAllocations: Update[] }>()\r\n);\r\n\r\nexport const deleteAccountAllocation = createAction(\r\n '[AccountAllocation/API] Delete AccountAllocation',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteAccountAllocations = createAction(\r\n '[AccountAllocation/API] Delete AccountAllocations',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearAccountAllocations = createAction(\r\n '[AccountAllocation/API] Clear AccountAllocations'\r\n);\r\nexport const getAccountAllocations = createAction(\r\n '[AccountAllocation/API] Get AccountAllocations'\r\n);\r\nexport const putAccountAllocations = createAction(\r\n '[AccountAllocation/API] Put AccountAllocation',\r\n props<{ accountAllocations: AccountAllocation[] }>()\r\n);\r\nexport const getExpenseTypes = createAction(\r\n '[AccountAllocation/API] Get Expense Types'\r\n);\r\nexport const loadExpenseTypes = createAction(\r\n '[AccountAllocation/API] Load Expense Types',\r\n props<{ expenseTypes: CalcType[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, concatMap, flatMap, map, switchMap } from 'rxjs/operators';\r\nimport { CalcTypeService } from '../../../lookups/calc-type.service';\r\nimport * as fromShared from '../../../shared';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../../shared';\r\nimport { AccountAllocationsService } from '../account-allocations.service';\r\nimport * as AccountAllocationsActions from './account-allocation.actions';\r\n\r\n@Injectable()\r\nexport class AccountAllocationsEffects {\r\n getExpenseTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountAllocationsActions.getExpenseTypes),\r\n switchMap(() =>\r\n // this.calcTypeService.getCalcType('expense').pipe(\r\n this.calcTypeService.getCalcType().pipe(\r\n flatMap(resp => [\r\n AccountAllocationsActions.loadExpenseTypes({\r\n expenseTypes: resp.filter(x => !!x.CostSubType)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getAccountAllocations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountAllocationsActions.getAccountAllocations),\r\n switchMap(action =>\r\n this.service.get().pipe(\r\n flatMap(resp => [\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n r =>\r\n r.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n AccountAllocationsActions.loadAccountAllocations({\r\n accountAllocations: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putAccountAllocationsStatus$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountAllocationsActions.putAccountAllocations),\r\n map(action =>\r\n AccountAllocationsActions.upsertAccountAllocations({\r\n accountAllocations: action.accountAllocations.map(x => ({\r\n ...x,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Loading'\r\n }\r\n }))\r\n })\r\n )\r\n );\r\n });\r\n putAccountAllocations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountAllocationsActions.putAccountAllocations),\r\n switchMap(action =>\r\n this.service.put(action.accountAllocations).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n AccountAllocationsActions.upsertAccountAllocations(\r\n {\r\n accountAllocations: resp.Items\r\n }\r\n ),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Accountlistid.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n AccountAllocationsActions.upsertAccountAllocations(\r\n {\r\n accountAllocations: resp.Items\r\n }\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n constructor(\r\n private actions$: Actions,\r\n private service: AccountAllocationsService,\r\n private calcTypeService: CalcTypeService\r\n ) {}\r\n}\r\n","import { DataServiceEntity } from '../../../data-services/data-service.entity';\r\nimport { IStatusMessage } from '../../../shared';\r\n\r\nexport interface AccountAllocation\r\n extends DataServiceEntity {\r\n Accountlistid: string;\r\n Accountcode: string;\r\n Accounttype: string;\r\n Calctype: string;\r\n Costcenterid: number;\r\n Modifieddate: Date;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\nimport * as AccountAllocationActions from './account-allocation.actions';\r\nimport { AccountAllocation } from './account-allocation.model';\r\n\r\nexport const accountAllocationsFeatureKey = 'accountAllocations';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n expenseTypes: CalcType[];\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: AccountAllocation) => model.Accountlistid\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n expenseTypes: []\r\n});\r\n\r\nconst accountAllocationReducer = createReducer(\r\n initialState,\r\n on(AccountAllocationActions.addAccountAllocation, (state, action) =>\r\n adapter.addOne(action.accountAllocation, state)\r\n ),\r\n on(AccountAllocationActions.upsertAccountAllocation, (state, action) =>\r\n adapter.upsertOne(action.accountAllocation, state)\r\n ),\r\n on(AccountAllocationActions.addAccountAllocations, (state, action) =>\r\n adapter.addMany(action.accountAllocations, state)\r\n ),\r\n on(AccountAllocationActions.upsertAccountAllocations, (state, action) =>\r\n adapter.upsertMany(action.accountAllocations, state)\r\n ),\r\n on(AccountAllocationActions.updateAccountAllocation, (state, action) =>\r\n adapter.updateOne(action.accountAllocation, state)\r\n ),\r\n on(AccountAllocationActions.updateAccountAllocations, (state, action) =>\r\n adapter.updateMany(action.accountAllocations, state)\r\n ),\r\n on(AccountAllocationActions.deleteAccountAllocation, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(AccountAllocationActions.deleteAccountAllocations, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(AccountAllocationActions.loadAccountAllocations, (state, action) =>\r\n adapter.setAll(action.accountAllocations, state)\r\n ),\r\n on(AccountAllocationActions.clearAccountAllocations, state =>\r\n adapter.removeAll(state)\r\n ),\r\n on(AccountAllocationActions.loadExpenseTypes, (state, action) => ({\r\n ...state,\r\n expenseTypes: action.expenseTypes\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return accountAllocationReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromAccountAllocations from './account-allocation.reducer';\r\n\r\nexport const selectAccountAllocationsState = createFeatureSelector<\r\n fromAccountAllocations.State\r\n>(fromAccountAllocations.accountAllocationsFeatureKey);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromAccountAllocations.adapter.getSelectors(selectAccountAllocationsState);\r\n\r\nexport const selectExpenseTypes = createSelector(\r\n selectAccountAllocationsState,\r\n x => x.expenseTypes\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { AccountPostingType } from './account-posting-type.model';\r\n\r\nexport const loadAccountPostingTypes = createAction(\r\n '[AccountPostingType/API] Load AccountPostingTypes',\r\n props<{ AccountPostingTypes: AccountPostingType[] }>()\r\n);\r\n\r\nexport const addAccountPostingType = createAction(\r\n '[AccountPostingType/API] Add AccountPostingType',\r\n props<{ AccountPostingType: AccountPostingType }>()\r\n);\r\n\r\nexport const upsertAccountPostingType = createAction(\r\n '[AccountPostingType/API] Upsert AccountPostingType',\r\n props<{ AccountPostingType: AccountPostingType }>()\r\n);\r\n\r\nexport const addAccountPostingTypes = createAction(\r\n '[AccountPostingType/API] Add AccountPostingTypes',\r\n props<{ AccountPostingTypes: AccountPostingType[] }>()\r\n);\r\n\r\nexport const upsertAccountPostingTypes = createAction(\r\n '[AccountPostingType/API] Upsert AccountPostingTypes',\r\n props<{ AccountPostingTypes: AccountPostingType[] }>()\r\n);\r\n\r\nexport const updateAccountPostingType = createAction(\r\n '[AccountPostingType/API] Update AccountPostingType',\r\n props<{ AccountPostingType: Update }>()\r\n);\r\n\r\nexport const updateAccountPostingTypes = createAction(\r\n '[AccountPostingType/API] Update AccountPostingTypes',\r\n props<{ AccountPostingTypes: Update[] }>()\r\n);\r\n\r\nexport const deleteAccountPostingType = createAction(\r\n '[AccountPostingType/API] Delete AccountPostingType',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteAccountPostingTypes = createAction(\r\n '[AccountPostingType/API] Delete AccountPostingTypes',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearAccountPostingTypes = createAction(\r\n '[AccountPostingType/API] Clear AccountPostingTypes'\r\n);\r\n\r\nexport const getAccountPostingTypes = createAction(\r\n '[Account/API] Get Account Posting Types'\r\n);\r\nexport const putAccountPostingTypes = createAction(\r\n '[Account/API] Put Account Posting Types',\r\n props<{ AccountPostingTypes: AccountPostingType[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, map, concatMap, switchMap, flatMap } from 'rxjs/operators';\r\n\r\nimport * as AccountPostingTypeActions from './account-posting-type.actions';\r\nimport { AccountAllocationsService } from '../account-allocations.service';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../../shared';\r\nimport * as fromShared from '../../../shared';\r\n\r\n@Injectable()\r\nexport class AccountPostingTypeEffects {\r\n getAccountPostingTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountPostingTypeActions.getAccountPostingTypes),\r\n switchMap(() =>\r\n this.service.getAccountPostingTypes().pipe(\r\n flatMap(resp => [\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n r =>\r\n r.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n AccountPostingTypeActions.loadAccountPostingTypes({\r\n AccountPostingTypes: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putAccountPostingTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountPostingTypeActions.putAccountPostingTypes),\r\n switchMap(action =>\r\n this.service\r\n .putAccountPostingTypes(action.AccountPostingTypes)\r\n .pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n AccountPostingTypeActions.upsertAccountPostingTypes(\r\n {\r\n AccountPostingTypes: resp.Items\r\n }\r\n ),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.ListID.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(\r\n resp\r\n )\r\n ),\r\n AccountPostingTypeActions.upsertAccountPostingTypes(\r\n {\r\n AccountPostingTypes: resp.Items\r\n }\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: AccountAllocationsService\r\n ) {}\r\n}\r\n","import { PostingType } from '../../../lookups';\r\n\r\nexport interface AccountPostingType extends PostingType {\r\n AccountType: string;\r\n Defaultitem: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { PostingType } from '../../../lookups/posting-type.model';\r\nimport * as PostingTypeActions from './account-posting-type.actions';\r\n\r\nexport const accountPostingTypesFeatureKey = 'accountPostingTypes';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: PostingType) => model.PostingType\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst PostingTypeReducer = createReducer(\r\n initialState,\r\n on(PostingTypeActions.addAccountPostingType, (state, action) =>\r\n adapter.addOne(action.AccountPostingType, state)\r\n ),\r\n on(PostingTypeActions.upsertAccountPostingType, (state, action) =>\r\n adapter.upsertOne(action.AccountPostingType, state)\r\n ),\r\n on(PostingTypeActions.addAccountPostingTypes, (state, action) =>\r\n adapter.addMany(action.AccountPostingTypes, state)\r\n ),\r\n on(PostingTypeActions.upsertAccountPostingTypes, (state, action) =>\r\n adapter.upsertMany(action.AccountPostingTypes, state)\r\n ),\r\n on(PostingTypeActions.updateAccountPostingType, (state, action) =>\r\n adapter.updateOne(action.AccountPostingType, state)\r\n ),\r\n on(PostingTypeActions.updateAccountPostingTypes, (state, action) =>\r\n adapter.updateMany(action.AccountPostingTypes, state)\r\n ),\r\n on(PostingTypeActions.deleteAccountPostingType, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(PostingTypeActions.deleteAccountPostingTypes, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(PostingTypeActions.loadAccountPostingTypes, (state, action) =>\r\n adapter.setAll(action.AccountPostingTypes, state)\r\n ),\r\n on(PostingTypeActions.clearAccountPostingTypes, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return PostingTypeReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromAccountPostingType from './account-posting-type.reducer';\r\n\r\nexport const selectAccountPostingTypeState = createFeatureSelector<\r\n fromAccountPostingType.State\r\n>(fromAccountPostingType.accountPostingTypesFeatureKey);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromAccountPostingType.adapter.getSelectors(selectAccountPostingTypeState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { FacilityAllocation } from './facility-allocation.model';\r\nimport { Action } from 'rxjs/internal/scheduler/Action';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\n\r\nexport const loadFacilityAllocations = createAction(\r\n '[FacilityAllocation/API] Load FacilityAllocations',\r\n props<{ facilityAllocations: FacilityAllocation[] }>()\r\n);\r\n\r\nexport const addFacilityAllocation = createAction(\r\n '[FacilityAllocation/API] Add FacilityAllocation',\r\n props<{ facilityAllocation: FacilityAllocation }>()\r\n);\r\n\r\nexport const upsertFacilityAllocation = createAction(\r\n '[FacilityAllocation/API] Upsert FacilityAllocation',\r\n props<{ facilityAllocation: FacilityAllocation }>()\r\n);\r\n\r\nexport const addFacilityAllocations = createAction(\r\n '[FacilityAllocation/API] Add FacilityAllocations',\r\n props<{ facilityAllocations: FacilityAllocation[] }>()\r\n);\r\n\r\nexport const upsertFacilityAllocations = createAction(\r\n '[FacilityAllocation/API] Upsert FacilityAllocations',\r\n props<{ facilityAllocations: FacilityAllocation[] }>()\r\n);\r\n\r\nexport const updateFacilityAllocation = createAction(\r\n '[FacilityAllocation/API] Update FacilityAllocation',\r\n props<{ facilityAllocation: Update }>()\r\n);\r\n\r\nexport const updateFacilityAllocations = createAction(\r\n '[FacilityAllocation/API] Update FacilityAllocations',\r\n props<{ facilityAllocations: Update[] }>()\r\n);\r\n\r\nexport const deleteFacilityAllocation = createAction(\r\n '[FacilityAllocation/API] Delete FacilityAllocation',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteFacilityAllocations = createAction(\r\n '[FacilityAllocation/API] Delete FacilityAllocations',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearFacilityAllocations = createAction(\r\n '[FacilityAllocation/API] Clear FacilityAllocations'\r\n);\r\nexport const getFacilityAllocations = createAction(\r\n '[FacilityAllocation/API] Get FacilityAllocations'\r\n);\r\nexport const putFacilityAllocations = createAction(\r\n '[FacilityAllocations/API] Put FacilityAllocations',\r\n props<{ facilityAllocations: FacilityAllocation[] }>()\r\n);\r\nexport const getFacilityAllocationTypes = createAction(\r\n '[FacilityAllocations/API] Get FacilityAllocationTypes'\r\n);\r\nexport const loadFacilityAllocationTypes = createAction(\r\n '[FacilityAllocations/API] Load FacilityAllocationTypes',\r\n props<{ facilityAllocationTypes: SelectItem[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport { concatMap, switchMap, map, catchError } from 'rxjs/operators';\r\n\r\nimport * as FacilityAllocationActions from './facility-allocation.actions';\r\nimport { AccountAllocationsService } from '../account-allocations.service';\r\nimport * as fromShared from '../../../shared';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../../shared';\r\n\r\n@Injectable()\r\nexport class FacilityAllocationEffects {\r\n getFacilityAllocations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FacilityAllocationActions.getFacilityAllocations),\r\n switchMap(() =>\r\n this.service.getFacilityAllocations().pipe(\r\n map(data =>\r\n FacilityAllocationActions.loadFacilityAllocations({\r\n facilityAllocations: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putFacilityAllocations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FacilityAllocationActions.putFacilityAllocations),\r\n switchMap(action =>\r\n this.service\r\n .putFacilityAllocations(action.facilityAllocations)\r\n .pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n FacilityAllocationActions.upsertFacilityAllocations(\r\n {\r\n facilityAllocations: resp.Items\r\n }\r\n ),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.id.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(\r\n resp\r\n )\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(\r\n resp\r\n )\r\n ),\r\n FacilityAllocationActions.upsertFacilityAllocations(\r\n {\r\n facilityAllocations: resp.Items\r\n }\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getFacilityAllocationTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FacilityAllocationActions.getFacilityAllocationTypes),\r\n switchMap(() =>\r\n this.service.getFacilityAllocationTypes().pipe(\r\n map(data =>\r\n FacilityAllocationActions.loadFacilityAllocationTypes({\r\n facilityAllocationTypes: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n constructor(\r\n private actions$: Actions,\r\n private service: AccountAllocationsService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../../shared';\r\n\r\nexport interface FacilityAllocation {\r\n id: string;\r\n Costcenterid: number;\r\n Costcenterdesc: string;\r\n Ratecode: string;\r\n Calcdesc: string;\r\n CCratecodedesc: string;\r\n Allocationamount: number;\r\n Allocationtypeid: number;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport * as FacilityAllocationActions from './facility-allocation.actions';\r\nimport { FacilityAllocation } from './facility-allocation.model';\r\n\r\nexport const facilityAllocationsFeatureKey = 'facilityAllocations';\r\n\r\nexport interface State extends EntityState {\r\n facilityAllocationTypes: SelectItem[];\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n facilityAllocationTypes: []\r\n});\r\n\r\nconst facilityAllocationReducer = createReducer(\r\n initialState,\r\n on(FacilityAllocationActions.addFacilityAllocation, (state, action) =>\r\n adapter.addOne(action.facilityAllocation, state)\r\n ),\r\n on(FacilityAllocationActions.upsertFacilityAllocation, (state, action) =>\r\n adapter.upsertOne(action.facilityAllocation, state)\r\n ),\r\n on(FacilityAllocationActions.addFacilityAllocations, (state, action) =>\r\n adapter.addMany(action.facilityAllocations, state)\r\n ),\r\n on(FacilityAllocationActions.upsertFacilityAllocations, (state, action) =>\r\n adapter.upsertMany(action.facilityAllocations, state)\r\n ),\r\n on(FacilityAllocationActions.updateFacilityAllocation, (state, action) =>\r\n adapter.updateOne(action.facilityAllocation, state)\r\n ),\r\n on(FacilityAllocationActions.updateFacilityAllocations, (state, action) =>\r\n adapter.updateMany(action.facilityAllocations, state)\r\n ),\r\n on(FacilityAllocationActions.deleteFacilityAllocation, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(FacilityAllocationActions.deleteFacilityAllocations, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(FacilityAllocationActions.loadFacilityAllocations, (state, action) =>\r\n adapter.setAll(action.facilityAllocations, state)\r\n ),\r\n on(FacilityAllocationActions.clearFacilityAllocations, state =>\r\n adapter.removeAll(state)\r\n ),\r\n on(\r\n FacilityAllocationActions.loadFacilityAllocationTypes,\r\n (state, action) => ({\r\n ...state,\r\n facilityAllocationTypes: action.facilityAllocationTypes\r\n })\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return facilityAllocationReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromFacilityAllocation from './facility-allocation.reducer';\r\n\r\nexport const selectFacilityAllocationState = createFeatureSelector<\r\n fromFacilityAllocation.State\r\n>(fromFacilityAllocation.facilityAllocationsFeatureKey);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromFacilityAllocation.adapter.getSelectors(selectFacilityAllocationState);\r\nexport const selectFacilityAllocationTypes = createSelector(\r\n selectFacilityAllocationState,\r\n state => state.facilityAllocationTypes\r\n);\r\n","export * from './account-allocation.model';\r\nexport * from './account-allocation.actions';\r\nexport * from './account-allocation.effects';\r\nexport * from './facility-allocation.model';\r\nexport * from './facility-allocation.actions';\r\nexport * from './facility-allocation.effects';\r\nexport * from './account-posting-type.actions';\r\nexport * from './account-posting-type.effects';\r\nexport * from './account-posting-type.model';\r\nexport * from '../../../data-services/contract/contract.model';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromStore from '../store/account.reducer';\r\n\r\n@Component({\r\n selector: 'ef-account-container',\r\n templateUrl: './account-container.component.html',\r\n styleUrls: ['./account-container.component.scss']\r\n})\r\nexport class AccountContainerComponent implements OnInit {\r\n constructor(private store: Store) {}\r\n\r\n ngOnInit() {}\r\n}\r\n","export * from './account-container.component';\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { AccountAllocationsModule } from './account-allocations/account-allocations.module';\r\nimport { AccountContainerComponent } from './account-container/account-container.component';\r\nimport { AccountRoute } from './account.route';\r\nimport { AccountEffects } from './store/account.effects';\r\nimport * as fromAccount from './store/account.reducer';\r\n\r\n@NgModule({\r\n declarations: [AccountContainerComponent],\r\n imports: [\r\n CommonModule,\r\n UIRouterModule,\r\n StoreModule.forFeature(\r\n fromAccount.accountsFeatureKey,\r\n fromAccount.reducer\r\n ),\r\n EffectsModule.forFeature([AccountEffects]),\r\n UIRouterModule.forChild({\r\n states: [AccountRoute]\r\n }),\r\n AccountAllocationsModule\r\n ]\r\n // schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\r\n})\r\nexport class AccountModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\n// import * as fromAccount from '.';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\nimport * as fromAccount from '.';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const AccountRoute: Ng2StateDeclaration = {\r\n // name: 'Account.**'\r\n name: 'account',\r\n url: '/account',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.AccountModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromAccount.AccountContainerComponent\r\n};\r\n","import { environment } from '../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { LoadingService } from '../shared/loading/loading-service.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromRoot from '../store';\r\nimport { PostingType } from '../lookups';\r\nimport { Observable } from 'rxjs';\r\nimport { Account } from './store/account.model';\r\nimport { map } from 'rxjs/operators';\r\nimport { IGenericResponse, ResponseStatus } from '../shared';\r\nimport { AccountContract } from './store/account-contract.model';\r\nimport { getTestServiceError } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccountService extends LoadingService {\r\n private uri = `${environment.apiLocation}/Account`;\r\n private contractUri = `${environment.apiLocation}/ContractARAccount`;\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n get(accountType?: string, laborType?: string): Observable {\r\n let _url = `${this.uri}/?a=1`;\r\n //if (accountType) {\r\n _url = _url.concat(`&accountType=${accountType}`);\r\n //}\r\n if (laborType) {\r\n _url = _url.concat(`&laborType=${laborType}`);\r\n }\r\n this.log.verbose({\r\n type: 'AccountService.get',\r\n accountType,\r\n laborType,\r\n _url\r\n });\r\n return this.http.get(_url).pipe(\r\n map(res =>\r\n res.map(x => ({\r\n ...x,\r\n Status: {\r\n StatusCode: x && x.Status ? x.Status.StatusCode : 0,\r\n Message: x && x.Status ? x.Status.Message : '',\r\n MsgEntityID:\r\n x && x.Status\r\n ? x.Status.MsgEntityID\r\n : x.AccountListID\r\n }\r\n }))\r\n )\r\n );\r\n }\r\n\r\n getContractARAccounts(): Observable {\r\n return this.http.get(this.contractUri);\r\n }\r\n putContractARAccounts(\r\n contracts: AccountContract[]\r\n ): Observable> {\r\n // return getTestServiceError(19, contracts as AccountContract[], 'Contractlistid');\r\n\r\n return this.http.put>(\r\n this.contractUri,\r\n {\r\n ContractARAccountList: contracts\r\n }\r\n );\r\n }\r\n}\r\n","export * from './account-container';\r\nexport * from './account.service';\r\nexport * from './store';\r\n","import { IStatusMessage } from '../../shared';\r\n// this is used for creating a many to many relationship between accounts and contracts\r\nexport interface AccountContract {\r\n Contractlistid: string;\r\n Isactive: boolean;\r\n Contractdesc: string;\r\n Araccountlistid: string;\r\n Accountcode: string;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Account } from './account.model';\r\nimport { PostingType } from '../../lookups';\r\nimport { AccountContract } from './account-contract.model';\r\n\r\nexport const loadAccounts = createAction(\r\n '[Account/API] Load Accounts',\r\n props<{ accounts: Account[] }>()\r\n);\r\n\r\nexport const addAccount = createAction(\r\n '[Account/API] Add Account',\r\n props<{ account: Account }>()\r\n);\r\n\r\nexport const upsertAccount = createAction(\r\n '[Account/API] Upsert Account',\r\n props<{ account: Account }>()\r\n);\r\n\r\nexport const addAccounts = createAction(\r\n '[Account/API] Add Accounts',\r\n props<{ accounts: Account[] }>()\r\n);\r\n\r\nexport const upsertAccounts = createAction(\r\n '[Account/API] Upsert Accounts',\r\n props<{ accounts: Account[] }>()\r\n);\r\n\r\nexport const updateAccount = createAction(\r\n '[Account/API] Update Account',\r\n props<{ account: Update }>()\r\n);\r\n\r\nexport const updateAccounts = createAction(\r\n '[Account/API] Update Accounts',\r\n props<{ accounts: Update[] }>()\r\n);\r\n\r\nexport const deleteAccount = createAction(\r\n '[Account/API] Delete Account',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteAccounts = createAction(\r\n '[Account/API] Delete Accounts',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearAccounts = createAction('[Account/API] Clear Accounts');\r\nexport const getAccounts = createAction(\r\n '[Account/API] Get Accounts',\r\n props<{\r\n AccountType?: string;\r\n LaborType?: string;\r\n }>()\r\n);\r\nexport const getContractARAccounts = createAction(\r\n '[Account/API] Get Contract AR Accounts'\r\n);\r\nexport const loadContractARAccounts = createAction(\r\n '[Account/API] Load Contract AR Accounts',\r\n props<{ contracts: AccountContract[] }>()\r\n);\r\nexport const putContractARAccounts = createAction(\r\n '[Account/API] Put Contract AR Accounts',\r\n props<{ contracts: AccountContract[] }>()\r\n);\r\nexport const updateContractARAccounts = createAction(\r\n '[Account/API] Update Contract AR Accounts',\r\n props<{ contracts: AccountContract[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport { concatMap, switchMap, map, catchError, flatMap } from 'rxjs/operators';\r\n\r\nimport * as AccountActions from './account.actions';\r\nimport * as fromShared from '../../shared';\r\nimport { AccountService } from '../account.service';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../shared';\r\n\r\n@Injectable()\r\nexport class AccountEffects {\r\n getAccounts$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountActions.getAccounts),\r\n switchMap(action =>\r\n this.service.get(action.AccountType, action.LaborType).pipe(\r\n flatMap(resp => [\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n r =>\r\n r.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n AccountActions.loadAccounts({\r\n accounts: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n getContractARAccounts$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountActions.getContractARAccounts),\r\n switchMap(() =>\r\n this.service.getContractARAccounts().pipe(\r\n flatMap(resp => [\r\n AccountActions.loadContractARAccounts({\r\n contracts: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putContractARAccountsStatus$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountActions.putContractARAccounts),\r\n map(action =>\r\n AccountActions.updateContractARAccounts({\r\n contracts: action.contracts.map(x => ({\r\n ...x,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Loading'\r\n }\r\n }))\r\n })\r\n )\r\n );\r\n });\r\n putContractARAccounts$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AccountActions.putContractARAccounts),\r\n switchMap(action =>\r\n this.service.putContractARAccounts(action.contracts).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n AccountActions.updateContractARAccounts({\r\n contracts: resp.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Contractlistid.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n AccountActions.updateContractARAccounts({\r\n contracts: resp.Items\r\n })\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(private actions$: Actions, private service: AccountService) {}\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\n\r\nexport interface Account {\r\n AccountType: string;\r\n AccountListID: string;\r\n AccountCode: string;\r\n Status?: IStatusMessage;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { AccountContract } from './account-contract.model';\r\nimport * as AccountActions from './account.actions';\r\nimport { Account } from './account.model';\r\n\r\nexport const accountsFeatureKey = 'accounts';\r\n\r\nexport interface State extends EntityState {\r\n ARContracts: AccountContract[];\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: Account) => model.AccountListID\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n ARContracts: []\r\n});\r\n\r\nconst accountReducer = createReducer(\r\n initialState,\r\n on(AccountActions.addAccount, (state, action) =>\r\n adapter.addOne(action.account, state)\r\n ),\r\n on(AccountActions.upsertAccount, (state, action) =>\r\n adapter.upsertOne(action.account, state)\r\n ),\r\n on(AccountActions.addAccounts, (state, action) =>\r\n adapter.addMany(action.accounts, state)\r\n ),\r\n on(AccountActions.upsertAccounts, (state, action) =>\r\n adapter.upsertMany(action.accounts, state)\r\n ),\r\n on(AccountActions.updateAccount, (state, action) =>\r\n adapter.updateOne(action.account, state)\r\n ),\r\n on(AccountActions.updateAccounts, (state, action) =>\r\n adapter.updateMany(action.accounts, state)\r\n ),\r\n on(AccountActions.deleteAccount, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(AccountActions.deleteAccounts, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(AccountActions.loadAccounts, (state, action) =>\r\n adapter.setAll(action.accounts, state)\r\n ),\r\n on(AccountActions.clearAccounts, state => adapter.removeAll(state)),\r\n on(AccountActions.loadContractARAccounts, (state, action) => {\r\n return {\r\n ...state,\r\n ARContracts: action.contracts\r\n };\r\n }),\r\n on(AccountActions.updateContractARAccounts, (state, action) => {\r\n return {\r\n ...state,\r\n ARContracts: [\r\n ...state.ARContracts.filter(\r\n x =>\r\n !action.contracts\r\n .map(y => y.Contractlistid)\r\n .includes(x.Contractlistid)\r\n ),\r\n ...action.contracts\r\n ]\r\n };\r\n })\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return accountReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromAccount from './account.reducer';\r\n\r\nexport const selectAccountState = createFeatureSelector(\r\n fromAccount.accountsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromAccount.adapter.getSelectors(selectAccountState);\r\n\r\nexport const selectContractARAccounts = createSelector(\r\n selectAccountState,\r\n x => x.ARContracts\r\n);\r\n","export * from './account.actions';\r\nexport * from './account.model';\r\nexport * from './account.reducer';\r\nexport * from './account.effects';\r\nexport * from './account.selectors';\r\nexport * from './account-contract.model';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport * as $ from 'jquery';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n takeWhile,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { AuthenticationService } from './auth/authentication.service';\r\nimport * as fromLookups from './lookups';\r\nimport { IDirectReport } from './lookups';\r\nimport { ReportingFeatureComponent } from './reporting/features/reporting-feature.component';\r\nimport * as fromShared from './shared';\r\nimport { IStatusMessage, Process } from './shared';\r\nimport {\r\n MenuItem,\r\n PrimeNGConfig,\r\n ScrollPanel\r\n} from './shared/efaact-primeng.module';\r\nimport { DialogService } from './shared/modal-dialog/dialog.service';\r\nimport { LoggingService } from './shared/services/logging/logging.service';\r\nimport * as fromRoot from './store';\r\nimport { ToasterService } from './toaster/service/toaster-service';\r\nimport * as fromUser from './user-info';\r\nimport { IUserRole } from './user-role/IUserRole';\r\nimport * as fromUserRole from './user-role/store/reducers';\r\n\r\nenum MenuOrientation {\r\n STATIC,\r\n OVERLAY,\r\n SLIM,\r\n HORIZONTAL\r\n}\r\n@Component({\r\n selector: 'ef-app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy, AfterViewInit {\r\n layoutMode: MenuOrientation = MenuOrientation.STATIC;\r\n\r\n darkMenu = true;\r\n\r\n profileMode = 'top';\r\n\r\n rotateMenuButton: boolean;\r\n\r\n topbarMenuActive: boolean;\r\n\r\n overlayMenuActive: boolean;\r\n\r\n staticMenuDesktopInactive = false;\r\n\r\n staticMenuMobileActive = true;\r\n\r\n layoutMenuScroller: HTMLDivElement;\r\n\r\n menuClick: boolean;\r\n\r\n topbarItemClick: boolean;\r\n\r\n activeTopbarItem: any;\r\n\r\n resetMenu: boolean;\r\n\r\n menuHoverActive: boolean;\r\n\r\n @ViewChild('reportsSideNav', { static: true })\r\n reportsSideNav: ReportingFeatureComponent;\r\n @ViewChild('layoutMenuScroller', { static: true })\r\n layoutMenuScrollerViewChild: ScrollPanel;\r\n private componentActive = true;\r\n public userRoles$: Observable>;\r\n public errors$: Observable>;\r\n public errors: Array;\r\n public title = 'eFAACT Central';\r\n public errorCount = 0;\r\n public ReportsSideNavVisible = false;\r\n public ReportsStyle = { width: '75rem', 'max-width': '100vw' };\r\n public userInfo$: Observable;\r\n public user$: Observable;\r\n user: fromUser.IUserAccess;\r\n userInfo: fromUser.IUserInfo;\r\n private directReports$: Observable>;\r\n private ReportButtonSubject = new ReplaySubject(1);\r\n private OnShowReportsSubject = new ReplaySubject(1);\r\n @ViewChild('errorsSidenav', { static: true, read: ElementRef })\r\n errorsSidenavEl;\r\n @ViewChild('dialogdiv', { read: ViewContainerRef, static: true }) dialogdiv;\r\n companyURL: string;\r\n hasCompanyURL: boolean;\r\n mySettingsProcess: any;\r\n private userPM$: Observable>;\r\n myLogoProcess: fromShared.Process;\r\n companySettingsProcess: fromShared.Process;\r\n companyCalendarProcess: fromShared.Process;\r\n DetailSideNavVisible = false;\r\n MessageSideNavVisible = false;\r\n messageCount = '';\r\n eFCheckupProcess: fromShared.Process;\r\n\r\n messageBadgeStyle = 'ef-menuitem-badge-off';\r\n\r\n model: MenuItem[];\r\n\r\n public processes: Process[] = [];\r\n public processTitles: string[] = [];\r\n constructor(\r\n private log: LoggingService,\r\n private dialog: DialogService,\r\n private rootStore: Store,\r\n private errorsStore: Store,\r\n private userStore: Store,\r\n public renderer: Renderer2,\r\n private authService: AuthenticationService,\r\n private ss: StateService,\r\n private primengConfig: PrimeNGConfig,\r\n private toaster: ToasterService\r\n ) {\r\n // setTheme('bs4');\r\n this.setupObservables();\r\n this.rootStore.dispatch(new fromRoot.GetVersionAction());\r\n }\r\n ngOnDestroy(): void {\r\n this.componentActive = false;\r\n }\r\n ngAfterViewInit() {\r\n const themeTag = document.getElementById('themeTag');\r\n if (themeTag) {\r\n themeTag.classList.add('default-theme');\r\n }\r\n setTimeout(() => {\r\n this.layoutMenuScrollerViewChild.moveBar();\r\n }, 0);\r\n setTimeout(() => {\r\n // this.loaded = true;\r\n // this.log.verbose({type: 'AppComponent:AfterViewInit', loaded: this.loaded});\r\n this.setupSubscriptions();\r\n }, 0);\r\n }\r\n setupObservables() {\r\n this.userInfo$ = this.userStore.pipe(select(fromUser.getUserInfo));\r\n this.user$ = this.userStore.pipe(select(fromUser.getUser));\r\n this.userRoles$ = this.userStore.pipe(\r\n select(fromUserRole.getUserRoles)\r\n );\r\n\r\n this.userPM$ = this.userStore.pipe(\r\n select(fromUser.getUserProcessesMain)\r\n );\r\n this.directReports$ = this.rootStore.pipe(\r\n select(fromLookups.getDirectReportsLookup)\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.user$\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(user => {\r\n this.user = user;\r\n if (this.user && this.processes.length == 0) {\r\n this.user.UserProcessCategories.forEach(cat => {\r\n cat.UserProcesses.forEach(process => {\r\n this.processes.push(process);\r\n });\r\n });\r\n this.processes.forEach(process => {\r\n this.processTitles.push(process.ProcessTitle);\r\n });\r\n this.eFCheckupProcess = this.processes.find(\r\n x => x.ProcessID == 145\r\n );\r\n }\r\n });\r\n\r\n this.userPM$\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(userProcessMain => {\r\n if (userProcessMain) {\r\n userProcessMain.forEach(process => {\r\n if (process.ProcessID === 75) {\r\n this.mySettingsProcess = process;\r\n }\r\n if (process.ProcessID === 77) {\r\n this.myLogoProcess = process;\r\n }\r\n if (process.ProcessID === 49) {\r\n this.companySettingsProcess = process;\r\n }\r\n if (process.ProcessID === 46) {\r\n this.companyCalendarProcess = process;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(userInfo => {\r\n this.userInfo = userInfo;\r\n this.log.verbose({\r\n type: 'app.component(userInfo$)',\r\n ReportsSideNavVisible: this.ReportsSideNavVisible,\r\n userInfo\r\n });\r\n\r\n this.ReportsSideNavVisible = false;\r\n\r\n if (userInfo.Customcompanyurl !== '') {\r\n this.companyURL = userInfo.Customcompanyurl;\r\n this.hasCompanyURL = true;\r\n } else {\r\n this.hasCompanyURL = false;\r\n }\r\n });\r\n this.ReportButtonSubject.pipe(\r\n takeWhile(() => this.componentActive),\r\n withLatestFrom(this.userInfo$)\r\n ).subscribe(([event, userInfo]) => {\r\n this.log.verbose({\r\n type: 'app.component(userInfo$, ReportButtonSubject)',\r\n ReportsSideNavVisible: this.ReportsSideNavVisible,\r\n userInfo\r\n });\r\n if (userInfo.eFC_Beta === true) {\r\n this.ReportsSideNavVisible = !this.ReportsSideNavVisible;\r\n }\r\n });\r\n this.directReports$\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(r => {\r\n // if (!(r && r.length)) {\r\n // this.ReportsStyle.width = '35rem';\r\n // } else {\r\n // this.ReportsStyle.width = '75rem';\r\n // }\r\n this.ReportsStyle.width = '66vw';\r\n this.ReportsStyle['min-width'] = '66vw';\r\n });\r\n\r\n this.OnShowReportsSubject.pipe(\r\n withLatestFrom(this.userInfo$)\r\n ).subscribe(([event, userInfo]) => {\r\n this.rootStore.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: false,\r\n MyDRsOnly: false,\r\n processId: 76\r\n })\r\n );\r\n });\r\n }\r\n ngOnInit() {\r\n this.primengConfig.ripple = true;\r\n this.dialog.vcRef = this.dialogdiv;\r\n\r\n this.errors$ = this.errorsStore.pipe(\r\n select(fromShared.Errors.getErrors)\r\n );\r\n\r\n this.errors$\r\n .pipe(takeWhile(_ => this.componentActive))\r\n .subscribe(errors => {\r\n this.errors = errors;\r\n this.errorCount = this.errors.length;\r\n });\r\n\r\n this.errorsStore\r\n .pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n takeWhile(() => this.componentActive)\r\n )\r\n .subscribe(e => {\r\n this.log.verbose({\r\n type: 'AppComponent:ngAfterViewInit:getShowErrors',\r\n e\r\n });\r\n if (e.open === true) {\r\n this.activeTopbarItem = $('#efErrorsSideNav')[0];\r\n this.onTopbarItemClick(null, this.activeTopbarItem);\r\n } else {\r\n }\r\n });\r\n }\r\n clearToast() {\r\n this.toaster.clear('ef-global-toast');\r\n }\r\n openUserManual() {\r\n if (this.companyURL !== '') {\r\n window.open(this.companyURL, '_blank');\r\n }\r\n }\r\n messageNavClick() {\r\n this.errorsStore.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: !this.errorsSidenavEl.open,\r\n MsgEntityID: '',\r\n MsgProcessID: 0\r\n })\r\n );\r\n }\r\n onLayoutClick() {\r\n if (!this.topbarItemClick) {\r\n this.activeTopbarItem = null;\r\n this.topbarMenuActive = false;\r\n }\r\n if (!this.menuClick) {\r\n if (this.isHorizontal() || this.isSlim()) {\r\n this.resetMenu = true;\r\n }\r\n if (this.overlayMenuActive || this.staticMenuMobileActive) {\r\n this.hideOverlayMenu();\r\n }\r\n this.menuHoverActive = false;\r\n }\r\n this.topbarItemClick = false;\r\n this.menuClick = false;\r\n }\r\n onMenuButtonClick(event) {\r\n this.menuClick = true;\r\n this.rotateMenuButton = !this.rotateMenuButton;\r\n this.topbarMenuActive = false;\r\n\r\n if (this.layoutMode === MenuOrientation.OVERLAY) {\r\n this.overlayMenuActive = !this.overlayMenuActive;\r\n } else {\r\n if (this.isDesktop()) {\r\n this.staticMenuDesktopInactive =\r\n !this.staticMenuDesktopInactive;\r\n } else {\r\n this.staticMenuMobileActive = !this.staticMenuMobileActive;\r\n }\r\n }\r\n event.preventDefault();\r\n }\r\n onReportButtonClick(event) {\r\n this.log.verbose({ type: 'app.onReportButtonClick', event });\r\n event.preventDefault();\r\n this.ReportButtonSubject.next(event);\r\n }\r\n onMenuClick($event) {\r\n this.menuClick = true;\r\n this.resetMenu = false;\r\n\r\n if (!this.isHorizontal()) {\r\n setTimeout(() => {\r\n this.layoutMenuScrollerViewChild.moveBar();\r\n }, 450);\r\n }\r\n }\r\n onTopbarMenuButtonClick(event) {\r\n this.topbarItemClick = true;\r\n this.topbarMenuActive = !this.topbarMenuActive;\r\n\r\n this.hideOverlayMenu();\r\n\r\n event.preventDefault();\r\n }\r\n onTopbarItemClick(event, item, name?) {\r\n this.topbarItemClick = true;\r\n if (!event) {\r\n this.activeTopbarItem = item;\r\n return;\r\n }\r\n if (this.activeTopbarItem === item) {\r\n this.activeTopbarItem = null;\r\n if (name != null) {\r\n if (name == 'errors') {\r\n if (this.errorCount == 0) {\r\n this.goto(this.eFCheckupProcess);\r\n }\r\n }\r\n }\r\n } else {\r\n this.activeTopbarItem = item;\r\n }\r\n event.preventDefault();\r\n }\r\n onTopbarSubItemClick(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n }\r\n onTopbarMySettingsClick(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.goto(this.mySettingsProcess);\r\n }\r\n onProcessClick(process: Process) {\r\n this.goto(process);\r\n }\r\n onTopbarMyLogoClick(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.goto(this.myLogoProcess);\r\n }\r\n onDashboardButtonClick(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.goto({\r\n ProcessID: -3,\r\n ProcessName: 'Dashboard',\r\n RouteName: 'dashboard',\r\n ProcessDesc: '',\r\n ProcessTitle: 'Dashboard'\r\n });\r\n }\r\n onTopbarCompanySettingsClick(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.goto(this.companySettingsProcess);\r\n }\r\n onTopbarCompanyCalendarClick(event) {\r\n // if (event) {\r\n // event.preventDefault();\r\n // }\r\n this.goto(this.companyCalendarProcess);\r\n }\r\n onMenuEFCheckupClick(event) {\r\n this.goto(this.eFCheckupProcess);\r\n }\r\n public goto(process: Process) {\r\n this.log.debug({ type: 'AppComponent:goto', process });\r\n this.rootStore.dispatch(fromShared.clearProcess());\r\n this.rootStore.dispatch(fromShared.upsertProcess({ process }));\r\n this.ss.go(\r\n process.RouteName?.toLowerCase().replace('/', '.') as string,\r\n {\r\n process: { ...process }\r\n }\r\n );\r\n }\r\n hideOverlayMenu() {\r\n this.rotateMenuButton = false;\r\n this.overlayMenuActive = false;\r\n this.staticMenuMobileActive = false;\r\n }\r\n isTablet() {\r\n const width = window.innerWidth;\r\n return width <= 1024 && width > 640;\r\n }\r\n isDesktop() {\r\n return window.innerWidth > 1024;\r\n }\r\n isMobile() {\r\n return window.innerWidth <= 640;\r\n }\r\n isOverlay() {\r\n return this.layoutMode === MenuOrientation.OVERLAY;\r\n }\r\n isHorizontal() {\r\n return this.layoutMode === MenuOrientation.HORIZONTAL;\r\n }\r\n isSlim() {\r\n return this.layoutMode === MenuOrientation.SLIM;\r\n }\r\n changeToStaticMenu() {\r\n this.layoutMode = MenuOrientation.STATIC;\r\n }\r\n changeToOverlayMenu() {\r\n this.layoutMode = MenuOrientation.OVERLAY;\r\n }\r\n changeToHorizontalMenu() {\r\n this.layoutMode = MenuOrientation.HORIZONTAL;\r\n }\r\n changeToSlimMenu() {\r\n this.layoutMode = MenuOrientation.SLIM;\r\n }\r\n onSignout() {\r\n this.processes = [];\r\n this.processTitles = [];\r\n sessionStorage.setItem('IsSignout', 'true');\r\n sessionStorage.setItem('initialLoadForMainMsg', 'false');\r\n this.ss.go('main');\r\n setTimeout(() => {\r\n window.location.reload();\r\n this.authService.logout();\r\n }, 0);\r\n\r\n // TODO: make this an effect?\r\n }\r\n onReportsSideNavHide() {\r\n this.reportsSideNav.clear();\r\n }\r\n onReportsSideNavShow() {\r\n this.OnShowReportsSubject.next();\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, takeWhile, tap } from 'rxjs/operators';\r\nimport { environment } from '../environments/environment';\r\nimport { AppComponent } from './app.component';\r\nimport * as fromSettings from './company-setting';\r\nimport { LoggingService } from './shared/services/logging';\r\nimport * as fromUser from './user-info';\r\nimport * as fromRoot from './store';\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './app.footer.component.html',\r\n styleUrls: ['./app.footer.component.scss']\r\n})\r\nexport class AppFooterComponent implements AfterViewInit, OnDestroy {\r\n public environment = environment;\r\n public ShowBetaMessage = true;\r\n public version$: Observable;\r\n private userInfo$: Observable;\r\n private active = true;\r\n adminFooterMessage$: Observable;\r\n adminFooterLink$: Observable;\r\n constructor(\r\n private store: Store,\r\n public app: AppComponent,\r\n private log: LoggingService\r\n ) {\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n }\r\n ngAfterViewInit(): void {\r\n this.version$ = this.store.pipe(select(fromRoot.Version.selectVersion));\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.active)\r\n // distinctUntilChanged()\r\n )\r\n .subscribe(userInfo => {\r\n this.ShowBetaMessage = userInfo.ShowBetaMessage === true;\r\n });\r\n this.adminFooterMessage$ = this.store.pipe(\r\n select(fromSettings.getSettingValue('AdminFooterMsg1')),\r\n filter(x => !!x),\r\n tap(setting =>\r\n this.log.verbose({\r\n type: 'AppFooterComponent:adminFooterMessage$',\r\n setting\r\n })\r\n )\r\n );\r\n this.adminFooterLink$ = this.store.pipe(\r\n select(fromSettings.getSettingValue('AdminFooterLink1')),\r\n filter(x => !!x),\r\n tap(setting =>\r\n this.log.verbose({\r\n type: 'AppFooterComponent:adminFooterLink$',\r\n setting\r\n })\r\n )\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger\r\n} from '@angular/animations';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport { Observable, Subscription, combineLatest } from 'rxjs';\r\nimport { distinctUntilKeyChanged, map, takeWhile } from 'rxjs/operators';\r\nimport * as fromAuth from '../app/auth/store/auth.reducer';\r\nimport * as fromUser from '../app/user-info/store/user.reducer';\r\nimport { environment } from '../environments/environment';\r\nimport { AppComponent } from './app.component';\r\nimport * as fromShared from './shared';\r\nimport { Process } from './shared';\r\nimport { Category } from './shared/category/category.model';\r\nimport { MenuItem } from './shared/efaact-primeng.module';\r\nimport { LoggingService } from './shared/services/logging/logging.service';\r\nimport * as fromSettings from '../app/company-setting';\r\nimport * as fromUserSetting from '../app/user-setting/store';\r\nimport { IUser } from './user-info';\r\n\r\n@Component({\r\n selector: 'app-menu',\r\n templateUrl: './app.menu.component.html',\r\n styleUrls: ['./app.menu.component.scss']\r\n})\r\nexport class AppMenuComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() reset: boolean;\r\n\r\n cpModel: any[];\r\n\r\n theme = 'efaact-blue';\r\n\r\n layout = 'blue';\r\n\r\n version = 'v3';\r\n\r\n public active = true;\r\n public userSub: Subscription;\r\n public userProcessCategories: Category[] = [];\r\n public cpMenuItems: IMenuItem[] = [];\r\n public mProcesses: IMenuItem[] = [];\r\n public initialProcess: Process;\r\n public initialCatID: any;\r\n authSub: Subscription;\r\n token: string;\r\n routerSub: Subscription;\r\n browserRefresh: number;\r\n\r\n constructor(\r\n public app: AppComponent,\r\n private store: Store,\r\n private authStore: Store,\r\n private ss: StateService,\r\n private log: LoggingService\r\n ) {\r\n this.log.verbose({ type: 'AppMenuComponent::' });\r\n }\r\n\r\n public goto(process: Process, cat) {\r\n this.log.debug({ type: 'AppComponent:goto', process });\r\n this.store.dispatch(fromShared.clearProcess());\r\n this.store.dispatch(fromShared.upsertProcess({ process }));\r\n this.ss.go(process.RouteName.toLowerCase().replace('/', '.'), {\r\n process: { ...process, catId: cat }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n ngAfterViewInit() {\r\n Promise.all([\r\n this.changeTheme('efaact-blue', 'light'),\r\n this.changeLayout('efaact-blue')\r\n ])\r\n .then(() => {\r\n this.log.verbose({ type: 'AppMenuComponent:styles loaded' });\r\n })\r\n .catch(e => {\r\n this.log.error({\r\n type: 'AppMenuComponent:styles load failure',\r\n e\r\n });\r\n });\r\n\r\n this.theme = 'efaact-blue';\r\n this.layout = 'efaact-blue';\r\n setTimeout(() => {\r\n const root = document.getElementById('efaaactcentral');\r\n if (root) root.style.opacity = '1';\r\n }, 100);\r\n }\r\n ngOnInit() {\r\n this.browserRefresh = this.navigationType();\r\n // this.changeLayout('joomla', true);\r\n this.authSub = this.authStore\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n select(fromAuth.getAuth)\r\n )\r\n .subscribe(auth => {\r\n if (auth.token) {\r\n this.token = auth.token;\r\n }\r\n });\r\n\r\n this.store\r\n .pipe(\r\n select(fromUser.getUserInfo),\r\n takeWhile(() => this.active),\r\n distinctUntilKeyChanged('DefaultRoleGroupID')\r\n )\r\n .subscribe(userInfo => {\r\n this.store.dispatch(\r\n fromUserSetting.getUserSettings({\r\n EmployeeListID: userInfo.EmployeeListID,\r\n EmpSettingID: 31\r\n })\r\n );\r\n\r\n if (userInfo.DefaultRoleGroupID == 1) {\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'AdminMsg1'\r\n })\r\n );\r\n\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'MgrMsg1'\r\n })\r\n );\r\n\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'UserMsg1'\r\n })\r\n );\r\n } else if (\r\n userInfo.DefaultRoleGroupID == 12024 ||\r\n userInfo.DefaultRoleGroupID == 12025\r\n ) {\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'MgrMsg1'\r\n })\r\n );\r\n\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'UserMsg1'\r\n })\r\n );\r\n } else {\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'UserMsg1'\r\n })\r\n );\r\n }\r\n });\r\n\r\n this.userSub = this.store\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n select(fromUser.getUser)\r\n )\r\n .subscribe(user => {\r\n this.cpMenuItems = [];\r\n this.mProcesses = [];\r\n if (user.userInfo.Initialcatid) {\r\n this.initialCatID = user.userInfo.Initialcatid;\r\n }\r\n if (user.UserProcessCategories) {\r\n this.userProcessCategories = user.UserProcessCategories;\r\n\r\n this.userProcessCategories.forEach(cat => {\r\n cat.UserProcesses.forEach(process => {\r\n if (process.RouteName != null) {\r\n if (\r\n process.RouteName ===\r\n user.userInfo.Initialroutename\r\n ) {\r\n this.initialProcess = process;\r\n }\r\n this.mProcesses.push({\r\n label: process.ProcessTitle,\r\n icon: '',\r\n command: () => this.goto(process, cat)\r\n });\r\n }\r\n });\r\n\r\n this.cpMenuItems.push({\r\n label: cat.CategoryName,\r\n icon: '',\r\n items: this.mProcesses\r\n });\r\n\r\n this.mProcesses = [];\r\n });\r\n // this.cpMenuItems.splice(0, 0, {\r\n // label: 'PROCESS LIST',\r\n\r\n // });\r\n this.cpModel = this.cpMenuItems;\r\n\r\n this.app.model = [\r\n {\r\n //label: 'Dashboard',\r\n icon: 'pi pi-th-large',\r\n routerLink: ['dashboard'],\r\n title: 'Dashboard',\r\n // tooltipOptions: {\r\n // tooltipLabel: 'Dashboard',\r\n // tooltipPosition: 'right',\r\n // tooltipEvent: 'hover'\r\n // },\r\n command: event => {\r\n this.log.verbose({\r\n type: 'Dashboard clicked',\r\n event\r\n });\r\n if (this.app.DetailSideNavVisible == true) {\r\n this.app.DetailSideNavVisible =\r\n !this.app.DetailSideNavVisible;\r\n }\r\n if (this.app.MessageSideNavVisible == true) {\r\n this.app.MessageSideNavVisible =\r\n !this.app.MessageSideNavVisible;\r\n }\r\n // this.app.onTopbarSubItemClick(event.originalEvent || event);\r\n }\r\n },\r\n {\r\n //label: 'Home',\r\n icon: 'fa fa-fw fa-home',\r\n routerLink: ['main'],\r\n title: 'Home',\r\n command: event => {\r\n if (this.app.DetailSideNavVisible == true) {\r\n this.app.DetailSideNavVisible =\r\n !this.app.DetailSideNavVisible;\r\n }\r\n if (this.app.MessageSideNavVisible == true) {\r\n this.app.MessageSideNavVisible =\r\n !this.app.MessageSideNavVisible;\r\n }\r\n this.log.verbose({\r\n type: 'Home clicked',\r\n event\r\n });\r\n // this.app.onTopbarSubItemClick(event.originalEvent || event);\r\n }\r\n },\r\n {\r\n //label: 'Calendar',\r\n icon: 'fa fa-fw fa-calendar-alt',\r\n //routerLink: ['main'],\r\n title: 'Company Calendar',\r\n command: event => {\r\n this.app.onTopbarCompanyCalendarClick(event);\r\n if (this.app.DetailSideNavVisible == true) {\r\n this.app.DetailSideNavVisible =\r\n !this.app.DetailSideNavVisible;\r\n }\r\n if (this.app.MessageSideNavVisible == true) {\r\n this.app.MessageSideNavVisible =\r\n !this.app.MessageSideNavVisible;\r\n }\r\n }\r\n },\r\n {\r\n //label: 'eF Checkup',\r\n icon: 'fa fa-fw fa-exclamation-triangle',\r\n //routerLink: ['main'],\r\n title: 'eFAACT Checkup',\r\n command: event => {\r\n this.app.onMenuEFCheckupClick(event);\r\n if (this.app.DetailSideNavVisible == true) {\r\n this.app.DetailSideNavVisible =\r\n !this.app.DetailSideNavVisible;\r\n }\r\n if (this.app.MessageSideNavVisible == true) {\r\n this.app.MessageSideNavVisible =\r\n !this.app.MessageSideNavVisible;\r\n }\r\n }\r\n },\r\n {\r\n //label: 'Messages',\r\n icon: 'fa fa-fw fa-envelope',\r\n //routerLink: ['main'],\r\n title: 'Messages',\r\n badge: this.app.messageCount,\r\n badgeStyleClass: this.app.messageBadgeStyle,\r\n command: event => {\r\n if (this.app.DetailSideNavVisible == true) {\r\n this.app.DetailSideNavVisible =\r\n !this.app.DetailSideNavVisible;\r\n }\r\n this.app.MessageSideNavVisible =\r\n !this.app.MessageSideNavVisible;\r\n }\r\n },\r\n {\r\n //label: 'Settings',\r\n title: 'Settings',\r\n icon: 'fa fa-fw fa-cog',\r\n //routerLink: ['main'],\r\n command: event => {\r\n if (this.app.MessageSideNavVisible == true) {\r\n this.app.MessageSideNavVisible =\r\n !this.app.MessageSideNavVisible;\r\n }\r\n this.app.DetailSideNavVisible =\r\n !this.app.DetailSideNavVisible;\r\n }\r\n }\r\n // {\r\n // label: 'Bootstrap Version', icon: 'fa fa-fw fa-tags',\r\n // items: [\r\n // {label: 'Bootstrap v3', icon: 'fa fa-fw fa-tag', command: () => this.changeVersion('v3')},\r\n // //{label: 'Bootstrap v4', icon: 'fa fa-fw fa-tag', command: () => this.changeVersion('v4')}\r\n // ]\r\n // },\r\n // { label: 'Dashboard', icon: 'fa fa-fw fa-home', routerLink: ['/'] },\r\n // {\r\n // label: 'Customization', icon: 'fa fa-fw fa-bars' , badge: '8',\r\n // items: [\r\n // {label: 'Static Menu', icon: 'fa fa-fw fa-bars', command: () => this.app.changeToStaticMenu()},\r\n // {label: 'Overlay Menu', icon: 'fa fa-fw fa-bars', command: () => this.app.changeToOverlayMenu()},\r\n // {label: 'Slim Menu', icon: 'fa fa-fw fa-bars', command: () => this.app.changeToSlimMenu()},\r\n // {label: 'Horizontal Menu', icon: 'fa fa-fw fa-bars', command: () => this.app.changeToHorizontalMenu()},\r\n // //{label: 'Inline Profile', icon: 'fa fa-sun-o fa-fw', command: () => this.app.profileMode = 'inline'},\r\n // {label: 'Top Profile', icon: 'fa fa-moon-o fa-fw', command: () => this.app.profileMode = 'top'},\r\n // {label: 'Light Menu', icon: 'fa fa-sun-o fa-fw', command: () => this.app.darkMenu = false},\r\n // {label: 'Dark Menu', icon: 'fa fa-moon-o fa-fw', command: () => this.app.darkMenu = true}\r\n // ]\r\n // },\r\n // {\r\n // label: 'Theme',\r\n // icon: 'fas fa-palette',\r\n // items: [\r\n // {\r\n // label: 'Light Mode',\r\n // icon: 'fas fa-sun',\r\n // command: () =>\r\n // this.changeTheme('efaact-blue', 'light')\r\n // },\r\n // {\r\n // label: 'Dark Mode',\r\n // icon: 'fas fa-moon',\r\n // command: () =>\r\n // this.changeTheme('efaact-blue', 'dark')\r\n // }\r\n // ]\r\n // }\r\n ];\r\n }\r\n });\r\n }\r\n\r\n // {\r\n // label: 'Special',\r\n // icon: 'fa fa-fw fa-fire',\r\n // items: [\r\n // //{label: 'Influenza', icon: 'fa fa-fw fa-paint-brush',\r\n // //command: (event) => {this.changeLayout('influenza', true); }},\r\n // //{label: 'Suzy', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeLayout('suzy', true); }},\r\n // {label: 'Calm', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeLayout('calm', true); }},\r\n // //{label: 'Crimson', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeLayout('crimson', true); }},\r\n // //{label: 'Night', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeLayout('night', true); }},\r\n // //{label: 'Skyling', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeLayout('skyline', true); }},\r\n // //{label: 'Sunkist', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeLayout('sunkist', true); }},\r\n // //{label: 'Little Leaf', icon: 'fa fa-fw fa-paint-brush',\r\n // //command: (event) => {this.changeLayout('littleleaf', true); }},\r\n // {label: 'Joomla', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeLayout('joomla', true); }},\r\n // //{label: 'Firewatch', icon: 'fa fa-fw fa-paint-brush',\r\n // //command: (event) => {this.changeLayout('firewatch', true); }}\r\n // ]\r\n // }\r\n\r\n // {\r\n // label: 'Process List',\r\n // icon: 'fas fa-list',\r\n // items: this.cpMenuItems,\r\n\r\n // },\r\n\r\n // {\r\n // label: 'Themes', icon: 'fa fa-fw fa-paint-brush', badge: '5',\r\n // items: [\r\n // ////{label: 'Blue', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('blue'); }},\r\n // ////{label: 'Cyan', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('cyan'); }},\r\n // //{label: 'Indigo', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('indigo'); }},\r\n // ////{label: 'Purple', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('purple'); }}, //maybe\r\n // ////{label: 'Teal', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('teal'); }}, //maybe\r\n // //{label: 'Orange', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('orange'); }},\r\n // //{label: 'Deep Purple', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('deeppurple'); }},\r\n // ////{label: 'Light Blue', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('lightblue'); }},\r\n // //{label: 'Green', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('green'); }},\r\n // //{label: 'Light Green', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('lightgreen'); }},\r\n // //{label: 'Lime', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('lime'); }},\r\n // //{label: 'Amber', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('amber'); }},\r\n // ////{label: 'Brown', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('brown'); }}, //maybe\r\n // ////{label: 'Dark Grey', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('darkgrey'); }}, //myabe\r\n // //{label: 'Pink', icon: 'fa fa-fw fa-paint-brush', command: (event) => {this.changeTheme('pink'); }},\r\n // ]\r\n // },\r\n // {\r\n // label: 'Components', icon: 'fa fa-fw fa-sitemap',\r\n // items: [\r\n // {label: 'Sample Page', icon: 'fa fa-fw fa-columns', routerLink: ['/sample']},\r\n // {label: 'Forms', icon: 'fa fa-fw fa-code', routerLink: ['/forms']},\r\n // {label: 'Data', icon: 'fa fa-fw fa-table', routerLink: ['/data']},\r\n // {label: 'Panels', icon: 'fa fa-fw fa-list-alt', routerLink: ['/panels']},\r\n // {label: 'Overlays', icon: 'fa fa-fw fa-square', routerLink: ['/overlays']},\r\n // {label: 'Menus', icon: 'fa fa-fw fa-minus-square-o', routerLink: ['/menus']},\r\n // {label: 'Messages', icon: 'fa fa-fw fa-circle-o-notch', routerLink: ['/messages']},\r\n // {label: 'Charts', icon: 'fa fa-fw fa-area-chart', routerLink: ['/charts']},\r\n // {label: 'File', icon: 'fa fa-fw fa-arrow-circle-o-up', routerLink: ['/file']},\r\n // {label: 'Misc', icon: 'fa fa-fw fa-user-secret', routerLink: ['/misc']}\r\n // ]\r\n // },\r\n // {\r\n // label: 'Template Pages', icon: 'fa fa-fw fa-life-saver',\r\n // items: [\r\n // {label: 'Empty Page', icon: 'fa fa-fw fa-square-o', routerLink: ['/empty']},\r\n // {label: 'Landing Page', icon: 'fa fa-fw fa-certificate', url: 'assets/pages/landing.html', target: '_blank'},\r\n // {label: 'Login Page', icon: 'fa fa-fw fa-sign-in', url: 'assets/pages/login.html', target: '_blank'},\r\n // {label: 'Error Page', icon: 'fa fa-fw fa-exclamation-circle', url: 'assets/pages/error.html', target: '_blank'},\r\n // {label: 'Not Found Page', icon: 'fa fa-fw fa-times', url: 'assets/pages/notfound.html', target: '_blank'},\r\n // {label: 'Access Denied Page', icon: 'fa fa-fw fa-exclamation-triangle',\r\n // url: 'assets/pages/access.html', target: '_blank'}\r\n // ]\r\n // },\r\n // {\r\n // label: 'Menu Hierarchy', icon: 'fa fa-fw fa-gg',\r\n // items: [\r\n // {\r\n // label: 'Submenu 1', icon: 'fa fa-fw fa-sign-in',\r\n // items: [\r\n // {\r\n // label: 'Submenu 1.1', icon: 'fa fa-fw fa-sign-in',\r\n // items: [\r\n // {label: 'Submenu 1.1.1', icon: 'fa fa-fw fa-sign-in'},\r\n // {label: 'Submenu 1.1.2', icon: 'fa fa-fw fa-sign-in'},\r\n // {label: 'Submenu 1.1.3', icon: 'fa fa-fw fa-sign-in'},\r\n // ]\r\n // },\r\n // {\r\n // label: 'Submenu 1.2', icon: 'fa fa-fw fa-sign-in',\r\n // items: [\r\n // {label: 'Submenu 1.2.1', icon: 'fa fa-fw fa-sign-in'},\r\n // {label: 'Submenu 1.2.2', icon: 'fa fa-fw fa-sign-in'}\r\n // ]\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // label: 'Submenu 2', icon: 'fa fa-fw fa-sign-in',\r\n // items: [\r\n // {\r\n // label: 'Submenu 2.1', icon: 'fa fa-fw fa-sign-in',\r\n // items: [\r\n // {label: 'Submenu 2.1.1', icon: 'fa fa-fw fa-sign-in'},\r\n // {label: 'Submenu 2.1.2', icon: 'fa fa-fw fa-sign-in'},\r\n // {label: 'Submenu 2.1.3', icon: 'fa fa-fw fa-sign-in'},\r\n // ]\r\n // },\r\n // {\r\n // label: 'Submenu 2.2', icon: 'fa fa-fw fa-sign-in',\r\n // items: [\r\n // {label: 'Submenu 2.2.1', icon: 'fa fa-fw fa-sign-in'},\r\n // {label: 'Submenu 2.2.2', icon: 'fa fa-fw fa-sign-in'}\r\n // ]\r\n // },\r\n // ]\r\n // }\r\n // ]\r\n // },\r\n // {label: 'Utils', icon: 'fa fa-fw fa-wrench', routerLink: ['/utils']},\r\n // {label: 'Documentation', icon: 'fa fa-fw fa-book', routerLink: ['/documentation']}\r\n\r\n navigationType() {\r\n let result;\r\n let type;\r\n\r\n if (window.performance.navigation) {\r\n result = window.performance.navigation;\r\n if (result === 255) {\r\n result = 4;\r\n } // 4 is my invention!\r\n }\r\n\r\n if (window.performance.getEntriesByType('navigation')) {\r\n type =\r\n window.performance.getEntriesByType('navigation')[0].entryType;\r\n\r\n if (type === 'navigate') {\r\n result = 0;\r\n }\r\n if (type === 'reload') {\r\n result = 1;\r\n }\r\n if (type === 'back_forward') {\r\n result = 2;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n changeTheme(theme: string, mode = 'dark'): Promise {\r\n const themeLink: HTMLLinkElement = document.getElementById(\r\n 'theme-css'\r\n ) as HTMLLinkElement;\r\n this.log.verbose({\r\n type: 'AppMenuComponent:changeTheme'\r\n });\r\n return new Promise((r, j) => {\r\n try {\r\n // const t = setTimeout(() => {\r\n // this.log.warn({\r\n // type: 'AppMenuComponent:changeTheme',\r\n // value: 'theme onload time out'\r\n // });\r\n // j(new Error('theme onload time out'));\r\n // }, 1000);\r\n // const onLoad = e => {\r\n // this.log.verbose({\r\n // type: 'AppMenuComponent:changeTheme:onload'\r\n // });\r\n // r();\r\n // clearTimeout(t);\r\n // };\r\n\r\n // this.log.verbose({\r\n // type: 'AppMenuComponent:changeTheme:Promise'\r\n // });\r\n\r\n // themeLink.onload = themeLink.oncancel = themeLink.onerror = onLoad;\r\n // themeLink.as = 'stylesheet';\r\n // themeLink.onload = onLoad;\r\n // themeLink.onerror = onLoad;\r\n\r\n themeLink.rel = 'stylesheet';\r\n themeLink.href = `assets/theme/${theme}/theme-${mode}.css?v=${environment.version}`;\r\n\r\n this.theme = theme;\r\n r();\r\n\r\n // onload not reliable, should be save after 1 sec\r\n } catch (e) {\r\n this.log.error({\r\n type: 'AppMenuComponent:changeTheme',\r\n e\r\n });\r\n j(e);\r\n }\r\n });\r\n }\r\n\r\n changeLayout(layout: string, special?: boolean): Promise {\r\n const layoutLink: HTMLLinkElement = document.getElementById(\r\n 'layout-css'\r\n ) as HTMLLinkElement;\r\n this.log.verbose({\r\n type: 'AppMenuComponent:changeLayout'\r\n });\r\n\r\n return new Promise((r, j) => {\r\n try {\r\n this.log.verbose({\r\n type: 'AppMenuComponent:changeLayout:promise'\r\n });\r\n // const t = setTimeout(() => {\r\n // this.log.warn({\r\n // type: 'AppMenuComponent:changeLayout',\r\n // value: 'layout onload time out'\r\n // });\r\n // j(new Error('layout onload time out'));\r\n // }, 1000);\r\n // const onLoad = e => {\r\n // this.log.verbose({\r\n // type: 'AppMenuComponent:changeLayout:onload',\r\n // e\r\n // });\r\n // r();\r\n // clearTimeout(t);\r\n // };\r\n // layoutLink.onload = layoutLink.oncancel = layoutLink.onerror = onLoad;\r\n // layoutLink.onload = onLoad;\r\n // layoutLink.onerror = onLoad;\r\n\r\n layoutLink.rel = 'stylesheet';\r\n layoutLink.href = `assets/layout/css/layout-${layout}.css?v=${environment.version}`;\r\n\r\n this.layout = layout;\r\n\r\n if (special) {\r\n this.app.darkMenu = true;\r\n }\r\n r();\r\n // onload not reliable, should be save after 1 sec\r\n } catch (e) {\r\n this.log.error({\r\n type: 'AppMenuComponent:changeLayout',\r\n e\r\n });\r\n j(e);\r\n }\r\n });\r\n }\r\n // changeVersion(version: string) {\r\n // const themeLink: HTMLLinkElement = document.getElementById(\r\n // 'theme-css'\r\n // ) as HTMLLinkElement;\r\n // const layoutLink: HTMLLinkElement = document.getElementById(\r\n // 'layout-css'\r\n // ) as HTMLLinkElement;\r\n\r\n // this.version = 'v3';\r\n // themeLink.href = 'assets/theme/theme-' + this.theme + '.css';\r\n // layoutLink.href = 'assets/layout/css/layout-' + this.layout + '.css';\r\n // }\r\n}\r\n\r\n@Component({\r\n /* tslint:disable:component-selector */\r\n selector: '[app-submenu]',\r\n /* tslint:enable:component-selector */\r\n\r\n // \r\n // {{child.label}}\r\n // \r\n // {{child.badge}}\r\n // \r\n template: `\r\n \r\n \r\n \r\n {{ child.label }}\r\n \r\n {{\r\n child.badge\r\n }}\r\n \r\n\r\n
\r\n
\r\n
\r\n {{ child.label }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n `,\r\n animations: [\r\n trigger('children', [\r\n state(\r\n 'hiddenAnimated',\r\n style({\r\n height: '0px'\r\n })\r\n ),\r\n state(\r\n 'visibleAnimated',\r\n style({\r\n height: '*'\r\n })\r\n ),\r\n state(\r\n 'visible',\r\n style({\r\n display: 'block'\r\n })\r\n ),\r\n state(\r\n 'hidden',\r\n style({\r\n display: 'none'\r\n })\r\n ),\r\n transition(\r\n 'visibleAnimated => hiddenAnimated',\r\n animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')\r\n ),\r\n transition(\r\n 'hiddenAnimated => visibleAnimated',\r\n animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')\r\n )\r\n ])\r\n ],\r\n styleUrls: ['./app.menu.component.scss']\r\n})\r\nexport class AppSubMenuComponent {\r\n @Input() item: MenuItem;\r\n\r\n @Input() root: boolean;\r\n\r\n @Input() visible: boolean;\r\n\r\n _reset: boolean;\r\n\r\n _parentActive: boolean;\r\n\r\n activeIndex: number | null;\r\n\r\n constructor(public app: AppComponent) {}\r\n\r\n itemClick(event: Event, item: MenuItem, index: number) {\r\n if (this.root) {\r\n this.app.menuHoverActive = !this.app.menuHoverActive;\r\n }\r\n\r\n // avoid processing disabled items\r\n if (item.disabled) {\r\n event.preventDefault();\r\n return true;\r\n }\r\n\r\n // activate current item and deactivate active sibling if any\r\n this.activeIndex = this.activeIndex === index ? null : index;\r\n\r\n // execute command\r\n if (item.command) {\r\n item.command({ originalEvent: event, item });\r\n }\r\n\r\n // prevent hash change\r\n if (item.items || (!item.url && !item.routerLink)) {\r\n setTimeout(() => {\r\n this.app.layoutMenuScrollerViewChild.moveBar();\r\n }, 450);\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // hide menu\r\n if (!item.items) {\r\n if (this.app.isHorizontal() || this.app.isSlim()) {\r\n this.app.resetMenu = true;\r\n } else {\r\n this.app.resetMenu = false;\r\n }\r\n\r\n this.app.overlayMenuActive = false;\r\n this.app.staticMenuMobileActive = false;\r\n this.app.menuHoverActive = !this.app.menuHoverActive;\r\n }\r\n if (item.routerLink) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.app.goto({\r\n RouteName: item.routerLink[0]\r\n } as Process);\r\n }\r\n }\r\n\r\n onMouseEnter(index: number) {\r\n if (\r\n this.root &&\r\n this.app.menuHoverActive &&\r\n (this.app.isHorizontal() || this.app.isSlim()) &&\r\n !this.app.isMobile() &&\r\n !this.app.isTablet()\r\n ) {\r\n this.activeIndex = index;\r\n }\r\n }\r\n\r\n isActive(index: number): boolean {\r\n return this.activeIndex === index;\r\n }\r\n\r\n @Input() get reset(): boolean {\r\n return this._reset;\r\n }\r\n\r\n set reset(val: boolean) {\r\n this._reset = val;\r\n\r\n if (this._reset && (this.app.isHorizontal() || this.app.isSlim())) {\r\n this.activeIndex = null;\r\n }\r\n }\r\n\r\n @Input() get parentActive(): boolean {\r\n return this._parentActive;\r\n }\r\n\r\n set parentActive(val: boolean) {\r\n this._parentActive = val;\r\n\r\n if (!this._parentActive) {\r\n this.activeIndex = null;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n /* tslint:disable:component-selector */\r\n selector: 'app-detail-menu',\r\n /* tslint:enable:component-selector */\r\n template: `\r\n \r\n
    \r\n

    Settings

    \r\n
  • \r\n {{\r\n process.ProcessLabel\r\n }}\r\n \r\n
  • \r\n
\r\n \r\n `,\r\n animations: [\r\n trigger('children', [\r\n state(\r\n 'hiddenAnimated',\r\n style({\r\n height: '0px'\r\n })\r\n ),\r\n state(\r\n 'visibleAnimated',\r\n style({\r\n height: '*'\r\n })\r\n ),\r\n state(\r\n 'visible',\r\n style({\r\n display: 'block'\r\n })\r\n ),\r\n state(\r\n 'hidden',\r\n style({\r\n display: 'none'\r\n })\r\n ),\r\n transition(\r\n 'visibleAnimated => hiddenAnimated',\r\n animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')\r\n ),\r\n transition(\r\n 'hiddenAnimated => visibleAnimated',\r\n animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')\r\n )\r\n ])\r\n ],\r\n styleUrls: ['./app.menu.component.scss']\r\n})\r\nexport class AppDetailMenuComponent {\r\n public mainProcess$: Observable;\r\n\r\n public DetailStyle = {\r\n 'margin-top': '4rem',\r\n 'margin-left': '4.9rem',\r\n 'background-color': '#f2f2f2'\r\n };\r\n\r\n constructor(\r\n public app: AppComponent,\r\n private store: Store\r\n ) {\r\n this.mainProcess$ = this.store.pipe(\r\n select(fromUser.getUserProcessesMain),\r\n map(processes => processes.filter(p => p.displayinmenu))\r\n );\r\n }\r\n}\r\n\r\n@Component({\r\n /* tslint:disable:component-selector */\r\n selector: 'app-message-menu',\r\n /* tslint:enable:component-selector */\r\n template: `\r\n \r\n
    \r\n
    \r\n

    Messages

    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
  • \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
  • \r\n
\r\n \r\n `,\r\n animations: [\r\n trigger('children', [\r\n state(\r\n 'hiddenAnimated',\r\n style({\r\n height: '0px'\r\n })\r\n ),\r\n state(\r\n 'visibleAnimated',\r\n style({\r\n height: '*'\r\n })\r\n ),\r\n state(\r\n 'visible',\r\n style({\r\n display: 'block'\r\n })\r\n ),\r\n state(\r\n 'hidden',\r\n style({\r\n display: 'none'\r\n })\r\n ),\r\n transition(\r\n 'visibleAnimated => hiddenAnimated',\r\n animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')\r\n ),\r\n transition(\r\n 'hiddenAnimated => visibleAnimated',\r\n animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')\r\n )\r\n ])\r\n ],\r\n styleUrls: ['./app.menu.component.scss']\r\n})\r\nexport class AppMessageMenuComponent {\r\n public MessageStyle = {\r\n 'margin-top': '4rem',\r\n 'margin-left': '4.9rem',\r\n 'background-color': '#f2f2f2',\r\n width: '30%'\r\n };\r\n public companySettings$: Observable;\r\n public userSettings$: Observable>;\r\n public userMsg;\r\n public mgrMsg;\r\n public adminMsg;\r\n messages: any[] = [];\r\n active = true;\r\n userMsgPushed = false;\r\n mgrMsgPushed = false;\r\n adminMsgPushed = false;\r\n showMsg: boolean;\r\n user: IUser;\r\n constructor(\r\n public app: AppComponent,\r\n private store: Store\r\n ) {\r\n this.userSettings$ = this.store.pipe(select(fromUserSetting.selectAll));\r\n this.companySettings$ = this.store.pipe(select(fromSettings.selectAll));\r\n\r\n combineLatest([this.companySettings$, this.userSettings$])\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(([settings, userSettings]) => {\r\n if (userSettings.length > 0) {\r\n if (userSettings[0].EmpSettingValue != null) {\r\n this.showMsg =\r\n userSettings[0].EmpSettingValue == '1'\r\n ? true\r\n : false;\r\n }\r\n }\r\n\r\n this.userMsg =\r\n settings.find(x => x.SettingType == 'UserMsg1') != null\r\n ? settings.find(x => x.SettingType == 'UserMsg1')\r\n .SettingValue\r\n : null;\r\n this.mgrMsg =\r\n settings.find(x => x.SettingType == 'MgrMsg1') != null\r\n ? settings.find(x => x.SettingType == 'MgrMsg1')\r\n .SettingValue\r\n : null;\r\n this.adminMsg =\r\n settings.find(x => x.SettingType == 'AdminMsg1') != null\r\n ? settings.find(x => x.SettingType == 'AdminMsg1')\r\n .SettingValue\r\n : null;\r\n\r\n if (this.userMsg != null && this.userMsg != \"\") {\r\n if (this.userMsgPushed == false) {\r\n this.messages.push(this.userMsg);\r\n this.userMsgPushed = true;\r\n }\r\n }\r\n if (this.mgrMsg != null && this.mgrMsg != \"\") {\r\n if (this.mgrMsgPushed == false) {\r\n this.messages.push(this.mgrMsg);\r\n this.mgrMsgPushed = true;\r\n }\r\n }\r\n if (this.adminMsg != null && this.adminMsg != \"\") {\r\n if (this.adminMsgPushed == false) {\r\n this.messages.push(this.adminMsg);\r\n this.adminMsgPushed = true;\r\n }\r\n }\r\n\r\n if (this.app.model && this.app.model.length > 0) {\r\n const messageItem = this.app.model.find(\r\n x => x.title == 'Messages'\r\n );\r\n const messageIndex = this.app.model.findIndex(\r\n x => x.title == 'Messages'\r\n );\r\n\r\n if (this.showMsg != undefined) {\r\n if (this.showMsg == false) {\r\n this.app.messageCount = '';\r\n this.app.messageBadgeStyle = 'ef-menuitem-badge-off';\r\n messageItem.badgeStyleClass =\r\n this.app.messageBadgeStyle;\r\n messageItem.badge = this.app.messageCount;\r\n } else {\r\n this.app.messageBadgeStyle = 'ef-menuitem-badge-on';\r\n messageItem.badgeStyleClass =\r\n this.app.messageBadgeStyle;\r\n if (this.messages.length == 3) {\r\n this.app.messageCount = '3';\r\n messageItem.badge = this.app.messageCount;\r\n } else if (this.messages.length == 2) {\r\n this.app.messageCount = '2';\r\n messageItem.badge = this.app.messageCount;\r\n } else if (this.messages.length == 1) {\r\n this.app.messageCount = '1';\r\n messageItem.badge = this.app.messageCount;\r\n } else {\r\n this.app.messageCount = '';\r\n this.app.messageBadgeStyle =\r\n 'ef-menuitem-badge-off';\r\n messageItem.badgeStyleClass =\r\n this.app.messageBadgeStyle;\r\n messageItem.badge = this.app.messageCount;\r\n }\r\n }\r\n this.app.model[messageIndex] = messageItem;\r\n }\r\n\r\n } else {\r\n if (this.showMsg == false) {\r\n this.app.messageCount = '';\r\n } else {\r\n if (this.messages.length == 3) {\r\n this.app.messageCount = '3';\r\n } else if (this.messages.length == 2) {\r\n this.app.messageCount = '2';\r\n } else if (this.messages.length == 1) {\r\n this.app.messageCount = '1';\r\n } else {\r\n this.app.messageCount = '';\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n onMarkAsRead(showmsg, listid) {\r\n this.store.dispatch(\r\n fromUserSetting.putUserSettings({\r\n settings: [\r\n {\r\n EmployeeListID: listid,\r\n EmpSettingID: 31.0,\r\n EmpSettingType: 'ShowUserMsg',\r\n EmpSettingTypeLabel: 'Show User Message',\r\n EmpSettingValue: showmsg,\r\n CtrlType: 'CheckBox',\r\n CatID: 1,\r\n CatDescription: 'User Setting'\r\n }\r\n ]\r\n })\r\n );\r\n const messageItem = this.app.model.find(x => x.title == 'Messages');\r\n if (showmsg == false) {\r\n this.app.messageBadgeStyle = 'ef-menuitem-badge-off';\r\n messageItem.badgeStyleClass = this.app.messageBadgeStyle;\r\n } else {\r\n this.app.messageBadgeStyle = 'ef-menuitem-badge-on';\r\n messageItem.badgeStyleClass = this.app.messageBadgeStyle;\r\n }\r\n const messageIndex = this.app.model.findIndex(x => x.title == 'Messages');\r\n this.app.model[messageIndex] = messageItem;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n}\r\nexport interface IMenuItem {\r\n label: string;\r\n icon?: string;\r\n items?: any[];\r\n command?: any;\r\n expanded?: boolean;\r\n}\r\n","import {\r\n APP_BASE_HREF,\r\n DatePipe,\r\n HashLocationStrategy,\r\n LocationStrategy,\r\n PathLocationStrategy\r\n} from '@angular/common';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { ErrorHandler, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { environment } from '../environments/environment';\r\nimport { AccountModule } from './account/account.module';\r\nimport { AppComponent } from './app.component';\r\nimport { AppFooterComponent } from './app.footer.component';\r\nimport {\r\n AppDetailMenuComponent,\r\n AppMenuComponent,\r\n AppSubMenuComponent,\r\n AppMessageMenuComponent\r\n} from './app.menu.component';\r\nimport { AppProfileComponent } from './app.profile.component';\r\nimport { AppTopBarComponent } from './app.topbar.component';\r\nimport { AttachmentModule } from './attachment-view-feature/attachment.module';\r\nimport { SignInComponent } from './auth';\r\nimport { AuthInterceptor } from './auth/auth-interceptor';\r\nimport { AuthModule } from './auth/auth.module';\r\nimport { BurdenModule } from './burden/burden.module';\r\nimport { CheckupModule } from './checkup/checkup.module';\r\nimport { ClassModule } from './class/class.module';\r\nimport { ClassFeatureComponent } from './class/feature/class-feature.component';\r\nimport { ClassPresenterComponent } from './class/presenter/class-presenter.component';\r\nimport { CompanyCalendarFeatureComponent } from './company-calendar/company-calendar-feature/company-calendar-feature.component';\r\nimport { CompanyCalendarPresenterComponent } from './company-calendar/company-calendar-presenter/company-calendar-presenter.component';\r\nimport { CompanyCalendarModule } from './company-calendar/company-calendar.module';\r\nimport { CompanySettingModule } from './company-setting/company-setting.module';\r\nimport { ContractCumulativeModule } from './contract-cumulative/contract-cumulative.module';\r\nimport { ContractCumulativeFeatureComponent } from './contract-cumulative/feature/contract-cumulative-feature.component';\r\nimport { ContractCumulativePresenterComponent } from './contract-cumulative/presenter/contract-cumulative-presenter.component';\r\nimport { ContractManagementModule } from './contract-management/contract-management.module';\r\nimport { CustomerJobModule } from './contract-structure/contract-structure.module';\r\nimport { DashboardFeatureComponent } from './dashboard/dashboard-feature/dashboard-feature.component';\r\nimport { DashboardPresenterComponent } from './dashboard/dashboard-presenter/dashboard-presenter.component';\r\nimport { DashboardModule } from './dashboard/dashboard.module';\r\nimport * as fromDataServices from './data-services';\r\nimport { DataServicesModule } from './data-services/data-services.module';\r\nimport { DeferBillingFeatureComponent } from './defer-billing/defer-billing-feature/defer-billing-feature.component';\r\nimport { DeferBillingPresenterComponent } from './defer-billing/defer-billing-presenter/defer-billing-presenter.component';\r\nimport { DeferBillingModule } from './defer-billing/defer-billing.module';\r\nimport { EfaactConfigurationModule } from './efaact-configuration/efaact-configuration.module';\r\nimport { EfaactRoutingModule } from './efaact-routing/efaact-routing.module';\r\nimport { EmailAuditModule } from './email-audit/email-audit.module';\r\nimport { ExpenseItemModule } from './expense-item/expense-item.module';\r\nimport { ExpenseItemFeatureComponent } from './expense-item/feature/expense-item-feature.component';\r\nimport { ExpenseItemPresenterComponent } from './expense-item/presenter/expense-item-presenter.component';\r\nimport { ExpensesModule } from './expenses';\r\nimport { FeeLevelFeatureComponent } from './fee-level/feature/fee-level-feature.component';\r\nimport { FeeLevelModule } from './fee-level/fee-level.module';\r\nimport { FeeLevelPresenterComponent } from './fee-level/presenter/fee-level-presenter.component';\r\nimport { FixedPriceModule } from './fixed-price/fixed-price.module';\r\nimport { GroupsModule } from './groups/groups.module';\r\nimport { HelpDeskModule } from './help-desk/help-desk.module';\r\nimport { IndirectJobsModule } from './indirect-jobs/indirect-jobs.module';\r\nimport { IndirectRateModule } from './indirect-rate/indirect-rate.module';\r\nimport { InvoiceModule } from './invoice/invoice.module';\r\nimport { JobAuditModule } from './job-audit/job-audit.module';\r\nimport { LeaveAdjustmentModule } from './leave-adjustment/leave-adjustment.module';\r\nimport { LeaveRequestModule } from './leave-request/leave-request.module';\r\nimport { LogoModule } from './logo/logo.module';\r\nimport { LookupsModule } from './lookups/lookups.module';\r\nimport { MainMenuComponent } from './main-menu/main-menu.component';\r\nimport { MainComponent } from './main/main.component';\r\nimport { ManageUsersModule } from './manage-users/manage-users.module';\r\nimport { ManualAdjustmentFeatureComponent } from './manual-adjustment/manual-adjustment-feature/manual-adjustment-feature.component';\r\nimport { ManualAdjustmentPresenterComponent } from './manual-adjustment/manual-adjustment-presenter/manual-adjustment-presenter.component';\r\nimport { ManualAdjustmentModule } from './manual-adjustment/manual-adjustment.module';\r\nimport { MemberComponent } from './member/member.component';\r\nimport { OversignTimeModule } from './oversign-time/oversign-time.module';\r\nimport { PayrateOverrideModule } from './payrate-override/payrate-override.module';\r\nimport { PayrollModule } from './payroll/payroll.module';\r\nimport { PremiumPayModule } from './premium-pay/premium-pay.module';\r\nimport { ProjectBudgetModule } from './project-budget/project-budget.module';\r\nimport { AssignmentPresenterComponent } from './pto-policy/assignment-presenter/assignment-presenter.component';\r\nimport { PtoPolicyFeatureComponent } from './pto-policy/pto-policy-feature/pto-policy-feature.component';\r\nimport { PtoPolicyPresenterComponent } from './pto-policy/pto-policy-presenter/pto-policy-presenter.component';\r\nimport { PtoPolicyModule } from './pto-policy/pto-policy.module';\r\nimport { SetupPresenterComponent } from './pto-policy/setup-presenter/setup-presenter.component';\r\nimport { QuickAccessComponent } from './quick-access/quick-access.component';\r\nimport { QuickbooksModule } from './quickbooks/quickbooks.module';\r\nimport { RateCeilingFeatureComponent } from './rate-ceiling/rate-ceiling-feature/rate-ceiling-feature.component';\r\nimport { RateCeilingPresenterComponent } from './rate-ceiling/rate-ceiling-presenter/rate-ceiling-presenter.component';\r\nimport { RateCeilingModule } from './rate-ceiling/rate-ceiling.module';\r\nimport { RecalculateTransactionsModule } from './recalculate-transactions/recalculate-transactions.module';\r\nimport { ReconciliationModule } from './reconciliation/reconciliation.module';\r\nimport { ReminderModule } from './reminder/reminder.module';\r\nimport { ReportListComponent } from './report-list/report-list.component';\r\nimport { ReportComponent } from './report/report.component';\r\nimport { ReportingModule } from './reporting/reporting.module';\r\nimport { RowsPerPageModule } from './rows-per-page/rows-per-page.module';\r\nimport { ServiceItemModule } from './service-item/service-item.module';\r\nimport { DialogService } from './shared/efaact-primeng.module';\r\nimport { PUTInterceptor } from './shared/put-interceptor';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { EfaactEffects } from './store/effects';\r\nimport * as fromRoot from './store/reducers';\r\nimport { metaReducers } from './store/reducers';\r\nimport { ThemeToggleComponent } from './theme-toggle/theme-toggle.component';\r\nimport { TimeCardModule } from './timecard/time-card.module';\r\nimport { EFToasterModule } from './toaster/toaster.module';\r\nimport { UserAuthorizationsModule } from './user-authorizations/user-authorizations.module';\r\nimport { UserInfoComponent } from './user-info/user-info.component';\r\nimport { UserInfoModule } from './user-info/user-info.module';\r\nimport { UserRoleComponent } from './user-role/user-role.component';\r\nimport { UserRoleModule } from './user-role/user-role.module';\r\nimport { UserSelectorModule } from './user-selector/user-selector.module';\r\nimport { UserSettingModule } from './user-setting/user-setting.module';\r\nimport { UserEntryDatesModule } from './userentrydates/userentrydates.module';\r\nimport { RatePlanningModule } from './rate-planning/rate-planning.module';\r\nimport { RatePlanningPresenterComponent } from './rate-planning/rate-planning-presenter/rate-planning-presenter.component';\r\nimport { RatePlanningFeatureComponent } from './rate-planning/rate-planning-feature/rate-planning-feature.component';\r\nimport { RegistrationModule } from './registration';\r\nimport { ImportModule } from './import/import.module';\r\nimport { VendorModule } from './vendor/vendor.module';\r\nimport { MergePresenterComponent } from './merge/merge-presenter/merge-presenter.component';\r\nimport { MergeFeatureComponent } from './merge/merge-feature/merge-feature.component';\r\nimport { MergeModule } from './merge/merge.module';\r\nimport { TaskTimerPresenterComponent } from './task-timer/task-timer-presenter/task-timer-presenter.component';\r\nimport { TaskTimerModule } from './task-timer/task-timer.module';\r\nimport { TaskTimerFeatureComponent } from './task-timer/task-timer-feature/task-timer-feature.component';\r\nimport { CustomerAdminPresenterComponent } from './customer-admin/customer-admin-presenter/customer-admin-presenter.component';\r\nimport { CustomerAdminFeatureComponent } from './customer-admin/customer-admin-feature/customer-admin-feature.component';\r\nimport { CustomerAdminModule } from './customer-admin/customer-admin.module';\r\nimport { InternalAdminPresenterComponent } from './internal-admin/internal-admin-presenter/internal-admin-presenter.component';\r\nimport { InternalAdminFeatureComponent } from './internal-admin/internal-admin-feature/internal-admin-feature.component';\r\nimport { InternalAdminModule } from './internal-admin/internal-admin.module';\r\nimport { AboutModule } from './about/about.module';\r\nimport { EmployeeValidationModule } from './employee-validation/employee-validation.module';\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n MainMenuComponent,\r\n UserInfoComponent,\r\n ReportComponent,\r\n ReportListComponent,\r\n MemberComponent,\r\n SignInComponent,\r\n MainComponent,\r\n QuickAccessComponent,\r\n UserRoleComponent,\r\n ThemeToggleComponent,\r\n AppMenuComponent,\r\n AppSubMenuComponent,\r\n AppDetailMenuComponent,\r\n AppMessageMenuComponent,\r\n AppTopBarComponent,\r\n AppFooterComponent,\r\n AppProfileComponent,\r\n ContractCumulativePresenterComponent,\r\n ContractCumulativeFeatureComponent,\r\n ExpenseItemPresenterComponent,\r\n ExpenseItemFeatureComponent,\r\n ClassPresenterComponent,\r\n ClassFeatureComponent,\r\n FeeLevelPresenterComponent,\r\n FeeLevelFeatureComponent,\r\n CompanyCalendarFeatureComponent,\r\n CompanyCalendarPresenterComponent,\r\n ManualAdjustmentPresenterComponent,\r\n ManualAdjustmentFeatureComponent,\r\n DeferBillingPresenterComponent,\r\n DeferBillingFeatureComponent,\r\n PtoPolicyFeatureComponent,\r\n PtoPolicyPresenterComponent,\r\n SetupPresenterComponent,\r\n AssignmentPresenterComponent,\r\n RateCeilingPresenterComponent,\r\n RateCeilingFeatureComponent,\r\n DashboardPresenterComponent,\r\n DashboardFeatureComponent,\r\n RatePlanningPresenterComponent,\r\n RatePlanningFeatureComponent,\r\n MergePresenterComponent,\r\n MergeFeatureComponent,\r\n TaskTimerPresenterComponent,\r\n TaskTimerFeatureComponent,\r\n CustomerAdminPresenterComponent,\r\n CustomerAdminFeatureComponent,\r\n InternalAdminPresenterComponent,\r\n InternalAdminFeatureComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BrowserAnimationsModule,\r\n UIRouterModule,\r\n StoreModule.forRoot(fromRoot.reducers, { metaReducers }),\r\n EffectsModule.forRoot([EfaactEffects]),\r\n StoreDevtoolsModule.instrument({\r\n name: 'eFAACT Central',\r\n maxAge: 100,\r\n logOnly: environment.production\r\n }),\r\n DataServicesModule,\r\n EfaactRoutingModule,\r\n EfaactConfigurationModule,\r\n SharedModule,\r\n MatBadgeModule,\r\n MatTooltipModule,\r\n MatBadgeModule,\r\n MatTooltipModule,\r\n // Efaact modules below here\r\n RowsPerPageModule,\r\n LookupsModule,\r\n AuthModule,\r\n UserSelectorModule,\r\n UserAuthorizationsModule,\r\n UserInfoModule,\r\n UserRoleModule,\r\n ExpensesModule,\r\n ExpenseItemModule,\r\n FixedPriceModule,\r\n GroupsModule,\r\n UserEntryDatesModule,\r\n CustomerJobModule,\r\n ContractManagementModule,\r\n ContractCumulativeModule,\r\n IndirectJobsModule,\r\n LeaveRequestModule,\r\n HelpDeskModule,\r\n CompanySettingModule,\r\n CheckupModule,\r\n ManageUsersModule,\r\n TimeCardModule,\r\n ReportingModule,\r\n UserSettingModule,\r\n LogoModule,\r\n PayrollModule,\r\n ServiceItemModule,\r\n ReminderModule,\r\n OversignTimeModule,\r\n AccountModule,\r\n AttachmentModule,\r\n IndirectRateModule,\r\n LeaveAdjustmentModule,\r\n InvoiceModule,\r\n PremiumPayModule,\r\n PayrateOverrideModule,\r\n ClassModule,\r\n ProjectBudgetModule,\r\n FeeLevelModule,\r\n ReconciliationModule,\r\n RegistrationModule,\r\n CompanyCalendarModule,\r\n ManualAdjustmentModule,\r\n RecalculateTransactionsModule,\r\n DeferBillingModule,\r\n PtoPolicyModule,\r\n EmailAuditModule,\r\n BurdenModule,\r\n JobAuditModule,\r\n RateCeilingModule,\r\n DashboardModule,\r\n EFToasterModule,\r\n QuickbooksModule,\r\n RatePlanningModule,\r\n ImportModule,\r\n VendorModule,\r\n MergeModule,\r\n TaskTimerModule,\r\n CustomerAdminModule,\r\n InternalAdminModule,\r\n AboutModule,\r\n EmployeeValidationModule\r\n ],\r\n providers: [\r\n DatePipe,\r\n ErrorHandler,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass:\r\n fromDataServices.Invoice.Setup.Invoice.InvoiceSetupInterceptor,\r\n multi: true\r\n }, // {\r\n // provide: HTTP_INTERCEPTORS,\r\n // useClass: LoadingInterceptor,\r\n // multi: true\r\n // },\r\n { provide: HTTP_INTERCEPTORS, useClass: PUTInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: PathLocationStrategy },\r\n // this doesn't match in index.html b/c assets and stuff are stored relative to the base href, NOT APP_BASE_HREF,\r\n // APP_BASE_HREF is used for the location strategy for the angular pages -->\r\n\r\n { provide: APP_BASE_HREF, useValue: '/efc/' },\r\n DialogService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {}\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {trigger, state, transition, style, animate} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'app-inline-profile',\r\n template: `\r\n \r\n `,\r\n animations: [\r\n trigger('menu', [\r\n state('hidden', style({\r\n height: '0px'\r\n })),\r\n state('visible', style({\r\n height: '*'\r\n })),\r\n transition('visible => hidden', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\r\n transition('hidden => visible', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\r\n ])\r\n ]\r\n})\r\nexport class AppProfileComponent implements OnInit {\r\n\r\n active: boolean;\r\n\r\n onClick(event) {\r\n this.active = !this.active;\r\n event.preventDefault();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from './shared/services/logging/logging.service';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VersionService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n private uri = `${environment.apiLocation}/Version`;\r\n\r\n public getVersion(): Observable {\r\n try {\r\n return this.http.get(this.uri).pipe(res => {\r\n this.log.verbose({\r\n type: 'VersionService:getVersion:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n } catch (e) {\r\n this.log.warn({\r\n type: 'VersionService:getVersion',\r\n e\r\n });\r\n return of[''];\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, of, ReplaySubject, throwError } from 'rxjs';\r\nimport {\r\n catchError,\r\n filter,\r\n map,\r\n take,\r\n takeWhile,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { AppComponent } from './app.component';\r\nimport * as fromAuth from './auth';\r\nimport { PinDialogComponent } from './auth';\r\nimport { CompanyAccessDialogComponent } from './auth/company-access-dialog/company-access-dialog.component';\r\nimport * as fromDataServices from './data-services';\r\nimport { DialogService, Process } from './shared';\r\nimport { getErrorAction } from './shared/errors-sidenav';\r\nimport { LoggingService } from './shared/services/logging';\r\nimport * as fromUser from './user-info';\r\nimport { UserRoleEnum } from './user-info';\r\nimport { IUserRole } from './user-role/IUserRole';\r\nimport { environment } from '../environments/environment';\r\nimport * as fromRoot from './store';\r\n@Component({\r\n selector: 'app-topbar',\r\n templateUrl: './app.topbar.component.html',\r\n styleUrls: ['./app.topbar.component.scss']\r\n})\r\nexport class AppTopBarComponent implements OnInit, OnDestroy {\r\n private componentActive = true;\r\n // public mainProcess$: Observable;\r\n auth$: Observable;\r\n private switchCompanySubject = new ReplaySubject(1);\r\n @Input() userInfo: fromUser.IUserInfo;\r\n @Input() user: fromUser.IUserAccess;\r\n @Input() roles: IUserRole[];\r\n private companyAccessDataService: EntityCollectionService;\r\n @Input() processes: Process[];\r\n @Input() processTitles: string[];\r\n\r\n showAbout = false;\r\n public environment = environment;\r\n public version$: Observable;\r\n eFAACTApiVersion: string;\r\n eFAACTVersion = `${environment.version}-${environment.environment}`;\r\n softwareLicenseAgreementLink = \"https://www.efaactcentral.com/licensing/eFAACTHostedLicenseAgreement.htm\";\r\n\r\n selectedProcess: Process;\r\n constructor(\r\n public app: AppComponent,\r\n private store: Store,\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private dialogService: DialogService\r\n ) {\r\n this.companyAccessDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.CompanyAccess.entityName\r\n );\r\n this.companyAccessDataService.clearCache();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentActive = false;\r\n }\r\n ngOnInit() {\r\n // this.mainProcess$ = this.store.pipe(\r\n // select(fromUser.getUserProcessesMain),\r\n // map(processes => processes.filter(p => p.displayinmenu))\r\n // );\r\n\r\n this.auth$ = this.store.pipe(select(fromAuth.getAuth));\r\n this.setupSubscriptions();\r\n }\r\n setupSubscriptions() {\r\n\r\n setTimeout(() => {\r\n this.version$ = this.store.pipe(\r\n select(fromRoot.Version.selectVersion)\r\n );\r\n this.version$.pipe(take(2)).subscribe(v => {\r\n this.eFAACTApiVersion = v;\r\n });\r\n }, 1000);\r\n this.companyAccessDataService.entities$\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(x => !!x && x.length > 0),\r\n withLatestFrom(this.auth$)\r\n )\r\n .subscribe(([companyAccess, auth]) => {\r\n this.log.verbose({\r\n type: 'AppTopBarComponent:companyAccessDataService:entities$',\r\n companyAccess\r\n });\r\n this.dialogService\r\n .open(CompanyAccessDialogComponent, {\r\n header: 'Select Company Access',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: false,\r\n modal: true,\r\n data: {\r\n userInfo: this.userInfo,\r\n companies: companyAccess\r\n }\r\n })\r\n .onClose.pipe(take(1))\r\n .subscribe(data => {\r\n this.log.verbose({\r\n type: 'AppTopBarComponent:CompanyAccessDialogComponent:afterClosed',\r\n data\r\n });\r\n const company = companyAccess.find(\r\n x => x.id === data.company\r\n );\r\n this.log.verbose({\r\n type: 'AppTopBarComponent:CompanyAccessDialogComponent:afterClosed',\r\n company\r\n });\r\n this.companyAccessDataService.clearCache();\r\n this.companyAccessDataService\r\n .getWithQuery({\r\n CustomerID: company.CustomerID.toString(),\r\n contactemail: company.contactemail\r\n })\r\n .pipe(\r\n take(1),\r\n catchError(err => {\r\n this.log.error(err);\r\n throwError(err);\r\n return of(getErrorAction(err));\r\n })\r\n )\r\n .subscribe(q => {\r\n this.log.verbose({\r\n type: 'AppTopBarComponent:companyAccessDataService:getWithQuery',\r\n q\r\n });\r\n this.store.dispatch(\r\n new fromAuth.RememberMe({\r\n rememberMe: auth.rememberMe,\r\n username: null,\r\n pin: company.CustomerID.toString()\r\n })\r\n );\r\n this.store.dispatch(new fromAuth.Logout());\r\n });\r\n });\r\n });\r\n this.switchCompanySubject\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n withLatestFrom(this.auth$)\r\n )\r\n .subscribe(([, auth]) => {\r\n this.log.verbose({\r\n type: 'AppTopBarComponent:switchCompanySubject'\r\n });\r\n this.dialogService\r\n .open(PinDialogComponent, {\r\n header: 'Enter main customer ID/PIN',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: false,\r\n modal: true,\r\n data: {\r\n userInfo: this.userInfo\r\n // pin: auth.pin\r\n }\r\n })\r\n .onClose.pipe(take(1))\r\n .subscribe(data => {\r\n this.log.verbose({\r\n type: 'AppTopBarComponent:switchCompanySubject:afterClosed',\r\n data\r\n });\r\n if (!!data && !!data.pin) {\r\n this.companyAccessDataService.getWithQuery({\r\n CustomerID: data.pin\r\n });\r\n }\r\n });\r\n });\r\n }\r\n openAbout() {\r\n this.showAbout = true;\r\n }\r\n openHelpDesk() {\r\n if (this.user) {\r\n if (this.user.UserProcessesMain && this.user.UserProcessesMain.length > 0) {\r\n const helpdeskProcess = this.user.UserProcessesMain.find(x => x.ProcessID == 134);\r\n const helpdeskLink = helpdeskProcess.UrlDemo;\r\n window.open(helpdeskLink, '_blank');\r\n }\r\n }\r\n }\r\n openUserManual() {\r\n window.open(\r\n 'https://www.efaactcentral.com/eFAACTUserManual/index.htm?',\r\n '_blank'\r\n );\r\n }\r\n openCompanyCalendar() {}\r\n roleChosen(roleID: number) {\r\n this.store.dispatch(\r\n new fromUser.SetUserInfo({\r\n ...this.userInfo,\r\n DefaultRoleGroupID: roleID\r\n })\r\n );\r\n }\r\n switchCompany() {\r\n this.log.verbose({ type: 'AppTopBarComponent:switchCompany' });\r\n this.switchCompanySubject.next();\r\n }\r\n isAdmin = (roles: IUserRole[]): boolean =>\r\n roles &&\r\n !!roles.find(x => x.RoleGroupID === UserRoleEnum.Administrator);\r\n\r\n filterProcessFromSearch($event) {\r\n this.processTitles = [];\r\n // const filteredProcesses = this.processes.filter(x =>\r\n // x.ProcessTitle.toLowerCase().includes($event.query.toLowerCase()) ||\r\n // x.ProcessDesc != null\r\n // ? x.ProcessDesc.toLowerCase().includes(\r\n // $event.query.toLowerCase()\r\n // )\r\n // : x.ProcessTitle.toLowerCase().includes(\r\n // $event.query.toLowerCase()\r\n // )\r\n // );\r\n\r\n const filteredProcesses = this.processes.filter(process => {\r\n if (process.ProcessDesc != null) {\r\n return (\r\n process.ProcessDesc.toLowerCase().includes(\r\n $event.query.toLowerCase()\r\n ) ||\r\n process.ProcessTitle.toLowerCase().includes(\r\n $event.query.toLowerCase()\r\n )\r\n );\r\n } else {\r\n return process.ProcessTitle.toLowerCase().includes(\r\n $event.query.toLowerCase()\r\n );\r\n }\r\n });\r\n\r\n filteredProcesses.forEach(x => {\r\n this.processTitles.push(x.ProcessTitle);\r\n });\r\n this.log.verbose('text from search: ' + $event.query);\r\n }\r\n gotoProcessFromSearch(value) {\r\n this.log.verbose('selected process from search: ' + value);\r\n const process = this.processes.find(x => x.ProcessTitle == value);\r\n this.app.goto(process);\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ChangeDetectionStrategy,\r\n Input,\r\n AfterViewInit,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IAttachment } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { AttachmentService } from './attachment.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { takeWhile, tap, map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ef-attachment-view-feature',\r\n templateUrl: './attachment-view-feature.component.html',\r\n styleUrls: ['./attachment-view-feature.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AttachmentViewFeatureComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n @Input() public fileId: string;\r\n public attachment$: Observable;\r\n public attachment: IAttachment;\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n protected svc: AttachmentService,\r\n private sanitizer: DomSanitizer\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.log.verbose({ type: 'AttachmentViewFeatureComponent' });\r\n this.setupObservables();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.attachment$ = this.svc.getAttachment(this.fileId).pipe(\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'AttachmentViewFeatureComponent:attachment$:tap',\r\n a\r\n })\r\n ),\r\n map(attachment => {\r\n attachment.SafeResource = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n attachment.File\r\n );\r\n return attachment;\r\n })\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.attachment$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'AttachmentViewFeatureComponent:attachment$:tap',\r\n a\r\n })\r\n )\r\n )\r\n .subscribe(attachment => {\r\n this.log.verbose({\r\n type:\r\n 'AttachmentViewFeatureComponent:attachment$:subscribe',\r\n attachment\r\n });\r\n this.attachment = attachment;\r\n this.attachment.SafeResource = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.attachment.File\r\n );\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.log.verbose({\r\n type: 'AttachmentViewFeatureComponent',\r\n fileId: this.fileId\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { AttachmentViewFeatureComponent } from './attachment-view-feature.component';\r\nimport { AttachmentRoute } from './attachment.route';\r\n\r\n@NgModule({\r\n declarations: [AttachmentViewFeatureComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [AttachmentRoute]\r\n })\r\n ]\r\n})\r\nexport class AttachmentModule {}\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport { Transition } from '@uirouter/core';\r\nimport * as fromAttachment from '.';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nconst log = new LoggingService();\r\n\r\nexport const AttachmentRoute: Ng2StateDeclaration = {\r\n // TODO: will having all these here mess with lazy loading of modules?\r\n // https://ui-router.github.io/guide/lazyloading\r\n name: 'attachment',\r\n url: '/attachment/:fileId',\r\n data: { requiresAuth: true },\r\n resolve: [\r\n {\r\n token: 'fileId',\r\n deps: [Transition],\r\n resolveFn: fileIdResolver\r\n }\r\n ],\r\n component: fromAttachment.AttachmentViewFeatureComponent\r\n};\r\n\r\nexport function fileIdResolver(t: Transition) {\r\n const fileId = t.params().fileId;\r\n log.debug({\r\n type: 'ViewAttachmentRoute:fileId:resolve',\r\n t,\r\n fileId\r\n });\r\n return fileId;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { filter, map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IExpenseReceipt } from '../expenses/IExpenseReceipt';\r\nimport { IAttachment, IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AttachmentService {\r\n private attachmentUri = `${environment.apiLocation}/Attachment`;\r\n\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n saveExpenseAttachment(\r\n expenseID: number,\r\n receiptId: string,\r\n fileId: string,\r\n meta: any,\r\n file: any\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'AttachmentService:saveExpenseAttachment',\r\n expenseID,\r\n receiptId,\r\n file\r\n });\r\n\r\n return this.http\r\n .put>(this.attachmentUri, {\r\n AttachmentList: [\r\n {\r\n Unique_Id: receiptId,\r\n File_unique_id: fileId,\r\n Attachmentprocess: 'expense',\r\n Expense_id: expenseID,\r\n File: file,\r\n Filename: meta.name,\r\n Filesize: meta.size,\r\n Filemimetype: meta.type\r\n }\r\n ]\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'AttachmentService:saveExpenseAttachment:reponse',\r\n data\r\n })\r\n ),\r\n map(y => ({\r\n ...y,\r\n Items: y.Items.map(x => {\r\n if (x && x.File && x.File_unique_id) {\r\n return {\r\n ...x,\r\n File: `data:${x.Filemimetype};base64,${x.File}`\r\n };\r\n } else {\r\n return { ...x, File: null };\r\n }\r\n })\r\n }))\r\n );\r\n }\r\n getExpenseReceiptAttachment(\r\n receipt: IExpenseReceipt\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'AttachmentService:getExpenseReceiptAttachment',\r\n receipt\r\n });\r\n if (!(receipt && (receipt.File_unique_id || receipt.Unique_Id))) {\r\n return of(null);\r\n }\r\n return this.http\r\n .post>(this.attachmentUri, {\r\n Unique_Id: receipt.Unique_Id,\r\n File_unique_id: receipt.File_unique_id,\r\n Attachmentprocess: 'expense'\r\n })\r\n .pipe(\r\n filter(x => x && x.length > 0),\r\n map(x => {\r\n return {\r\n ...x[0],\r\n File: `data:${x[0].Filemimetype};base64,${x[0].File}`\r\n };\r\n }),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'AttachmentService:getExpenseReceiptAttachment:reponse',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n saveAttachment(\r\n process: string,\r\n entityId: string,\r\n fileId: string,\r\n meta: File,\r\n file: any\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'AttachmentService:saveAttachment',\r\n process,\r\n entityId,\r\n fileId,\r\n meta,\r\n file\r\n });\r\n\r\n return this.http\r\n .put>(this.attachmentUri, {\r\n AttachmentList: [\r\n {\r\n File_unique_id: fileId,\r\n Unique_Id: fileId,\r\n Expense_id: entityId,\r\n Attachmentprocess: process,\r\n File: file,\r\n Filename: meta.name,\r\n Filesize: meta.size,\r\n Filemimetype: meta.type\r\n }\r\n ]\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'AttachmentService:saveAttachment:reponse',\r\n data\r\n })\r\n ),\r\n map(y => ({\r\n ...y,\r\n Items: y.Items.map(x => {\r\n if (x && x.File && x.File_unique_id) {\r\n return {\r\n ...x,\r\n File: `data:${x.Filemimetype};base64,${x.File}`\r\n };\r\n } else {\r\n return { ...x, File: null };\r\n }\r\n })\r\n }))\r\n );\r\n }\r\n getAttachment(fileId: string): Observable {\r\n this.log.verbose({ type: 'AttachmentService:getAttachment', fileId });\r\n return this.http\r\n .post>(this.attachmentUri, {\r\n File_unique_id: fileId,\r\n Attachmentprocess: 'timecard'\r\n })\r\n .pipe(\r\n map(x => {\r\n if (x && x.length > 0) {\r\n return {\r\n ...x[0],\r\n File: `data:${x[0].Filemimetype};base64,${x[0].File}`\r\n };\r\n } else {\r\n return null;\r\n }\r\n }),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'AttachmentService:getAttachment:reponse',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n deleteAttachment(\r\n fileId: string\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'AttachmentService:deleteAttachment',\r\n fileId\r\n });\r\n return this.http.request>(\r\n 'DELETE',\r\n this.attachmentUri,\r\n {\r\n body: { EntityIDs: [fileId] }\r\n }\r\n );\r\n }\r\n}\r\n","import {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n HttpResponse\r\n} from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { StateService, UIRouter } from '@uirouter/core';\r\nimport { EMPTY, Observable, throwError } from 'rxjs';\r\nimport { catchError, filter, map } from 'rxjs/operators';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\nimport * as fromQBO from '../quickbooks/store';\r\nimport { AuthenticationService } from './authentication.service';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n /**\r\n *\r\n */\r\n constructor(\r\n private store: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(AuthenticationService)\r\n private authService: AuthenticationService,\r\n @Inject(StateService) private ss: StateService,\r\n private router: UIRouter\r\n ) {}\r\n\r\n public intercept(\r\n req: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n // Clone the request to add the new header\r\n const clonedRequest = req.clone({\r\n // withCredentials: environment.production,\r\n withCredentials: false,\r\n setHeaders: {\r\n Authorization: `Bearer ${this.authService.bearerToken}`\r\n }\r\n });\r\n\r\n // Pass the cloned request instead of the original request to the next handle\r\n // return next.handle(clonedRequest)\r\n return next.handle(clonedRequest).pipe(\r\n filter(event => event instanceof HttpResponse),\r\n // tap(resp =>\r\n // this.log.verbose({ type: 'AuthInterceptor:response', resp })\r\n // ),\r\n catchError((err, caught) => {\r\n\r\n // we don't want additional 401s to cause us to keep trying to go to the login screen\r\n if (err.status === 401) {\r\n this.log.info({ type: 'AuthInterceptor caught 401' });\r\n if (this.authService.bearerToken) {\r\n const route = this.ss.current.name;\r\n this.authService.logout();\r\n this.store.dispatch(new fromStore.SetRedirect(route));\r\n this.authService.openDialog();\r\n return caught;\r\n }\r\n this.authService.openDialog();\r\n }\r\n // discard 500 errors if we don't have an auth token\r\n if (err.status >= 500 && err.status < 600) {\r\n if (err.status === 511) {\r\n this.store.dispatch(new fromQBO.HasValidTokens(false));\r\n this.ss.go('main');\r\n return EMPTY;\r\n }\r\n this.log.info({ type: 'AuthInterceptor caught 5xx' });\r\n if (this.authService.bearerToken) {\r\n throwError(err);\r\n throw err;\r\n } else {\r\n return EMPTY;\r\n }\r\n }\r\n throwError(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\n\r\nimport { SignInDialogComponent } from './sign-in';\r\n\r\nimport { reducer } from './store/auth.reducer';\r\nimport { AuthenticationEffects } from './store/auth.effects';\r\nimport { LoginComponent } from '../login/login.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { PinDialogComponent } from './pin-dialog/pin-dialog.component';\r\nimport { CompanyAccessDialogComponent } from './company-access-dialog/company-access-dialog.component';\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature('auth', reducer),\r\n EffectsModule.forFeature([AuthenticationEffects])\r\n ],\r\n declarations: [LoginComponent, SignInDialogComponent, PinDialogComponent, CompanyAccessDialogComponent]\r\n})\r\nexport class AuthModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { map, take, takeWhile } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoginRequestStatus } from '../efaact-configuration/efaact-configuration.module';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as rootActions from '../store/actions';\r\nimport * as fromCore from '../store/core';\r\nimport { IRememberMe } from './IRememberMe';\r\nimport { ISignInDialogData } from './ISignInDialogData';\r\nimport { SignInDialogComponent } from './sign-in/dialog/sign-in-dialog.component';\r\nimport * as fromAuth from './store';\r\nimport * as authActions from './store/auth.actions';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService implements OnDestroy {\r\n private loggedInSub: Subscription;\r\n private authTokenSub: Subscription;\r\n private authSub: Subscription;\r\n private _authenticated = false;\r\n public bearerToken: string;\r\n private loggingIn = false;\r\n private active = true;\r\n constructor(\r\n private store: Store,\r\n private dialog: MatDialog,\r\n private ss: StateService,\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {\r\n this.loggedInSub = this.store\r\n .pipe(select(fromAuth.getLoggedIn), take(1))\r\n .subscribe(x => (this._authenticated = x));\r\n\r\n this.authTokenSub = this.store\r\n .pipe(\r\n select(fromAuth.getAuthToken),\r\n takeWhile(() => this.active)\r\n )\r\n .subscribe(x => {\r\n this.bearerToken = x;\r\n });\r\n\r\n this.store.dispatch(new fromCore.SetDateFormat('YYYY/MM/DD'));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loggedInSub.unsubscribe();\r\n this.authTokenSub.unsubscribe();\r\n this.authSub.unsubscribe();\r\n this.active = false;\r\n }\r\n public authenticate(\r\n authenticationRequest: IAuthenticateSecurityQuestion\r\n ): Observable {\r\n const url = `${environment.apiLocation}/Authentication`;\r\n this.log.verbose({\r\n type: 'AuthenticationService.authenticate',\r\n url,\r\n authenticationRequest\r\n });\r\n return this.http\r\n .post(url, authenticationRequest, {\r\n observe: 'response'\r\n })\r\n .pipe(map(resp => resp.body));\r\n }\r\n\r\n public isAuthenticated(): boolean {\r\n return !!this.bearerToken;\r\n }\r\n\r\n public openDialog(authStatus?: LoginRequestStatus): void {\r\n this.log.verbose({\r\n type: 'AuthenticationService:openDialog',\r\n loggingIn: this.loggingIn,\r\n authStatus\r\n });\r\n const dialogConfig = new MatDialogConfig();\r\n if (\r\n !this.loggingIn &&\r\n (authStatus === LoginRequestStatus.Undefined ||\r\n authStatus ===\r\n LoginRequestStatus.SubmitUsernamePasswordAndPIN ||\r\n !authStatus)\r\n ) {\r\n this.store.dispatch(new authActions.Logout());\r\n }\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n if (!this.loggingIn) {\r\n const loginRef = this.dialog.open(\r\n SignInDialogComponent,\r\n dialogConfig\r\n );\r\n this.loggingIn = true;\r\n loginRef\r\n .afterClosed()\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe((data: ISignInDialogData) => {\r\n this.loggingIn = false;\r\n if (!data || data.cancel) {\r\n this.store.dispatch(new rootActions.LogoutAction());\r\n this.openDialog();\r\n return;\r\n }\r\n this.log.verbose({\r\n type: 'SignInComponent:afterClosed',\r\n signInData: data\r\n });\r\n\r\n switch (data && data.status) {\r\n case LoginRequestStatus.SelectAccessCodeMethod: // select access code method\r\n this.store.dispatch(\r\n new authActions.SendAccessCodeMethod(data)\r\n );\r\n break;\r\n case LoginRequestStatus.AccessCodeSent: // AnswerSecurityQuestion\r\n this.store.dispatch(\r\n new authActions.SendAccessCode(data)\r\n );\r\n break;\r\n case LoginRequestStatus.AnswerSecurityQuestion: // AnswerSecurityQuestion\r\n this.store.dispatch(\r\n new authActions.SendSecurityAnswer(data)\r\n );\r\n break;\r\n case LoginRequestStatus.LoginSuccessful:\r\n this.ss.go('main');\r\n break;\r\n default:\r\n this.store.dispatch(\r\n new authActions.SendUsernamePasswordPin(data)\r\n );\r\n break;\r\n }\r\n\r\n this.authenticate({\r\n password: data.password,\r\n username: data.username,\r\n pin: data.pin,\r\n Resetpassword: data.Resetpassword,\r\n accessCodeDeliveryType: data.accessCodeDeliveryType,\r\n accessCode: data.accessCode,\r\n securityAnswer: data.securityAnswer\r\n })\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(\r\n (auth: IAuthenticateResponse) => {\r\n this.handleAuthResponse(auth, data);\r\n },\r\n error => {\r\n error.HasError = true;\r\n error.ErrorMessage = error.message;\r\n this.handleAuthResponse(error, null);\r\n }\r\n );\r\n });\r\n }\r\n }\r\n public logout(): void {\r\n this.log.verbose({ type: 'AuthenticationService:logout' });\r\n delete this.bearerToken;\r\n this.store.dispatch(new rootActions.LogoutAction());\r\n }\r\n\r\n handleAuthResponse(\r\n resp: IAuthenticateResponse,\r\n req: IAuthenticateRequest & IRememberMe\r\n ) {\r\n this.log.debug({\r\n type: 'AuthenticationService:handleAuthResponse',\r\n req,\r\n resp\r\n });\r\n // if (req.Resetpassword) {\r\n // this.ss.go('main');\r\n // return;\r\n // }\r\n if (resp.HasError) {\r\n this.store.dispatch(new authActions.LoginFailure(resp));\r\n }\r\n\r\n switch (resp.StatusCode) {\r\n case LoginRequestStatus.SelectAccessCodeMethod: // select access code method\r\n this.store.dispatch(\r\n new authActions.LoginSelectAccessCode(resp)\r\n );\r\n break;\r\n case LoginRequestStatus.AccessCodeSent: // select access code method\r\n this.store.dispatch(new authActions.LoginAccessCodeSent(resp));\r\n break;\r\n case LoginRequestStatus.AnswerSecurityQuestion: // AnswerSecurityQuestion\r\n this.store.dispatch(\r\n new authActions.LoginAnswerSecurityQuestion(resp)\r\n );\r\n break;\r\n case LoginRequestStatus.LoginSuccessful: // successfull login\r\n this.store.dispatch(new rootActions.LoginAction({ req, resp }));\r\n // this.authStore.dispatch(new authActions.LoginSuccess(resp));\r\n return;\r\n break;\r\n // default:\r\n // this.openDialog(resp.StatusCode);\r\n }\r\n this.openDialog(resp.StatusCode);\r\n }\r\n}\r\n\r\nexport interface IAccessCodeRequestMethod {\r\n Value: string;\r\n DisplayName: string;\r\n}\r\n\r\nexport interface IAuthenticateResponse {\r\n StatusCode: LoginRequestStatus;\r\n StatusMessage: string;\r\n RemainingAttempts: number;\r\n MinutesUntilNextAttemptAllowed: number;\r\n AccessCodeRequestMethods: IAccessCodeRequestMethod[];\r\n SecurityQuestion: string;\r\n BearerToken: string;\r\n HasError: boolean;\r\n ErrorMessage: string;\r\n CustomerID?: string;\r\n}\r\n\r\nexport interface IAuthenticateRequest {\r\n username?: string;\r\n password?: string;\r\n pin?: string;\r\n Resetpassword?: boolean;\r\n // AccessCodeDeliveryType: string;\r\n // AccessCode: string;\r\n // SecurityAnswer: string;\r\n}\r\n\r\nexport interface IAuthenticateAccessCode extends IAuthenticateRequest {\r\n accessCodeDeliveryType: string;\r\n accessCode: string;\r\n}\r\n\r\nexport interface IAuthenticateSecurityQuestion extends IAuthenticateAccessCode {\r\n securityAnswer: string;\r\n}\r\n\r\nexport class AuthenticateResponse implements IAuthenticateResponse {\r\n StatusCode: number;\r\n StatusMessage: string;\r\n RemainingAttempts: number;\r\n MinutesUntilNextAttemptAllowed: number;\r\n AccessCodeRequestMethods: IAccessCodeRequestMethod[];\r\n SecurityQuestion: string;\r\n BearerToken: string;\r\n HasError: boolean;\r\n ErrorMessage: string;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { CompanyAccess } from '../../data-services';\r\nimport { DynamicDialogRef, DynamicDialogConfig, SelectItem } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-company-access-dialog',\r\n templateUrl: './company-access-dialog.component.html',\r\n styleUrls: ['./company-access-dialog.component.scss']\r\n})\r\nexport class CompanyAccessDialogComponent implements OnInit {\r\n companyFormGroup: FormGroup;\r\n companies: SelectItem[];\r\n\r\n constructor (public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private log: LoggingService) {\r\n this.companies = (config.data.companies as CompanyAccess.CompanyAccessModel[])\r\n .map(x => ({\r\n value: x.id,\r\n label: `${x.customername} - ${x.contactname}(${x.contactemail})`\r\n }));\r\n this.companyFormGroup = new FormGroup({\r\n company: new FormControl(null, Validators.required)\r\n });\r\n }\r\n\r\n ngOnInit(): void { }\r\n onSave(form): void {\r\n this.log.verbose({\r\n type: 'CompanyAccessDialogComponent:onSave',\r\n form\r\n });\r\n this.dialogRef.close(form);\r\n }\r\n onCancel(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","export * from './store';\r\nexport * from './sign-in';\r\nexport * from './pin-dialog';\r\n","export * from './pin-dialog.component';\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef\r\n} from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-pin-dialog',\r\n templateUrl: './pin-dialog.component.html',\r\n styleUrls: ['./pin-dialog.component.scss']\r\n})\r\nexport class PinDialogComponent implements OnInit {\r\n @Output() Save = new EventEmitter();\r\n @Output() Cancel = new EventEmitter();\r\n pinFormGroup: FormGroup;\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private log: LoggingService\r\n ) {\r\n this.pinFormGroup = new FormGroup({\r\n pin: new FormControl(config.data.pin)\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onSave(form): void {\r\n this.log.verbose({\r\n type: 'PinDialogComponent:onSave',\r\n form\r\n });\r\n this.dialogRef.close(form);\r\n }\r\n onCancel(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","export * from './sign-in-dialog.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, take, takeWhile, tap } from 'rxjs/operators';\r\nimport { LoginRequestStatus } from '../../../efaact-configuration/efaact-configuration.module';\r\nimport { Logo } from '../../../logo/store/logo.model';\r\nimport * as fromLogo from '../../../logo/store/logo.reducer';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport '../../../shared/modernizr';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { ISignInDialogData } from '../../ISignInDialogData';\r\nimport * as fromAuth from '../../store';\r\nimport { State } from '../../store/auth.reducer';\r\n\r\n@Component({\r\n templateUrl: 'sign-in-dialog.component.html',\r\n styleUrls: ['./sign-in-dialog.component.scss']\r\n})\r\nexport class SignInDialogComponent implements OnInit, OnDestroy {\r\n private componentActive = true;\r\n public signInData: ISignInDialogData;\r\n loginForm: FormGroup;\r\n LoginRequestStatus = LoginRequestStatus;\r\n logo$: Observable;\r\n supported(): boolean {\r\n return (window as any).Modernizr.inputtypes.color;\r\n }\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n public store: Store,\r\n private log: LoggingService,\r\n private confirmService: UnsavedChangesService\r\n ) {\r\n // log.log({ type: 'signindialog.component:ctor', signInData });\r\n }\r\n ngOnDestroy(): void {\r\n this.componentActive = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.log.debug({ type: 'SignInDialogComponent:ngOnInit' });\r\n\r\n this.loginForm = new FormGroup({\r\n username: new FormControl(null, Validators.required),\r\n password: new FormControl(null, Validators.required),\r\n pin: new FormControl(null, Validators.required),\r\n accessCode: new FormControl(null),\r\n securityAnswer: new FormControl(null),\r\n accessCodeDeliveryType: new FormControl(null),\r\n rememberMe: new FormControl(null),\r\n Resetpassword: new FormControl(false)\r\n });\r\n\r\n this.logo$ = this.store.pipe(\r\n select(fromLogo.selectAll),\r\n filter(x => Array.isArray(x) && x.length > 0),\r\n map(x => ({\r\n ...x[0],\r\n Uploadfile: 'data:image/png;base64,' + x[0].Uploadfile\r\n }))\r\n );\r\n\r\n this.store\r\n .pipe(\r\n select(fromAuth.getAuth),\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose({ type: 'SignInDialogComponent', x })\r\n ),\r\n map(auth => ({\r\n ...auth,\r\n accessCodeRequestMethods:\r\n auth.accessCodeRequestMethods &&\r\n auth.accessCodeRequestMethods.filter(\r\n rm =>\r\n !(\r\n rm.Value === 'email' &&\r\n !rm.DisplayName.includes('@')\r\n )\r\n )\r\n }))\r\n )\r\n .subscribe(auth => {\r\n this.log.verbose({\r\n type: 'SignInDialogComponent:auth-subscribe',\r\n auth,\r\n signInData: this.signInData,\r\n loginForm: this.loginForm.value\r\n });\r\n const controls = this.loginForm.controls;\r\n const accessCodeDeliveryType =\r\n controls['accessCodeDeliveryType'].value &&\r\n controls['accessCodeDeliveryType'].value.Value;\r\n this.signInData = {\r\n ...this.signInData,\r\n ...auth,\r\n ...this.loginForm.value,\r\n username: auth.username || controls['username'].value,\r\n password: auth.password || controls['password'].value,\r\n pin: auth.pin || controls['pin'].value,\r\n rememberMe: auth.rememberMe || controls['rememberMe'].value,\r\n accessCodeDeliveryType: accessCodeDeliveryType,\r\n message: auth.message\r\n };\r\n this.log.verbose({\r\n type: 'SignInDialogComponent:auth-subscribe2',\r\n auth,\r\n signInData: this.signInData,\r\n loginForm: this.loginForm.value\r\n });\r\n controls['password'].setValidators([Validators.required]);\r\n controls['username'].setValidators([Validators.required]);\r\n controls['pin'].setValidators([Validators.required]);\r\n\r\n if (auth.status === LoginRequestStatus.AccessCodeSent) {\r\n controls['password'].setValidators(null);\r\n controls['username'].setValidators(null);\r\n controls['pin'].setValidators(null);\r\n controls['accessCode'].setValidators([Validators.required]);\r\n } else {\r\n controls['accessCode'].setValidators(null);\r\n }\r\n\r\n if (auth.status === LoginRequestStatus.SelectAccessCodeMethod) {\r\n if (\r\n this.signInData.accessCodeRequestMethods &&\r\n this.signInData.accessCodeRequestMethods.length === 1\r\n ) {\r\n controls['accessCodeDeliveryType'].setValue(\r\n this.signInData.accessCodeRequestMethods[0]\r\n );\r\n }\r\n controls['password'].setValidators(null);\r\n controls['username'].setValidators(null);\r\n controls['pin'].setValidators(null);\r\n controls['accessCodeDeliveryType'].setValidators([\r\n Validators.required\r\n ]);\r\n } else {\r\n controls['accessCodeDeliveryType'].setValidators(null);\r\n }\r\n\r\n this.patchForm(this.signInData);\r\n if (\r\n auth.status === LoginRequestStatus.SelectAccessCodeMethod &&\r\n !this.signInData.accessCodeDeliveryType &&\r\n this.signInData.accessCodeRequestMethods &&\r\n this.signInData.accessCodeRequestMethods.length === 1\r\n ) {\r\n controls['accessCodeDeliveryType'].patchValue(\r\n this.signInData.accessCodeRequestMethods[0]\r\n );\r\n }\r\n });\r\n\r\n this.store\r\n .pipe(\r\n select(fromLogo.selectAll),\r\n takeWhile(() => this.componentActive)\r\n )\r\n .subscribe(logo => {\r\n this.log.verbose({ type: 'SignInDialogComponent', logo });\r\n });\r\n }\r\n\r\n rememberMeChanged(value: boolean) {\r\n this.log.debug({\r\n type: 'SignInDialogComponent:rememberMeChanged',\r\n value\r\n });\r\n const controls = this.loginForm.controls;\r\n if (!value) {\r\n this.store.dispatch(\r\n new fromAuth.RememberMe({\r\n rememberMe: false,\r\n username: null,\r\n pin: null\r\n })\r\n );\r\n }\r\n }\r\n onNoClick(): void {\r\n this.dialogRef.close({ cancel: true });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close({ cancel: true });\r\n }\r\n\r\n login() {\r\n sessionStorage.setItem('initialLoadForMainMsg', 'true');\r\n sessionStorage.setItem('IsSignout', 'false');\r\n const accessCode = this.loginForm.controls['accessCode']\r\n .value as string;\r\n this.log.verbose({\r\n type: 'SignInDialogComponent:login',\r\n loginForm: this.loginForm.value\r\n });\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n const controls = this.loginForm.controls;\r\n if (controls['rememberMe'].value) {\r\n this.store.dispatch(\r\n new fromAuth.RememberMe({\r\n rememberMe: true,\r\n username: controls['username'].value,\r\n pin: controls['pin'].value\r\n })\r\n );\r\n } else {\r\n this.store.dispatch(\r\n new fromAuth.RememberMe({\r\n rememberMe: false,\r\n username: null,\r\n pin: null\r\n })\r\n );\r\n }\r\n this.dialogRef.close({\r\n ...this.loginForm.value,\r\n accessCode: accessCode && accessCode.trimEnd()\r\n });\r\n }\r\n\r\n onForgotPassword() {\r\n this.log.verbose({ type: 'SignInDialogComponent:onForgotPassword' });\r\n this.confirmService\r\n .confirm({\r\n headerText: 'Confirm Password Reset',\r\n dialogText:\r\n 'This will reset your password and send the new password to the email address on file.'\r\n })\r\n .pipe(take(1))\r\n .subscribe(result => {\r\n if (result) {\r\n this.loginForm.controls['Resetpassword'].setValue(true);\r\n this.dialogRef.close(this.loginForm.value);\r\n }\r\n });\r\n }\r\n patchForm(data: ISignInDialogData) {\r\n this.log.verbose({ type: 'login.dialog:patchForm', data });\r\n const controls = this.loginForm.controls;\r\n this.loginForm.patchValue(data);\r\n }\r\n}\r\n","export * from './dialog';\r\nexport * from './sign-in.component';\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n Inject,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { AuthenticationService } from '../authentication.service';\r\nimport { StateService } from '@uirouter/core';\r\nimport * as fromRoot from '../../store/reducers';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport * as fromAuth from '../store';\r\n\r\n@Component({\r\n selector: 'ef-sign-in',\r\n templateUrl: './sign-in.component.html',\r\n styleUrls: ['./sign-in.component.scss'],\r\n})\r\nexport class SignInComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService,\r\n private authService: AuthenticationService,\r\n @Inject(StateService) private ss: StateService\r\n ) {\r\n log.debug({ type: 'SignInComponent:ctor', store });\r\n }\r\n\r\n @Output()\r\n @Input()\r\n public token$: Observable;\r\n\r\n ngOnDestroy(): void {\r\n }\r\n ngOnInit() {\r\n this.token$ = this.store.pipe(select(fromAuth.getAuthToken));\r\n }\r\n\r\n openDialog(): void {\r\n this.authService.openDialog();\r\n }\r\n\r\n onSignout() {\r\n this.ss.go('main');\r\n this.authService.logout();\r\n // TODO: make this an effect?\r\n }\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport { IUser } from '../../user-info/IUser';\r\nimport {\r\n IAuthenticateRequest,\r\n IAuthenticateAccessCode,\r\n IAuthenticateSecurityQuestion,\r\n IAuthenticateResponse\r\n} from '../authentication.service';\r\nimport { IRememberMe } from '../IRememberMe';\r\n\r\nexport enum AuthActionTypes {\r\n Login = '[Auth] Login',\r\n Logout = '[Auth] Logout',\r\n LoginSuccess = '[Auth] Login Success',\r\n LoginFailure = '[Auth] Login Failure',\r\n LoginRedirect = '[Auth] Login Redirect',\r\n LoginSelectAccessCode = '[Auth] Select Access Code',\r\n LoginAccessCodeSent = '[Auth] Access Code Sent',\r\n LoginAnswerSecurityQuestion = '[Auth] Answer Security Question',\r\n RememberMe = '[Auth] Remember Me',\r\n SendUsernamePasswordPin = '[Auth] Send Username Password Pin',\r\n SendAccessCodeMethod = '[Auth] Send AccessCode Method',\r\n SendAccessCode = '[Auth] Send AccessCode',\r\n SendSecurityAnswer = '[Auth] Send Security Answer'\r\n}\r\n\r\nexport class Login implements Action {\r\n readonly type = AuthActionTypes.Login;\r\n\r\n constructor(public payload: IAuthenticateResponse) {}\r\n}\r\n\r\nexport class LoginSelectAccessCode implements Action {\r\n readonly type = AuthActionTypes.LoginSelectAccessCode;\r\n constructor(public payload: IAuthenticateResponse) {}\r\n}\r\n\r\nexport class LoginAnswerSecurityQuestion implements Action {\r\n readonly type = AuthActionTypes.LoginAnswerSecurityQuestion;\r\n constructor(public payload: IAuthenticateResponse) {}\r\n}\r\n\r\nexport class LoginAccessCodeSent implements Action {\r\n readonly type = AuthActionTypes.LoginAccessCodeSent;\r\n constructor(public payload: IAuthenticateResponse) {}\r\n}\r\n\r\nexport class LoginSuccess implements Action {\r\n readonly type = AuthActionTypes.LoginSuccess;\r\n\r\n constructor(public payload: IAuthenticateResponse) {}\r\n}\r\n\r\nexport class LoginFailure implements Action {\r\n readonly type = AuthActionTypes.LoginFailure;\r\n\r\n constructor(public payload: IAuthenticateResponse) {}\r\n}\r\n\r\nexport class LoginRedirect implements Action {\r\n readonly type = AuthActionTypes.LoginRedirect;\r\n}\r\n\r\nexport class Logout implements Action {\r\n readonly type = AuthActionTypes.Logout;\r\n}\r\n\r\nexport class SendUsernamePasswordPin implements Action {\r\n readonly type = AuthActionTypes.SendUsernamePasswordPin;\r\n constructor(public payload: IAuthenticateRequest) {}\r\n}\r\nexport class SendAccessCodeMethod implements Action {\r\n readonly type = AuthActionTypes.SendAccessCodeMethod;\r\n constructor(public payload: IAuthenticateAccessCode) {}\r\n}\r\nexport class SendAccessCode implements Action {\r\n readonly type = AuthActionTypes.SendAccessCode;\r\n constructor(public payload: IAuthenticateAccessCode) {}\r\n}\r\nexport class SendSecurityAnswer implements Action {\r\n readonly type = AuthActionTypes.SendSecurityAnswer;\r\n constructor(public payload: IAuthenticateSecurityQuestion) {}\r\n}\r\nexport class RememberMe implements Action {\r\n readonly type = AuthActionTypes.RememberMe;\r\n constructor(public payload: IRememberMe) {}\r\n}\r\nexport type AuthActionsUnion =\r\n | Login\r\n | LoginSuccess\r\n | LoginSelectAccessCode\r\n | LoginAccessCodeSent\r\n | LoginAnswerSecurityQuestion\r\n | LoginFailure\r\n | LoginRedirect\r\n | Logout\r\n | RememberMe\r\n | SendUsernamePasswordPin\r\n | SendAccessCodeMethod\r\n | SendAccessCode\r\n | SendSecurityAnswer;\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport { combineLatest } from 'rxjs';\r\nimport {\r\n catchError,\r\n map,\r\n startWith,\r\n switchMap,\r\n take,\r\n tap\r\n} from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromRoot from '../../store';\r\nimport { UserRoleEnum } from '../../user-info';\r\nimport * as fromUserInfo from '../../user-info/store';\r\nimport * as fromUserRole from '../../user-role/store';\r\nimport { AuthActionTypes, LoginSuccess, Logout } from './auth.actions';\r\n@Injectable()\r\nexport class AuthenticationEffects {\r\n constructor(\r\n private log: LoggingService,\r\n private actions$: Actions,\r\n private ss: StateService,\r\n private store: Store\r\n ) {}\r\n @Effect({ dispatch: false }) Login$ = this.actions$\r\n .pipe(ofType(AuthActionTypes.LoginSuccess))\r\n .pipe(\r\n switchMap(login =>\r\n combineLatest([\r\n this.actions$.pipe(\r\n ofType(\r\n fromUserInfo.UserActionTypes.SetUserInfo\r\n )\r\n ),\r\n this.actions$.pipe(\r\n ofType(\r\n fromUserInfo.UserActionTypes.SetUserPermissions\r\n )\r\n ),\r\n this.actions$.pipe(\r\n ofType(\r\n fromUserRole.UserRoleActionTypes.SetUserRole\r\n )\r\n ),\r\n this.store.pipe(select(fromRoot.getRedirect), startWith(''))\r\n ]).pipe(\r\n take(1),\r\n tap(([userInfo, permissions, roles, redir]) => {\r\n this.log.verbose({\r\n type: 'AuthenticationEffects:Login$',\r\n permissions,\r\n userInfo\r\n });\r\n // this.ss.go(\r\n // redir ? redir : 'dashboard',\r\n // {},\r\n // { reload: true }\r\n // );\r\n let initialProcess;\r\n if (\r\n roles.payload.some(\r\n x =>\r\n x.RoleGroupID === UserRoleEnum.Administrator\r\n )\r\n ) {\r\n this.log.verbose({\r\n type: 'SetUserGroups$',\r\n message:\r\n 'user is admin, redirecting to register (auth.effects)'\r\n });\r\n // this.ss.go('register', {\r\n // supercede: true\r\n // }); //This is being called from user-role.effects also\r\n } else {\r\n if (userInfo.payload.Initialroutename) {\r\n permissions.payload.UserProcessCategories.forEach(\r\n category => {\r\n category.UserProcesses.forEach(\r\n process => {\r\n if (\r\n userInfo.payload\r\n .Initialroutename ===\r\n process.RouteName\r\n ) {\r\n initialProcess = process;\r\n }\r\n }\r\n );\r\n }\r\n );\r\n this.store.dispatch(\r\n fromShared.upsertProcess({\r\n process: initialProcess\r\n })\r\n );\r\n this.log.verbose({\r\n type: 'AuthenticationEffects:Login$',\r\n permissions,\r\n userInfo,\r\n initialProcess\r\n });\r\n this.ss.go(\r\n redir\r\n ? redir\r\n : userInfo.payload.Initialroutename,\r\n {\r\n process: {\r\n ...initialProcess,\r\n catId: userInfo.payload.Initialcatid\r\n }\r\n },\r\n { reload: true }\r\n );\r\n } else {\r\n this.ss.go(\r\n redir ? redir : 'dashboard',\r\n {},\r\n { reload: true }\r\n );\r\n // if (userInfo.payload.DefaultRoleGroupID != 0) {\r\n // this.ss.go(\r\n // redir ? redir : 'dashboard',\r\n // {},\r\n // { reload: true }\r\n // );\r\n // } else {\r\n // this.ss.go(\r\n // redir ? redir : 'main',\r\n // {},\r\n // { reload: true }\r\n // );\r\n // }\r\n }\r\n }\r\n // this.store.dispatch(new fromRoot.SetRedirect(null));\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() Logout$ = this.actions$.pipe(\r\n ofType(AuthActionTypes.Logout),\r\n tap(() =>\r\n this.ss.go(\r\n 'main',\r\n {},\r\n {\r\n reload: true,\r\n location: 'replace',\r\n source: 'redirect',\r\n inherit: false\r\n }\r\n )\r\n ),\r\n map(() => new fromShared.Errors.SetErrors([]))\r\n );\r\n}\r\n","import { AuthActionsUnion, AuthActionTypes } from './auth.actions';\r\nimport { IUser } from '../../user-info/IUser';\r\nimport { LoginRequestStatus } from '../../efaact-configuration/efaact-configuration.module';\r\nimport { ISignInDialogData } from '../ISignInDialogData';\r\nimport { IAuthenticateSecurityQuestion } from '../authentication.service';\r\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { IRememberMe } from '../IRememberMe';\r\n\r\n// this state is stand alone, since it is ONLY for authentication/authorization.\r\n// no other part of the app needs to know about it, authentication is handled within\r\n// an http handler that adds auth token to each request.\r\n\r\nexport interface State\r\n extends ISignInDialogData,\r\n IAuthenticateSecurityQuestion,\r\n IRememberMe {\r\n token: string;\r\n loggedIn: boolean;\r\n CustomerID?: string;\r\n}\r\n\r\nexport const initialState: State = {\r\n username: null,\r\n password: null,\r\n pin: null,\r\n accessCode: null,\r\n securityAnswer: null,\r\n securityQuestion: null,\r\n accessCodeDeliveryType: null,\r\n accessCodeRequestMethods: null,\r\n status: LoginRequestStatus.SubmitUsernamePasswordAndPIN,\r\n message: null,\r\n cancel: false,\r\n token: null,\r\n loggedIn: false,\r\n rememberMe: false,\r\n CustomerID: null\r\n};\r\n\r\nexport function reducer(state = initialState, action: AuthActionsUnion): State {\r\n switch (action.type) {\r\n case AuthActionTypes.LoginFailure: {\r\n return {\r\n // ...initialState,\r\n ...state, // don't want to erase username/password/pin,\r\n password:\r\n action.payload.StatusCode ===\r\n LoginRequestStatus.InvalidUsernameOrPassword\r\n ? null\r\n : state.password,\r\n message: action.payload.ErrorMessage\r\n };\r\n }\r\n case AuthActionTypes.LoginSuccess: {\r\n return {\r\n ...state,\r\n loggedIn: true,\r\n token: action.payload.BearerToken,\r\n password: null,\r\n status: LoginRequestStatus.LoginSuccessful,\r\n message: null,\r\n CustomerID: action.payload.CustomerID\r\n };\r\n }\r\n case AuthActionTypes.LoginSelectAccessCode: {\r\n return {\r\n ...state,\r\n status: LoginRequestStatus.SelectAccessCodeMethod,\r\n accessCodeRequestMethods:\r\n action.payload.AccessCodeRequestMethods,\r\n message: null\r\n };\r\n }\r\n case AuthActionTypes.LoginAnswerSecurityQuestion: {\r\n return {\r\n ...state,\r\n status: LoginRequestStatus.AnswerSecurityQuestion,\r\n securityQuestion: action.payload.SecurityQuestion,\r\n message: null\r\n };\r\n }\r\n case AuthActionTypes.LoginAccessCodeSent: {\r\n return {\r\n ...state,\r\n status: LoginRequestStatus.AccessCodeSent,\r\n message: null\r\n };\r\n }\r\n case AuthActionTypes.Logout: {\r\n return {\r\n ...initialState,\r\n username: state.rememberMe ? state.username : null,\r\n pin: state.rememberMe ? state.pin : null,\r\n rememberMe: state.rememberMe\r\n };\r\n }\r\n case AuthActionTypes.SendUsernamePasswordPin: {\r\n return {\r\n ...state,\r\n username: action.payload.username,\r\n password: action.payload.password,\r\n pin: action.payload.pin,\r\n message: null\r\n };\r\n }\r\n case AuthActionTypes.SendAccessCodeMethod: {\r\n return {\r\n ...state,\r\n accessCodeDeliveryType: action.payload.accessCodeDeliveryType,\r\n message: null\r\n };\r\n }\r\n case AuthActionTypes.SendAccessCode: {\r\n return {\r\n ...state,\r\n accessCode: action.payload.accessCode,\r\n message: null\r\n };\r\n }\r\n case AuthActionTypes.SendSecurityAnswer: {\r\n return {\r\n ...state,\r\n securityAnswer: action.payload.securityAnswer,\r\n message: null\r\n };\r\n }\r\n case AuthActionTypes.RememberMe:\r\n return {\r\n ...state,\r\n rememberMe: action.payload.rememberMe,\r\n username: action.payload.username,\r\n pin: action.payload.pin\r\n };\r\n default: {\r\n return state;\r\n }\r\n }\r\n}\r\nconst selectAuthState = createFeatureSelector('auth');\r\nexport const getLoggedIn = createSelector(selectAuthState, x => x.loggedIn);\r\nexport const getAuthToken = createSelector(selectAuthState, x => x.token);\r\nexport const getAuth = createSelector(selectAuthState, x => x);\r\n","export * from './auth.actions';\r\nexport * from './auth.reducer';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, startWith, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { BurdenModel } from '../../data-services/burden';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n flatDeep,\r\n getDynamicColumns,\r\n IColumn,\r\n SelectItem,\r\n uniqBy\r\n} from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n@Component({\r\n selector: 'ef-burden-container',\r\n templateUrl: './burden-container.component.html',\r\n styleUrls: ['./burden-container.component.scss']\r\n})\r\nexport class BurdenContainerComponent implements OnInit, OnDestroy {\r\n BurdenModelDS: EntityCollectionService;\r\n contractDS: EntityCollectionService;\r\n\r\n burdens$: Observable;\r\n // filteredBurdens$: Observable;\r\n contracts$: Observable;\r\n allcontracts$: Observable;\r\n chargeNumbers$: Observable;\r\n contractTypes$: Observable;\r\n colGroups: IColumn[] = [];\r\n cols: IColumn[] = [];\r\n private active = true;\r\n process$: Observable;\r\n SelectContractsSubject = new ReplaySubject(1);\r\n ToggleDetailsSubject = new ReplaySubject(1);\r\n\r\n LoadCloneSubject = new ReplaySubject(1);\r\n\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'BurdenContainerComponent::' });\r\n this.BurdenModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Burden.entityName\r\n );\r\n this.contractDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.BurdenModelDS.clearCache();\r\n this.contractDS.getAll();\r\n this.SelectContractsSubject.pipe(\r\n // startWith(null as string[]),\r\n takeWhile(() => this.active),\r\n tap(contracts =>\r\n this.log.verbose({\r\n type: 'BurdenContainerComponent:SelectContractsSubject',\r\n contracts\r\n })\r\n )\r\n // filter(contracts => !!contracts && contracts.length > 0)\r\n ).subscribe(contracts => {\r\n this.BurdenModelDS.clearCache();\r\n if (contracts && contracts.length > 0) {\r\n this.BurdenModelDS.getWithQuery(\r\n JSON.stringify({\r\n // ContractList: contracts\r\n ContractList: contracts.map(x => ({\r\n ContractListID: x,\r\n ContractDesc: ''\r\n }))\r\n })\r\n );\r\n }\r\n });\r\n\r\n this.LoadCloneSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n value => {\r\n //this.loadClone = value;\r\n }\r\n );\r\n\r\n this.burdens$ = combineLatest([\r\n this.BurdenModelDS.entities$,\r\n this.SelectContractsSubject\r\n ]).pipe(\r\n // filter(([items]) => items && items.length > 0),\r\n map(([items, contracts]) => {\r\n if (contracts && contracts.length > 0) {\r\n if (items && items.length > 0) {\r\n this.mapColumns(items[0], true);\r\n }\r\n return [...clone(items)];\r\n }\r\n return [];\r\n })\r\n );\r\n this.contracts$ = this.BurdenModelDS.entities$.pipe(\r\n // first call is all contracts, don't need to filter after that\r\n map(items => uniqBy(items, x => x.ContractListID)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.ContractDesc,\r\n value: item.ContractListID\r\n }))\r\n )\r\n );\r\n this.allcontracts$ = this.contractDS.entities$.pipe(\r\n map(contracts => contracts.filter(c => c.IsActive && c.ContractType != \"FFP\")),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n ),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.ContractDesc,\r\n value: item.ContractListID\r\n }))\r\n )\r\n );\r\n this.chargeNumbers$ = this.burdens$.pipe(\r\n map(items => uniqBy(items, x => x.ChargeNumber)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.ChargeNumber,\r\n value: item.ChargeNumber\r\n }))\r\n )\r\n );\r\n this.contractTypes$ = this.burdens$.pipe(\r\n map(items => uniqBy(items, x => x.ContractType)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.ContractType,\r\n value: item.ContractType\r\n }))\r\n )\r\n );\r\n\r\n // this.filteredBurdens$ = combineLatest([\r\n // this.SelectContractsSubject.pipe(startWith(null as string[])),\r\n // this.burdens$\r\n // ]).pipe(\r\n // tap(([contracts, burdens]) =>\r\n // this.log.verbose({\r\n // type: 'BurdenContainerComponent:unfiltered',\r\n // burdens,\r\n // contracts\r\n // })\r\n // ),\r\n // map(([contracts, burdens]) =>\r\n // // burdens.filter(i => contracts.includes(i.ContractListID))\r\n // contracts && contracts.length > 0\r\n // ? burdens.filter(i => contracts.includes(i.ContractListID))\r\n // : []\r\n // ),\r\n // tap(burdens =>\r\n // this.log.verbose({\r\n // type: 'BurdenContainerComponent:filtered',\r\n // burdens\r\n // })\r\n // )\r\n // );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n getColSpan(item, column) {\r\n // let keys = Object.keys(item[column]);\r\n const cols = Object.keys(item[column]);\r\n this.log.verbose({\r\n type: 'BurdenContainerComponent:getColSpan',\r\n cols,\r\n column,\r\n item\r\n });\r\n return cols.length;\r\n }\r\n\r\n mapColumns(item: BurdenModel, showDetails: boolean) {\r\n // getBudgetDynamicColumns returns the dynamic column groups, i.e 01January or Week Ending XXX\r\n // each of these groups has data nested under it, i.e. hours, amounts, variance, etc\r\n const filterItems = ['Status', 'Row_Version', 'updates'];\r\n\r\n const dynCols = getDynamicColumns(item, filterItems);\r\n\r\n this.colGroups = dynCols.map(x => ({\r\n field: x,\r\n header: x,\r\n colspan: this.getColSpan(item, x), // apparently width 0 TD's don't count, also remove TxnID\r\n showColumn: showDetails\r\n ? true\r\n : x.toLocaleLowerCase() !== 'general',\r\n group: null\r\n }));\r\n\r\n // this takes the column groups and sets up the columns under each group with an IColumn structure\r\n this.cols = flatDeep(\r\n this.colGroups.map(\r\n cg =>\r\n Object.keys(item[cg.field])\r\n .map(x => ({\r\n group: cg.field,\r\n field: x,\r\n header: x,\r\n exportable: x === 'TxnID' ? false : true,\r\n style:\r\n x === 'TxnID'\r\n ? 'width:0;display:none;'\r\n : 'width: 8em;',\r\n // style: 'width: 7em',\r\n class:\r\n x === 'Amount'\r\n ? 'currency'\r\n : x === 'Hours'\r\n ? 'hours'\r\n : `disabled ${\r\n x.includes('Amount') ? 'currency' : ''\r\n }`,\r\n // class: 'currency',\r\n showColumn: showDetails\r\n ? true\r\n : cg.field.toLocaleLowerCase() !== 'general'\r\n }))\r\n .filter(x => x.showColumn)\r\n // .filter(x => x.group.toLocaleLowerCase() !== 'general' || this.showDetails)\r\n )\r\n );\r\n this.log.verbose({\r\n type: 'BurdenContainerComponent:mapColumns',\r\n cols: this.cols,\r\n colgroups: this.colGroups,\r\n item\r\n });\r\n }\r\n onSelectContract($event) {\r\n this.log.verbose({\r\n type: 'BurdenContainerComponent:onSelectContract',\r\n $event\r\n });\r\n this.LoadCloneSubject.next(true);\r\n this.SelectContractsSubject.next($event);\r\n }\r\n onToggleDetails($event: boolean) {\r\n this.log.verbose({\r\n type: 'BurdenContainerComponent:onToggleDetails',\r\n $event\r\n });\r\n this.LoadCloneSubject.next(true);\r\n this.ToggleDetailsSubject.next($event);\r\n }\r\n onSaveItem(item: BurdenModel) {\r\n\r\n this.log.verbose({\r\n type: 'BurdenContainerComponent:onSaveItem',\r\n item\r\n });\r\n this.LoadCloneSubject.next(false);\r\n this.BurdenModelDS.update(item);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { SelectItem } from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-burden-filters-container',\r\n templateUrl: './burden-filters-container.component.html',\r\n styleUrls: ['./burden-filters-container.component.scss']\r\n})\r\nexport class BurdenFiltersContainerComponent implements OnInit {\r\n @Input() contracts: SelectItem[];\r\n @Output() SelectContract = new EventEmitter();\r\n @Output() ToggleDetails = new EventEmitter();\r\n\r\n constructor(private store: Store) {}\r\n ngOnInit(): void {}\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { SelectItem } from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-burden-filters-presenter',\r\n templateUrl: './burden-filters-presenter.component.html',\r\n styleUrls: ['./burden-filters-presenter.component.scss']\r\n})\r\nexport class BurdenFiltersPresenterComponent implements OnInit, OnDestroy {\r\n @Input() contracts: SelectItem[];\r\n @Output() SelectContract = new EventEmitter();\r\n @Output() ToggleDetails = new EventEmitter();\r\n private active = true;\r\n\r\n filterFormGroup: FormGroup;\r\n constructor() {\r\n this.filterFormGroup = new FormGroup({\r\n Contracts: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterFormGroup.controls['Contracts'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => this.SelectContract.next(value));\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n LOCALE_ID,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { columnResize } from '../../shared/columnResize';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { BurdenModel } from '../../data-services/burden';\r\nimport * as fromShared from '../../shared';\r\nimport { IColumn, ResponseStatus, SelectItem } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { ReplaySubject, combineLatest } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ef-burden-presenter',\r\n templateUrl: './burden-presenter.component.html',\r\n styleUrls: ['./burden-presenter.component.scss']\r\n})\r\nexport class BurdenPresenter\r\n extends fromShared.EditGrid\r\n implements OnInit, OnDestroy\r\n{\r\n @Input() loading: boolean;\r\n @Input() cols: IColumn[] = [];\r\n @Input() colGroups: IColumn[] = [];\r\n @Input() contracts: SelectItem[];\r\n @Input() chargeNumbers: SelectItem[];\r\n @Input() contractTypes: SelectItem[];\r\n @Input() showDetails = false;\r\n\r\n clonedBurdens: BurdenModel[] = [];\r\n checkboxData: BurdenModel;\r\n loadingType: string;\r\n calcDesc: string;\r\n\r\n private LoadCloneSubject = new ReplaySubject(1);\r\n private _loadclone: boolean;\r\n @Input() set loadClone(value: boolean) {\r\n this._loadclone = value;\r\n this.LoadCloneSubject.next(this._loadclone);\r\n }\r\n get loadClone(): boolean {\r\n return this._loadclone;\r\n }\r\n\r\n private BurdensSubject = new ReplaySubject(1);\r\n private _burdens: Array;\r\n @Input() set burdens(value: Array) {\r\n this._burdens = value;\r\n this.BurdensSubject.next(this._burdens);\r\n }\r\n get burdens(): Array {\r\n return this._burdens;\r\n }\r\n\r\n public dropdownItemHeight = environment.dropdownItemHeight;\r\n numCols = 9;\r\n frozenCols: any[] = [\r\n { field: 'Status', header: '' },\r\n { field: 'Contract', header: 'Contract' },\r\n { field: 'Charge Number', header: 'Charge Number' },\r\n { field: 'Contract Type', header: 'Contract Type' }\r\n ];\r\n elements: HTMLCollection;\r\n active = true;\r\n constructor(\r\n private log: LoggingService,\r\n @Inject(LOCALE_ID) private locale: string\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.elements = document.getElementsByClassName('p-header-cell');\r\n }, 0);\r\n\r\n combineLatest([this.BurdensSubject, this.LoadCloneSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([burdens, clone]) => {\r\n if (burdens && burdens.length > 0) {\r\n if (clone == true) {\r\n this.clonedBurdens = this._burdens;\r\n } else {\r\n if (this.checkboxData != null) {\r\n if (\r\n burdens.some(x => x.Status.StatusCode == 3) ==\r\n true\r\n ) {\r\n const match = burdens.find(x => x.CNListID == this.checkboxData.CNListID);\r\n this.checkboxData[this.calcDesc] = {\r\n [this.loadingType]: match[this.calcDesc][this.loadingType]\r\n };\r\n this.checkboxData.Status = {\r\n StatusCode: ResponseStatus.Error,\r\n Message: 'Update Failed'\r\n };\r\n } else {\r\n const match = burdens.find(x => x.CNListID == this.checkboxData.CNListID);\r\n this.checkboxData[this.calcDesc] = {\r\n [this.loadingType]: match[this.calcDesc][this.loadingType]\r\n };\r\n this.checkboxData.Status = {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Success'\r\n };\r\n }\r\n }\r\n }\r\n } else {\r\n this.clonedBurdens = [];\r\n }\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n onExport($event: { data: any; field: string }) {\r\n return $event.data;\r\n }\r\n\r\n // formatColumn = (item: BurdenModel, col: IColumn) => {\r\n // try {\r\n // if (item && item[col.group]) {\r\n // switch (col.field) {\r\n // default:\r\n // return item[col.group][col.field];\r\n // break;\r\n // }\r\n // }\r\n // return '';\r\n // } catch (e) {\r\n // this.log.error(e, item, col);\r\n // }\r\n // };\r\n checkboxChanged(e, data: BurdenModel, calcDesc, loadingType) {\r\n this.log.verbose({\r\n type: 'BurdenPresenter:checkboxChanged',\r\n e,\r\n data,\r\n calcDesc,\r\n loadingType\r\n });\r\n this.checkboxData = data;\r\n this.calcDesc = calcDesc;\r\n this.loadingType = loadingType;\r\n // data.Status = {\r\n // StatusCode: ResponseStatus.Loading,\r\n // Message: 'Saving'\r\n // };\r\n //// (data[calcDesc] as any).loading = true;\r\n this.SaveItem.next({\r\n id: data.id,\r\n CNlistid: data.CNListID,\r\n Calcdesc: calcDesc,\r\n Loadingtype: loadingType,\r\n LoadYesNo: e.currentTarget.checked\r\n } as any);\r\n // this.SettingChangedSubject.next({ value: $event.checked, data });\r\n }\r\n\r\n onColumnResize($event) {\r\n const table = document.querySelector('table');\r\n columnResize($event, 4, table);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { BurdenContainerComponent } from './burden-container/burden-container.component';\r\nimport { BurdenFiltersContainerComponent } from './burden-filters-container/burden-filters-container.component';\r\nimport { BurdenFiltersPresenterComponent } from './burden-filters-presenter/burden-filters-presenter.component';\r\nimport { BurdenPresenter } from './burden-presenter/burden-presenter.component';\r\nimport { BurdenRoute } from './burden.route';\r\n\r\n@NgModule({\r\n declarations: [\r\n BurdenContainerComponent,\r\n BurdenPresenter,\r\n BurdenFiltersContainerComponent,\r\n BurdenFiltersPresenterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [BurdenRoute]\r\n })\r\n ]\r\n})\r\nexport class BurdenModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { BurdenContainerComponent } from './burden-container/burden-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const BurdenRoute: Ng2StateDeclaration = {\r\n // name: 'Burden.**'\r\n name: 'burden',\r\n url: '/burden',\r\n // , loadChildren: () => import('./burden.module').then(r => r.BurdenModule)\r\n data: { requiresAuth: true },\r\n\r\n component: BurdenContainerComponent\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { Transition, UIRouterModule } from '@uirouter/angular';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport * as fromCheckup from './features';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n UIRouterModule.forChild({\r\n // TODO: will having all these here mess with lazy loading of modules?\r\n // https://ui-router.github.io/guide/lazyloading\r\n states: [\r\n {\r\n // name: 'efcheckup.**',\r\n name: 'efcheckup',\r\n url: '/efcheckup',\r\n // loadChildren: () => import('./checkup.module').then(r => r.CheckupModule),\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromCheckup.CheckupFeatureComponent\r\n },\r\n {\r\n name: 'efcheckup.timecard',\r\n url: '/timecard',\r\n component: fromCheckup.CheckupFeatureComponent\r\n },\r\n {\r\n name: 'efcheckup.expense',\r\n url: '/expense',\r\n component: fromCheckup.CheckupFeatureComponent\r\n },\r\n {\r\n name: 'efcheckup.qbsynclists',\r\n url: '/qbsynclists',\r\n component: fromCheckup.CheckupFeatureComponent\r\n },\r\n {\r\n name: 'efcheckup.qbsendhours',\r\n url: '/qbsendhours',\r\n component: fromCheckup.CheckupFeatureComponent\r\n },\r\n {\r\n name: 'efcheckup.qbsendexpenses',\r\n url: '/qbsendexpenses',\r\n component: fromCheckup.CheckupFeatureComponent\r\n },\r\n {\r\n name: 'efcheckup.qbprocessperiod',\r\n url: '/qbprocessperiod',\r\n component: fromCheckup.CheckupFeatureComponent\r\n },\r\n {\r\n name: 'efcheckup.qbsendeinvoices',\r\n url: '/qbsendeinvoices',\r\n component: fromCheckup.CheckupFeatureComponent\r\n }\r\n ]\r\n })\r\n ]\r\n})\r\nexport class CheckupRouteModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromCheckup from './store/checkup.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { CheckupEffects } from './store/checkup.effects';\r\nimport { CheckupFeatureComponent } from './features/checkup-feature.component';\r\nimport { CheckupPresenterComponent } from './presenters/checkup-presenter.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\n\r\n@NgModule({\r\n declarations: [CheckupFeatureComponent, CheckupPresenterComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n StoreModule.forFeature(\r\n fromCheckup.checkupsFeatureKey,\r\n fromCheckup.reducer\r\n ),\r\n EffectsModule.forFeature([CheckupEffects])\r\n ]\r\n})\r\nexport class CheckupModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { Checkup } from './store';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { Guid } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CheckupService {\r\n private uri = `${environment.apiLocation}/eFCheckup`;\r\n\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n public get(\r\n ProcessID?: number,\r\n EmployeeListID?: string\r\n ): Observable> {\r\n this.log.verbose({ type: 'CheckupService:get', ProcessID });\r\n const _uri = !!ProcessID\r\n ? `${this.uri}/?EmployeeListID=${EmployeeListID}&ProcessID=${ProcessID}`\r\n : `${this.uri}/?EmployeeListID=${EmployeeListID}`;\r\n return this.http.get>(_uri).pipe(\r\n tap((data) => this.log.verbose({ type: 'getCheckup', data })),\r\n map((checkups) =>\r\n checkups.map((x) => ({ ...x, id: Guid.newGuid() }))\r\n )\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ChangeDetectionStrategy,\r\n Input,\r\n AfterViewInit,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\r\nimport * as fromStore from '../store';\r\nimport * as fromUser from '../../user-info/store';\r\nimport * as fromShared from '../../shared';\r\nimport { takeWhile, map } from 'rxjs/operators';\r\nimport { IUserInfo } from '../../user-info/IUserInfo';\r\n\r\n@Component({\r\n selector: 'ef-checkup-feature',\r\n templateUrl: './checkup-feature.component.html',\r\n styleUrls: ['./checkup-feature.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CheckupFeatureComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n process$: Observable;\r\n checkups$: Observable>;\r\n processes$: Observable>;\r\n userInfo$: Observable;\r\n private active = true;\r\n loadingText = 'Loading checkup...';\r\n constructor(private store: Store) {}\r\n\r\n ngOnInit() {\r\n this.checkups$ = this.store.pipe(select(fromStore.selectAll));\r\n this.processes$ = this.store.pipe(select(fromUser.getUserProcesses));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n combineLatest([this.process$, this.userInfo$])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, user]) => {\r\n this.store.dispatch(\r\n fromStore.getCheckups({\r\n ProcessID:\r\n process.ProcessID === 145\r\n ? null\r\n : process.ProcessID,\r\n EmployeeListID: user.EmployeeListID\r\n })\r\n );\r\n });\r\n }\r\n}\r\n","export * from './checkup-feature.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { StateService } from '@uirouter/angular';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromShared from '../../shared';\r\nimport { Process } from '../../shared';\r\nimport {\r\n FilterService,\r\n SelectItem,\r\n Table\r\n} from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\n\r\n@Component({\r\n selector: 'ef-checkup-presenter',\r\n templateUrl: './checkup-presenter.component.html',\r\n styleUrls: ['./checkup-presenter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CheckupPresenterComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n processSelectItem: SelectItem[];\r\n nameSelectItem: SelectItem[];\r\n @ViewChild('dtCheckup') checkupTable: Table;\r\n dateFilters: any;\r\n private CheckupsSubject = new ReplaySubject>(1);\r\n private _checkups: Array;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n @Input() public set checkups(value: Array) {\r\n this._checkups = value;\r\n this.CheckupsSubject.next(this._checkups);\r\n if (value) {\r\n // value = value.map(x => ({\r\n // ...x,\r\n // MsgDate: new Date(x.MsgDate)\r\n // }));\r\n this.processSelectItem = fromShared\r\n .uniqBy(value, x => x.MsgProcessID)\r\n .map(x => ({\r\n label: x.ProcessTitle,\r\n value: x.MsgProcessID\r\n }));\r\n this.nameSelectItem = fromShared\r\n .uniqBy(value, x => x.MsgEntityID)\r\n .map(x => ({\r\n label: x.MsgEntity,\r\n value: x.MsgEntityID\r\n }));\r\n }\r\n\r\n }\r\n public get checkups(): Array {\r\n return this._checkups;\r\n }\r\n private _processes: Array;\r\n private ProcessesSubject = new ReplaySubject>(1);\r\n @Input() public set processes(value: Array) {\r\n this._processes = value;\r\n this.ProcessesSubject.next(this._processes);\r\n }\r\n public get processes(): Array {\r\n return this._processes;\r\n }\r\n public processItems: SelectItem[];\r\n public entityNames: SelectItem[];\r\n public get categoryItems(): SelectItem[] {\r\n return fromShared\r\n .uniqBy(this._checkups, x => x.CatDescription)\r\n .map(x => ({\r\n label: x.CatDescription,\r\n value: x.CatDescription\r\n }));\r\n }\r\n private active = true;\r\n cols = [\r\n { field: 'CatDescription', header: 'Category' },\r\n { field: 'ProcessTitle', header: 'Process' },\r\n { field: 'MsgDate', header: 'Date' },\r\n { field: 'MsgEntity', header: 'Name' },\r\n { field: 'MsgText', header: 'Message' },\r\n { field: 'MsgAction', header: 'Action' }\r\n ];\r\n constructor(\r\n public ss: StateService,\r\n private log: LoggingService,\r\n private filterService: FilterService\r\n ) {}\r\n ngOnInit() {\r\n this.setupSubscriptions();\r\n }\r\n ngAfterViewInit() {\r\n this.addDateRangeFilter();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.CheckupsSubject, this.ProcessesSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([checkups, processes]) => {\r\n this.processItems = fromShared\r\n .uniqBy(\r\n checkups.map(x => ({\r\n value: processes.find(\r\n p => p.ProcessID === x.MsgProcessID\r\n )\r\n ? processes.find(\r\n p => p.ProcessID === x.MsgProcessID\r\n ).ProcessID\r\n : 0,\r\n label: x.ProcessTitle\r\n })),\r\n x => x.value\r\n )\r\n .sort((a, b) =>\r\n a.label\r\n .toLocaleLowerCase()\r\n .localeCompare(b.label.toLocaleLowerCase())\r\n );\r\n this.entityNames = fromShared\r\n .uniqBy(\r\n checkups.map(x => ({\r\n value: x.MsgEntity,\r\n label: x.MsgEntity\r\n })),\r\n x => x.value\r\n )\r\n .sort((a, b) =>\r\n a.label\r\n .toLocaleLowerCase()\r\n .localeCompare(b.label.toLocaleLowerCase())\r\n );\r\n this.log.verbose({\r\n type: 'CheckupPresenterComponent:processItems',\r\n checkups,\r\n processes,\r\n processItems: this.processItems\r\n });\r\n });\r\n }\r\n\r\n addDateRangeFilter() {\r\n this.filterService.register(\r\n 'dateRangeFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'CheckupPresenterComponent:addDateRangeFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.dateFilters[0]),\r\n moment(this.dateFilters[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n }\r\n filterDate(event) {\r\n this.checkupTable.filter(\r\n moment(event).format('MM/DD/YYYY'),\r\n 'MsgDate',\r\n 'contains'\r\n );\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Checkup } from './checkup.model';\r\n\r\nexport const loadCheckups = createAction(\r\n '[Checkup/API] Load Checkups',\r\n props<{ checkups: Checkup[] }>()\r\n);\r\n\r\nexport const addCheckup = createAction(\r\n '[Checkup/API] Add Checkup',\r\n props<{ checkup: Checkup }>()\r\n);\r\n\r\nexport const upsertCheckup = createAction(\r\n '[Checkup/API] Upsert Checkup',\r\n props<{ checkup: Checkup }>()\r\n);\r\n\r\nexport const addCheckups = createAction(\r\n '[Checkup/API] Add Checkups',\r\n props<{ checkups: Checkup[] }>()\r\n);\r\n\r\nexport const upsertCheckups = createAction(\r\n '[Checkup/API] Upsert Checkups',\r\n props<{ checkups: Checkup[] }>()\r\n);\r\n\r\nexport const updateCheckup = createAction(\r\n '[Checkup/API] Update Checkup',\r\n props<{ checkup: Update }>()\r\n);\r\n\r\nexport const updateCheckups = createAction(\r\n '[Checkup/API] Update Checkups',\r\n props<{ checkups: Update[] }>()\r\n);\r\n\r\nexport const deleteCheckup = createAction(\r\n '[Checkup/API] Delete Checkup',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteCheckups = createAction(\r\n '[Checkup/API] Delete Checkups',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearCheckups = createAction('[Checkup/API] Clear Checkups');\r\nexport const getCheckups = createAction(\r\n '[Checkup/API] Get Checkups',\r\n props<{ ProcessID?: number, EmployeeListID?: string }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, concatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { CheckupService } from '../checkup.service';\r\nimport * as fromCheckup from './checkup.actions';\r\n\r\n@Injectable()\r\nexport class CheckupEffects {\r\n constructor(\r\n private log: LoggingService,\r\n private actions$: Actions,\r\n private service: CheckupService\r\n ) {}\r\n\r\n getCheckup$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromCheckup.getCheckups),\r\n switchMap(action =>\r\n this.service.get(action.ProcessID, action.EmployeeListID).pipe(\r\n concatMap(checkups =>\r\n checkups\r\n ? [\r\n fromCheckup.clearCheckups(),\r\n fromCheckup.loadCheckups({\r\n checkups\r\n })\r\n ]\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n checkups,\r\n 'Checkups'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","export interface Checkup {\r\n id: string;\r\n CatDescription: string;\r\n ProcessTitle: string;\r\n MsgProcessID: number;\r\n MsgDate: Date;\r\n MsgStatus: number;\r\n MsgText: string;\r\n MsgAction: string;\r\n MsgEntityID: string;\r\n MsgEntity: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport * as CheckupActions from './checkup.actions';\r\nimport { Checkup } from './checkup.model';\r\n\r\nexport const checkupsFeatureKey = 'checkups';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: Checkup) => model.id\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst checkupReducer = createReducer(\r\n initialState,\r\n on(CheckupActions.addCheckup, (state, action) =>\r\n adapter.addOne(action.checkup, state)\r\n ),\r\n on(CheckupActions.upsertCheckup, (state, action) =>\r\n adapter.upsertOne(action.checkup, state)\r\n ),\r\n on(CheckupActions.addCheckups, (state, action) =>\r\n adapter.addMany(action.checkups, state)\r\n ),\r\n on(CheckupActions.upsertCheckups, (state, action) =>\r\n adapter.upsertMany(action.checkups, state)\r\n ),\r\n on(CheckupActions.updateCheckup, (state, action) =>\r\n adapter.updateOne(action.checkup, state)\r\n ),\r\n on(CheckupActions.updateCheckups, (state, action) =>\r\n adapter.updateMany(action.checkups, state)\r\n ),\r\n on(CheckupActions.deleteCheckup, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(CheckupActions.deleteCheckups, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(CheckupActions.loadCheckups, (state, action) =>\r\n adapter.setAll(action.checkups, state)\r\n ),\r\n on(CheckupActions.clearCheckups, state => adapter.removeAll(state))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return checkupReducer(state, action);\r\n}\r\nconst localState = createFeatureSelector(checkupsFeatureKey);\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\n","export * from './checkup.model';\r\nexport * from './checkup.actions';\r\nexport * from './checkup.effects';\r\nexport * from './checkup.reducer';\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { ContractClassEffects } from './store/contract-class.effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as reducer from './store/contract-class.reducer';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(\r\n reducer.contractClassesFeatureKey,\r\n reducer.reducer\r\n ),\r\n EffectsModule.forFeature([ContractClassEffects])\r\n ]\r\n})\r\nexport class ClassModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { ContractClass } from './store/contract-class.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ClassService {\r\n\r\n constructor(private http: HttpClient, private log: LoggingService) { }\r\n\r\n private uri = `${environment.apiLocation}/ContractClass`;\r\n\r\n public postContractClass(contractListID: string): Observable> {\r\n this.log.verbose({\r\n type: 'ClassService:postContractClass',\r\n uri: this.uri\r\n });\r\n return this.http\r\n .post>(this.uri,\r\n {\r\n ContractListID: contractListID\r\n }\r\n )\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ClassService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putContractClass(\r\n contractClasses: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.uri, {\r\n ContractClassList: contractClasses\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ClassService:putContractClass',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ClassPresenterComponent } from '../presenter/class-presenter.component';\r\nimport * as fromActions from '../store/contract-class.actions';\r\nimport { ContractClass } from '../store/contract-class.model';\r\nimport * as fromReducer from '../store/contract-class.reducer';\r\n@Component({\r\n selector: 'ef-class-feature',\r\n templateUrl: './class-feature.component.html',\r\n styleUrls: ['./class-feature.component.scss']\r\n})\r\nexport class ClassFeatureComponent implements OnInit, AfterViewInit, OnDestroy {\r\n process$: Observable;\r\n\r\n @ViewChild(ClassPresenterComponent, { static: true })\r\n presenter: ClassPresenterComponent;\r\n\r\n public contractClasses$: Observable;\r\n public contracts$: Observable;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n\r\n active = true;\r\n dataService: EntityCollectionService;\r\n ShowError = new ReplaySubject(1);\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.dataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.dataService.getAll();\r\n // this.store.dispatch(fromLookups.ContractActions.getContracts());\r\n this.setupObservables();\r\n }\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.store.dispatch(fromActions.clearContractClasss());\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.contractClasses$ = this.store.pipe(\r\n select(fromReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n\r\n this.contracts$ = this.dataService.entities$.pipe(\r\n map(x => (x = x.filter(y => y.IsActive === true))),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n )\r\n );\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n\r\n onLoadContractClasses($event) {\r\n this.log.verbose({\r\n type: 'ClassFeatureComponent:onLoadContractClasses'\r\n });\r\n this.store.dispatch(\r\n fromActions.postContractClass({ ContractListID: $event })\r\n );\r\n }\r\n\r\n onSaveContractClasses($event) {\r\n this.log.verbose({\r\n type: 'ClassFeatureComponent:onSaveContractClasses'\r\n });\r\n this.store.dispatch(\r\n fromActions.putContractClass({ contractClasses: $event })\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IStatusMessage, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { Process } from '../../shared';\r\nimport { SelectItem, Table } from '../../shared/efaact-primeng.module';\r\nimport { ContractClass } from '../store/contract-class.model';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-class-presenter',\r\n templateUrl: './class-presenter.component.html',\r\n styleUrls: ['./class-presenter.component.scss']\r\n})\r\nexport class ClassPresenterComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n SelectedErrorSubject = new ReplaySubject(1);\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.SelectedErrorSubject.next(value);\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n @Output() public ShowError = new EventEmitter();\r\n\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n\r\n private ContractClassSubject = new ReplaySubject>(1);\r\n private _contractclasses: Array;\r\n @Input() set contractClasses(value: Array) {\r\n if (value) {\r\n this._contractclasses = value;\r\n this.ContractClassSubject.next(value);\r\n this.classesSelectItem = value.map(x => ({\r\n value: x.ClassListID,\r\n label: x.ClassName\r\n }));\r\n }\r\n }\r\n get contractClasses(): Array {\r\n return this._contractclasses;\r\n }\r\n\r\n private ContractsSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n if (value && value.length > 0) {\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n this.contractsSelectItem = value.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n }\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n @Input() public process: Process;\r\n\r\n active = true;\r\n\r\n @Output() LoadContractClasses = new ReplaySubject(1);\r\n @Output() SaveContractClasses = new ReplaySubject(1);\r\n\r\n @Output() Select = new ReplaySubject(1);\r\n selected: ContractClass[];\r\n selectedContractListID: string;\r\n selectedContract = 'Contract';\r\n oldListID: string;\r\n contractsSelectItem: SelectItem[];\r\n classesSelectItem: SelectItem[];\r\n @ViewChild(Table, { static: true }) ContractTable: Table;\r\n @ViewChild(Table, { static: true }) ClassesTable: Table;\r\n\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'ClassPresenterComponent:setupSubscriptions'\r\n });\r\n }\r\n\r\n classesClicked(contractListID, contractDesc) {\r\n if (this.oldListID) {\r\n const oldRow = document.getElementById(`row-${this.oldListID}`);\r\n oldRow.classList.remove('highlight');\r\n }\r\n\r\n this.oldListID = contractListID;\r\n const row = document.getElementById(`row-${contractListID}`);\r\n row.classList.add('highlight');\r\n this.selectedContractListID = contractListID;\r\n this.selectedContract = contractDesc;\r\n this.LoadContractClasses.next(contractListID);\r\n }\r\n\r\n onRowSelect($event) {\r\n this.log.verbose({\r\n type: 'ClassPresenterComponent:onRowSelect',\r\n $event\r\n });\r\n this.Select.next($event.data);\r\n // this.selected = $event.data;\r\n }\r\n\r\n IsContractClassChecked($event, rowData) {\r\n this.SaveContractClasses.next([\r\n {\r\n ContractListID: this.selectedContractListID,\r\n ClassListID: rowData.ClassListID,\r\n IsContractClass: rowData.IsContractClass\r\n }\r\n ]);\r\n }\r\n\r\n assignAllClicked() {\r\n this.contractClasses.forEach(x => {\r\n x.IsContractClass = true;\r\n x.ContractListID = this.selectedContractListID;\r\n });\r\n this.SaveContractClasses.next(this.contractClasses);\r\n }\r\n\r\n unassignAllClicked() {\r\n this.contractClasses.forEach(x => {\r\n x.IsContractClass = false;\r\n x.ContractListID = this.selectedContractListID;\r\n });\r\n this.SaveContractClasses.next(this.contractClasses);\r\n }\r\n\r\n // filterContracts($event) {\r\n\r\n // this.\r\n // }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { ContractClass } from './contract-class.model';\r\n\r\nexport const postContractClass = createAction(\r\n '[ContractClass/API] POST ContractClasses',\r\n props<{ ContractListID: string }>()\r\n);\r\n\r\nexport const putContractClass = createAction(\r\n '[ContractClass/API] PUT ContractClasses',\r\n props<{ contractClasses: Array}>()\r\n);\r\n\r\nexport const loadContractClasses = createAction(\r\n '[ContractClass/API] Load ContractClasses',\r\n props<{ contractClasses: ContractClass[] }>()\r\n);\r\n\r\nexport const addContractClass = createAction(\r\n '[ContractClass/API] Add ContractClass',\r\n props<{ contractClass: ContractClass }>()\r\n);\r\n\r\nexport const upsertContractClass = createAction(\r\n '[ContractClass/API] Upsert ContractClass',\r\n props<{ contractClass: ContractClass }>()\r\n);\r\n\r\nexport const addContractClasses = createAction(\r\n '[ContractClass/API] Add ContractClasses',\r\n props<{ contractClasses: ContractClass[] }>()\r\n);\r\n\r\nexport const upsertContractClasses = createAction(\r\n '[ContractClass/API] Upsert ContractClasses',\r\n props<{ contractClasses: ContractClass[] }>()\r\n);\r\n\r\nexport const updateContractClass = createAction(\r\n '[ContractClass/API] Update ContractClass',\r\n props<{ contractClass: Update }>()\r\n);\r\n\r\nexport const updateContractClasses = createAction(\r\n '[ContractClass/API] Update ContractClasses',\r\n props<{ contractClasses: Update[] }>()\r\n);\r\n\r\nexport const deleteContractClass = createAction(\r\n '[ContractClass/API] Delete ContractClass',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteContractClasses = createAction(\r\n '[ContractClass/API] Delete ContractClasses',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearContractClasss = createAction(\r\n '[ContractClass/API] Clear ContractClasss'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as CCActions from './contract-class.actions';\r\nimport {\r\n ResponseStatus,\r\n IStatusMessage,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { ClassService } from '../class.service';\r\n\r\n@Injectable()\r\nexport class ContractClassEffects {\r\n constructor(private actions$: Actions, private service: ClassService) {}\r\n\r\n postContractClass$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(CCActions.postContractClass),\r\n switchMap(a =>\r\n this.service.postContractClass(a.ContractListID).pipe(\r\n flatMap(resp => [\r\n CCActions.loadContractClasses({\r\n contractClasses: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.ClassListID)\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putContractClass$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(CCActions.putContractClass),\r\n switchMap(a =>\r\n this.service.putContractClass(a.contractClasses).pipe(\r\n flatMap(c => [\r\n CCActions.updateContractClasses({\r\n contractClasses: [\r\n {\r\n id: a.contractClasses\r\n .map(x => x.ClassListID)\r\n .toString(),\r\n changes: c.Items[0]\r\n }\r\n ]\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.ClassListID)\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { ContractClass } from './contract-class.model';\r\nimport * as ContractClassActions from './contract-class.actions';\r\n\r\nexport const contractClassesFeatureKey = 'contractClasses';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({selectId: (model: ContractClass) => model.ClassListID});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\n\r\nexport const classReducer = createReducer(\r\n initialState,\r\n on(ContractClassActions.addContractClass,\r\n (state, action) => adapter.addOne(action.contractClass, state)\r\n ),\r\n on(ContractClassActions.upsertContractClass,\r\n (state, action) => adapter.upsertOne(action.contractClass, state)\r\n ),\r\n on(ContractClassActions.addContractClasses,\r\n (state, action) => adapter.addMany(action.contractClasses, state)\r\n ),\r\n on(ContractClassActions.upsertContractClasses,\r\n (state, action) => adapter.upsertMany(action.contractClasses, state)\r\n ),\r\n on(ContractClassActions.updateContractClass,\r\n (state, action) => adapter.updateOne(action.contractClass, state)\r\n ),\r\n on(ContractClassActions.updateContractClasses,\r\n (state, action) => adapter.updateMany(action.contractClasses, state)\r\n ),\r\n on(ContractClassActions.deleteContractClass,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(ContractClassActions.deleteContractClasses,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(ContractClassActions.loadContractClasses,\r\n (state, action) => adapter.setAll(action.contractClasses, state)\r\n ),\r\n on(ContractClassActions.clearContractClasss,\r\n state => adapter.removeAll(state)\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return classReducer(state, action);\r\n}\r\n\r\nexport const selectContractClassState = createFeatureSelector(\r\n contractClassesFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors(selectContractClassState);\r\n","import { IStatusMessage } from './Interfaces';\r\n\r\nexport interface IAttachment {\r\n Blob: Blob;\r\n Unique_Id?: string;\r\n File_unique_id: string;\r\n Attachmentprocess: string;\r\n EntityId: number;\r\n Expense_id?: number; // used for the api call until it is made to use generic entityid\r\n File: string;\r\n Filename: string;\r\n Filesize: number;\r\n Filemimetype: string;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n SafeResource: any;\r\n}\r\n","import { MenuItem } from '../shared/efaact-primeng.module';\r\n\r\nexport interface IStatusMessage {\r\n StatusCode: ResponseStatus;\r\n Message: string;\r\n MsgProcessID?: number;\r\n MsgEntityID?: string | number;\r\n}\r\nexport interface IPessimisticUpdate {\r\n Row_Version?: string;\r\n}\r\nexport enum ResponseStatus {\r\n Unknown = -1,\r\n None = 0,\r\n Success = 1,\r\n Warning = 2,\r\n Failed = 3,\r\n Error = 3,\r\n ConcurrencyViolation = 4,\r\n PartialSuccess = 5,\r\n LoginExpired = 6,\r\n Adding = 10,\r\n ClientError = 50,\r\n FileFormatError = 51,\r\n Loading = 99\r\n}\r\nexport const DisplayMessageMinimum = ResponseStatus.Warning;\r\n\r\nexport enum DateOperator {\r\n GreaterThan = 'gt',\r\n GreaterThanOrEqual = 'ge',\r\n Equal = 'eq',\r\n LessThanOrEqual = 'le',\r\n LessThan = 'lt'\r\n}\r\n\r\nexport interface IDateAndOperator {\r\n Date: Date;\r\n Operator: DateOperator;\r\n}\r\nexport declare type IId = string | number;\r\nexport interface IModelWithId {\r\n id: IId;\r\n}\r\nexport interface IModelWithOptionalId {\r\n id?: IId;\r\n}\r\n// TODO: switch this to extend IModelWithId\r\nexport interface IModelBase extends IModelWithOptionalId {\r\n Status?: IStatusMessage;\r\n}\r\n\r\nexport interface IDeleteEntity extends IPessimisticUpdate {\r\n EntityID: IId;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\nexport interface IGenericResponse {\r\n id?: IId;\r\n processId?: number;\r\n StatusCode: number;\r\n ErrorMessages: Array;\r\n WarningMessages: Array;\r\n Items: Array;\r\n StatusType: string;\r\n}\r\n\r\nexport interface IColumn extends MenuItem {\r\n field: string;\r\n header: string;\r\n style?: string;\r\n class?: string;\r\n formatType?: string;\r\n format?: string;\r\n colspan?: number;\r\n showColumn: boolean;\r\n group: string;\r\n exportable?: boolean;\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n OnDestroy,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormGroup,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { AbstractNgModelComponent } from './abstract-ng-model-component';\r\n\r\n@Component({ template: '' })\r\nexport class AbstractFormGroupComponent\r\n extends AbstractNgModelComponent\r\n implements Validator, OnDestroy {\r\n @Output() ValidChanged = new EventEmitter();\r\n protected form: FormGroup;\r\n private _active = true;\r\n constructor(\r\n @Inject(LoggingService) protected log: LoggingService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n super(log, cdRef);\r\n }\r\n writeValue(value: any): void {\r\n this.log.debug({\r\n type: 'AbstractFormGroupComponent:writeValue',\r\n value,\r\n form: this.form\r\n });\r\n // tslint:disable-next-line:no-unused-expression\r\n // value && this.form.setValue(value, { emitEvent: false });\r\n // tslint:disable-next-line:no-unused-expression\r\n value && this.form.setValue(value);\r\n // this.validate(this.form);\r\n setTimeout(() => this.cdRef.detectChanges(), 0);\r\n }\r\n registerOnChange(fn: any): void {\r\n this.log.debug({\r\n type: 'AbstractFormGroupComponent:registerOnChange',\r\n fn\r\n });\r\n this.form.valueChanges\r\n .pipe(takeWhile(() => this._active))\r\n .subscribe(fn);\r\n }\r\n ngOnDestroy(): void {\r\n this._active = false;\r\n }\r\n validate(c: AbstractControl): ValidationErrors | null {\r\n // this.log.verbose({type: 'AbstractFormGroupComponent:validate', c, form: this.form, valid: this.form.valid, errors: c.errors});\r\n\r\n // return this.form && this.form.errors;\r\n\r\n // return this.form.valid\r\n // ? null\r\n // : { invalidForm: { valid: false, message: c.errors } };\r\n\r\n // return this.form.errors;\r\n return this.form.valid\r\n ? null\r\n : this.form.errors || {\r\n invalidForm: 'INVALID'\r\n };\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, Inject, Input } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n@Component({ template: '' })\r\nexport class AbstractNgModelComponent implements ControlValueAccessor {\r\n @Input() public disabled: boolean;\r\n\r\n @Input() set value(value: T) {\r\n this.log.debug({ type: 'AbstractNgModelComponent:value:set', value });\r\n this._value = value;\r\n this.notifyValueChange(value);\r\n }\r\n\r\n get value(): T {\r\n return this._value;\r\n }\r\n\r\n protected _value: T;\r\n\r\n constructor(\r\n @Inject(LoggingService) protected log: LoggingService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {}\r\n onChange: (value: T) => {};\r\n onTouched: () => {};\r\n onValidate: () => void;\r\n notifyValueChange(value: any): void {\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n writeValue(value: T): void {\r\n this.log.debug({ type: 'AbstractNgModelComponent:writeValue', value });\r\n this._value = value;\r\n setTimeout(() => this.cdRef.detectChanges(), 0);\r\n }\r\n registerOnChange(fn: any): void {\r\n this.log.debug({\r\n type: 'AbstractNgModelComponent:registerOnChange',\r\n fn\r\n });\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.log.debug({\r\n type: 'AbstractNgModelComponent:registerOnTouched',\r\n fn\r\n });\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","import {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpParams,\r\n HttpRequest\r\n} from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n@Injectable()\r\nexport class CacheBusterInterceptor implements HttpInterceptor {\r\n /**\r\n *\r\n */\r\n constructor(@Inject(LoggingService) private log: LoggingService) {}\r\n\r\n public intercept(\r\n req: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n // Clone the request to add the new header\r\n let clonedRequest;\r\n this.log.verbose({ type: 'CacheBusterInterceptor', url: req.url });\r\n if (req.url.indexOf('.html') >= 0) {\r\n this.log.verbose({\r\n type: 'CacheBusterInterceptor:busting',\r\n url: req.url\r\n });\r\n // clonedRequest = req.clone({url: req.url.concat()});\r\n const version = new HttpParams();\r\n version.append('v', environment.version);\r\n clonedRequest = req.clone({ params: version });\r\n } else {\r\n clonedRequest = req;\r\n }\r\n\r\n // Pass the cloned request instead of the original request to the next handle\r\n // return next.handle(clonedRequest)\r\n return next.handle(clonedRequest);\r\n }\r\n}\r\n","export function deepEquals (x, y) {\r\n if (x === y) {\r\n return true; // if both x and y are null or undefined and exactly the same\r\n } else if (!(x instanceof Object) || !(y instanceof Object)) {\r\n return false; // if they are not strictly equal, they both need to be Objects\r\n } else if (x.constructor !== y.constructor) {\r\n // they must have the exact same prototype chain, the closest we can do is\r\n // test their constructor.\r\n return false;\r\n } else {\r\n for (const p in x) {\r\n if (!x.hasOwnProperty(p)) {\r\n continue; // other properties were tested using x.constructor === y.constructor\r\n }\r\n if (!y.hasOwnProperty(p)) {\r\n return false; // allows to compare x[ p ] and y[ p ] when set to undefined\r\n }\r\n if (x[p] === y[p]) {\r\n continue; // if they have the same strict value or identity then they are equal\r\n }\r\n if (typeof (x[p]) !== 'object') {\r\n return false; // Numbers, Strings, Functions, Booleans must be strictly equal\r\n }\r\n if (!deepEquals(x[p], y[p])) {\r\n return false;\r\n }\r\n }\r\n for (const p in y) {\r\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","export function flatDeep(arr: any[], d = 9): T[] {\r\n return d > 0\r\n ? arr.reduce(\r\n (acc, val) =>\r\n acc.concat(\r\n Array.isArray(val) ? flatDeep(val, d - 1) : val\r\n ),\r\n []\r\n )\r\n : arr.slice();\r\n}\r\n","export * from './Interfaces';\r\nexport * from './IAttachment';\r\nexport * from './abstract-ng-model-component';\r\nexport * from './abstract-form-group-component';\r\nexport * from './deepEquals';\r\nexport * from './safe.pipe';\r\nexport * from './flatDeep';\r\nexport * from './service-testing-helper';\r\nexport * from './formatMoney';\r\nexport * from './cache-buster-interceptor';\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {\r\n DomSanitizer,\r\n SafeHtml,\r\n SafeStyle,\r\n SafeScript,\r\n SafeUrl,\r\n SafeResourceUrl\r\n} from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safe'\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n constructor(protected sanitizer: DomSanitizer) {}\r\n\r\n public transform(\r\n value: any,\r\n type: string\r\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n switch (type) {\r\n case 'html':\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n case 'style':\r\n return this.sanitizer.bypassSecurityTrustStyle(value);\r\n case 'script':\r\n return this.sanitizer.bypassSecurityTrustScript(value);\r\n case 'url':\r\n return this.sanitizer.bypassSecurityTrustUrl(value);\r\n case 'resourceUrl':\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n default:\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n }\r\n}\r\n","import { of, Observable } from 'rxjs';\r\nimport { IGenericResponse, ResponseStatus } from './Interfaces';\r\n\r\nexport function getTestServiceError(\r\n processId,\r\n items: T[],\r\n id: string\r\n): Observable> {\r\n return of({\r\n processId: processId,\r\n StatusCode: ResponseStatus.Failed,\r\n ErrorMessages: ['Test global level error message'],\r\n WarningMessages: ['Test global warning error message'],\r\n Items: items.map(\r\n x =>\r\n ({\r\n ...x,\r\n Status: {\r\n StatusCode: ResponseStatus.Failed,\r\n Message: 'Test item error message',\r\n MsgProcessID: processId,\r\n MsgEntityID: x[id]\r\n }\r\n } as T)\r\n ),\r\n StatusType: ''\r\n });\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\n@Component({\r\n selector: 'ef-company-calendar-feature',\r\n templateUrl: './company-calendar-feature.component.html',\r\n styleUrls: ['./company-calendar-feature.component.scss']\r\n})\r\nexport class CompanyCalendarFeatureComponent implements OnInit {\r\n companyCalendarDataService: EntityCollectionService;\r\n public companyDates$: Observable<\r\n fromDataServices.CompanyCalendar.CompanyCalendar[]\r\n >;\r\n events: any[] = [];\r\n active = true;\r\n process$: Observable;\r\n public userInfo$: Observable;\r\n labelTextColor: string;\r\n // data: CompanyCalendar[];\r\n constructor(\r\n public entityServices: EntityServices,\r\n private store: Store,\r\n private log: LoggingService\r\n ) {\r\n this.companyCalendarDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.CompanyCalendar.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.companyCalendarDataService.getWithQuery({\r\n // ScheduledStartDate: `${moment().month() + 1}/01/${moment().year()}`,\r\n // ScheduledEndDate: `${moment().month() + 1}/${this.getMonthEnd()}/${moment().year()}`\r\n // });\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.companyCalendarDataService.clearCache();\r\n this.active = false;\r\n }\r\n\r\n getMonthEnd() {\r\n return new Date(moment().year(), moment().month() + 1, 0).getDate();\r\n }\r\n\r\n setupObservables() {\r\n this.companyDates$ = this.companyCalendarDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n }\r\n\r\n setupSubscriptions() {\r\n this.companyDates$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(dates => {\r\n this.mapDatesToEvents(dates);\r\n });\r\n }\r\n\r\n onLoadDates($event) {\r\n this.log.verbose({\r\n type: 'CompanyCalendarFeatureComponent:onLoadDates',\r\n $event\r\n });\r\n this.companyCalendarDataService.clearCache();\r\n this.companyCalendarDataService.getWithQuery($event);\r\n }\r\n\r\n onLoadAllDates() {\r\n this.log.verbose({\r\n type: 'CompanyCalendarFeatureComponent:onLoadAllDates'\r\n });\r\n this.companyCalendarDataService.clearCache();\r\n this.companyCalendarDataService.getAll();\r\n }\r\n\r\n onSaveEvent($event) {\r\n this.log.verbose({\r\n type: 'CompanyCalendarFeatureComponent:onSaveEvent'\r\n });\r\n this.companyCalendarDataService.upsert($event);\r\n }\r\n\r\n onDeleteEvent($event) {\r\n this.companyCalendarDataService.delete($event);\r\n }\r\n\r\n hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n }\r\n : { r: 0, g: 0, b: 0 };\r\n }\r\n\r\n mapDatesToEvents(\r\n dates: fromDataServices.CompanyCalendar.CompanyCalendar[]\r\n ) {\r\n this.events = [];\r\n dates.map(d => {\r\n if (d.DateColor != null) {\r\n if (\r\n this.hexToRgb(d.DateColor)?.r +\r\n this.hexToRgb(d.DateColor)?.g +\r\n this.hexToRgb(d.DateColor)?.b >\r\n 275\r\n ) {\r\n this.labelTextColor = '#000000';\r\n } else {\r\n this.labelTextColor = '#FFFFFF';\r\n }\r\n } else {\r\n this.labelTextColor = '#FFFFFF';\r\n }\r\n\r\n this.events = [\r\n ...this.events,\r\n {\r\n id: d.ScheduledDateID,\r\n title: d.ScheduledDatePurpose,\r\n start: moment(d.ScheduledStartDate).toDate(),\r\n end: moment(d.ScheduledEndDate)\r\n .add(1, 'day')\r\n .add(1, 'second')\r\n .toDate(),\r\n backgroundColor: d.DateColor,\r\n textColor: this.labelTextColor,\r\n allDay: true\r\n }\r\n ];\r\n });\r\n return this.events;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { View } from '@fullcalendar/core';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport interactionPlugin from '@fullcalendar/interaction';\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { SelectItem, Table } from '../../shared';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\nlet ccpc: CompanyCalendarPresenterComponent;\r\n@Component({\r\n selector: 'ef-company-calendar-presenter',\r\n templateUrl: './company-calendar-presenter.component.html',\r\n styleUrls: ['./company-calendar-presenter.component.scss']\r\n})\r\nexport class CompanyCalendarPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, OnChanges\r\n{\r\n public editing: fromDataServices.CompanyCalendar.CompanyCalendar =\r\n {} as fromDataServices.CompanyCalendar.CompanyCalendar;\r\n clonedCompanyDates: {\r\n [i: string]: fromDataServices.CompanyCalendar.CompanyCalendar;\r\n } = {};\r\n\r\n private CompanyDatesSubject = new ReplaySubject<\r\n fromDataServices.CompanyCalendar.CompanyCalendar[]\r\n >(1);\r\n private _companydates: Array;\r\n\r\n @Input() set companyDates(\r\n value: Array\r\n ) {\r\n this._companydates = value.sort(\r\n (a, b) =>\r\n a.ScheduledEndDate.getTime() - b.ScheduledEndDate.getTime()\r\n );\r\n this.CompanyDatesSubject.next(this._companydates);\r\n\r\n this.eventTypesFilterSelectItem = [];\r\n this.eventDescFilterSelectItem = [];\r\n\r\n if (value.length > 0) {\r\n value.forEach(item => {\r\n if (\r\n item.ScheduledDateType == 'PPE' ||\r\n item.ScheduledDateType == 'FYE' ||\r\n item.ScheduledDateType == 'GEN' ||\r\n item.ScheduledDateType == 'HOL'\r\n ) {\r\n if (item.ScheduledDateType == 'HOL') {\r\n this.eventTypesMultiSelectItem.push({\r\n value: item.ScheduledDateType,\r\n label: 'Holiday'\r\n });\r\n } else if (item.ScheduledDateType == 'GEN') {\r\n this.eventTypesMultiSelectItem.push({\r\n value: item.ScheduledDateType,\r\n label: 'Custom Date'\r\n });\r\n } else if (item.ScheduledDateType == 'PPE') {\r\n this.eventTypesMultiSelectItem.push({\r\n value: item.ScheduledDateType,\r\n label: 'Pay Period'\r\n });\r\n } else {\r\n this.eventTypesMultiSelectItem.push({\r\n value: item.ScheduledDateType,\r\n label: item.ScheduledDatePurpose\r\n });\r\n }\r\n }\r\n this.eventTypesFilterSelectItem.push({\r\n value: item.ScheduledDateType,\r\n label: item.ScheduledDateType\r\n });\r\n this.eventDescFilterSelectItem.push({\r\n value: item.ScheduledDatePurpose,\r\n label: item.ScheduledDatePurpose\r\n });\r\n });\r\n this.eventTypesMultiSelectItem =\r\n this.eventTypesMultiSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.value === v.value) === i\r\n );\r\n this.eventTypesFilterSelectItem =\r\n this.eventTypesFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.value === v.value) === i\r\n );\r\n this.eventDescFilterSelectItem =\r\n this.eventDescFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.value === v.value) === i\r\n );\r\n this.eventTypesFilterSelectItem =\r\n this.eventTypesFilterSelectItem.sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n );\r\n this.eventDescFilterSelectItem =\r\n this.eventDescFilterSelectItem.sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n );\r\n }\r\n }\r\n get companyDates(): Array {\r\n return this._companydates;\r\n }\r\n\r\n showAllButton: HTMLElement;\r\n showAllButtonLabel = 'Show All';\r\n\r\n coloredDiv = document.getElementById('coloredDiv');\r\n\r\n moment: any;\r\n // events: any[] = [];\r\n @Input() events: any[];\r\n options: any;\r\n\r\n eventColor: string;\r\n eventType: string;\r\n\r\n active = true;\r\n\r\n displayEventDialog = false;\r\n displayColorOptions = false;\r\n\r\n selectedCalendarDate: Date;\r\n\r\n eventFormGroup: FormGroup;\r\n multiUpdateFormGroup: FormGroup;\r\n\r\n eventTypesSelectItem: SelectItem[] = [];\r\n eventTypesMultiSelectItem: SelectItem[] = [];\r\n eventTypesFilterSelectItem: SelectItem[] = [];\r\n\r\n eventDescFilterSelectItem: SelectItem[] = [];\r\n\r\n @Output() SaveEvent = new ReplaySubject(1);\r\n @Output() DeleteEvent = new ReplaySubject(1);\r\n @Output() LoadAllDates = new ReplaySubject(1);\r\n @Output() LoadDates = new ReplaySubject(1);\r\n\r\n cbxValue = true;\r\n cbxLabel: string;\r\n start: any;\r\n end: any;\r\n labelTextColor = 'black';\r\n calendarYear: any;\r\n calendarMonth: any;\r\n\r\n calendarDate: any;\r\n\r\n IsAdministrator = false;\r\n\r\n row: any;\r\n\r\n selectedEvent: fromDataServices.CompanyCalendar.CompanyCalendar;\r\n\r\n @Input() userInfo: IUserInfo;\r\n\r\n @ViewChild('CCTable', { static: true }) CCTable: Table;\r\n // private CompanyDatesSubject = new ReplaySubject<\r\n // Array\r\n // >(1);\r\n\r\n monthsSelectItem: SelectItem[];\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n ccpc = this;\r\n this.moment = moment;\r\n\r\n this.eventFormGroup = new FormGroup({\r\n startDate: new FormControl(null),\r\n endDate: new FormControl(null),\r\n description: new FormControl(null),\r\n type: new FormControl(null),\r\n color: new FormControl(null)\r\n });\r\n this.multiUpdateFormGroup = new FormGroup({\r\n multi_type: new FormControl(null),\r\n multi_color: new FormControl(null),\r\n apply: new FormControl(null)\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.items) {\r\n this.CompanyDatesSubject.next(changes.items.currentValue);\r\n }\r\n }\r\n\r\n setupSubscriptions() {\r\n this.eventFormGroup.controls['startDate'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.eventFormGroup.controls['endDate'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.eventFormGroup.controls['description'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.eventFormGroup.controls['type'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.eventType = null;\r\n this.eventType = value.label;\r\n }\r\n });\r\n this.eventFormGroup.controls['color'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.eventColor = null;\r\n this.eventColor = value;\r\n }\r\n });\r\n this.multiUpdateFormGroup.controls['apply'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.multiUpdateFormGroup.controls['multi_color'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (\r\n this.hexToRgb(value).r +\r\n this.hexToRgb(value).g +\r\n this.hexToRgb(value).b >\r\n 275\r\n ) {\r\n this.labelTextColor = '#000000';\r\n } else {\r\n this.labelTextColor = '#FFFFFF';\r\n }\r\n }\r\n });\r\n this.multiUpdateFormGroup.controls['multi_type'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n }\r\n\r\n hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n }\r\n : null;\r\n }\r\n\r\n setTextColor(value) {\r\n return this.hexToRgb(value).r +\r\n this.hexToRgb(value).g +\r\n this.hexToRgb(value).b >\r\n 275\r\n ? '#000000'\r\n : '#FFFFFF';\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.userInfo) {\r\n if (this.userInfo.DefaultRoleGroupID == 1) {\r\n this.IsAdministrator = true;\r\n }\r\n }\r\n\r\n this.monthsSelectItem = [\r\n {\r\n value: '01',\r\n label: 'January'\r\n },\r\n {\r\n value: '02',\r\n label: 'Feburary'\r\n },\r\n {\r\n value: '03',\r\n label: 'March'\r\n },\r\n {\r\n value: '04',\r\n label: 'April'\r\n },\r\n {\r\n value: '05',\r\n label: 'May'\r\n },\r\n {\r\n value: '06',\r\n label: 'June'\r\n },\r\n {\r\n value: '07',\r\n label: 'July'\r\n },\r\n {\r\n value: '08',\r\n label: 'August'\r\n },\r\n {\r\n value: '09',\r\n label: 'September'\r\n },\r\n {\r\n value: '10',\r\n label: 'October'\r\n },\r\n {\r\n value: '11',\r\n label: 'November'\r\n },\r\n {\r\n value: '12',\r\n label: 'December'\r\n }\r\n ];\r\n\r\n this.eventTypesSelectItem = [\r\n {\r\n value: 'HOL',\r\n label: 'Holiday'\r\n },\r\n {\r\n value: 'GEN',\r\n label: 'Custom Date'\r\n }\r\n ];\r\n this.options = {\r\n plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],\r\n defaultDate: new Date(),\r\n // customButtons: {\r\n // showAll: {\r\n // text: 'Show All',\r\n // click: function () {\r\n // ccpc.showAllButton\r\n // ccpc.LoadAllDates.next()\r\n // }\r\n // }\r\n // },\r\n height: 600,\r\n header: {\r\n left: 'prev',\r\n center: 'title',\r\n right: 'next'\r\n },\r\n dateClick: e => {\r\n if (this.IsAdministrator) {\r\n this.selectedCalendarDate = e.date;\r\n this.eventDialog();\r\n }\r\n },\r\n eventClick: ccpc.eventSelected.bind(this),\r\n eventRender: ccpc.eventRender.bind(this),\r\n datesRender: function (e) {\r\n setTimeout(() => {\r\n let month;\r\n if (e.view.title.includes('January')) {\r\n month = '01';\r\n } else if (e.view.title.includes('February')) {\r\n month = '02';\r\n } else if (e.view.title.includes('March')) {\r\n month = '03';\r\n } else if (e.view.title.includes('April')) {\r\n month = '04';\r\n } else if (e.view.title.includes('May')) {\r\n month = '05';\r\n } else if (e.view.title.includes('June')) {\r\n month = '06';\r\n } else if (e.view.title.includes('July')) {\r\n month = '07';\r\n } else if (e.view.title.includes('August')) {\r\n month = '08';\r\n } else if (e.view.title.includes('September')) {\r\n month = '09';\r\n } else if (e.view.title.includes('October')) {\r\n month = '10';\r\n } else if (e.view.title.includes('November')) {\r\n month = '11';\r\n } else if (e.view.title.includes('December')) {\r\n month = '12';\r\n }\r\n const str = e.view.title.split(' ');\r\n const year = str[1];\r\n ccpc.calendarYear = year;\r\n ccpc.calendarMonth = month;\r\n ccpc.cbxLabel = `Show all for ${year}`;\r\n if (ccpc.cbxValue == true) {\r\n ccpc.start = `01/01/${year}`;\r\n ccpc.end = `12/31/${year}`;\r\n } else {\r\n ccpc.start = `${month}/01/${year}`;\r\n ccpc.end = `${month}/${ccpc.getMonthEndForCalendarDate(\r\n month\r\n )}/${year}`;\r\n }\r\n ccpc.LoadDates.next({\r\n ScheduledStartDate: ccpc.start,\r\n ScheduledEndDate: ccpc.end\r\n });\r\n }, 0);\r\n }\r\n };\r\n this.setupSubscriptions();\r\n }\r\n\r\n eventRender(info: { event: EventModel; el: any; view: View }) {\r\n info.el.setAttribute('data-toggle', 'tooltip');\r\n info.el.setAttribute('data-placement', 'top');\r\n info.el.setAttribute('title', info.event.title);\r\n }\r\n\r\n eventSelected(click: EventClickInfo) {\r\n if (this.row != null) {\r\n this.row.classList.remove('highlight');\r\n }\r\n this.row = document.getElementById(`row-${click.event.id.toString()}`);\r\n if (!this.row) {\r\n return;\r\n }\r\n this.row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n this.row.classList.add('highlight');\r\n }\r\n\r\n onEditInit($event: {\r\n data: fromDataServices.CompanyCalendar.CompanyCalendar;\r\n }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: fromDataServices.CompanyCalendar.CompanyCalendar) {\r\n this.clonedCompanyDates[rowData.id] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: fromDataServices.CompanyCalendar.CompanyCalendar) {\r\n this.SaveEvent.next({\r\n ScheduledDateID: rowData.ScheduledDateID,\r\n ScheduledDateType: rowData.ScheduledDateType,\r\n ScheduledDatePurpose: rowData.ScheduledDatePurpose,\r\n ScheduledStartDate: moment(rowData.ScheduledEndDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n ScheduledEndDate: moment(rowData.ScheduledEndDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n DateColor: rowData.DateColor\r\n });\r\n delete this.clonedCompanyDates[rowData.id];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: fromDataServices.CompanyCalendar.CompanyCalendar) {\r\n delete this.clonedCompanyDates[item.id];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n // onRowSelect(event) {\r\n // this.calendarDate = event.data.ScheduledEndDate;\r\n // let calendarApi = this.calendarComponent.getApi();\r\n // calendarApi.gotoDate(this.calendarDate);\r\n // }\r\n\r\n onCompanyDateDelete(rowData) {\r\n this.DeleteEvent.next(rowData);\r\n }\r\n\r\n colorMultiUpdate() {\r\n const length = this.companyDates.length;\r\n this.companyDates.forEach(item => {\r\n if (\r\n item.ScheduledDateType.trim() ==\r\n this.multiUpdateFormGroup.controls[\r\n 'multi_type'\r\n ].value.trim() &&\r\n this.multiUpdateFormGroup.controls['multi_color'].value != null\r\n ) {\r\n this.SaveEvent.next({\r\n ScheduledDateID: item.ScheduledDateID,\r\n ScheduledDateType:\r\n this.multiUpdateFormGroup.controls['multi_type'].value,\r\n ScheduledDatePurpose: item.ScheduledDatePurpose,\r\n ScheduledStartDate: moment(item.ScheduledEndDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n ScheduledEndDate: moment(item.ScheduledEndDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n DateColor:\r\n this.multiUpdateFormGroup.controls['multi_color'].value\r\n });\r\n }\r\n if (\r\n this.companyDates.findIndex(x => x == item) == length - 1 &&\r\n this.multiUpdateFormGroup.controls['multi_type'].value !=\r\n null &&\r\n this.multiUpdateFormGroup.controls['multi_color'].value != null\r\n ) {\r\n this.multiUpdateFormGroup.controls['multi_type'].reset();\r\n this.multiUpdateFormGroup.controls['multi_color'].reset();\r\n }\r\n });\r\n this.displayColorOptions = false;\r\n }\r\n\r\n showAllDates(event) {\r\n if (event.checked === true) {\r\n this.LoadDates.next({\r\n ScheduledStartDate: `01/01/${this.calendarYear}`,\r\n ScheduledEndDate: `12/31/${this.calendarYear}`\r\n });\r\n } else {\r\n this.LoadDates.next({\r\n ScheduledStartDate: `${this.calendarMonth}/01/${this.calendarYear}`,\r\n ScheduledEndDate: `${\r\n this.calendarMonth\r\n }/${ccpc.getMonthEndForCalendarDate(this.calendarMonth)}/${\r\n this.calendarYear\r\n }`\r\n });\r\n }\r\n }\r\n\r\n eventDialog() {\r\n this.displayEventDialog = true;\r\n this.eventFormGroup.controls['startDate'].patchValue(\r\n this.selectedCalendarDate\r\n );\r\n this.eventFormGroup.controls['endDate'].patchValue(\r\n this.selectedCalendarDate\r\n );\r\n }\r\n\r\n confirmDialog() {\r\n this.addEvent();\r\n this.displayEventDialog = false;\r\n }\r\n\r\n cancelDialog() {\r\n this.displayEventDialog = false;\r\n }\r\n\r\n addEvent() {\r\n this.SaveEvent.next({\r\n ScheduledDateID: -1,\r\n ScheduledDateType: this.eventFormGroup.controls['type'].value,\r\n ScheduledDatePurpose:\r\n this.eventFormGroup.controls['description'].value,\r\n ScheduledStartDate: moment(\r\n this.eventFormGroup.controls['startDate'].value\r\n ).format('MM/DD/YYYY'),\r\n ScheduledEndDate: moment(\r\n this.eventFormGroup.controls['endDate'].value\r\n ).format('MM/DD/YYYY'),\r\n DateColor: this.eventFormGroup.controls['color'].value\r\n });\r\n // this.events = [...this.events, {\r\n // title: this.eventFormGroup.controls['description'].value,\r\n // start: moment(this.eventFormGroup.controls['eventDate'].value).format(\"MM/DD/YYYY\"),\r\n // end: moment(this.eventFormGroup.controls['eventDate'].value).format(\"MM/DD/YYYY\"),\r\n // id: Math.round(Math.random() * 100),\r\n // }];\r\n this.eventFormGroup.controls['color'].reset();\r\n this.eventFormGroup.controls['endDate'].reset();\r\n this.eventFormGroup.controls['startDate'].reset();\r\n this.eventFormGroup.controls['description'].reset();\r\n this.eventFormGroup.controls['type'].reset();\r\n }\r\n\r\n getMonthEnd() {\r\n return new Date(moment().year(), moment().month() + 1, 0).getDate();\r\n }\r\n\r\n getMonthEndForCalendarDate(month) {\r\n return new Date(moment().year(), month, 0).getDate();\r\n }\r\n\r\n endDateSelected($event) {\r\n this.log.verbose($event);\r\n }\r\n\r\n tableFilter($event, type) {\r\n if (type == 'type') {\r\n this.CCTable.filter($event.value, 'ScheduledDateType', 'in');\r\n }\r\n if (type == 'desc') {\r\n this.CCTable.filter($event.value, 'ScheduledDatePurpose', 'in');\r\n }\r\n }\r\n}\r\ninterface EventClickInfo {\r\n // The associated Event Object.\r\n event: EventModel;\r\n\r\n // The HTML element for this event.\r\n el: HTMLElement;\r\n\r\n // The native JavaScript event with low-level information such as click coordinates.\r\n jsEvent: any;\r\n\r\n view: any;\r\n}\r\ninterface EventModel {\r\n id: string;\r\n groupId: string;\r\n allDay: boolean;\r\n start: Date;\r\n end: Date;\r\n title: string;\r\n url: string;\r\n classNames: string[];\r\n editable: boolean;\r\n startEditable: boolean;\r\n durationEditable: boolean;\r\n resourceEditable: boolean;\r\n rendering: string;\r\n overlap: boolean;\r\n constraint: any;\r\n backgroundColor: string;\r\n borderColor: string;\r\n textColor: string;\r\n extendedProps: any;\r\n source: any;\r\n data: any;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { CompanyCalendarRoute } from './company-calendar.route';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport { CompanyCalendarDataService } from '../data-services/company-calendar/company-calendar.data-service';\r\nimport { entityName } from '../data-services/company-calendar/company-calendar.data-service';\r\nimport { CompanyCalendarFeatureComponent } from './company-calendar-feature/company-calendar-feature.component';\r\nimport { CompanyCalendarPresenterComponent } from './company-calendar-presenter/company-calendar-presenter.component';\r\n\r\n@NgModule({\r\n // declarations: [\r\n // CompanyCalendarFeatureComponent,\r\n // CompanyCalendarPresenterComponent\r\n // ],\r\n providers: [CompanyCalendarDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [CompanyCalendarRoute]\r\n })\r\n ]\r\n})\r\nexport class CompanyCalendarModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n companyCalendarDataService: CompanyCalendarDataService\r\n ) {\r\n entityDataService.registerService(\r\n entityName,\r\n companyCalendarDataService\r\n );\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CompanyCalendarFeatureComponent } from './company-calendar-feature/company-calendar-feature.component';\r\nconst log = new LoggingService();\r\n\r\nexport const CompanyCalendarRoute: Ng2StateDeclaration = {\r\n name: 'companydates',\r\n url: '/companydates',\r\n data: { requiresAuth: true },\r\n\r\n component: CompanyCalendarFeatureComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\nimport * as fromCompanySetting from '.';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const CompanySettingRoute: Ng2StateDeclaration = {\r\n name: 'companysetting',\r\n url: '/companysetting',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromCompanySetting.CompanySettingFeatureComponent\r\n};\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromCompanySetting from '../store';\r\nimport { CompanySetting } from '../store';\r\n@Component({\r\n selector: 'ef-company-setting-feature',\r\n templateUrl: './company-setting-feature.component.html',\r\n styleUrls: ['./company-setting-feature.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CompanySettingFeatureComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n process$: Observable;\r\n settings$: Observable>;\r\n categories$: Observable<{ CatID; Description }[]>;\r\n payrollFrequency$: Observable>;\r\n daysOfWeek$: Observable>;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.store.dispatch(fromCompanySetting.getCompanySettings());\r\n this.store.dispatch(\r\n fromCompanySetting.getCompanySetting({\r\n SettingType: 'AdminMsg1'\r\n })\r\n );\r\n\r\n this.store.dispatch(\r\n fromCompanySetting.getCompanySetting({\r\n SettingType: 'MgrMsg1'\r\n })\r\n );\r\n\r\n this.store.dispatch(\r\n fromCompanySetting.getCompanySetting({\r\n SettingType: 'UserMsg1'\r\n })\r\n );\r\n }\r\n ngOnInit() {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngAfterViewInit(): void {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.daysOfWeek$ = this.store.pipe(select(fromLookups.getDaysOfWeek));\r\n this.payrollFrequency$ = this.store.pipe(\r\n select(fromLookups.getPayrollFrequency)\r\n );\r\n this.settings$ = this.store.pipe(\r\n select(fromCompanySetting.selectAll),\r\n tap(settings =>\r\n this.log.verbose({\r\n type: 'CompanySettingFeatureComponent:settings$',\r\n settings\r\n })\r\n ),\r\n map(settings => clone(settings) as CompanySetting[]),\r\n map(settings => settings.filter(z => z.SettingType != \"AdminMsg1\" && z.SettingType != \"MgrMsg1\" && z.SettingType != \"UserMsg1\")),\r\n map(x =>\r\n x.map(y => ({\r\n ...y,\r\n CtrlType: y.CtrlType.toLocaleLowerCase(),\r\n SettingValue:\r\n y.CtrlType.toLocaleLowerCase() === 'checkbox'\r\n ? y.SettingValue === '1'\r\n : y.SettingValue\r\n }))\r\n )\r\n );\r\n this.categories$ = this.store.pipe(\r\n select(fromCompanySetting.getCategories)\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'CompanySettingFeatureComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.settings$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'CompanySettingFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'CompanySettingFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.settings$.pipe(takeWhile(() => this.active)).subscribe(settings => {\r\n \r\n });\r\n }\r\n onSave(setting: CompanySetting) {\r\n this.log.verbose({\r\n type: 'CompanySettingFeatureComponent:onSave',\r\n setting\r\n });\r\n this.store.dispatch(\r\n fromCompanySetting.putCompanySettings({ settings: [setting] })\r\n );\r\n }\r\n onShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\r\nimport { Transition, TransitionService } from '@uirouter/angular';\r\nimport * as moment from 'moment';\r\nimport { merge, ReplaySubject } from 'rxjs';\r\nimport { debounceTime, filter, takeWhile, throttleTime } from 'rxjs/operators';\r\nimport * as fromLookups from '../../lookups';\r\nimport { isElementVisible, IStatusMessage, ResponseStatus } from '../../shared';\r\nimport {\r\n Accordion,\r\n SelectItem,\r\n SortEvent,\r\n Table\r\n} from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { CompanySetting } from '../store';\r\n\r\n@Component({\r\n selector: 'ef-company-setting-presenter',\r\n templateUrl: './company-setting-presenter.component.html',\r\n styleUrls: ['./company-setting-presenter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CompanySettingPresenterComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private _settings: Array;\r\n moment: any;\r\n @Input() public set settings(value: Array) {\r\n delete this.editing;\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:settings',\r\n value,\r\n tabs: this.openTabs,\r\n settingsEl: this.settingsEl\r\n });\r\n if (value && value.length) {\r\n this.loading = false;\r\n this.companySettingsForm = new FormGroup({});\r\n this._settings = value.map(x => {\r\n this.companySettingsForm.addControl(\r\n x.SettingType,\r\n new FormControl(x.SettingValue)\r\n );\r\n return {\r\n ...x,\r\n SettingValue:\r\n x.CtrlType.toLocaleLowerCase() === 'datetimepicker'\r\n ? x.Isreadonly\r\n ? x.SettingValue\r\n ? moment(x.SettingValue).format(\r\n 'MM/DD/YYYY'\r\n )\r\n : x.SettingValue\r\n : x.SettingValue\r\n ? moment(x.SettingValue).toDate()\r\n : x.SettingValue\r\n : x.SettingValue\r\n };\r\n });\r\n }\r\n this.updateRowGroupMetaData(value);\r\n }\r\n public get settings(): Array {\r\n return this._settings;\r\n }\r\n @Input() public set categories(\r\n value: { CatID: number; Description: string }[]\r\n ) {\r\n if (value && value.length > 0) {\r\n this.categoryItems = value.map(x => ({\r\n value: x.CatID,\r\n label: x.Description\r\n }));\r\n }\r\n }\r\n categoryItems: SelectItem[];\r\n @Input() payrollFrequency: Array<{ Payrollfrequency: number }>;\r\n @Input() daysOfWeek: Array;\r\n @Input() CompanySettings: Array>;\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:selectedError:set',\r\n value,\r\n _selectedError: this._selectedError\r\n });\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n if (!isElementVisible(row, row.parentElement)) {\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n }\r\n\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:selectedError',\r\n classList: row.classList,\r\n row\r\n });\r\n this.cdRef.detectChanges();\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n @Output() public Save = new ReplaySubject(1);\r\n @Output() public ShowError = new EventEmitter();\r\n\r\n @ViewChild('settingsAccordion') settingsEl: Accordion;\r\n @ViewChild('dtSettings') settingsTable: Table;\r\n companySettingsForm: FormGroup;\r\n protected openTabs: Array = [];\r\n public editing: CompanySetting;\r\n rowGroupMetadata: any;\r\n public loading = true;\r\n private active = true;\r\n private TextboxChangedSubject = new ReplaySubject<{\r\n value: string;\r\n data: CompanySetting;\r\n }>(1);\r\n private EditCompleteSubject = new ReplaySubject<{\r\n value: string;\r\n data: CompanySetting;\r\n }>(1);\r\n private SettingChangedSubject = new ReplaySubject<{\r\n value: string;\r\n data: CompanySetting;\r\n }>(1);\r\n private tUnregister: Function;\r\n private me: CompanySettingPresenterComponent;\r\n textboxValueSaved = false;\r\n constructor(\r\n private log: LoggingService,\r\n private cdRef: ChangeDetectorRef,\r\n public confirmservice: UnsavedChangesService,\r\n public transitionService: TransitionService\r\n ) {\r\n this.moment = moment;\r\n this.companySettingsForm = new FormGroup({});\r\n this.tUnregister = transitionService.onStart(\r\n { from: 'companysetting' },\r\n this.uiCanExit.bind(this)\r\n );\r\n this.me = this;\r\n }\r\n ngOnInit() {\r\n this.setupSubscriptions();\r\n }\r\n uiCanExit(transition?: Transition) {\r\n function getControlName(c: AbstractControl): string | null {\r\n const formGroup = c.parent.controls;\r\n return (\r\n Object.keys(formGroup).find(name => c === formGroup[name]) ||\r\n null\r\n );\r\n }\r\n let result = true;\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:uiCanExit',\r\n companySettingsForm: this.companySettingsForm,\r\n transition,\r\n controls: this.companySettingsForm.controls\r\n });\r\n // there should only be one dirty item possible\r\n // TODO: check for form dirty and save if it is.\r\n const keys = Object.keys(this.companySettingsForm.controls);\r\n return new Promise((r, e) => {\r\n keys.forEach(key => {\r\n const c = this.companySettingsForm.controls[key];\r\n const setting = this.settings.find(x => x.SettingType === key);\r\n if (c.dirty) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:uiCanExit',\r\n value: 'dirty control',\r\n key,\r\n c\r\n });\r\n if (\r\n setting.Validation &&\r\n setting.Validation === 'confirm'\r\n ) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:uiCanExit',\r\n value: 'validation control',\r\n key,\r\n c\r\n });\r\n result = false;\r\n return this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to update ${setting.SettingTypeLabel}`\r\n })\r\n .then(() => {\r\n this.settingChanged(c.value, setting);\r\n result = true;\r\n r(result);\r\n // result = result && true;\r\n })\r\n .catch(() => {\r\n result = false;\r\n r(result);\r\n });\r\n } else {\r\n this.settingChanged(c.value, setting);\r\n // result = result && true;\r\n }\r\n } else {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:uiCanExit',\r\n value: 'clean control',\r\n key,\r\n c\r\n });\r\n }\r\n });\r\n if (result) {\r\n r(true);\r\n }\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.tUnregister();\r\n }\r\n ngAfterViewInit() {}\r\n setupSubscriptions() {\r\n this.SettingChangedSubject.pipe(\r\n takeWhile(() => this.active),\r\n throttleTime(100)\r\n ).subscribe(x => {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:SettingChangedSubject',\r\n x\r\n });\r\n if (\r\n x.data.SettingType == 'OverrideQBMail' &&\r\n Boolean(x.value) == false\r\n ) {\r\n this.confirmservice\r\n .confirmPromise({\r\n headerText: 'Are you sure?',\r\n dialogText:\r\n 'turning off this setting will replace all email addresses in eFAACT with the email address entered in their QuickBooks employee/vendor record.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n this.settingChanged(x.value, x.data);\r\n })\r\n .catch(() => {\r\n this.settingChanged(!x.value, x.data);\r\n });\r\n } else {\r\n this.settingChanged(x.value, x.data);\r\n }\r\n });\r\n\r\n // const latestChange = this.TextboxChangedSubject.pipe(\r\n // map(x => this.EditCompleteSubject),\r\n // mergeAll(),\r\n // takeWhile(() => this.active)\r\n // );\r\n\r\n // const latestChange = from([this.TextboxChangedSubject, this.EditCompleteSubject]).pipe(\r\n // mergeMap(x => x),\r\n // takeWhile(() => this.active)\r\n // );\r\n\r\n const latestChange = merge(\r\n // ...[\r\n this.TextboxChangedSubject.pipe(\r\n debounceTime(3000),\r\n filter(x => !x.data.Validation)\r\n ),\r\n this.EditCompleteSubject,\r\n // ]\r\n 2\r\n ).pipe(\r\n // mergeAll(),\r\n takeWhile(() => this.active),\r\n throttleTime(100)\r\n );\r\n\r\n // const latestChange = combineLatest([\r\n // this.TextboxChangedSubject.pipe(\r\n // debounceTime(2000),\r\n // startWith(null),\r\n // // switchMap(x => this.TextboxChangedSubject)\r\n // ),\r\n // this.EditCompleteSubject.pipe(\r\n // startWith(null),\r\n // // switchMap(x => this.EditCompleteSubject)\r\n // )\r\n // ]).pipe(\r\n // takeWhile(() => this.active),\r\n // filter(([x, y]) => !!x || !!y)\r\n // );\r\n\r\n latestChange.subscribe(z => {\r\n // const z = {\r\n // value: (x && x.value) || (y && y.value),\r\n // data: (x && x.data) || (y && y.data)\r\n // };\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:latestChange(z)',\r\n z\r\n });\r\n // if (!z.data.Validation) {\r\n if (this.textboxValueSaved == false) {\r\n this.SettingChangedSubject.next(z);\r\n }\r\n\r\n // }\r\n // this.settingChanged(z.value, z.data);\r\n });\r\n\r\n // this.TextboxChangedSubject.pipe(\r\n // takeWhile(() => this.active),\r\n // debounceTime(2000)\r\n // ).subscribe(event => {\r\n // this.settingChanged(event.value, event.data);\r\n // });\r\n }\r\n onSave($event) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onSave',\r\n $event\r\n });\r\n this.Save.next($event);\r\n }\r\n onEditInit($event: { data: CompanySetting }) {\r\n const setting = this.settings.find(\r\n x => x.SettingType === $event.data.SettingType\r\n );\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onEditInit',\r\n $event,\r\n editing: this.editing,\r\n setting\r\n });\r\n // if (setting.CtrlType !== 'checkbox') {\r\n // }\r\n if (\r\n (!!this.editing &&\r\n this.editing.SettingType !== $event.data.SettingType) ||\r\n setting.CtrlType === 'checkbox'\r\n ) {\r\n this.onEditComplete({ data: { ...this.editing, ...$event.data } });\r\n }\r\n this.editing = { ...$event.data };\r\n }\r\n onEditComplete($event: { data: Partial }) {\r\n if (!this.editing) {\r\n return;\r\n }\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onEditComplete',\r\n $event\r\n });\r\n const setting = this.settings.find(\r\n x => x.SettingType === $event.data.SettingType\r\n );\r\n\r\n let newVal = setting.SettingValue;\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onEditComplete',\r\n $event,\r\n setting,\r\n editing: this.editing\r\n });\r\n if (\r\n !this.hasChangedValue(\r\n setting && setting.SettingValue,\r\n this.editing && this.editing.SettingValue,\r\n setting && setting.CtrlType\r\n )\r\n ) {\r\n delete this.editing;\r\n return;\r\n }\r\n // if (\r\n // $event.data.SettingValue !== setting.SettingValue\r\n // // || setting.CtrlType === 'checkbox'\r\n // // || setting.CtrlType === 'combobox'\r\n // ) {\r\n if (setting.CtrlType.toLocaleLowerCase() === 'datetimepicker') {\r\n newVal = moment(setting.SettingValue).format('MM/DD/YYYY');\r\n this.SettingChangedSubject.next({ value: newVal, data: setting });\r\n // this.settingChanged(newVal, setting);\r\n }\r\n if (\r\n setting.CtrlType.toLocaleLowerCase() === 'textbox'\r\n // && setting.Validation.length\r\n ) {\r\n this.SettingChangedSubject.next({ value: newVal, data: setting }); ////////\r\n this.textboxValueSaved = true;\r\n // this.settingChanged(newVal, setting);\r\n }\r\n // if (setting.CtrlType === 'checkbox') {\r\n // newVal = setting.SettingValue ? '1' : '0';\r\n // }\r\n // }\r\n // if (!(setting.CtrlType === 'combobox')) {\r\n // this.EditCompleteSubject.next({ value: newVal, data: $event.data });\r\n // }\r\n // // this.TextboxChangedSubject.next({value: newVal, data: $event.data});\r\n // this.editing = null;\r\n }\r\n onDatepickerClose($event) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onDatepickerClose',\r\n $event,\r\n editing: this.editing\r\n });\r\n }\r\n customSort(event: SortEvent) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:customSort',\r\n event\r\n });\r\n event.data.sort((a, b) => {\r\n const result = a.CatDescription.toLocaleLowerCase().localeCompare(\r\n b.CatDescription.toLocaleLowerCase()\r\n );\r\n return result === 0\r\n ? a[event.field]\r\n .toLocaleLowerCase()\r\n .localeCompare(b[event.field].toLocaleLowerCase())\r\n : result;\r\n });\r\n }\r\n filterTable(value, column, operator) {\r\n // dtSettings.filter($event.value.Description, 'CatDescription', 'in')\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:filterTable',\r\n value,\r\n column,\r\n operator\r\n });\r\n this.settingsTable.filter(value, column, operator);\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onFilter',\r\n $event\r\n });\r\n // setTimeout(() => {\r\n this.onUpdateRowGroupMetaData($event.filteredValue);\r\n // }, 50);\r\n }\r\n onSort($event) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onSort',\r\n $event\r\n });\r\n setTimeout(() => {\r\n this.onUpdateRowGroupMetaData(\r\n this.settingsTable.filteredValue || this.settingsTable.value\r\n );\r\n }, 50);\r\n }\r\n onUpdateRowGroupMetaData(data) {\r\n this.updateRowGroupMetaData(data);\r\n }\r\n updateRowGroupMetaData(data) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:updateRowGroupMetaData',\r\n data\r\n });\r\n this.rowGroupMetadata = {};\r\n if (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n const rowData = data[i];\r\n const category = rowData.CatID;\r\n if (i === 0) {\r\n this.rowGroupMetadata[category] = { index: 0, size: 1 };\r\n } else {\r\n const previousRowData = data[i - 1];\r\n const previousRowGroup = previousRowData.CatID;\r\n if (category === previousRowGroup) {\r\n this.rowGroupMetadata[category].size++;\r\n } else {\r\n this.rowGroupMetadata[category] = { index: i, size: 1 };\r\n }\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:updateRowGroupMetaData',\r\n data,\r\n rowGroupMetadata: this.rowGroupMetadata\r\n });\r\n this.cdRef.markForCheck();\r\n }\r\n }\r\n getDescriptionForDropdown(settingType, settingValue) {\r\n const options = this.getValuesForDropdown(settingType);\r\n switch (settingType.toLocaleLowerCase()) {\r\n case 'firstdayofweek':\r\n return this.daysOfWeek.find(\r\n x => x.DayOfWeekID.toString() === settingValue\r\n ).DayOfWeekDesc;\r\n }\r\n return settingValue;\r\n }\r\n getValuesForDropdown(settingType) {\r\n switch (settingType.toLocaleLowerCase()) {\r\n case 'payrollfrequency':\r\n return this.payrollFrequency.map(\r\n x =>\r\n ({\r\n label: x.Payrollfrequency.toString(),\r\n value: x.Payrollfrequency.toString()\r\n } as SelectItem)\r\n );\r\n break;\r\n case 'firstdayofweek':\r\n return this.daysOfWeek.map(\r\n x =>\r\n ({\r\n label: x.DayOfWeekDesc,\r\n value: x.DayOfWeekID.toString()\r\n } as SelectItem)\r\n );\r\n case '2fa_security_level':\r\n return [\r\n { label: '2', value: '2' },\r\n { label: '3', value: '3' }\r\n ];\r\n case 'ratetiers':\r\n return [\r\n { label: '2', value: '2' },\r\n { label: '3', value: '3' }\r\n ];\r\n case 'time_precision':\r\n return [\r\n { label: '0', value: '0' },\r\n { label: '1', value: '1' },\r\n { label: '2', value: '2' }\r\n ];\r\n case 'employeenameorder':\r\n return [\r\n { label: 'First MI Last', value: 'FML' },\r\n { label: 'First Last', value: 'FL' },\r\n { label: 'Last, First MI', value: 'LFM' },\r\n { label: 'Last, First', value: 'LF' }\r\n ];\r\n }\r\n return [];\r\n }\r\n settingChanged(value, setting) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:settingChanged',\r\n value,\r\n setting,\r\n editing: this.editing\r\n });\r\n if (\r\n !this.hasChangedValue(\r\n setting && setting.SettingValue,\r\n this.editing && this.editing.SettingValue,\r\n setting && setting.CtrlType\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n // const newVal = $event.value || $event;\r\n // const setting = this.settings.find(\r\n // x => x.SettingType === item.SettingType\r\n // );\r\n this.updateSetting(value, setting);\r\n delete this.editing;\r\n // this.settingsTable.saveRowEdit(null, null);\r\n }\r\n updateSetting(value, setting: CompanySetting) {\r\n const saveSetting = (s, v) => {\r\n // s.Status = {\r\n // StatusCode: ResponseStatus.Loading,\r\n // Message: 'Saving'\r\n // };\r\n // s.SettingValue = v;\r\n\r\n const ss = {\r\n ...s,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n },\r\n SettingValue: v\r\n };\r\n this.loading = true;\r\n this.Save.next(ss);\r\n // this.editing = null;\r\n };\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:updateSetting',\r\n value,\r\n setting\r\n });\r\n if (setting.Validation && setting.Validation.includes('confirm')) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to update ${setting.SettingTypeLabel}`\r\n })\r\n .then(() => {\r\n saveSetting.bind(this.me)(setting, value);\r\n return;\r\n })\r\n .catch(e => {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:updateSetting:confirm:catch',\r\n e,\r\n setting,\r\n control:\r\n this.companySettingsForm.controls[\r\n setting.SettingType\r\n ].value\r\n });\r\n setting.SettingValue = this.editing.SettingValue;\r\n this.companySettingsForm.controls[\r\n setting.SettingType\r\n ].reset(setting.SettingValue);\r\n this.companySettingsForm.controls[\r\n setting.SettingType\r\n ].setValue(setting.SettingValue);\r\n this.cdRef.detectChanges();\r\n });\r\n } else {\r\n saveSetting.bind(this.me)(setting, value);\r\n }\r\n }\r\n textboxChanged($event, data) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:textboxChanged',\r\n $event,\r\n data\r\n });\r\n this.textboxValueSaved = false;\r\n this.TextboxChangedSubject.next({ value: $event, data });\r\n }\r\n textboxBlur($event, data: CompanySetting) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:textboxBlur',\r\n $event,\r\n data\r\n });\r\n if (this.editing && this.editing.SettingValue !== data.SettingValue) {\r\n this.SettingChangedSubject.next({ value: $event, data: data }); //////\r\n this.textboxValueSaved = true;\r\n // this.updateSetting($event, data);\r\n }\r\n }\r\n checkboxChanged($event, data) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:checkboxChanged',\r\n $event,\r\n data\r\n });\r\n this.SettingChangedSubject.next({ value: $event.checked, data });\r\n }\r\n dropdownChanged($event, data) {\r\n this.SettingChangedSubject.next({ value: $event.value, data });\r\n }\r\n onStatusClick(item: CompanySetting) {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.SettingType });\r\n }\r\n hasChangedValue(oldValue, newValue, ctrlType): boolean {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:hasChangedValue',\r\n newValue,\r\n oldValue,\r\n equal: oldValue === newValue\r\n });\r\n if (oldValue === newValue) {\r\n // this.editing = null;\r\n return false;\r\n }\r\n if (ctrlType === 'datetimepicker') {\r\n this.log.verbose({\r\n type: 'CompanySettingPresenterComponent:hasChangedValue:datetimepicker',\r\n newValue,\r\n oldValue,\r\n days: moment(oldValue).diff(moment(newValue), 'days', true)\r\n });\r\n if (Math.abs(moment(oldValue).diff(moment(newValue), 'days')) < 1) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { CompanySettingFeatureComponent } from './company-setting-feature/company-setting-feature.component';\r\nimport { CompanySettingPresenterComponent } from './company-setting-presenter/company-setting-presenter.component';\r\nimport * as store from './store';\r\n\r\n@NgModule({\r\n declarations: [\r\n CompanySettingFeatureComponent,\r\n CompanySettingPresenterComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(store.companySettingsFeatureKey, store.reducer),\r\n EffectsModule.forFeature([store.CompanySettingEffects])\r\n ]\r\n})\r\nexport class CompanySettingModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { IGenericResponse, ResponseStatus } from '../shared';\r\nimport { CompanySetting } from './store';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { getTestBed } from '@angular/core/testing';\r\nimport { getTestServiceError } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CompanySettingService {\r\n private uri = `${environment.apiLocation}/CompanySetting`;\r\n\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n public get(): Observable> {\r\n return this.http.get>(this.uri).pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'CompanySettingService:get',\r\n data\r\n })\r\n ),\r\n map(this.mapSettings),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'CompanySettingService:get:mapped',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public put(\r\n settings: Array>\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'CompanySettingService:putCompanySetting',\r\n settings\r\n });\r\n // return getTestServiceError(49, settings as CompanySetting[], 'SettingType');\r\n return this.http\r\n .put>(this.uri, {\r\n CompanySettingList: [\r\n ...settings.map(x => ({\r\n SettingType: x.SettingType,\r\n // SettingValue: s.SettingValue ? '1' : '0',\r\n SettingValue:\r\n x.CtrlType &&\r\n x.CtrlType.toLocaleLowerCase() === 'checkbox'\r\n ? x.SettingValue\r\n ? '1'\r\n : '0'\r\n : x.SettingValue\r\n }))\r\n ]\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type:\r\n 'CompanySettingService:putCompanySetting:response',\r\n data\r\n })\r\n ),\r\n map(resp => ({\r\n ...resp,\r\n Items: [...this.mapSettings(resp.Items)]\r\n })),\r\n tap(data =>\r\n this.log.verbose({\r\n type:\r\n 'CompanySettingService:putCompanySetting:response:mapped',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getSetting(SettingType: string): Observable> {\r\n return this.http\r\n .post>(this.uri, {\r\n SettingType: SettingType\r\n })\r\n .pipe(\r\n map(this.mapSettings),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'CompanySettingService:getSetting',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n mapSettings(settings: Array): Array {\r\n return settings.map(x => ({\r\n ...x,\r\n Validation: x.Isconfirmrequired ? 'confirm' : '',\r\n SettingValue:\r\n x.CtrlType.toLocaleLowerCase() === 'checkbox'\r\n ? x.SettingValue === 'true' ||\r\n x.SettingValue === true ||\r\n x.SettingValue === 1 ||\r\n x.SettingValue === '1'\r\n ? '1'\r\n : '0'\r\n : x.SettingValue\r\n }));\r\n }\r\n}\r\n","export * from './company-setting-feature/company-setting-feature.component';\r\nexport * from './company-setting-presenter/company-setting-presenter.component';\r\nexport * from './company-setting.service';\r\nexport * from './store';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { CompanySetting } from './company-setting.model';\r\n\r\nexport const loadCompanySettings = createAction(\r\n '[CompanySetting/API] Load CompanySettings',\r\n props<{ companySettings: CompanySetting[] }>()\r\n);\r\n\r\nexport const addCompanySetting = createAction(\r\n '[CompanySetting/API] Add CompanySetting',\r\n props<{ companySetting: CompanySetting }>()\r\n);\r\n\r\nexport const upsertCompanySetting = createAction(\r\n '[CompanySetting/API] Upsert CompanySetting',\r\n props<{ companySetting: CompanySetting }>()\r\n);\r\n\r\nexport const addCompanySettings = createAction(\r\n '[CompanySetting/API] Add CompanySettings',\r\n props<{ companySettings: CompanySetting[] }>()\r\n);\r\n\r\nexport const upsertCompanySettings = createAction(\r\n '[CompanySetting/API] Upsert CompanySettings',\r\n props<{ companySettings: CompanySetting[] }>()\r\n);\r\n\r\nexport const updateCompanySetting = createAction(\r\n '[CompanySetting/API] Update CompanySetting',\r\n props<{ companySetting: Update }>()\r\n);\r\n\r\nexport const updateCompanySettings = createAction(\r\n '[CompanySetting/API] Update CompanySettings',\r\n props<{ companySettings: Update[] }>()\r\n);\r\n\r\nexport const deleteCompanySetting = createAction(\r\n '[CompanySetting/API] Delete CompanySetting',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteCompanySettings = createAction(\r\n '[CompanySetting/API] Delete CompanySettings',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearCompanySettings = createAction(\r\n '[CompanySetting/API] Clear CompanySettings'\r\n);\r\n\r\nexport const getCompanySettings = createAction(\r\n '[CompanySetting/API] Get CompanySettings'\r\n);\r\nexport const getCompanySetting = createAction(\r\n '[CompanySetting/API] Get CompanySetting',\r\n props<{ SettingType: string }>()\r\n);\r\nexport const putCompanySettings = createAction(\r\n '[CompanySetting/API] Put CompanySettings',\r\n props<{ settings: Array> }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport {\r\n switchMap,\r\n mergeMap,\r\n exhaustMap,\r\n catchError,\r\n concatMap,\r\n tap,\r\n filter,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { CompanySettingService } from '../company-setting.service';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromCompanySettings from './company-setting.actions';\r\nimport * as selectors from './company-setting.reducer';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { CompanySetting } from './company-setting.model';\r\n\r\n@Injectable()\r\nexport class CompanySettingEffects {\r\n constructor(\r\n private log: LoggingService,\r\n private actions$: Actions,\r\n private service: CompanySettingService,\r\n private store: Store\r\n ) {\r\n this.log.verbose({\r\n type: 'CompanySettingEffects::'\r\n });\r\n }\r\n\r\n getCompanySettings$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromCompanySettings.getCompanySettings),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'CompanySettingEffects:getCompanySettings$',\r\n a\r\n })\r\n ),\r\n switchMap(() =>\r\n this.service.get().pipe(\r\n concatMap(companySettings =>\r\n companySettings\r\n ? [\r\n fromCompanySettings.clearCompanySettings(),\r\n fromCompanySettings.loadCompanySettings({\r\n companySettings\r\n })\r\n ]\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n companySettings,\r\n 'Company Settings'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n getCompanySetting$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromCompanySettings.getCompanySetting),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'CompanySettingEffects:getCompanySetting$',\r\n a\r\n })\r\n ),\r\n //TODO: shouldn't this be switchMap?\r\n mergeMap(a =>\r\n this.service.getSetting(a.SettingType).pipe(\r\n concatMap(companySettings =>\r\n companySettings\r\n ? [\r\n fromCompanySettings.upsertCompanySettings({\r\n companySettings\r\n })\r\n ]\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n companySettings,\r\n 'Company Settings'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n putCompanySetting$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromCompanySettings.putCompanySettings),\r\n tap(a => this.log.verbose({ type: 'putCompanySetting$', a })),\r\n switchMap(a =>\r\n this.service.put(a.settings).pipe(\r\n withLatestFrom(\r\n this.store.pipe(\r\n select(\r\n selectors.getSetting(\r\n a.settings[0].SettingType as string\r\n )\r\n )\r\n )\r\n ),\r\n concatMap(([resp, old]) => {\r\n this.log.verbose({\r\n type: 'putCompanySetting$',\r\n resp,\r\n old\r\n });\r\n const status = fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n id: old.SettingType,\r\n processId: fromShared.ProcessEnum.CompanySetting,\r\n Items:\r\n resp.Items && resp.Items.length > 0\r\n ? resp.Items.map(x => ({\r\n ...x,\r\n id: x.SettingType\r\n }))\r\n : (undefined as any)\r\n });\r\n return fromShared.Errors.IsSuccessStatus(\r\n resp.StatusCode\r\n )\r\n ? [\r\n fromCompanySettings.upsertCompanySettings({\r\n companySettings: resp.Items\r\n // .filter(\r\n // x => x.CtrlType\r\n // )\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.CatID.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(status),\r\n fromCompanySettings.upsertCompanySettings({\r\n companySettings:\r\n resp.Items && resp.Items.length > 0\r\n ? resp.Items\r\n : [\r\n {\r\n ...old,\r\n Status: status.find(\r\n x =>\r\n x.MsgEntityID ===\r\n old.SettingType\r\n )\r\n }\r\n ]\r\n })\r\n ];\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n // TODO: remove hard coding to retrieve all on FYStartDate\r\n // careful this doesn't trigger a recursive loop, it doesn't right now\r\n upsertCompanySettingsFYS$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromCompanySettings.upsertCompanySettings),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'CompanySettingEffects:upsertCompanySettingsFYS$',\r\n a: action\r\n })\r\n ),\r\n filter(a =>\r\n a.companySettings\r\n .map(x => x.SettingType)\r\n .includes('FYStartDate')\r\n ),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'CompanySettingEffects:upsertCompanySettingsFYS$:filter',\r\n a: action\r\n })\r\n ),\r\n switchMap(() => [fromCompanySettings.getCompanySettings()])\r\n );\r\n });\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\n\r\nexport interface CompanySetting {\r\n CatID: number;\r\n CatDescription: string;\r\n SettingType: string;\r\n SettingTypeLabel: string;\r\n SettingValue: any;\r\n CtrlType: string; // enum?\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n Validation: string;\r\n Isconfirmrequired: boolean;\r\n Isreadonly: boolean;\r\n ToolTip?: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport {\r\n Action,\r\n createFeatureSelector,\r\n createReducer,\r\n createSelector,\r\n on\r\n} from '@ngrx/store';\r\nimport * as fromShared from '../../shared';\r\nimport * as CompanySettingActions from './company-setting.actions';\r\nimport { CompanySetting } from './company-setting.model';\r\n\r\nexport const companySettingsFeatureKey = 'companySettings';\r\n\r\nexport type State = EntityState;\r\n// have to specify function to get the uniqueid column since we're not using \"id\"\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: CompanySetting) => model.SettingType\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst companySettingReducer = createReducer(\r\n initialState,\r\n on(CompanySettingActions.addCompanySetting, (state, action) =>\r\n adapter.addOne(action.companySetting, state)\r\n ),\r\n on(CompanySettingActions.upsertCompanySetting, (state, action) =>\r\n adapter.upsertOne(action.companySetting, state)\r\n ),\r\n on(CompanySettingActions.addCompanySettings, (state, action) =>\r\n adapter.addMany(action.companySettings, state)\r\n ),\r\n on(CompanySettingActions.upsertCompanySettings, (state, action) =>\r\n adapter.upsertMany(action.companySettings, state)\r\n ),\r\n on(CompanySettingActions.updateCompanySetting, (state, action) =>\r\n adapter.updateOne(action.companySetting, state)\r\n ),\r\n on(CompanySettingActions.updateCompanySettings, (state, action) =>\r\n adapter.updateMany(action.companySettings, state)\r\n ),\r\n on(CompanySettingActions.deleteCompanySetting, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(CompanySettingActions.deleteCompanySettings, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(CompanySettingActions.loadCompanySettings, (state, action) =>\r\n adapter.setAll(action.companySettings, state)\r\n ),\r\n on(CompanySettingActions.clearCompanySettings, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return companySettingReducer(state, action);\r\n}\r\nexport const localState = createFeatureSelector(\r\n companySettingsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\nexport const getCategories = createSelector(selectAll, settings =>\r\n fromShared.uniqBy(\r\n settings.map(x => ({\r\n CatID: x.CatID,\r\n Description: x.CatDescription\r\n })),\r\n x => x.CatID\r\n )\r\n);\r\nexport const selectEntity = id =>\r\n createSelector(selectEntities, entities => entities[id]);\r\nexport const getReminderStatus = createSelector(selectAll, settings =>\r\n settings.find(x => x.SettingType === 'RmdrStatus')\r\n);\r\n\r\n// export const getSettingValue = createSelector(\r\n// selectAll,\r\n// (settings: CompanySetting[], props: { SettingType: string }) =>\r\n// settings.find(x => x.SettingType === props.SettingType)\r\n// ? settings.find(x => x.SettingType === props.SettingType)\r\n// ?.SettingValue\r\n// : null\r\n// );\r\nexport const getSettingValue = (settingType: string) =>\r\n createSelector(\r\n selectAll,\r\n settings =>\r\n settings.find(x => x.SettingType === settingType)\r\n ?.SettingValue as string\r\n );\r\n\r\nexport const getSetting = (settingType: string) =>\r\n createSelector(\r\n selectAll,\r\n settings =>\r\n settings.find(x => x.SettingType === settingType) as CompanySetting\r\n );\r\n\r\nexport const getSettingBooleanValue = (settingType: string) =>\r\n createSelector(selectAll, (settings: CompanySetting[]) => {\r\n const value = settings.find(x => x.SettingType === settingType);\r\n return value\r\n ? value.SettingValue === '1' ||\r\n value.SettingValue === 1 ||\r\n value.SettingValue === 'true' ||\r\n value.SettingValue === true\r\n : false;\r\n });\r\n\r\nexport const getSettingDateValue = (settingType: string) =>\r\n createSelector(selectAll, settings =>\r\n settings.find(x => x.SettingType === settingType)?.SettingValue\r\n ? new Date(\r\n settings.find(\r\n x => x.SettingType === settingType\r\n )?.SettingValue\r\n )\r\n : undefined\r\n );\r\n\r\nexport const isGCPEnabled = getSettingBooleanValue('ExternalEmployeeSource');\r\nexport const isQBOEnabled = getSettingBooleanValue('QuickbooksOnline');\r\nexport const SendEmployeetoQB = getSettingBooleanValue('SendEmployeetoQB');\r\nexport const SendDoctoQB = getSettingBooleanValue('SendDoctoQB');\r\n\r\nexport enum CompanySettingEnum {\r\n QuickbooksOnline = 'QuickbooksOnline',\r\n SendEmployeetoQB = 'SendEmployeetoQB',\r\n SendDoctoQB = 'SendDoctoQB',\r\n ExternalEmployeeSource = 'ExternalEmployeeSource',\r\n GovConPayId = 'GovConPayId',\r\n GovConLegalId = 'GovConPayLegalId',\r\n GovConLegalCode = 'GovConPayLegalCode',\r\n ExternalCompanyId = 'ExternalCompanyId',\r\n TaxpayerID = 'TaxpayerID',\r\n CompanyName = 'CompanyName',\r\n EmployeeNameOrder = 'EmployeeNameOrder',\r\n ExternalEmployeeLastSync = 'ExternalEmployeeLastSync',\r\n ExternalEmployeeValidationLastRun = 'ExternalEmployeeValidationLastRun',\r\n ExternalEmployeeValidationComplete = 'ExternalEmployeeValidationComplete'\r\n}\r\n","export * from './company-setting.actions';\r\nexport * from './company-setting.reducer';\r\nexport * from './company-setting.model';\r\nexport * from './company-setting.effects';\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { AccordionModule, MultiSelectModule, SharedModule } from '../shared';\r\nimport { ContractCumulativeEffects } from './store/contract-cumulative.effects';\r\nimport * as reducer from './store/contract-cumulative.reducer';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n AccordionModule,\r\n MultiSelectModule,\r\n StoreModule.forFeature(\r\n reducer.contractCumulativesFeatureKey,\r\n reducer.reducer\r\n ),\r\n EffectsModule.forFeature([ContractCumulativeEffects])\r\n ]\r\n})\r\nexport class ContractCumulativeModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IDeleteEntity, IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IServiceItem, ITask, IUserGroup } from '../lookups';\r\nimport { SessionDates } from './SessionDates';\r\nimport { ContractCumulative } from './store/contract-cumulative.model';\r\nimport { Users } from './store/users.model';\r\nimport { CumulativeUpload } from '../data-services/cumulative-upload/cumulative-upload.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContractCumulativeService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private uploadUri = `${environment.apiLocation}/CumulativeUpload`;\r\n private uri = `${environment.apiLocation}/ContractCum`;\r\n private getUri = `${environment.apiLocation}/ContractCum?Commit=True`;\r\n private userUri = `${environment.apiLocation}/User`;\r\n private sessionUri = `${environment.apiLocation}/EFSession/?SessionType=C`;\r\n\r\n public getSessionDates(): Observable> {\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:getSessionDates',\r\n uri: this.sessionUri\r\n });\r\n return this.http.get>(this.sessionUri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public postContractCums(\r\n DirectOrIndirect: string,\r\n Todayonly: boolean,\r\n Asofdate: Date,\r\n Tasks: ITask[],\r\n ServiceItems: IServiceItem[],\r\n DirectReports: Users[],\r\n Txntype: string,\r\n CostCenters: IUserGroup[]\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:postContractCums',\r\n uri: this.uri\r\n });\r\n return this.http\r\n .post>(this.uri, {\r\n DirectOrIndirect: DirectOrIndirect,\r\n Todayonly: Todayonly,\r\n Asofdate: Asofdate,\r\n Tasks: Tasks,\r\n ServiceItems: ServiceItems,\r\n DirectReports: DirectReports,\r\n Txntype: Txntype,\r\n CostCenters: CostCenters\r\n })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public uploadCumulatives(JsonString: string): Observable {\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:uploadCumulatives',\r\n uri: this.uri\r\n });\r\n return this.http\r\n .post(this.uploadUri, {\r\n JsonString: JsonString\r\n })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getContractCums(): Observable> {\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:getContractCums',\r\n uri: this.getUri\r\n });\r\n return this.http.get>(this.getUri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putContractCums(\r\n contractcums: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.uri, {\r\n ContractCumList: contractcums\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:putContractCums',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public deleteContractCum(ids: Array) {\r\n return this.http\r\n .request>('DELETE', this.uri, {\r\n body: { EntityIDs: ids }\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:deleteContractCum:reponse',\r\n data\r\n });\r\n })\r\n );\r\n }\r\n\r\n public getUsers(UserFilterID: number, ShowInactive: boolean) {\r\n return this.http\r\n .post>(this.userUri, {\r\n UserFilterID: UserFilterID,\r\n ShowInactive: ShowInactive\r\n })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { Contract } from '../../account/account-allocations';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport {\r\n CalcType,\r\n IDirectReport,\r\n IServiceItem,\r\n ITask,\r\n IUserGroup,\r\n LoadServiceItems\r\n} from '../../lookups';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ContractCumulativePresenterComponent } from '../presenter/contract-cumulative-presenter.component';\r\nimport { SessionDates } from '../SessionDates';\r\nimport * as fromActions from '../store/contract-cumulative.actions';\r\nimport { ContractCumulative } from '../store/contract-cumulative.model';\r\nimport * as fromReducer from '../store/contract-cumulative.reducer';\r\nimport * as fromReports from '../../reporting/store';\r\nimport { ReportParams } from '../../reporting/store/report-params.model';\r\nimport { IUserInfo } from '../../user-info';\r\nimport * as fromAuth from '../../auth/store/auth.reducer';\r\nimport * as fromUser from '../../user-info';\r\n@Component({\r\n selector: 'ef-contract-cumulative-feature',\r\n templateUrl: './contract-cumulative-feature.component.html',\r\n styleUrls: ['./contract-cumulative-feature.component.scss']\r\n})\r\nexport class ContractCumulativeFeatureComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n @ViewChild(ContractCumulativePresenterComponent, { static: true })\r\n presenter: ContractCumulativePresenterComponent;\r\n\r\n public contractcums$: Observable;\r\n public contracts$: Observable;\r\n public serviceitems$: Observable;\r\n public directreports$: Observable;\r\n public txntypes$: Observable;\r\n public tasks$: Observable;\r\n public userGroups$: Observable;\r\n public sessionDates$: Observable;\r\n public reports$: Observable>;\r\n private auth$: Observable;\r\n public userInfo$: Observable;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n active = true;\r\n IsLoading: boolean;\r\n commitText = \"Cumulative commit in progress...\";\r\n contractDataService: EntityCollectionService;\r\n ShowError = new ReplaySubject(1);\r\n\r\n private RunReportsSubject = new ReplaySubject<{\r\n reports: Array;\r\n queryparams: any;\r\n params: ReportParams;\r\n }>(1);\r\n cumulativeUploadDataService: EntityCollectionService;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private store: Store,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n\r\n this.cumulativeUploadDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.CumulativeUpload.entityName\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.store.dispatch(fromActions.getSessionDates());\r\n // this.store.dispatch(\r\n // fromActions.postContractCumulatives({\r\n // DirectOrIndirect: 'Direct',\r\n // Todayonly: false,\r\n // Asofdate: null,\r\n // Tasks: null,\r\n // ServiceItems: null,\r\n // DirectReports: null,\r\n // Txntype: null,\r\n // CostCenters: null\r\n // })\r\n // );\r\n this.contractDataService.getAll();\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n this.store.dispatch(fromActions.getTxnTypes());\r\n this.store.dispatch(\r\n fromActions.getUsers({\r\n UserFilterID: 5,\r\n ShowInactive: true\r\n })\r\n );\r\n this.store.dispatch(new LoadServiceItems(false));\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.presenter.refreshTimer) {\r\n clearInterval(this.presenter.refreshTimer);\r\n }\r\n this.active = false;\r\n this.store.dispatch(fromActions.clearContractCumulatives());\r\n }\r\n\r\n setupObservables() {\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.auth$ = this.store.pipe(select(fromAuth.getAuth));\r\n this.reports$ = this.store.pipe(\r\n select(fromReports.selectAll),\r\n map(x => clone(x))\r\n );\r\n\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.sessionDates$ = this.store.pipe(\r\n select(fromReducer.selectSessionDates),\r\n map(x => clone(x))\r\n );\r\n\r\n this.contractcums$ = this.store.pipe(\r\n select(fromReducer.selectAll),\r\n map(c => clone(c))\r\n );\r\n\r\n this.contractcums$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe((cc) => {\r\n if (cc.some(x => x.Cumstatus == 'Building CTD') == true) {\r\n this.IsLoading = true;\r\n } else {\r\n this.IsLoading = false;\r\n }\r\n\r\n });\r\n\r\n this.userGroups$ = this.store.pipe(\r\n select(fromLookups.getUserGroupsLookup)\r\n );\r\n\r\n this.directreports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n map(x => clone(x)),\r\n // map(users => users.filter(x => x.IsActive == true)),\r\n map(x =>\r\n x.sort((a, b) => a.EmployeeName.localeCompare(b.EmployeeName))\r\n )\r\n );\r\n\r\n this.txntypes$ = this.store.pipe(\r\n select(fromReducer.selectTxnTypes),\r\n map(x => clone(x)),\r\n map(x => x.sort((a, b) => a.CalcDesc.localeCompare(b.CalcDesc)))\r\n );\r\n\r\n this.contracts$ = this.contractDataService.entities$.pipe(\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n )\r\n );\r\n\r\n // this.directreports$ = this.store.pipe(\r\n // select(fromLookups.getDirectReportsLookup),\r\n // map(c =>\r\n // c.filter(z => z.IsValidUser == true).map(x => ({\r\n // value: x.EmployeeListID,\r\n // label: x.EmployeeName\r\n // })).sort((a, b) => a.label.localeCompare(b.label))\r\n // )\r\n // );\r\n\r\n this.serviceitems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ServiceItem.localeCompare(b.ServiceItem))\r\n )\r\n );\r\n\r\n this.tasks$ = this.store.pipe(\r\n select(fromLookups.getTasksLookup),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.TaskLongName.localeCompare(b.TaskLongName))\r\n )\r\n );\r\n\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeFeatureComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.contractcums$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'ContractCumulativeFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n this.userInfo$.pipe(takeWhile(() => this.active)).subscribe(userInfo => {\r\n this.store.dispatch(new fromLookups.LoadDirectReports({user: userInfo, activeOnly: false }));\r\n });\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.RunReportsSubject.pipe(withLatestFrom(this.auth$, this.userInfo$))\r\n .pipe(takeWhile(x => this.active))\r\n .subscribe(([{ reports, queryparams, params }, auth, userInfo]) => {\r\n const report = reports.find(x => x.RptNbr == 908);\r\n\r\n this.store.dispatch(\r\n fromReports.runReport({\r\n report: {\r\n report,\r\n params: {\r\n ...params,\r\n EmployeeListID: userInfo.EmployeeListID,\r\n RptID: report.RptID\r\n },\r\n queryparams: {\r\n ...queryparams,\r\n User: userInfo.EmployeeListID,\r\n Cust: auth.CustomerID,\r\n GroupId: -1\r\n }\r\n }\r\n })\r\n );\r\n });\r\n }\r\n\r\n onLoadSessionDates($event) {\r\n this.store.dispatch(fromActions.getSessionDates());\r\n }\r\n\r\n onCommitCumulatives($event) {\r\n this.IsLoading = true;\r\n this.store.dispatch(\r\n fromActions.postContractCumulatives($event)\r\n );\r\n }\r\n\r\n onTimer($event) {\r\n if ($event.timer === true) {\r\n clearInterval(this.presenter.refreshTimer);\r\n this.presenter.refreshTimer = setInterval(() => {\r\n //this.IsLoading = true;\r\n this.cdRef.detectChanges();\r\n this.store.dispatch(\r\n fromActions.postContractCumulatives({\r\n DirectOrIndirect: 'Direct',\r\n Todayonly: false,\r\n Asofdate: $event.date,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n })\r\n );\r\n }, 5000);\r\n } else {\r\n clearInterval(this.presenter.refreshTimer);\r\n }\r\n }\r\n\r\n onLoadContractCums($event) {\r\n this.log.verbose({\r\n type: 'ContractCumulativeFeatureComponent:onLoadContractCums'\r\n });\r\n this.store.dispatch(fromActions.clearContractCumulatives());\r\n if ($event != null) {\r\n this.store.dispatch(\r\n fromActions.postContractCumulatives({\r\n DirectOrIndirect: $event.DirectOrIndirect,\r\n Todayonly: $event.Todayonly,\r\n Asofdate: $event.Asofdate,\r\n Tasks: $event.Tasks,\r\n ServiceItems: $event.ServiceItems,\r\n DirectReports: $event.DirectReports,\r\n Txntype: $event.Txntype,\r\n CostCenters: $event.CostCenters\r\n })\r\n );\r\n }\r\n }\r\n\r\n onLoadAllContractCums($event) {\r\n this.log.verbose({\r\n type: 'ContractCumulativeFeatureComponent:onLoadAllContractCums'\r\n });\r\n this.store.dispatch(fromActions.getContractCumulatives());\r\n }\r\n\r\n onSaveContractCums($event) {\r\n this.log.verbose({\r\n type: 'ContractCumulativeFeatureComponent:onSaveContractCums'\r\n });\r\n this.store.dispatch(\r\n fromActions.putContractCumulatives({ contractcums: [$event] })\r\n );\r\n }\r\n\r\n onDeleteContractCum($event) {\r\n this.store.dispatch(\r\n fromActions.removeContractCum({ ids: [$event.Txnid] })\r\n );\r\n }\r\n\r\n onLoadDirectOrIndirect($event) {\r\n if ($event != null) {\r\n this.store.dispatch(\r\n fromActions.postContractCumulatives({\r\n DirectOrIndirect: $event.DirectOrIndirect,\r\n Todayonly: $event.Todayonly,\r\n Asofdate: $event.Asofdate,\r\n Tasks: $event.Tasks,\r\n ServiceItems: $event.ServiceItems,\r\n DirectReports: $event.DirectReports,\r\n Txntype: $event.Txntype,\r\n CostCenters: $event.CostCenters\r\n })\r\n );\r\n }\r\n }\r\n\r\n onRunReports(data) {\r\n this.RunReportsSubject.next(data);\r\n }\r\n\r\n onUploadJSON($event) {\r\n this.store.dispatch(\r\n fromActions.uploadCumulatives({JsonString: $event})\r\n );\r\n //this.cumulativeUploadDataService.getWithQuery({JsonString: $event});\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { Contract } from '../../account/account-allocations';\r\nimport * as fromLookups from '../../lookups';\r\nimport { CalcType, IServiceItem, ITask, IUserGroup } from '../../lookups';\r\nimport { IStatusMessage, Process, SelectItem, Table } from '../../shared';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { CostCenter } from '../CostCenter';\r\nimport { SessionDates } from '../SessionDates';\r\nimport { ContractCumulative } from '../store/contract-cumulative.model';\r\nimport { Users } from '../store/users.model';\r\nimport { columnResize } from '../../shared/columnResize';\r\nimport * as fromReports from '../../reporting/store';\r\nimport { ReportParams } from '../../reporting/store/report-params.model';\r\nimport * as XLSX from 'xlsx';\r\n@Component({\r\n selector: 'ef-contract-cumulative-presenter',\r\n templateUrl: './contract-cumulative-presenter.component.html',\r\n styleUrls: ['./contract-cumulative-presenter.component.scss']\r\n})\r\nexport class ContractCumulativePresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, OnDestroy\r\n{\r\n @Output() RunReports = new ReplaySubject<{\r\n reports: fromReports.Report[];\r\n queryparams: any;\r\n params: Partial;\r\n }>(1);\r\n\r\n @Input() reports: fromReports.Report[];\r\n\r\n SelectedErrorSubject = new ReplaySubject(1);\r\n selectedAsOfDate: any;\r\n deletePressed = false;\r\n private ContractCumsSubject = new ReplaySubject>(\r\n 1\r\n );\r\n private _contractcums: Array;\r\n @Input() set contractcums(value: Array) {\r\n if (value && value.length > 0) {\r\n this._contractcums = value;\r\n if (\r\n this._contractcums.some(\r\n x =>\r\n x.Cumstatus == 'Building CTD' ||\r\n x.Cumstatus == 'building CTD'\r\n ) == true\r\n ) {\r\n this.log.verbose('Building CTD exists - start refresh timer');\r\n this.showTimer = true;\r\n this.Timer.next({\r\n timer: this.showTimer,\r\n date: this.editFormGroup.controls['SessionDates'].value\r\n });\r\n } else {\r\n this.showTimer = false;\r\n this.Timer.next({\r\n timer: this.showTimer,\r\n date: this.editFormGroup.controls['SessionDates'].value\r\n });\r\n this.log.verbose(\r\n 'Building CTD does not exist - end refresh timer'\r\n );\r\n this.IsFeatureLoading = false;\r\n }\r\n\r\n // if (this.editModeIsEnabled == true && this.buildPressed == false) {\r\n // this.tableItemSource = this._contractcums.filter(\r\n // x =>\r\n // moment(x.Txndate).format('MM/DD/YY') ==\r\n // this.editFormGroup.controls['SessionDates'].value\r\n // );\r\n // } else {\r\n // this.tableItemSource = value;\r\n // }\r\n this.tableItemSource = value;\r\n this.ContractCumsSubject.next(value);\r\n this.IsLoading = false;\r\n }\r\n }\r\n get contractcums(): Array {\r\n return this._contractcums;\r\n }\r\n\r\n private ContractsSubject = new ReplaySubject>(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n if (value) {\r\n this._contracts = value;\r\n const filteredContracts = this._contracts.filter(\r\n x => x.ContractType != 'LOC'\r\n );\r\n this.ContractsSubject.next(value);\r\n this.contractsSelectItem = filteredContracts.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n }\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n private TasksSubject = new ReplaySubject>(1);\r\n private _tasks: Array;\r\n @Input() set tasks(value: Array) {\r\n if (value) {\r\n this._tasks = value;\r\n const filteredTasks = this._tasks.filter(\r\n x => x.ContractType != 'LOC'\r\n );\r\n this.TasksSubject.next(value);\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n }\r\n get tasks(): Array {\r\n return this._tasks;\r\n }\r\n\r\n private TxnTypesSubject = new ReplaySubject>(1);\r\n private _txntypes: Array;\r\n @Input() set txntypes(value: Array) {\r\n if (value) {\r\n this._txntypes = value;\r\n const filteredTxnTypes = this._txntypes.filter(\r\n x => x.CostType == this.doi\r\n );\r\n this.TxnTypesSubject.next(value);\r\n this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n this.txnTypesInTableSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n }\r\n get txntypes(): Array {\r\n return this._txntypes;\r\n }\r\n\r\n private DirectReportsSubject = new ReplaySubject>>(1);\r\n private _directreports: Array>;\r\n @Input() set directreports(value: Array>) {\r\n if (value) {\r\n value.splice(0, 0, {\r\n EmployeeListID: 'SYS000000000000000000000000000000000',\r\n EmployeeName: 'Not applicable'\r\n });\r\n this._directreports = value;\r\n this.DirectReportsSubject.next(value);\r\n this.directReportsSelectItem = this._directreports.map(x => ({\r\n value: x.EmployeeListID,\r\n label: x.EmployeeName\r\n }));\r\n }\r\n }\r\n get directreports(): Array> {\r\n return this._directreports;\r\n }\r\n\r\n private ServiceItemsSubject = new ReplaySubject>(1);\r\n private _serviceitems: Array;\r\n @Input() set serviceitems(value: Array) {\r\n if (value) {\r\n this._serviceitems = value;\r\n this.ServiceItemsSubject.next(value);\r\n this.serviceItemsSelectItem = this._serviceitems.map(x => ({\r\n value: x.SIListID,\r\n label: x.ServiceItem\r\n }));\r\n this.log.verbose('si count = ' + this._serviceitems.length);\r\n }\r\n }\r\n get serviceitems(): Array {\r\n return this._serviceitems;\r\n }\r\n\r\n private SessionDatesSubject = new ReplaySubject>(1);\r\n private _sessiondates: Array;\r\n @Input() set sessionDates(value: Array) {\r\n if (value && value.length > 0) {\r\n this._sessiondates = value;\r\n this.SessionDatesSubject.next(value);\r\n\r\n this.sessionDatesSelectItem = this._sessiondates.map(x => ({\r\n value: x.SessionEnd,\r\n label: x.SessionEnd\r\n }));\r\n\r\n if (this.buildPressed == false) {\r\n this.editFormGroup.controls['SessionDates'].patchValue(\r\n this.sessionDatesSelectItem[0].label\r\n );\r\n } else {\r\n }\r\n if (this.deletePressed == true) {\r\n this.editFormGroup.controls['SessionDates'].patchValue(\r\n this.sessionDatesSelectItem[0].label\r\n );\r\n }\r\n if (this.cumulativeUpload == true) {\r\n this.cumulativeUpload = false;\r\n this.editFormGroup.controls['SessionDates'].patchValue(\r\n moment(this.cumulativeUploadDate).format('MM/DD/YY')\r\n );\r\n }\r\n // if (this.editModeIsEnabled == true) {\r\n // if (this.editFormGroup.controls['SessionDates'].value != null) {\r\n // if (this.buildFormGroup.controls['Asofdate'].value != null) {\r\n // this.editFormGroup.controls[\r\n // 'SessionDates'\r\n // ].patchValue(\r\n // moment(\r\n // this.buildFormGroup.controls['Asofdate']\r\n // .value\r\n // ).format('MM/DD/YY')\r\n // );\r\n // this.buildFormGroup.controls['Asofdate'].reset();\r\n // }\r\n // }\r\n // }\r\n }\r\n }\r\n get sessionDates(): Array {\r\n return this._sessiondates;\r\n }\r\n\r\n @Input() public userGroups: Array;\r\n\r\n @Input() public process: Process;\r\n @Input() public IsFeatureLoading: boolean;\r\n @Output() LoadSessionDates = new ReplaySubject(1);\r\n @Output() Timer = new ReplaySubject(1);\r\n @Output() SaveContractCums = new ReplaySubject(1);\r\n @Output() LoadContractCums = new ReplaySubject(1);\r\n @Output() LoadAllContractCums = new ReplaySubject(1);\r\n @Output() CommitCumulatives = new ReplaySubject(1);\r\n @Output() DeleteContractCum = new ReplaySubject(1);\r\n @Output() LoadDirectOrIndirect = new ReplaySubject(1);\r\n public editing?: ContractCumulative = {} as ContractCumulative;\r\n clonedContractCums: { [i: string]: ContractCumulative } = {};\r\n active = true;\r\n moment: any;\r\n tableScrollHeight = '50em';\r\n buildFormGroup: FormGroup;\r\n editFormGroup: FormGroup;\r\n txnDateFormGroup: FormGroup;\r\n ccFormGroup: FormGroup;\r\n taskFormGroup: FormGroup;\r\n typeFormGroup: FormGroup;\r\n siFormGroup: FormGroup;\r\n empFormGroup: FormGroup;\r\n modDateFormGroup: FormGroup;\r\n showHideColumnsGroup: FormGroup;\r\n selectedContract: Contract;\r\n doi = 'Direct';\r\n txnTypesSelectItem: SelectItem[] = [];\r\n txnTypesInTableSelectItem: SelectItem[] = [];\r\n userGroupsSelectItem: SelectItem[] = [];\r\n userGroupsInTableSelectItem: SelectItem[] = [];\r\n tasksSelectItem: SelectItem[] = [];\r\n tasksInTableSelectItem: SelectItem[] = [];\r\n contractsSelectItem: SelectItem[] = [];\r\n directReportsSelectItem: SelectItem[] = [];\r\n serviceItemsSelectItem: SelectItem[] = [];\r\n sessionDatesSelectItem: SelectItem[] = [];\r\n siHidden = false;\r\n siColumnHidden = false;\r\n empHidden = false;\r\n empColumnHidden = false;\r\n selectedDirectReports: Users[] = [];\r\n selectedServiceItems: IServiceItem[] = [];\r\n selectedTasks: ITask[] = [];\r\n selectedCCs: IUserGroup[] = [];\r\n costCenters: CostCenter[] = [];\r\n\r\n asOfDateValid = false;\r\n contractValid = false;\r\n directReportValid = false;\r\n serviceItemValid = false;\r\n txnTypeValid = false;\r\n taskValid = false;\r\n ccValid = false;\r\n\r\n asOfDateIsRequired = false;\r\n contractIsRequired = false;\r\n directReportIsRequired = false;\r\n serviceItemIsRequired = false;\r\n txnTypeIsRequired = false;\r\n taskIsRequired = false;\r\n ccIsRequired = false;\r\n\r\n refreshTimer: any;\r\n\r\n showTimer = false;\r\n\r\n buildPressed = false;\r\n\r\n showRequiredMessage = false;\r\n\r\n editModeIsEnabled = false;\r\n\r\n txnFilterHasValue = false;\r\n\r\n modFilterHasValue = false;\r\n\r\n tableItemSource: ContractCumulative[] = [];\r\n\r\n // sessionDates: { SessionDate: string }[] = [];\r\n\r\n selectedSessionDate: string;\r\n\r\n IsLoading = false;\r\n\r\n cols: any[];\r\n frozenCols: any[];\r\n\r\n length: number;\r\n header: string;\r\n\r\n SIColumnHidden = false;\r\n EmpColumnHidden = false;\r\n\r\n @ViewChild(Table, { static: true })\r\n ContractCumTable: Table;\r\n\r\n _selectedColumns: any[];\r\n @Input() get selectedColumns(): any[] {\r\n return this._selectedColumns;\r\n }\r\n\r\n set selectedColumns(val: any[]) {\r\n // restore original order\r\n this._selectedColumns = this.cols.filter(col => val.includes(col));\r\n }\r\n\r\n showUploadDialog = false;\r\n\r\n excelFileAsJsonStr: string;\r\n\r\n excelFileAsJson: any;\r\n\r\n showUploadError = false;\r\n\r\n @Output() uploadJSON = new ReplaySubject(1);\r\n\r\n @ViewChild('fileUpload') uploadInput: ElementRef;\r\n\r\n cumulativeUpload = false;\r\n cumulativeUploadDate: any;\r\n\r\n fromWorksheet = true;\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n this.moment = moment;\r\n this.buildFormGroup = new FormGroup({\r\n Asofdate: new FormControl(null),\r\n Contracts: new FormControl(null),\r\n Tasks: new FormControl(null),\r\n ServiceItems: new FormControl(null),\r\n DirectReports: new FormControl(null),\r\n Txntypes: new FormControl(null),\r\n CC: new FormControl(null),\r\n direct: new FormControl(null),\r\n indirect: new FormControl(null),\r\n worksheet: new FormControl(null),\r\n manual: new FormControl(null)\r\n });\r\n\r\n this.editFormGroup = new FormGroup({\r\n SessionDates: new FormControl(null),\r\n EditMode: new FormControl(null)\r\n });\r\n\r\n this.txnDateFormGroup = new FormGroup({\r\n TxnDate: new FormControl(null)\r\n });\r\n\r\n this.ccFormGroup = new FormGroup({\r\n CC: new FormControl(null)\r\n });\r\n\r\n this.modDateFormGroup = new FormGroup({\r\n ModDate: new FormControl(null)\r\n });\r\n\r\n this.taskFormGroup = new FormGroup({\r\n Task: new FormControl(null)\r\n });\r\n\r\n this.typeFormGroup = new FormGroup({\r\n Type: new FormControl(null)\r\n });\r\n\r\n this.siFormGroup = new FormGroup({\r\n SI: new FormControl(null)\r\n });\r\n\r\n this.empFormGroup = new FormGroup({\r\n Emp: new FormControl(null)\r\n });\r\n\r\n this.showHideColumnsGroup = new FormGroup({\r\n ShowHide: new FormControl(null)\r\n });\r\n }\r\n\r\n excelDateConversion(excelDate) {\r\n return new Date(Date.UTC(0, 0, excelDate - 1));\r\n }\r\n\r\n dateToISODateString(excelDate) {\r\n return this.excelDateConversion(excelDate).toISOString().split('T')[0];\r\n }\r\n\r\n ngOnInit() {\r\n if (this.userGroups.length > 0) {\r\n this.userGroups = this.userGroups.filter(x =>\r\n x.PrefixedGroupID.includes('C')\r\n );\r\n this.userGroupsSelectItem = this.userGroups.map(x => ({\r\n label: x.GroupName,\r\n value: x.GroupID\r\n }));\r\n this.userGroupsInTableSelectItem = this.userGroups.map(x => ({\r\n label: x.GroupName,\r\n value: x.GroupID\r\n }));\r\n this.log.verbose('IsFeatureLoading: ' + this.IsFeatureLoading);\r\n // this.userGroupsInTableSelectItem.unshift({\r\n // label: \"\",\r\n // value: 0\r\n // });\r\n // this.userGroupsSelectItem.unshift({\r\n // label: \"\",\r\n // value: 0\r\n // });\r\n\r\n // this.costCenters = this.userGroups.map(x => ({\r\n // Costcenterid: x.GroupID,\r\n // Costcenterdesc: x.GroupName\r\n // }));\r\n }\r\n this.frozenCols = [\r\n {\r\n field: '',\r\n header: ``\r\n },\r\n {\r\n field: '',\r\n header: ''\r\n },\r\n { field: 'Cumstatus', header: 'Status' },\r\n { field: 'Txndate', header: 'Txn Date' },\r\n { field: 'TaskLongName', header: 'Task' },\r\n { field: 'Txntype', header: 'Type' },\r\n { field: 'Costcenterid', header: 'Cost Center' }\r\n ];\r\n this.cols = [\r\n { field: 'Silistid', header: 'Item' },\r\n { field: 'Employeelistid', header: 'Person' }\r\n ];\r\n // { field: 'Hoursworked', header: 'Hours' },\r\n // { field: 'Invoiceamount', header: 'Invoice' },\r\n // { field: 'Frcost', header: 'FR Invoice' },\r\n // { field: 'Ohcost', header: 'OH Invoice' },\r\n // { field: 'Gacost', header: 'GA Invoice' },\r\n // { field: 'Feecost', header: 'Fee Invoice' },\r\n // { field: 'Actualamount', header: 'Incurred' },\r\n // { field: 'Feecostebr', header: 'Fee Incurred' },\r\n // { field: 'Modifieddate', header: 'Modified' },\r\n // { field: '', header: 'Delete' },\r\n this._selectedColumns = this.cols;\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n\r\n this.buildFormGroup.controls['direct'].patchValue('direct');\r\n this.buildFormGroup.controls['worksheet'].patchValue('worksheet');\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.buildPressed = false;\r\n }\r\n\r\n onColumnResize($event) {\r\n const numOfFrozenCols = 7;\r\n const table = document.querySelector('table');\r\n columnResize($event, numOfFrozenCols, table);\r\n // var colIndex = $event.element.cellIndex + 1;\r\n // var change = $event.delta;\r\n\r\n // var table = document.querySelector('table');\r\n // var tableStyle = getComputedStyle(table);\r\n // var width = tableStyle.getPropertyValue(\"width\");\r\n // var widthArr = width.split(\"p\");\r\n // var widthValue = widthArr[0];\r\n // var newWidthValue = +widthValue + $event.delta;\r\n // table.style.width = `${newWidthValue}px`;\r\n // //expand\r\n // if (colIndex <= numOfFrozenCols) {\r\n // for (var i = colIndex; i < numOfFrozenCols; i++) {\r\n // var columnTdCells = Array.from(document.querySelectorAll(`td:nth-child(${i})`)) as Array;\r\n // for (var y = 0; y < columnTdCells.length; y++) {\r\n // var style = getComputedStyle(columnTdCells[y].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnTdCells[y].nextSibling.style.left = `${newLeftValue}px`;\r\n // }\r\n // var columnThCells = Array.from(document.querySelectorAll(`th:nth-child(${i})`)) as Array;\r\n // for (var z = 0; z < columnThCells.length; z++) {\r\n // var style = getComputedStyle(columnThCells[z].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnThCells[z].nextSibling.style.left = `${newLeftValue}px`;\r\n // }\r\n // }\r\n // }\r\n\r\n //fit\r\n // if (colIndex < numOfFrozenCols) {\r\n // var columnTdCells = Array.from(document.querySelectorAll(`td:nth-child(${colIndex})`)) as Array;\r\n // for (var y = 0; y < columnTdCells.length; y++) {\r\n // var style = getComputedStyle(columnTdCells[y].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnTdCells[y].nextSibling.style.left = `${newLeftValue}px`;\r\n\r\n // }\r\n // var columnThCells = Array.from(document.querySelectorAll(`th:nth-child(${colIndex})`)) as Array;\r\n // for (var z = 0; z < columnThCells.length; z++) {\r\n // var style = getComputedStyle(columnThCells[z].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnThCells[z].nextSibling.style.left = `${newLeftValue}px`;\r\n\r\n // }\r\n // }\r\n\r\n //$event.element.nextSibling.style.left = `${newLeftValue}px`;\r\n this.log.verbose($event);\r\n }\r\n\r\n showPersons() {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n }\r\n showItems() {\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n }\r\n\r\n onSelectedColumnsChange($event) {\r\n if ($event.value) {\r\n if ($event.itemValue) {\r\n if ($event.itemValue.header) {\r\n if ($event.itemValue.header == 'Item') {\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Person') {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n }\r\n this.header = $event.itemValue.header;\r\n }\r\n this.length = $event.value.length;\r\n } else {\r\n if (this.length == 1) {\r\n if (this.header == 'Item') {\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n }\r\n if (this.header == 'Person') {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n }\r\n this.length = 0;\r\n } else {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'ContractCumulativePresenterComponent:setupObservables'\r\n });\r\n }\r\n\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'ContractCumulativePresenterComponent:setupSubscriptions'\r\n });\r\n\r\n // this.showHideColumnsGroup.controls['ShowHide'].valueChanges\r\n // .pipe(takeWhile(_ => this.active))\r\n // .subscribe(value => {\r\n // if (value != null) {\r\n // if (value.length == 1) {\r\n // if (value[0].header == \"Service Item\") {\r\n // if (this.SIColumnHidden == true) {\r\n // this.SIColumnHidden = false;\r\n // } else {\r\n // this.SIColumnHidden = true;\r\n // }\r\n // }\r\n // if (value[0].header == \"Employee\") {\r\n // if (this.EmpColumnHidden == true) {\r\n // this.EmpColumnHidden = false;\r\n // } else {\r\n // this.EmpColumnHidden = true;\r\n // }\r\n // }\r\n // } else {\r\n // if (this.EmpColumnHidden == true) {\r\n // this.EmpColumnHidden = false;\r\n // } else {\r\n // this.EmpColumnHidden = true;\r\n // }\r\n\r\n // if (this.SIColumnHidden == true) {\r\n // this.SIColumnHidden = false;\r\n // } else {\r\n // this.SIColumnHidden = true;\r\n // }\r\n // }\r\n\r\n // }\r\n // });\r\n\r\n this.editFormGroup.controls['EditMode'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (value == true) {\r\n this.editModeIsEnabled = true;\r\n if (\r\n this.editFormGroup.controls['SessionDates'].value !=\r\n null\r\n ) {\r\n if (\r\n this.buildFormGroup.controls['Asofdate']\r\n .value != null\r\n ) {\r\n this.IsLoading = true;\r\n this.LoadSessionDates.next();\r\n this.editFormGroup.controls[\r\n 'SessionDates'\r\n ].patchValue(\r\n moment(this.selectedAsOfDate).format(\r\n 'MM/DD/YY'\r\n )\r\n );\r\n // setTimeout(() => {\r\n // this.editFormGroup.controls[\r\n // 'SessionDates'\r\n // ].patchValue(\r\n // moment(\r\n // this.selectedAsOfDate\r\n // ).format('MM/DD/YY')\r\n // );\r\n // }, 2000)\r\n }\r\n } else {\r\n this.IsLoading = true;\r\n if (\r\n this.buildFormGroup.controls['Asofdate']\r\n .value != null\r\n ) {\r\n this.LoadSessionDates.next();\r\n this.editFormGroup.controls[\r\n 'SessionDates'\r\n ].patchValue(\r\n moment(this.selectedAsOfDate).format(\r\n 'MM/DD/YY'\r\n )\r\n );\r\n // setTimeout(() => {\r\n // this.editFormGroup.controls[\r\n // 'SessionDates'\r\n // ].patchValue(\r\n // moment(\r\n // this.selectedAsOfDate\r\n // ).format('MM/DD/YY')\r\n // );\r\n // }, 2000)\r\n } else {\r\n this.LoadSessionDates.next();\r\n }\r\n }\r\n } else {\r\n // this.editFormGroup.controls['SessionDates'].reset();\r\n this.editModeIsEnabled = false;\r\n this.leavingEditMode();\r\n this.buildPressed = false;\r\n }\r\n }\r\n });\r\n\r\n this.editFormGroup.controls['SessionDates'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.tableItemSource = [];\r\n this.selectedSessionDate = value;\r\n if (this.buildPressed == true) {\r\n setTimeout(() => {\r\n this.LoadContractCums.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: value,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n }, 1000);\r\n } else {\r\n if (this.cumulativeUpload == false) {\r\n this.LoadContractCums.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: value,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n }\r\n }\r\n\r\n if (this.deletePressed == true) {\r\n this.LoadContractCums.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: value,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n this.deletePressed = false;\r\n } else {\r\n }\r\n\r\n // this.tableItemSource = this.contractcums.filter(x => moment(x.Txndate).format(\"MM/DD/YYYY\") == value);\r\n }\r\n });\r\n\r\n this.buildFormGroup.controls['worksheet'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.fromWorksheet = true;\r\n this.buildFormGroup.controls['manual'].patchValue(null);\r\n }\r\n\r\n });\r\n\r\n this.buildFormGroup.controls['manual'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.fromWorksheet = false;\r\n this.buildFormGroup.controls['worksheet'].patchValue(null);\r\n }\r\n\r\n });\r\n\r\n this.buildFormGroup.controls['Asofdate'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedAsOfDate = value;\r\n this.asOfDateValid = true;\r\n this.asOfDateIsRequired = false;\r\n }\r\n });\r\n\r\n this.buildFormGroup.controls['direct'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.buildFormGroup.controls['indirect'].patchValue(null);\r\n\r\n let filteredTxnTypes;\r\n let filteredContracts;\r\n let filteredTasks;\r\n this.doi = 'Direct';\r\n\r\n if (this.txntypes) {\r\n filteredTxnTypes = this.txntypes.filter(\r\n x => x.CostType == 'Direct'\r\n );\r\n\r\n this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n this.txnTypesInTableSelectItem = filteredTxnTypes.map(\r\n x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n })\r\n );\r\n }\r\n if (this.contracts) {\r\n filteredContracts = this.contracts.filter(\r\n x => x.ContractType != 'LOC'\r\n );\r\n\r\n this.contractsSelectItem = filteredContracts.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n }\r\n if (this.tasks) {\r\n filteredTasks = this.tasks.filter(\r\n x => x.ContractType != 'LOC'\r\n );\r\n\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n\r\n this.LoadDirectOrIndirect.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: null,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n }\r\n });\r\n this.buildFormGroup.controls['indirect'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.buildFormGroup.controls['direct'].patchValue(null);\r\n\r\n let filteredTxnTypes;\r\n let filteredContracts;\r\n let filteredTasks;\r\n\r\n this.doi = 'Indirect';\r\n if (this.txntypes) {\r\n filteredTxnTypes = this.txntypes.filter(\r\n x =>\r\n x.CostType == 'Indirect' &&\r\n x.CostSubType == 'Labor'\r\n );\r\n\r\n this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n this.txnTypesInTableSelectItem = filteredTxnTypes.map(\r\n x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n })\r\n );\r\n }\r\n if (this.contracts) {\r\n filteredContracts = this.contracts.filter(\r\n x => x.ContractType == 'LOC'\r\n );\r\n\r\n this.contractsSelectItem = filteredContracts.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n }\r\n if (this.tasks) {\r\n filteredTasks = this.tasks.filter(\r\n x => x.ContractType == 'LOC'\r\n );\r\n\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n\r\n this.LoadDirectOrIndirect.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: null,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n }\r\n });\r\n\r\n // this.buildFormGroup.controls['DoI'].valueChanges\r\n // .pipe(takeWhile(_ => this.active))\r\n // .subscribe(value => {\r\n // if (value != null) {\r\n // let filteredTxnTypes;\r\n // let filteredContracts;\r\n // let filteredTasks;\r\n // if (value == false) {\r\n // this.doi = 'Direct';\r\n // filteredTxnTypes = this.txntypes.filter(\r\n // x => x.CostType == 'Direct'\r\n // );\r\n // filteredContracts = this.contracts.filter(\r\n // x => x.ContractType != 'LOC'\r\n // );\r\n // filteredTasks = this.tasks.filter(\r\n // x => x.ContractType != 'LOC'\r\n // );\r\n // } else {\r\n // this.doi = 'Indirect';\r\n // filteredTxnTypes = this.txntypes.filter(\r\n // x =>\r\n // x.CostType == 'Indirect' &&\r\n // x.CostSubType == 'Labor'\r\n // );\r\n // filteredContracts = this.contracts.filter(\r\n // x => x.ContractType == 'LOC'\r\n // );\r\n // filteredTasks = this.tasks.filter(\r\n // x => x.ContractType == 'LOC'\r\n // );\r\n // }\r\n // this.contractsSelectItem = filteredContracts.map(x => ({\r\n // value: x.ContractListID,\r\n // label: x.ContractDesc\r\n // }));\r\n // this.tasksSelectItem = filteredTasks.map(x => ({\r\n // value: x.TaskListID,\r\n // label: x.TaskLongName\r\n // }));\r\n // this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n // value: x.TaskListID,\r\n // label: x.TaskLongName\r\n // }));\r\n // this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n // value: x.CalcType,\r\n // label: x.CalcDesc\r\n // }));\r\n // this.txnTypesInTableSelectItem = filteredTxnTypes.map(\r\n // x => ({\r\n // value: x.CalcType,\r\n // label: x.CalcDesc\r\n // })\r\n // );\r\n\r\n // this.LoadDirectOrIndirect.next({\r\n // DirectOrIndirect: this.doi,\r\n // Todayonly: null,\r\n // Asofdate: null,\r\n // Tasks: null,\r\n // ServiceItems: null,\r\n // DirectReports: null,\r\n // Txntype: null,\r\n // CostCenters: null\r\n // });\r\n // }\r\n // });\r\n this.buildFormGroup.controls['Contracts'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.buildFormGroup.controls['Tasks'].reset();\r\n this.contractIsRequired = false;\r\n this.contractValid = true;\r\n this.selectedContract = this.contracts.find(\r\n x => x.ContractListID == value\r\n ) as Contract;\r\n const filteredTasks = this.tasks.filter(x =>\r\n x.TaskLongName.includes(\r\n this.selectedContract.ContractDesc\r\n )\r\n );\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n });\r\n this.buildFormGroup.controls['Tasks'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedTasks = [];\r\n this.taskValid = true;\r\n this.taskIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedTasks.push(\r\n this.tasks.find(x => x.TaskListID == val) as any\r\n );\r\n });\r\n }\r\n });\r\n this.buildFormGroup.controls['Txntypes'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.txnTypeValid = true;\r\n this.txnTypeIsRequired = false;\r\n const type = this.txntypes.find(\r\n x => x.CalcType == value\r\n ) as fromLookups.CalcType;\r\n if (\r\n value == 'T' ||\r\n value == 'ODC' ||\r\n value == 'MAT' ||\r\n type.CostSubType == 'Expense'\r\n ) {\r\n this.siHidden = true;\r\n this.empHidden = true;\r\n this.serviceItemValid = true;\r\n this.directReportValid = true;\r\n // this.serviceItemIsRequired = false;\r\n // this.directReportIsRequired = false;\r\n }\r\n if (value == 'SUB' || value == 'CON') {\r\n this.siHidden = false;\r\n this.empHidden = false;\r\n this.directReportValid = true;\r\n this.serviceItemValid = false;\r\n // this.serviceItemIsRequired = true;\r\n // this.directReportIsRequired = false;\r\n }\r\n if (type.CostSubType == 'Labor') {\r\n this.siHidden = false;\r\n this.empHidden = false;\r\n this.directReportValid = false;\r\n this.serviceItemValid = false;\r\n // this.serviceItemIsRequired = true;\r\n // this.directReportIsRequired = true;\r\n }\r\n }\r\n });\r\n this.buildFormGroup.controls['CC'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedCCs = [];\r\n this.ccValid = true;\r\n this.ccIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedCCs.push(\r\n this.userGroups.find(\r\n x => x.GroupID == val\r\n ) as fromLookups.IUserGroup\r\n );\r\n });\r\n }\r\n });\r\n this.buildFormGroup.controls['ServiceItems'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedServiceItems = [];\r\n this.serviceItemValid = true;\r\n this.serviceItemIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedServiceItems.push(\r\n this.serviceitems.find(\r\n x => x.SIListID == val\r\n ) as fromLookups.IServiceItem\r\n );\r\n });\r\n }\r\n });\r\n this.buildFormGroup.controls['DirectReports'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedDirectReports = [];\r\n this.directReportValid = true;\r\n this.directReportIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedDirectReports.push(\r\n this.directreports.find(\r\n x => x.EmployeeListID == val\r\n ) as Users\r\n );\r\n });\r\n }\r\n });\r\n }\r\n\r\n // hideRequiredMessage() {\r\n // asOfDateValid: boolean = false;\r\n // contractValid: boolean = false;\r\n // directReportValid: boolean = false;\r\n // serviceItemValid: boolean = false;\r\n // txnTypeValid: boolean = false;\r\n // taskValid: boolean = false;\r\n\r\n // if (this.asOfDateValid) {\r\n\r\n // }\r\n // }\r\n\r\n TxnDateFilter($event) {\r\n this.txnFilterHasValue = true;\r\n this.tableItemSource = this.tableItemSource.filter(\r\n x =>\r\n moment(x.Txndate).format('MM/DD/YYYY') ==\r\n moment($event).format('MM/DD/YYYY')\r\n );\r\n }\r\n\r\n ClearTxnDateFilter($event) {\r\n this.txnFilterHasValue = false;\r\n this.tableItemSource = this.contractcums.filter(x => x.Txndate != null);\r\n }\r\n\r\n ModDateFilter($event) {\r\n this.modFilterHasValue = true;\r\n this.tableItemSource = this.tableItemSource.filter(\r\n x =>\r\n moment(x.Modifieddate).format('MM/DD/YYYY') ==\r\n moment($event).format('MM/DD/YYYY')\r\n );\r\n }\r\n\r\n ClearModDateFilter($event) {\r\n this.modFilterHasValue = false;\r\n this.tableItemSource = this.contractcums.filter(\r\n x => x.Modifieddate != null\r\n );\r\n }\r\n\r\n findCostCenterName(Costcenterid: number): string | undefined {\r\n if (Costcenterid != null) {\r\n if (this.userGroups.length > 0) {\r\n if (Costcenterid !== 0) {\r\n const cc = this.userGroups.find(\r\n x => x.GroupID === Costcenterid\r\n );\r\n return cc?.GroupName;\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n findTask(rowData: ContractCumulative): string | undefined {\r\n if (rowData.Tasklistid != null) {\r\n if (this.tasks.length > 0) {\r\n const index = this.tasks.findIndex(\r\n x => x.TaskListID === rowData.Tasklistid\r\n );\r\n if (index !== -1) {\r\n const task = this.tasks[index];\r\n return task.TaskLongName;\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n findEmployee(rowData: ContractCumulative): string | undefined {\r\n if (rowData.Employeelistid != null) {\r\n if (this.directreports.length > 0) {\r\n const index = this.directreports.findIndex(\r\n x => x.EmployeeListID === rowData.Employeelistid\r\n );\r\n if (index !== -1) {\r\n const directreport = this.directreports[index];\r\n return directreport.EmployeeName;\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n findServiceItem(rowData: ContractCumulative): string | undefined {\r\n if (rowData.Silistid != null) {\r\n if (this.serviceitems.length > 0) {\r\n const index = this.serviceitems.findIndex(\r\n x => x.SIListID === rowData.Silistid\r\n );\r\n if (index !== -1) {\r\n const serviceitem = this.serviceitems[index];\r\n return serviceitem.ServiceItem;\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n findTxnType(rowData: any): string | undefined {\r\n if (rowData != null) {\r\n if (this.txntypes.length > 0) {\r\n const index = this.txntypes.findIndex(\r\n x => x.CalcType === rowData\r\n );\r\n if (index !== -1) {\r\n const txntype = this.txntypes[index];\r\n return txntype.CalcDesc;\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n onAsofdateFilterSelected($event) {\r\n const filteredCums: Array =\r\n this.contractcums.filter(\r\n x =>\r\n moment(new Date(x.Txndate)).format('MM/DD/YYYY') ==\r\n moment($event).format('MM/DD/YYYY')\r\n );\r\n this.ContractCumsSubject.next(filteredCums);\r\n }\r\n\r\n onEditInit($event: { data: ContractCumulative }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: ContractCumulative) {\r\n this.clonedContractCums[rowData.Txnid] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: ContractCumulative) {\r\n this.SaveContractCums.next(rowData);\r\n delete this.clonedContractCums[rowData.Txnid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: ContractCumulative) {\r\n const index = this.tableItemSource.findIndex(\r\n x => x.Txnid === item.Txnid\r\n );\r\n if (index >= 0) {\r\n this.tableItemSource.splice(\r\n index,\r\n 1,\r\n this.clonedContractCums[item.Txnid]\r\n );\r\n }\r\n this.tableItemSource = [...this.tableItemSource];\r\n\r\n delete this.clonedContractCums[item.Txnid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n onContractCumDelete(value) {\r\n this.IsLoading = true;\r\n this.deletePressed = true;\r\n this.DeleteContractCum.next(value);\r\n this.LoadSessionDates.next();\r\n // this.LoadContractCums.next({\r\n // DirectOrIndirect: this.doi,\r\n // Todayonly: false,\r\n // Asofdate: this.editFormGroup.controls['SessionDates'].value,\r\n // Tasks: null,\r\n // ServiceItems: null,\r\n // DirectReports: null,\r\n // Txntype: null,\r\n // CostCenters: null\r\n // });\r\n }\r\n\r\n filterTable($event, filterType) {\r\n // use this for all table filters\r\n if (filterType == 'serviceitem') {\r\n this.ContractCumTable.filter($event.value, 'Silistid', 'in');\r\n } else if (filterType == 'task') {\r\n this.ContractCumTable.filter($event.value, 'Tasklistid', 'in');\r\n } else if (filterType == 'type') {\r\n this.ContractCumTable.filter($event.value, 'Txntype', 'in');\r\n } else if (filterType == 'employee') {\r\n this.ContractCumTable.filter($event.value, 'Employeelistid', 'in');\r\n } else if (filterType == 'cc') {\r\n this.ContractCumTable.filter($event.value, 'Costcenterid', 'in');\r\n }\r\n }\r\n\r\n buildTable() {\r\n if (this.buildFormGroup.controls['Asofdate'].value == null) {\r\n this.asOfDateIsRequired = true;\r\n }\r\n if (this.buildFormGroup.controls['Contracts'].value == null) {\r\n this.contractIsRequired = true;\r\n }\r\n if (this.buildFormGroup.controls['Txntypes'].value == null) {\r\n this.txnTypeIsRequired = true;\r\n }\r\n if (this.buildFormGroup.controls['Tasks'].value == null) {\r\n this.taskIsRequired = true;\r\n }\r\n if (this.buildFormGroup.controls['CC'].value == null) {\r\n this.ccIsRequired = true;\r\n }\r\n\r\n if (this.userGroups.length > 1) {\r\n if (\r\n this.asOfDateValid == true &&\r\n this.contractValid == true &&\r\n this.txnTypeValid == true &&\r\n this.taskValid == true &&\r\n this.ccValid == true\r\n ) {\r\n this.buildPressed = true;\r\n // this.editFormGroup.controls['EditMode'].patchValue(true);\r\n if (this.buildFormGroup.controls['Contracts'].value != null) {\r\n this.selectedContract = this.contracts.find(\r\n x =>\r\n x.ContractListID ==\r\n this.buildFormGroup.controls['Contracts'].value\r\n ) as Contract;\r\n const filteredTasks = this.tasks.filter(x =>\r\n x.TaskLongName.includes(\r\n this.selectedContract.ContractDesc\r\n )\r\n );\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n\r\n this.showRequiredMessage = false;\r\n\r\n this.LoadContractCums.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: this.buildFormGroup.controls['Asofdate'].value,\r\n Tasks: this.selectedTasks,\r\n ServiceItems: this.selectedServiceItems,\r\n DirectReports: this.selectedDirectReports,\r\n Txntype: this.buildFormGroup.controls['Txntypes'].value,\r\n CostCenters: this.selectedCCs\r\n });\r\n\r\n this.selectedTasks = [];\r\n this.selectedServiceItems = [];\r\n this.selectedDirectReports = [];\r\n this.selectedCCs = [];\r\n\r\n this.editFormGroup.controls['EditMode'].patchValue(true);\r\n\r\n this.txnDateFormGroup.controls['TxnDate'].reset();\r\n this.modDateFormGroup.controls['ModDate'].reset();\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n\r\n //this.buildFormGroup.controls['Asofdate'].reset();\r\n this.buildFormGroup.controls['Contracts'].reset();\r\n this.buildFormGroup.controls['Tasks'].reset();\r\n this.buildFormGroup.controls['Txntypes'].reset();\r\n this.buildFormGroup.controls['ServiceItems'].reset();\r\n this.buildFormGroup.controls['DirectReports'].reset();\r\n this.buildFormGroup.controls['CC'].reset();\r\n\r\n if (this.siHidden == true) {\r\n this.siColumnHidden = true;\r\n }\r\n if (this.empHidden == true) {\r\n this.empColumnHidden = true;\r\n }\r\n } else {\r\n this.showRequiredMessage = true;\r\n }\r\n } else {\r\n if (\r\n this.asOfDateValid == true &&\r\n this.contractValid == true &&\r\n this.txnTypeValid == true &&\r\n this.taskValid == true\r\n ) {\r\n this.buildPressed = true;\r\n // this.editFormGroup.controls['EditMode'].patchValue(true);\r\n if (this.buildFormGroup.controls['Contracts'].value != null) {\r\n this.selectedContract = this.contracts.find(\r\n x =>\r\n x.ContractListID ==\r\n this.buildFormGroup.controls['Contracts'].value\r\n ) as Contract;\r\n const filteredTasks = this.tasks.filter(x =>\r\n x.TaskLongName.includes(\r\n this.selectedContract.ContractDesc\r\n )\r\n );\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n\r\n this.showRequiredMessage = false;\r\n\r\n this.LoadContractCums.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: this.buildFormGroup.controls['Asofdate'].value,\r\n Tasks: this.selectedTasks,\r\n ServiceItems: this.selectedServiceItems,\r\n DirectReports: this.selectedDirectReports,\r\n Txntype: this.buildFormGroup.controls['Txntypes'].value,\r\n CostCenters: this.selectedCCs\r\n });\r\n\r\n this.selectedTasks = [];\r\n this.selectedServiceItems = [];\r\n this.selectedDirectReports = [];\r\n this.selectedCCs = [];\r\n\r\n this.editFormGroup.controls['EditMode'].patchValue(true);\r\n\r\n this.txnDateFormGroup.controls['TxnDate'].reset();\r\n this.modDateFormGroup.controls['ModDate'].reset();\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n\r\n //this.buildFormGroup.controls['Asofdate'].reset();\r\n this.buildFormGroup.controls['Contracts'].reset();\r\n this.buildFormGroup.controls['Tasks'].reset();\r\n this.buildFormGroup.controls['Txntypes'].reset();\r\n this.buildFormGroup.controls['ServiceItems'].reset();\r\n this.buildFormGroup.controls['DirectReports'].reset();\r\n this.buildFormGroup.controls['CC'].reset();\r\n\r\n if (this.siHidden == true) {\r\n this.siColumnHidden = true;\r\n }\r\n if (this.empHidden == true) {\r\n this.empColumnHidden = true;\r\n }\r\n } else {\r\n this.showRequiredMessage = true;\r\n }\r\n }\r\n }\r\n\r\n showTodaysActivity() {\r\n if (this.doi == 'Direct') {\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType != 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CalcType == 'Direct')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n } else {\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType == 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CalcType == 'Indirect')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n this.ContractCumTable.clear();\r\n if (this.txnFilterHasValue == true) {\r\n this.tableItemSource = this.contractcums.filter(\r\n x => x.Txndate != null\r\n );\r\n }\r\n\r\n this.txnDateFormGroup.controls['TxnDate'].reset();\r\n this.modDateFormGroup.controls['ModDate'].reset();\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n\r\n // var today = moment(new Date()).format(\"MM/DD/YYYY\");\r\n // this.tableItemSource = this.tableItemSource.filter(x => moment(x.Modifieddate).format(\"MM/DD/YYYY\") == today);\r\n this.LoadContractCums.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: true,\r\n Asofdate: null,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n }\r\n\r\n showAll() {\r\n if (this.doi == 'Direct') {\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType != 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CostType == 'Direct')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n } else {\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType == 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CostType == 'Indirect')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n\r\n this.ContractCumTable.clear();\r\n this.txnDateFormGroup.controls['TxnDate'].reset();\r\n this.modDateFormGroup.controls['ModDate'].reset();\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n // this.tableItemSource = this.contractcums;\r\n\r\n // this.editFormGroup.controls['SessionDates'].patchValue(this.sessionDatesSelectItem[0].label);\r\n this.LoadContractCums.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: null,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n }\r\n\r\n leavingEditMode() {\r\n if (this.doi == 'Direct') {\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType != 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CostType == 'Direct')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n } else {\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType == 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CostType == 'Indirect')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n\r\n this.ContractCumTable.clear();\r\n this.txnDateFormGroup.controls['TxnDate'].reset();\r\n this.modDateFormGroup.controls['ModDate'].reset();\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n // this.tableItemSource = this.contractcums;\r\n\r\n // this.editFormGroup.controls['SessionDates'].patchValue(this.sessionDatesSelectItem[0].label);\r\n }\r\n\r\n clearLinesWithout$() {\r\n this.ContractCumTable.clear();\r\n this.txnDateFormGroup.controls['TxnDate'].reset();\r\n this.modDateFormGroup.controls['ModDate'].reset();\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n\r\n if (this.tableItemSource.length > 0) {\r\n this.tableItemSource = this.tableItemSource.filter(x => {\r\n if (\r\n x.Hoursworked == 0 &&\r\n x.Actualamount == 0 &&\r\n x.Feecost == 0 &&\r\n x.Feecostebr == 0 &&\r\n x.Frcost == 0 &&\r\n x.Frcostebr == 0 &&\r\n x.Gacost == 0 &&\r\n x.Gacostebr == 0 &&\r\n x.Invoiceamount == 0 &&\r\n x.Ohcost == 0 &&\r\n x.Ohcostebr == 0\r\n ) {\r\n } else {\r\n return x;\r\n }\r\n });\r\n }\r\n // if (this.contractcums.length > 0) {\r\n // this.contractcums.forEach((x, i) => {\r\n // if (x.Actualamount == 0 && x.Feecost == 0 && x.Feecostebr == 0 && x.Frcost == 0 && x.Frcostebr == 0 && x.Gacost == 0 && x.Gacostebr == 0 && x.Invoiceamount == 0 && x.Ohcost == 0 && x.Ohcostebr == 0) {\r\n // this.contractcums.splice(i);\r\n // }\r\n // });\r\n // this.ContractCumsSubject.next(this.contractcums);\r\n // }\r\n }\r\n\r\n commitCumulatives() {\r\n this.LoadAllContractCums.next();\r\n setTimeout(() => {\r\n this.CommitCumulatives.next({\r\n DirectOrIndirect: 'Direct',\r\n Todayonly: false,\r\n Asofdate: this.editFormGroup.controls['SessionDates'].value,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n });\r\n }, 1000);\r\n }\r\n\r\n clearBuild() {\r\n this.selectedTasks = [];\r\n this.selectedServiceItems = [];\r\n this.selectedDirectReports = [];\r\n this.showRequiredMessage = false;\r\n this.asOfDateIsRequired = false;\r\n this.contractIsRequired = false;\r\n this.directReportIsRequired = false;\r\n this.serviceItemIsRequired = false;\r\n this.txnTypeIsRequired = false;\r\n this.ccIsRequired = false;\r\n this.taskIsRequired = false;\r\n this.empHidden = false;\r\n this.siHidden = false;\r\n this.asOfDateValid = false;\r\n this.contractValid = false;\r\n this.taskValid = false;\r\n this.txnTypeValid = false;\r\n this.ccValid = false;\r\n this.serviceItemValid = false;\r\n this.directReportValid = false;\r\n this.buildFormGroup.controls['Asofdate'].reset();\r\n this.buildFormGroup.controls['Contracts'].reset();\r\n this.buildFormGroup.controls['Tasks'].reset();\r\n this.buildFormGroup.controls['Txntypes'].reset();\r\n this.buildFormGroup.controls['ServiceItems'].reset();\r\n this.buildFormGroup.controls['DirectReports'].reset();\r\n this.buildFormGroup.controls['CC'].reset();\r\n if (this.doi == 'Direct') {\r\n this.tasksSelectItem = this.tasks\r\n .filter(f => f.ContractType != 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType != 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CalcType == 'Direct')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n } else {\r\n this.tasksSelectItem = this.tasks\r\n .filter(f => f.ContractType == 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType == 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CalcType == 'Indirect')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n }\r\n\r\n openCumulativesReport() {\r\n const data = {\r\n reports: this.reports,\r\n queryparams: {\r\n StartDate: moment(new Date()).isValid()\r\n ? moment(new Date()).format('YYYY-MM-DD')\r\n : null,\r\n EndDate: moment(new Date()).isValid()\r\n ? moment(new Date()).format('YYYY-MM-DD')\r\n : moment(new Date()).isValid()\r\n ? moment(new Date()).format('YYYY-MM-DD')\r\n : null\r\n },\r\n params: {\r\n DirectReportList: [],\r\n ContractList: []\r\n }\r\n };\r\n // TODO: check if API wants this to be null or non-existent\r\n if (!data.queryparams.StartDate) {\r\n delete data.queryparams.StartDate;\r\n }\r\n this.RunReports.next(data);\r\n }\r\n\r\n openUploadDialog() {\r\n this.showUploadDialog = true;\r\n }\r\n\r\n uploadExcelFile($event) {\r\n this.showUploadError = false;\r\n this.fileToString($event.target.files[0]);\r\n }\r\n\r\n fileToString(file) {\r\n const fileNameSpan = document.getElementById('file-selected');\r\n fileNameSpan.textContent = file.name;\r\n\r\n const reader = new FileReader();\r\n reader.onload = event => {\r\n const binaryData = event.target.result;\r\n this.excelToJSON(binaryData);\r\n };\r\n reader.readAsBinaryString(file);\r\n }\r\n\r\n excelToJSON(binaryData) {\r\n const workbook = XLSX.read(binaryData, { type: 'binary' });\r\n\r\n const jsonData = workbook.SheetNames.reduce((initial, name) => {\r\n const sheet = workbook.Sheets[name];\r\n initial = XLSX.utils.sheet_to_json(sheet);\r\n return initial;\r\n }, {});\r\n\r\n this.excelFileAsJson = jsonData;\r\n //this.excelFileAsJsonStr = JSON.stringify(jsonData);\r\n //console.log(this.excelFileAsJsonStr);\r\n }\r\n\r\n sendJSON() {\r\n if (this.excelFileAsJson != null) {\r\n this.cumulativeUpload = true;\r\n this.excelFileAsJson = this.excelFileAsJson.map(x => ({\r\n ...x,\r\n PeriodEndDate: moment(this.dateToISODateString(x.PeriodEndDate)).format('MM/DD/YY')\r\n }));\r\n // this.excelFileAsJson[0] = {\r\n // ...this.excelFileAsJson[0],\r\n // PeriodEndDate: moment(this.dateToISODateString(this.excelFileAsJson[0].PeriodEndDate)).format('MM/DD/YY')\r\n // }\r\n this.cumulativeUploadDate = this.excelFileAsJson[0].PeriodEndDate;\r\n this.excelFileAsJsonStr = JSON.stringify(this.excelFileAsJson);\r\n this.uploadJSON.next(this.excelFileAsJsonStr);\r\n this.reset();\r\n } else {\r\n this.showUploadError = true;\r\n this.cumulativeUpload = false;\r\n }\r\n }\r\n\r\n cancelUpload() {\r\n this.showUploadError = false;\r\n this.reset();\r\n }\r\n\r\n reset() {\r\n this.showUploadError = false;\r\n this.showUploadDialog = false;\r\n this.excelFileAsJsonStr = null;\r\n this.uploadInput.nativeElement.value = '';\r\n const fileNameSpan = document.getElementById('file-selected');\r\n fileNameSpan.textContent = '';\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { ContractCumulative } from './contract-cumulative.model';\r\nimport { CalcType, IServiceItem, ITask, IUserGroup } from '../../lookups';\r\nimport { Users } from './users.model';\r\nimport { CostCenter } from '../CostCenter';\r\nimport { SessionDates } from '../SessionDates';\r\n\r\nexport const getSessionDates = createAction(\r\n '[ContractCumulative/API] GET Session Dates',\r\n);\r\nexport const loadSessionDates = createAction(\r\n '[ContractCumulative/API] Load Session Dates',\r\n props<{ sessionDates: SessionDates[] }>()\r\n);\r\n\r\nexport const getContractCumulatives = createAction(\r\n '[ContractCumulative/API] GET ContractCumulatives',\r\n);\r\n\r\nexport const postContractCumulatives = createAction(\r\n '[ContractCumulative/API] POST ContractCumulatives',\r\n props<{ DirectOrIndirect: string, Todayonly: boolean, Asofdate: Date, Tasks: ITask[], ServiceItems: IServiceItem[], DirectReports: Users[], Txntype: string, CostCenters: IUserGroup[] }>()\r\n);\r\n\r\nexport const uploadCumulatives = createAction(\r\n '[ContractCumulative/API] POST UploadCumulatives',\r\n props<{ JsonString: string }>()\r\n );\r\n\r\nexport const putContractCumulatives = createAction(\r\n '[ContractCumulative/API] PUT ContractCumulatives',\r\n props<{ contractcums: Array}>()\r\n);\r\n\r\nexport const removeContractCum = createAction(\r\n '[ContractCumulative/API] Remove ContractCumulative',\r\n props<{ ids: Array }>()\r\n);\r\n\r\nexport const getTxnTypes = createAction(\r\n '[ContractCumulative/API] Get Txn Types'\r\n);\r\nexport const loadTxnTypes = createAction(\r\n '[ContractCumulative/API] Load Txn Types',\r\n props<{ txnTypes: CalcType[] }>()\r\n);\r\n\r\nexport const getUsers = createAction(\r\n '[ContractCumulative/API] Get Users',\r\n props<{ UserFilterID: number, ShowInactive: boolean }>()\r\n);\r\nexport const loadUsers = createAction(\r\n '[ContractCumulative/API] Load Users',\r\n props<{ users: Users[] }>()\r\n);\r\n\r\nexport const loadContractCumulatives = createAction(\r\n '[ContractCumulative/API] Load ContractCumulatives',\r\n props<{ contractCumulatives: ContractCumulative[] }>()\r\n);\r\n\r\nexport const addContractCumulative = createAction(\r\n '[ContractCumulative/API] Add ContractCumulative',\r\n props<{ contractCumulative: ContractCumulative }>()\r\n);\r\n\r\nexport const upsertContractCumulative = createAction(\r\n '[ContractCumulative/API] Upsert ContractCumulative',\r\n props<{ contractCumulative: ContractCumulative }>()\r\n);\r\n\r\nexport const addContractCumulatives = createAction(\r\n '[ContractCumulative/API] Add ContractCumulatives',\r\n props<{ contractCumulatives: ContractCumulative[] }>()\r\n);\r\n\r\nexport const upsertContractCumulatives = createAction(\r\n '[ContractCumulative/API] Upsert ContractCumulatives',\r\n props<{ contractCumulatives: ContractCumulative[] }>()\r\n);\r\n\r\nexport const updateContractCumulative = createAction(\r\n '[ContractCumulative/API] Update ContractCumulative',\r\n props<{ contractCumulative: Update }>()\r\n);\r\n\r\nexport const updateContractCumulatives = createAction(\r\n '[ContractCumulative/API] Update ContractCumulatives',\r\n props<{ contractCumulatives: Update[] }>()\r\n);\r\n\r\nexport const deleteContractCumulative = createAction(\r\n '[ContractCumulative/API] Delete ContractCumulative',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteContractCumulatives = createAction(\r\n '[ContractCumulative/API] Delete ContractCumulatives',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearContractCumulatives = createAction(\r\n '[ContractCumulative/API] Clear ContractCumulatives'\r\n);\r\n\r\nexport const updateContractCumulativeSuccess = createAction(\r\n '[ContractCumulative/API] Update ContractCumulatives Success Event',\r\n props<{ contractCumulative: Partial }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport { CalcTypeService } from '../../lookups/calc-type.service';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { ContractCumulativeService } from '../contract-cumulative.service';\r\nimport * as C_Actions from './contract-cumulative.actions';\r\nimport moment from 'moment';\r\n\r\n@Injectable()\r\nexport class ContractCumulativeEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ContractCumulativeService,\r\n private calcTypeService: CalcTypeService\r\n ) {}\r\n\r\n getSessionDates$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(C_Actions.getSessionDates),\r\n switchMap(a =>\r\n this.service.getSessionDates().pipe(\r\n flatMap(resp => [\r\n C_Actions.loadSessionDates({\r\n sessionDates: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n getUsers$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(C_Actions.getUsers),\r\n switchMap(a =>\r\n this.service.getUsers(a.UserFilterID, a.ShowInactive).pipe(\r\n flatMap(resp => [\r\n C_Actions.loadUsers({\r\n users: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n getTxnTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(C_Actions.getTxnTypes),\r\n switchMap(() =>\r\n this.calcTypeService.getCalcType('').pipe(\r\n flatMap(resp => [\r\n C_Actions.loadTxnTypes({\r\n txnTypes: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n getContractCums$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(C_Actions.getContractCumulatives),\r\n switchMap(a =>\r\n this.service.getContractCums().pipe(\r\n flatMap(resp => [\r\n C_Actions.loadContractCumulatives({\r\n contractCumulatives: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.Txnid.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n postContractCums$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(C_Actions.postContractCumulatives),\r\n switchMap(a =>\r\n this.service\r\n .postContractCums(\r\n a.DirectOrIndirect,\r\n a.Todayonly,\r\n a.Asofdate,\r\n a.Tasks,\r\n a.ServiceItems,\r\n a.DirectReports,\r\n a.Txntype,\r\n a.CostCenters\r\n )\r\n .pipe(\r\n flatMap(resp => [\r\n C_Actions.loadContractCumulatives({\r\n contractCumulatives: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.Txnid.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n uploadCumulatives$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(C_Actions.uploadCumulatives),\r\n switchMap(a =>\r\n this.service.uploadCumulatives(a.JsonString).pipe(\r\n flatMap(resp => [\r\n C_Actions.getSessionDates(),\r\n C_Actions.postContractCumulatives({\r\n DirectOrIndirect: 'Direct',\r\n Todayonly: false,\r\n Asofdate: JSON.parse(resp)[0].asofdate,\r\n Tasks: null,\r\n ServiceItems: null,\r\n DirectReports: null,\r\n Txntype: null,\r\n CostCenters: null\r\n })\r\n // new fromShared.Errors.RemoveErrors(\r\n // resp\r\n // .filter(\r\n // x =>\r\n // x.Status.StatusCode ===\r\n // ResponseStatus.Success\r\n // )\r\n // .map(x => x.Txnid.toString())\r\n // ),\r\n // new fromShared.Errors.SetErrors(\r\n // [\r\n // ...resp\r\n // .filter(\r\n // a =>\r\n // a.Status.StatusCode >=\r\n // DisplayMessageMinimum\r\n // )\r\n // .map(a => a.Status)\r\n // ].filter(fromShared.Errors.filterErrors)\r\n // )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putContractCums$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(C_Actions.putContractCumulatives),\r\n switchMap(a =>\r\n this.service.putContractCums(a.contractcums).pipe(\r\n flatMap(c => [\r\n C_Actions.updateContractCumulatives({\r\n contractCumulatives: [\r\n {\r\n id: a.contractcums\r\n .map(x => x.Txnid)\r\n .toString(),\r\n changes: c.Items[0]\r\n }\r\n ]\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Txnid.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n deleteContractCums$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(C_Actions.removeContractCum),\r\n switchMap(a =>\r\n this.service.deleteContractCum(a.ids).pipe(\r\n flatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n C_Actions.deleteContractCumulatives({\r\n ids: resp.Items.map(\r\n x => x.EntityID as string\r\n )\r\n })\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createReducer, createSelector, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { ContractCumulative } from './contract-cumulative.model';\r\nimport * as ContractCumulativeActions from './contract-cumulative.actions';\r\nimport { CalcType } from '../../lookups';\r\nimport { Users } from './users.model';\r\nimport { SessionDates } from '../SessionDates';\r\n\r\nexport const contractCumulativesFeatureKey = 'contractCumulatives';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n txnTypes: CalcType[];\r\n users: Users[];\r\n sessionDates: SessionDates[];\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({selectId: (model: ContractCumulative) => model.Txnid});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n txnTypes: [],\r\n users: [],\r\n sessionDates: []\r\n});\r\n\r\n\r\nexport const contractCumulativeReducer = createReducer(\r\n initialState,\r\n on(ContractCumulativeActions.addContractCumulative,\r\n (state, action) => adapter.addOne(action.contractCumulative, state)\r\n ),\r\n on(ContractCumulativeActions.upsertContractCumulative,\r\n (state, action) => adapter.upsertOne(action.contractCumulative, state)\r\n ),\r\n on(ContractCumulativeActions.addContractCumulatives,\r\n (state, action) => adapter.addMany(action.contractCumulatives, state)\r\n ),\r\n on(ContractCumulativeActions.upsertContractCumulatives,\r\n (state, action) => adapter.upsertMany(action.contractCumulatives, state)\r\n ),\r\n on(ContractCumulativeActions.updateContractCumulative,\r\n (state, action) => adapter.updateOne(action.contractCumulative, state)\r\n ),\r\n on(ContractCumulativeActions.updateContractCumulatives,\r\n (state, action) => adapter.updateMany(action.contractCumulatives, state)\r\n ),\r\n on(ContractCumulativeActions.deleteContractCumulative,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(ContractCumulativeActions.deleteContractCumulatives,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(ContractCumulativeActions.loadContractCumulatives,\r\n (state, action) => adapter.setAll(action.contractCumulatives, state)\r\n ),\r\n on(ContractCumulativeActions.clearContractCumulatives,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(ContractCumulativeActions.loadTxnTypes, (state, action) => ({\r\n ...state,\r\n txnTypes: action.txnTypes\r\n })),\r\n on(ContractCumulativeActions.loadUsers, (state, action) => ({\r\n ...state,\r\n users: action.users\r\n })),\r\n on(ContractCumulativeActions.loadSessionDates, (state, action) => ({\r\n ...state,\r\n sessionDates: action.sessionDates\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return contractCumulativeReducer(state, action);\r\n}\r\n\r\nexport const selectContractCumulativeState = createFeatureSelector(\r\n contractCumulativesFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors(selectContractCumulativeState);\r\n\r\nexport const selectTxnTypes = createSelector(\r\n selectContractCumulativeState,\r\n x => x.txnTypes\r\n);\r\n\r\nexport const selectUsers = createSelector(\r\n selectContractCumulativeState,\r\n x => x.users\r\n);\r\n\r\nexport const selectSessionDates = createSelector(\r\n selectContractCumulativeState,\r\n x => x.sessionDates\r\n);\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { ContractManagementEffects } from './store/contract-management.effects';\r\nimport { ChargeNumberManagementEffects } from './store/charge-number-management.effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromContractMgmt from './store/contract-management.reducer';\r\nimport * as fromCNMgmt from './store/charge-number-management.reducer';\r\nimport * as fromFM from './store/funding-mod.reducer';\r\nimport * as fromIC from './store/invoice-cycle.reducer';\r\nimport { FundingModEffects } from './store/funding-mod.effects';\r\nimport { InvoiceCycleEffects } from './store/invoice-cycle.effects';\r\nimport { ContractManagementPresentersComponent } from './presenters/contract-management-presenters.component';\r\nimport { ContractManagementFeaturesComponent } from './features/contract-management-features.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { MessageModule } from '../shared/efaact-primeng.module';\r\n\r\n@NgModule({\r\n declarations: [ ContractManagementPresentersComponent, ContractManagementFeaturesComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MessageModule,\r\n StoreModule.forFeature(\r\n fromContractMgmt.contractManagementsFeatureKey,\r\n fromContractMgmt.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromCNMgmt.chargeNumberManagementsFeatureKey,\r\n fromCNMgmt.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromFM.fundingModsFeatureKey,\r\n fromFM.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromIC.invoiceCyclesFeatureKey,\r\n fromIC.reducer\r\n ),\r\n EffectsModule.forFeature([ContractManagementEffects, ChargeNumberManagementEffects, FundingModEffects, InvoiceCycleEffects])\r\n ]\r\n})\r\nexport class ContractManagementModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { Guid, IDeleteEntity, IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IChargeNumberManagement } from './IChargeNumberManagement';\r\nimport { IContractManagement } from './IContractManagement';\r\nimport { IFundingMod } from './IFundingMod';\r\nimport { IInvoiceCycle } from './IInvoiceCycle';\r\nimport { IContract } from './presenters/contract-management-presenters.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContractManagementService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private contractUri = `${environment.apiLocation}/ContractMgmt`;\r\n private chargeNumberUri = `${environment.apiLocation}/CNMgmt`;\r\n private fundingModUri = `${environment.apiLocation}/FundingMod`;\r\n private invoiceCycleUri = `${environment.apiLocation}/InvoiceCycle`;\r\n\r\n public getContracts(\r\n Activeonly?: boolean\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'ContractManagementService:getContracts',\r\n uri: this.contractUri\r\n });\r\n return this.http\r\n .post>(this.contractUri, { Activeonly })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ContractManagementService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getChargeNumbers(Contract: {\r\n ContractListID: string;\r\n Activeonly: boolean;\r\n }): Observable> {\r\n return this.http\r\n .post>(\r\n this.chargeNumberUri,\r\n Contract\r\n )\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ContractManagementService:getChargeNumbers',\r\n data\r\n })\r\n ),\r\n map(data =>\r\n data.map(x => ({\r\n ...x,\r\n id: x.CNListID ? x.CNListID : Guid.newGuid(),\r\n BurnRateStartDate: x.BurnRateStartDate\r\n ? moment(x.BurnRateStartDate).toDate()\r\n : null,\r\n CNStartDate: x.CNStartDate\r\n ? moment(x.CNStartDate).toDate()\r\n : null,\r\n CNEndDate: x.CNEndDate\r\n ? moment(x.CNEndDate).toDate()\r\n : null\r\n }))\r\n )\r\n );\r\n }\r\n\r\n public getFundingMod(contract: IContract): Observable> {\r\n return this.http\r\n .post>(this.fundingModUri, contract)\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ContractManagementService:getFundingMod',\r\n data\r\n })\r\n ),\r\n map(data =>\r\n data.map(x => ({\r\n ...x,\r\n id: x.FundingID ? x.FundingID : Guid.newGuid()\r\n }))\r\n )\r\n );\r\n }\r\n\r\n public getInvoiceCycle(): Observable> {\r\n this.log.verbose({\r\n type: 'ContractManagementService:getInvoiceCycle',\r\n uri: this.invoiceCycleUri\r\n });\r\n return this.http.get>(this.invoiceCycleUri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ContractManagementService:reponse',\r\n res\r\n })\r\n ),\r\n map(data =>\r\n data.map(x => ({\r\n ...x,\r\n id: `${Guid.newGuid()}`\r\n }))\r\n )\r\n );\r\n }\r\n\r\n public putContractMgmt(\r\n contractMgmtData: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.contractUri, {\r\n ContractMgmtList: contractMgmtData\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ContractManagementService:putContractMgmt',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putCNMgmt(\r\n cNMgmtData: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(\r\n this.chargeNumberUri,\r\n { CNMgmtList: cNMgmtData }\r\n )\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ContractManagementService:putCNMgmt',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putFundingMod(\r\n fundingModData: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.fundingModUri, {\r\n FundingModList: fundingModData\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ContractManagementService:putFundingMod',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public deleteFundingMod(ids: Array) {\r\n return this.http\r\n .request>(\r\n 'DELETE',\r\n this.fundingModUri,\r\n {\r\n body: { EntityIDs: ids }\r\n }\r\n )\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ContractManagementService:deleteFundingMod:reponse',\r\n data\r\n });\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { getUserInfo, IUserInfo } from '../../user-info';\r\nimport { IChargeNumberManagement } from '../IChargeNumberManagement';\r\nimport { IContractManagement } from '../IContractManagement';\r\nimport { IFundingMod } from '../IFundingMod';\r\nimport { IInvoiceCycle } from '../IInvoiceCycle';\r\nimport { ContractManagementPresentersComponent } from '../presenters/contract-management-presenters.component';\r\nimport * as fromCNStoreActions from '../store/charge-number-management.actions';\r\nimport * as fromCNStoreReducer from '../store/charge-number-management.reducer';\r\nimport * as fromStoreActions from '../store/contract-management.actions';\r\nimport * as fromStoreReducer from '../store/contract-management.reducer';\r\nimport * as fromFMStoreActions from '../store/funding-mod.actions';\r\nimport * as fromFMStoreReducer from '../store/funding-mod.reducer';\r\nimport * as fromICStoreActions from '../store/invoice-cycle.actions';\r\nimport * as fromICStoreReducer from '../store/invoice-cycle.reducer';\r\n@Component({\r\n selector: 'ef-contract-management-features',\r\n templateUrl: './contract-management-features.component.html',\r\n styleUrls: ['./contract-management-features.component.scss']\r\n})\r\nexport class ContractManagementFeaturesComponent implements OnInit, OnDestroy {\r\n @ViewChild(ContractManagementPresentersComponent, { static: true })\r\n presenter: ContractManagementPresentersComponent;\r\n process$: Observable;\r\n public contracts$: Observable;\r\n public chargeNumbers$: Observable;\r\n public fundingMods$: Observable;\r\n public invoiceCycle$: Observable;\r\n public userGroups$: Observable>;\r\n public userInfo$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n\r\n ShowError = new ReplaySubject(1);\r\n active = true;\r\n activeContractsOnly = true;\r\n activeCNsOnly = true;\r\n activeFMsOnly = true;\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store,\r\n private cnStore: Store,\r\n private fmStore: Store,\r\n private icStore: Store,\r\n private lookupsStore: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.icStore.dispatch(fromICStoreActions.getInvoiceCycle());\r\n this.store.dispatch(\r\n fromStoreActions.getContracts({ Activeonly: true })\r\n );\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.store.dispatch(fromStoreActions.clearContractManagements());\r\n this.cnStore.dispatch(\r\n fromCNStoreActions.clearChargeNumberManagements()\r\n );\r\n this.fmStore.dispatch(fromFMStoreActions.clearFundingMods());\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(getUserInfo));\r\n this.contracts$ = this.store.pipe(\r\n select(fromStoreReducer.selectAll),\r\n map(contracts => clone(contracts))\r\n );\r\n this.chargeNumbers$ = this.cnStore.pipe(\r\n select(fromCNStoreReducer.selectAll),\r\n map(chargenumbers => clone(chargenumbers))\r\n );\r\n this.fundingMods$ = this.fmStore.pipe(\r\n select(fromFMStoreReducer.selectAll),\r\n map(fundingmods => clone(fundingmods))\r\n );\r\n this.invoiceCycle$ = this.icStore.pipe(\r\n select(fromICStoreReducer.selectAll)\r\n );\r\n this.userGroups$ = this.lookupsStore.pipe(\r\n select(fromLookups.getUserGroupsLookup)\r\n );\r\n\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'ContractManagementFeatureComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.contracts$.pipe(filter(x => !!x)),\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'ContractManagementFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'ContractManagementFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.presenter.contractSelectedEvent\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.cnStore.dispatch(\r\n fromCNStoreActions.getChargeNumbers({ Contract: value })\r\n );\r\n });\r\n\r\n this.presenter.chargeNumbersSelectedEvent\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.fmStore.dispatch(\r\n fromFMStoreActions.getFundingMod({ contract: value })\r\n );\r\n });\r\n }\r\n onSaveContract($event) {\r\n this.store.dispatch(\r\n fromStoreActions.putContracts({\r\n contracts: [$event],\r\n Activeonly: this.activeContractsOnly\r\n })\r\n );\r\n }\r\n onSaveChargeNumber($event) {\r\n this.cnStore.dispatch(\r\n fromCNStoreActions.putChargeNumbers({ chargeNumbers: [$event] })\r\n );\r\n }\r\n onSaveFundingMod($event) {\r\n this.fmStore.dispatch(\r\n fromFMStoreActions.putFundingMod({ fundingMod: [$event] })\r\n );\r\n }\r\n onDeleteFundingMod($event) {\r\n this.fmStore.dispatch(\r\n fromFMStoreActions.removeFundingMod({ ids: [$event.FundingID] })\r\n );\r\n }\r\n onToggleInactiveContracts($event) {\r\n this.activeContractsOnly = $event;\r\n this.store.dispatch(\r\n fromStoreActions.getContracts({ Activeonly: $event })\r\n );\r\n }\r\n onToggleInactiveCNs($event) {\r\n this.activeCNsOnly = $event.Activeonly;\r\n this.cnStore.dispatch(\r\n fromCNStoreActions.getChargeNumbers({ Contract: $event })\r\n );\r\n }\r\n onToggleInactiveFMs($event) {\r\n this.activeFMsOnly = $event.Activeonly;\r\n this.fmStore.dispatch(\r\n fromFMStoreActions.getFundingMod({ contract: $event })\r\n );\r\n }\r\n onShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport { IStatusMessage, ResponseStatus, uniqBy } from '../../shared';\r\nimport { SelectItem, Table } from '../../shared/efaact-primeng.module';\r\nimport { DisplayErrors, IShowErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../user-info';\r\nimport { IChargeNumberManagement } from '../IChargeNumberManagement';\r\nimport { IContractManagement } from '../IContractManagement';\r\nimport { IFundingMod } from '../IFundingMod';\r\nimport { IInvoiceCycle } from '../IInvoiceCycle';\r\n\r\n@Component({\r\n selector: 'ef-contract-management-presenters',\r\n templateUrl: './contract-management-presenters.component.html',\r\n styleUrls: ['./contract-management-presenters.component.scss']\r\n})\r\nexport class ContractManagementPresentersComponent\r\n implements OnInit, OnDestroy, AfterViewInit \r\n{\r\n currentSavedContractEndDate: Date;\r\n\r\n SelectedErrorSubject = new ReplaySubject(1);\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.SelectedErrorSubject.next(value);\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n // const rows = document.getElementsByClassName('p-selectable-row');\r\n // if (rows.length > 0) {\r\n // rows[0].classList.remove('p-highlight');\r\n // rows[0].classList.remove('highlight');\r\n // }\r\n \r\n //row.classList.remove('p-highlight');\r\n //row.classList.remove('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n @Input() set contracts(value: Array) {\r\n if (value) {\r\n value.forEach(c => {\r\n if (c.InvoiceCycle != null) {\r\n if (c.InvoiceCycle.toString() === '24') {\r\n this.hasInvoiceCycle24 = true;\r\n this.invoicingColSpan = 6;\r\n } else {\r\n if (this.hasInvoiceCycle24 === false) {\r\n this.invoicingColSpan = 5;\r\n }\r\n }\r\n }\r\n if (c.ContractStartDate != null) {\r\n c.ContractStartDate = new Date(c.ContractStartDate);\r\n }\r\n if (c.ContractEndDate != null) {\r\n c.ContractEndDate = new Date(c.ContractEndDate);\r\n }\r\n if (c.CycleEffectiveDate != null) {\r\n c.CycleEffectiveDate = new Date(c.CycleEffectiveDate);\r\n }\r\n this.effectiveDatesSelectItem.push({\r\n value: c.CycleEffectiveDate,\r\n label: moment(c.CycleEffectiveDate).format('MM/DD/YYYY')\r\n });\r\n this.effectiveDatesSelectItem =\r\n this.effectiveDatesSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n if (c.InvoiceCycle != null) {\r\n this.icSelectItem.push({\r\n value: c.InvoiceCycle,\r\n label: c.InvoiceCycle\r\n });\r\n this.icSelectItem = this.icSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n\r\n if (c.InvoiceCycleDay != null) {\r\n const day = this.invoiceCycle.find(\r\n x =>\r\n x.CycleDayCode === c.InvoiceCycleDay &&\r\n x.InvoiceCycle === c.InvoiceCycle\r\n );\r\n this.icdSelectItem.push({\r\n value: c.InvoiceCycleDay,\r\n label: day ? day.InvoiceCycleDay : c.InvoiceCycleDay\r\n });\r\n this.icdSelectItem = this.icdSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n if (c.InvoiceCycleDay2 != null) {\r\n const day2 = this.invoiceCycle.find(\r\n x =>\r\n x.CycleDayCode === c.InvoiceCycleDay2 &&\r\n x.InvoiceCycle === c.InvoiceCycle\r\n );\r\n this.icd2SelectItem.push({\r\n value: c.InvoiceCycleDay2,\r\n label: day2 ? day2.InvoiceCycleDay : c.InvoiceCycleDay2\r\n });\r\n this.icd2SelectItem = this.icd2SelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n\r\n if (c.ContractCategory != null) {\r\n this.catSelectItem.push({\r\n value: c.ContractCategory,\r\n label: c.ContractCategory\r\n });\r\n this.catSelectItem = this.catSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n\r\n if (c.ContractListID != null) {\r\n this.contractsSelectItem.push({\r\n value: c.ContractListID,\r\n label: c.ContractDesc\r\n });\r\n this.contractsSelectItem = this.contractsSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n });\r\n\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n if (this.IsInitialPageLoad === true) {\r\n if (this._contracts.length > 0) {\r\n this.selectedContract = this._contracts[0];\r\n this.contractHasBeenSelected();\r\n this.IsInitialPageLoad = false;\r\n }\r\n }\r\n }\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n replacementCNs: IChargeNumberManagement[];\r\n @Input() set chargeNumbers(value: Array) {\r\n if (value) {\r\n this._chargenumbers = value.map(x => ({\r\n AuthorizedHours: x.AuthorizedHours,\r\n CNListID: x.CNListID,\r\n FullName: x.FullName,\r\n IsActive: x.IsActive,\r\n FundedAmount: x.FundedAmount,\r\n FundingAvailable: x.FundingAvailable,\r\n ContractType: x.ContractType,\r\n CNStartDate: moment(x.CNStartDate).isValid()\r\n ? moment(x.CNStartDate).toDate()\r\n : null,\r\n CNEndDate: moment(x.CNEndDate).isValid()\r\n ? moment(x.CNEndDate).toDate()\r\n : null,\r\n FundingSourceCode: x.FundingSourceCode,\r\n LineItem: x.LineItem,\r\n InvPrefix: x.InvPrefix,\r\n BurnRateStartDate: moment(x.BurnRateStartDate).isValid()\r\n ? moment(x.BurnRateStartDate).toDate()\r\n : null,\r\n CostCenterID: x.CostCenterID,\r\n RollingCNListID: x.RollingCNListID,\r\n RollingAuthStartDate: moment(x.RollingAuthStartDate).isValid()\r\n ? moment(x.RollingAuthStartDate).toDate()\r\n : null,\r\n RollingAuthEndDate: moment(x.RollingAuthEndDate).isValid()\r\n ? moment(x.RollingAuthEndDate).toDate()\r\n : null,\r\n CurrentAuthUser: x.CurrentAuthUser,\r\n CurrentTM: x.CurrentTM,\r\n MaxTimeEntered: moment(x.MaxTimeEntered).isValid()\r\n ? moment(x.MaxTimeEntered).toDate()\r\n : null,\r\n Status: x.Status,\r\n Row_Version: x.Row_Version,\r\n id: x.id\r\n }));\r\n // this.cnTableData = this._chargenumbers;\r\n this.ChargeNumbersSubject.next(this._chargenumbers);\r\n this.cnSelectItems = this._chargenumbers.map(x => ({\r\n label: x.FullName,\r\n value: x.CNListID\r\n }));\r\n }\r\n }\r\n get chargeNumbers(): Array {\r\n return this._chargenumbers;\r\n }\r\n filteredFundingMods: IFundingMod[];\r\n @Input() set fundingMods(value: Array) {\r\n if (value) {\r\n let contract;\r\n let c_index;\r\n let cn;\r\n let cn_index;\r\n let cn2;\r\n let cn2Index;\r\n value.forEach(fm => {\r\n if (fm.FundingModDate != null) {\r\n fm.FundingModDate = new Date(fm.FundingModDate);\r\n }\r\n if (this.submitted === true) {\r\n if (fm.ContractFunding != null) {\r\n contract = this.contracts.find(\r\n x => x.ContractListID === fm.ContractListID\r\n );\r\n c_index = this.contracts.findIndex(\r\n x => x.ContractListID === fm.ContractListID\r\n );\r\n if (contract != null) {\r\n if (\r\n fm.ContractFunding !== contract.ContractFunding\r\n ) {\r\n this.contracts[c_index].ContractFunding =\r\n fm.ContractFunding;\r\n this.ContractsSubject.next(this.contracts);\r\n }\r\n }\r\n }\r\n if (fm.CNFundedAmount != null) {\r\n cn = this.chargeNumbers.find(\r\n x => x.CNListID === fm.CNListID\r\n );\r\n cn_index = this.chargeNumbers.findIndex(\r\n x => x.CNListID === fm.CNListID\r\n );\r\n if (cn != null) {\r\n if (fm.CNFundedAmount !== cn.FundedAmount) {\r\n this.chargeNumbers[cn_index].FundedAmount =\r\n fm.CNFundedAmount;\r\n this.ChargeNumbersSubject.next(\r\n this.chargeNumbers\r\n );\r\n }\r\n }\r\n }\r\n if (fm.CNFundingAvailable != null) {\r\n cn2 = this.chargeNumbers.find(\r\n x => x.CNListID === fm.CNListID\r\n );\r\n cn2Index = this.chargeNumbers.findIndex(\r\n x => x.CNListID === fm.CNListID\r\n );\r\n if (cn2 != null) {\r\n if (\r\n fm.CNFundingAvailable !== cn2.FundingAvailable\r\n ) {\r\n this.chargeNumbers[cn2Index].FundingAvailable =\r\n fm.CNFundingAvailable;\r\n this.ChargeNumbersSubject.next(\r\n this.chargeNumbers\r\n );\r\n }\r\n }\r\n }\r\n // this.submitted = false;\r\n }\r\n });\r\n this.sortFundingMods(value);\r\n this._fundingmods = value;\r\n this.FundingModsSubject.next(value);\r\n }\r\n }\r\n get fundingMods(): Array {\r\n return this._fundingmods;\r\n }\r\n @Input() set invoiceCycle(value: Array) {\r\n if (value) {\r\n this._invoicecycle = value;\r\n this.InvoiceCycleSubject.next(this._invoicecycle);\r\n // this.uniqueInvoiceCycles = this._invoicecycle.filter(item => {\r\n // var i = this.uniqueInvoiceCycles.findIndex(x => (x.InvoiceCycle === item.InvoiceCycle && x.InvoiceCycleDay === item.InvoiceCycleDay && x.CycleDayCode === item.CycleDayCode));\r\n // if (i <= -1) {\r\n // this.uniqueInvoiceCycles.push(item);\r\n // }\r\n // return null;\r\n // });\r\n this.uniqueInvoiceCycles = uniqBy(\r\n this._invoicecycle,\r\n x => x.InvoiceCycle\r\n );\r\n // this.uniqueInvoiceCycles.forEach(cycle => {\r\n // if (cycle.InvoiceCycle == 'empty') {\r\n // cycle.InvoiceCycle = '0';\r\n // }\r\n // });\r\n this.u_contractSelectItems = this.uniqueInvoiceCycles.map(x => ({\r\n label: x.InvoiceCycle == '0' ? '0' : x.InvoiceCycle,\r\n value: x.InvoiceCycle\r\n }));\r\n\r\n this.log.verbose('u: ' + this.u_contractSelectItems);\r\n }\r\n }\r\n get invoiceCycle(): Array {\r\n return this._invoicecycle;\r\n }\r\n\r\n constructor(\r\n private confirmservice: UnsavedChangesService,\r\n private log: LoggingService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n this.moment = moment;\r\n }\r\n\r\n activeUserAuthCount: number;\r\n activeTMCount: number;\r\n rollingCNFullName: string;\r\n currentCNFullName: string;\r\n displayWarning = false;\r\n fundingDetailsColSpan: number;\r\n private ContractsSubject = new ReplaySubject>(1);\r\n private _contracts: Array;\r\n oldFMAmount: number;\r\n statusColSpan = 1;\r\n\r\n private ChargeNumbersSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _chargenumbers: Array;\r\n\r\n private FundingModsSubject = new ReplaySubject>(1);\r\n private _fundingmods: Array;\r\n\r\n private InvoiceCycleSubject = new ReplaySubject>(1);\r\n private _invoicecycle: Array;\r\n\r\n IsInitialPageLoad = true;\r\n fundingToSubtract = 0;\r\n invoicingColSpan;\r\n cntableFrozenColSpan = 1;\r\n cntableFrozenWidth = '34rem';\r\n ctableFrozenColSpan = 1;\r\n ctableFrozenWidth = '34rem';\r\n fmtableFrozenWidth = '34rem';\r\n cnCbxValue = false;\r\n cCbxValue = false;\r\n space = '';\r\n replacementCNsSelectItem: SelectItem[];\r\n cnSelectItems: SelectItem[];\r\n userGroupSelectItems: SelectItem[];\r\n contractSelectItems: SelectItem[];\r\n contractSelectItemsD2: SelectItem[];\r\n u_contractSelectItems: SelectItem[];\r\n newFundingMod: Partial = {};\r\n submitted: boolean;\r\n addNewDialog: boolean;\r\n moment: any;\r\n IsIncludeInactive = false;\r\n active = true;\r\n contractSelected = false;\r\n chargeNumbersSelected = false;\r\n chargeNumberSelected = false;\r\n selectedContract: IContractManagement;\r\n selectedChargeNumbers: Array = [];\r\n frozenCols: any[];\r\n cnRowData: IChargeNumberManagement;\r\n cRowData: IContractManagement;\r\n scrollableCols: any[];\r\n cols: any[];\r\n clonedContracts: { [i: string]: IContractManagement } = {};\r\n clonedChargeNumbers: { [i: string]: IChargeNumberManagement } = {};\r\n clonedFundingMods: { [i: string]: IFundingMod } = {};\r\n uniqueInvoiceCycles: IInvoiceCycle[] = [];\r\n uniqueInvoiceCycleDays: IInvoiceCycle[] = [];\r\n costCenterID: any;\r\n invoiceCycleDays: IInvoiceCycle[];\r\n invoiceCycleDay2Arr: IInvoiceCycle[];\r\n selectedInvoiceCycle: number;\r\n chargeNumberHeader = `Charge Numbers`;\r\n fundingModHeader = `Funding Modifications`;\r\n invoiceCycle24Selected = false;\r\n hasInvoiceCycle24 = false;\r\n invoiceCycleDay2: string;\r\n invoiceCycleSelected: any;\r\n invoiceCycleDaySelected: any;\r\n invoiceCycleDayHasBeenSelected = false;\r\n invoiceCycleHasBeenSelected = false;\r\n numOfRowsEditing = 0;\r\n displayDatesDialog = false;\r\n rollingAuthEndDate;\r\n rollingAuthStartDate;\r\n rollingCNListID;\r\n maxTimeEntered;\r\n ccColumnHidden: boolean;\r\n errorClicked = false;\r\n @Output() contractSelectedEvent = new EventEmitter();\r\n @Output() chargeNumbersSelectedEvent = new EventEmitter();\r\n @Output() SaveContract = new ReplaySubject(1);\r\n @Output() SaveChargeNumber = new ReplaySubject(1);\r\n @Output() SaveFundingMod = new ReplaySubject>(1);\r\n @Output() DeleteFundingMod = new ReplaySubject(1);\r\n @Output() ToggleInactiveContracts = new ReplaySubject(1);\r\n @Output() ToggleInactiveCNs = new ReplaySubject(1);\r\n @Output() ToggleInactiveFMs = new ReplaySubject(1);\r\n\r\n @Output() public ShowError = new EventEmitter();\r\n\r\n // @ViewChild('chkShowAllContracts', { static: true })\r\n // cnCheckbox: Checkbox;\r\n\r\n @ViewChild('dataTable', { static: true }) CTable: Table;\r\n @ViewChild('CNTable', { static: true }) CNTable: Table;\r\n @ViewChild('FMTable', { static: true }) FMTable: Table;\r\n\r\n @Input() public userGroups: Array;\r\n @Input() userInfo: IUserInfo;\r\n cnEditing: IChargeNumberManagement;\r\n cEditing: IContractManagement;\r\n fmEditing: IFundingMod;\r\n\r\n endDateTooltip: string;\r\n effectiveDatesSelectItem: SelectItem[] = [];\r\n icSelectItem: SelectItem[] = [];\r\n icdSelectItem: SelectItem[] = [];\r\n icd2SelectItem: SelectItem[] = [];\r\n catSelectItem: SelectItem[] = [];\r\n contractsSelectItem: SelectItem[] = [];\r\n\r\n public currencyFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n });\r\n\r\n activeState = [true, true, true];\r\n cTabHeight: any;\r\n cnTabHeight: any;\r\n fmTabHeight: any;\r\n\r\n IsCurrentYearFM = false;\r\n\r\n getStatusIcon = (a, b) => fromShared.getStatusIcon(a, b);\r\n\r\n ngOnInit() {\r\n if (this.userGroups.length > 0) {\r\n this.userGroups = this.userGroups.filter(x =>\r\n x.PrefixedGroupID.includes('C')\r\n );\r\n this.userGroupSelectItems = this.userGroups.map(x => ({\r\n label: x.GroupName,\r\n value: x.GroupID\r\n }));\r\n this.userGroupSelectItems.unshift({\r\n label: '',\r\n value: 0\r\n });\r\n\r\n if (this.userGroups.length > 1) {\r\n this.fundingDetailsColSpan = 10;\r\n this.ccColumnHidden = false;\r\n } else {\r\n this.fundingDetailsColSpan = 9;\r\n this.ccColumnHidden = true;\r\n }\r\n }\r\n\r\n this.handleOnOpen([0, 1, 2]);\r\n }\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n currentYearCheckboxChanged($event) {\r\n if ($event.checked == true) {\r\n const currentYear = moment().year();\r\n this.filteredFundingMods = this.fundingMods.filter(x => {\r\n return (\r\n x.FundingModDate >= new Date(`01/01/${currentYear}`) &&\r\n x.FundingModDate <= new Date(`12/31/${currentYear}`)\r\n );\r\n });\r\n this.FundingModsSubject.next(this.filteredFundingMods);\r\n this.FMTable.value = this.filteredFundingMods;\r\n }\r\n if ($event.checked == false) {\r\n this.FundingModsSubject.next(this.fundingMods);\r\n this.FMTable.value = this.fundingMods;\r\n }\r\n }\r\n\r\n sortFundingMods(array: Array) {\r\n array.sort((a, b) => {\r\n if (a.FullName === b.FullName) {\r\n return 0;\r\n }\r\n if (typeof a.FullName === typeof b.FullName) {\r\n return a.FullName < b.FullName ? -1 : 1;\r\n }\r\n return typeof a.FullName < typeof b.FullName ? -1 : 1;\r\n });\r\n }\r\n\r\n unique(obj, prop) {\r\n const result = [];\r\n const seen = new Set();\r\n\r\n Object.keys(obj).forEach(key => {\r\n const value = obj[key];\r\n const test = !prop ? value : value[prop];\r\n\r\n if (!seen.has(test)) {\r\n seen.add(test);\r\n result.push(value);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n tableFilter($event, type) {\r\n if (type == 'effectiveDate') {\r\n this.CTable.filter($event.value, 'CycleEffectiveDate', 'in');\r\n }\r\n if (type == 'ic') {\r\n this.CTable.filter($event.value, 'InvoiceCycle', 'in');\r\n }\r\n if (type == 'icd') {\r\n this.CTable.filter($event.value, 'InvoiceCycleDay', 'in');\r\n }\r\n if (type == 'icd2') {\r\n this.CTable.filter($event.value, 'InvoiceCycleDay2', 'in');\r\n }\r\n if (type == 'cat') {\r\n this.CTable.filter($event.value, 'ContractCategory', 'in');\r\n }\r\n if (type == 'contract') {\r\n this.CTable.filter($event.value, 'ContractListID', 'in');\r\n if (\r\n $event.value.some(\r\n x => x == this.selectedContract.ContractListID\r\n ) == true\r\n ) {\r\n this.log.verbose('Do not clear');\r\n } else {\r\n this.selectedContract = this.contracts.find(\r\n x => x.ContractListID == $event.value[0]\r\n );\r\n this.contractHasBeenSelected();\r\n }\r\n }\r\n }\r\n setupSubscriptions() {\r\n this.ContractsSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n contracts => {\r\n if (this.IsIncludeInactive === true) {\r\n // Show unfiltered data\r\n } else {\r\n this.contracts = contracts.filter(\r\n contract => contract.IsActive === true\r\n );\r\n }\r\n }\r\n );\r\n }\r\n\r\n // ------------------------------CHARGE NUMBER TABLE FUNCTIONS-------------------------\r\n onRowEditInit(rowData: IChargeNumberManagement) {\r\n this.clonedChargeNumbers[rowData.CNListID] = { ...rowData };\r\n this.cnEditing = { ...rowData };\r\n this.rollingAuthStartDate =\r\n this.clonedChargeNumbers[rowData.CNListID].RollingAuthStartDate;\r\n this.rollingAuthEndDate =\r\n this.clonedChargeNumbers[rowData.CNListID].RollingAuthEndDate;\r\n this.maxTimeEntered = moment(this.clonedChargeNumbers[rowData.CNListID].MaxTimeEntered).isValid() ? moment(\r\n this.clonedChargeNumbers[rowData.CNListID].MaxTimeEntered\r\n ).format('MM/DD/YYYY') : 'N/A';\r\n\r\n this.replacementCNs = this.chargeNumbers.filter(\r\n x => x.CNListID != rowData.CNListID\r\n );\r\n this.replacementCNsSelectItem = this.replacementCNs.map(x => ({\r\n label: x.FullName,\r\n value: x.CNListID\r\n }));\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: IChargeNumberManagement) {\r\n // if (this.costCenterID != null) {\r\n // rowData.CostCenterID = this.costCenterID.GroupID;\r\n // }\r\n if (\r\n rowData.RollingCNListID !==\r\n this.clonedChargeNumbers[rowData.CNListID].RollingCNListID\r\n ) {\r\n this.displayWarning = false;\r\n this.activeTMCount = rowData.CurrentTM;\r\n this.activeUserAuthCount = rowData.CurrentAuthUser;\r\n this.rollingCNListID = rowData.RollingCNListID;\r\n const rollingCN = this.chargeNumbers.find(\r\n x => x.CNListID === this.rollingCNListID\r\n );\r\n this.rollingCNFullName = rollingCN.FullName;\r\n this.currentCNFullName = rowData.FullName;\r\n if (rollingCN.CNStartDate != null) {\r\n this.rollingAuthStartDate = rollingCN.CNStartDate;\r\n } else {\r\n this.rollingAuthStartDate = new Date();\r\n }\r\n if (rollingCN.CNEndDate != null) {\r\n this.rollingAuthEndDate = rollingCN.CNEndDate;\r\n }\r\n\r\n this.displayDatesDialog = true;\r\n this.clonedChargeNumbers[rowData.CNListID] = { ...rowData };\r\n } else {\r\n this.SaveChargeNumber.next(rowData);\r\n delete this.clonedChargeNumbers[rowData.CNListID];\r\n delete this.cnEditing;\r\n }\r\n\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: IChargeNumberManagement) {\r\n const index = this.chargeNumbers.findIndex(\r\n x => x.CNListID === item.CNListID\r\n );\r\n if (index >= 0) {\r\n this.chargeNumbers.splice(\r\n index,\r\n 1,\r\n this.clonedChargeNumbers[item.CNListID]\r\n );\r\n }\r\n this.chargeNumbers = [...this.chargeNumbers];\r\n\r\n delete this.clonedChargeNumbers[item.CNListID];\r\n delete this.cnEditing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n onAuthStartDateSelected(value) {}\r\n\r\n onAuthEndDateSelected(value) {}\r\n\r\n confirmBtnClickedDateDialog() {\r\n if (this.rollingAuthEndDate > this.rollingAuthStartDate) {\r\n this.displayWarning = false;\r\n this.clonedChargeNumbers[\r\n this.cnEditing.CNListID\r\n ].RollingAuthStartDate = this.rollingAuthStartDate;\r\n this.clonedChargeNumbers[\r\n this.cnEditing.CNListID\r\n ].RollingAuthEndDate = this.rollingAuthEndDate;\r\n this.SaveChargeNumber.next(\r\n this.clonedChargeNumbers[this.cnEditing.CNListID]\r\n );\r\n delete this.clonedChargeNumbers[this.cnEditing.CNListID];\r\n delete this.cnEditing;\r\n this.displayDatesDialog = false;\r\n } else {\r\n this.displayWarning = true;\r\n }\r\n }\r\n\r\n cancelBtnClickedDateDialog() {\r\n const index = this.chargeNumbers.findIndex(\r\n x => x.CNListID === this.cnEditing.CNListID\r\n );\r\n this.chargeNumbers.splice(index, 1, this.cnEditing);\r\n delete this.clonedChargeNumbers[this.cnEditing.CNListID];\r\n delete this.cnEditing;\r\n this.displayDatesDialog = false;\r\n }\r\n\r\n onCNStartDateSelected(value) {\r\n this.log.verbose(\r\n `CNStartDateSelected: ${moment(value).format('MM/DD/YYYY')}`\r\n );\r\n }\r\n\r\n onCNEndDateSelected(value) {\r\n this.log.verbose('CNEndDateSelected');\r\n }\r\n\r\n onBurnStartDateSelected(value) {\r\n this.log.verbose('BurnStartDateSelected');\r\n }\r\n\r\n onChargeNumbersSelected(value) {\r\n this.chargeNumbersSelected = true;\r\n this.log.verbose(this.selectedChargeNumbers);\r\n this.chargeNumbersSelectedEvent.emit(value.data);\r\n }\r\n\r\n costCenterValueChanged(event) {\r\n this.costCenterID = event.value;\r\n }\r\n\r\n findCostCenterName(rowData: IChargeNumberManagement): string {\r\n if (rowData.CostCenterID != null) {\r\n if (rowData.CostCenterID === 0) {\r\n return '';\r\n } else {\r\n const cc = this.userGroups.find(\r\n x => x.GroupID === rowData.CostCenterID\r\n );\r\n return cc.GroupName;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n findCNFullName(rowData: IChargeNumberManagement): string {\r\n if (rowData.RollingCNListID != null) {\r\n if (rowData.RollingCNListID === '') {\r\n return '';\r\n } else {\r\n const cn = this.chargeNumbers.find(\r\n x => x.CNListID === rowData.RollingCNListID\r\n );\r\n if (cn != null) {\r\n return cn.FullName;\r\n } else {\r\n return '';\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n showAllCNsChecked(event) {\r\n if (event.checked === true) {\r\n this.statusColSpan = 2;\r\n this.cntableFrozenColSpan = 2;\r\n this.cntableFrozenWidth = '38rem';\r\n } else {\r\n this.cntableFrozenColSpan = 1;\r\n this.statusColSpan = 1;\r\n this.cntableFrozenWidth = '34rem';\r\n }\r\n this.ToggleInactiveFMs.next({\r\n ContractListID: this.selectedContract.ContractListID,\r\n Activeonly: !event.checked\r\n });\r\n this.ToggleInactiveCNs.next({\r\n ContractListID: this.selectedContract.ContractListID,\r\n Activeonly: !event.checked\r\n });\r\n }\r\n\r\n lessThanToday(endDate) {\r\n if (moment(endDate).toDate() < new Date()) {\r\n this.endDateTooltip = 'Invoicing not scheduled after Contract End';\r\n return true;\r\n } else {\r\n this.endDateTooltip = '';\r\n return false;\r\n }\r\n }\r\n\r\n // -------------------------CONTRACT TABLE FUNCTIONS----------------------------------\r\n onContractRowEditInit(rowData: IContractManagement) {\r\n if (rowData.InvoiceCycle != null) {\r\n this.invoiceCycleDays = this.invoiceCycle.filter(\r\n x => x.InvoiceCycle === rowData.InvoiceCycle\r\n );\r\n this.contractSelectItems = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n }\r\n if (this.hasInvoiceCycle24 === true) {\r\n }\r\n if (rowData.ContractEndDate != null) {\r\n this.currentSavedContractEndDate = rowData.ContractEndDate;\r\n }\r\n this.clonedContracts[rowData.ContractListID] = { ...rowData };\r\n this.cEditing = { ...rowData };\r\n this.invoiceCycle24Selected = false;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onContractRowEditSave(rowData: IContractManagement) {\r\n if (this.invoiceCycleHasBeenSelected === true) {\r\n // rowData.InvoiceCycle = this.invoiceCycleSelected;\r\n if (rowData.InvoiceCycle.toString() === '24') {\r\n rowData.InvoiceCycleDay2 = '99';\r\n rowData.InvoiceCycleDay = '15';\r\n } else {\r\n rowData.InvoiceCycleDay2 = '';\r\n }\r\n }\r\n // if (this.invoiceCycleDayHasBeenSelected) {\r\n // rowData.InvoiceCycleDay = this.invoiceCycleDaySelected.CycleDayCode;\r\n // }\r\n this.SaveContract.next(rowData);\r\n delete this.clonedContracts[rowData.ContractListID];\r\n delete this.cEditing;\r\n this.invoiceCycleHasBeenSelected = false;\r\n this.invoiceCycleDayHasBeenSelected = false;\r\n this.invoiceCycle24Selected = false;\r\n this.log.verbose('onRowEditSave' + rowData);\r\n }\r\n\r\n onContractRowEditCancel(rowData: IContractManagement, index: number) {\r\n this.contracts.splice(\r\n index,\r\n 1,\r\n this.clonedContracts[rowData.ContractListID]\r\n );\r\n delete this.clonedContracts[rowData.ContractListID];\r\n delete this.cEditing;\r\n this.invoiceCycle24Selected = false;\r\n this.log.verbose('onRowEditCancel ' + index);\r\n }\r\n\r\n statusCellClicked() {\r\n this.errorClicked = true;\r\n }\r\n\r\n onContractSelected(value) {\r\n if (this.errorClicked == true) {\r\n this.errorClicked = false;\r\n } else {\r\n this.contractHasBeenSelected();\r\n }\r\n }\r\n\r\n contractHasBeenSelected() {\r\n // const rows = document.getElementsByClassName('p-selectable-row');\r\n // if (rows.length > 0) {\r\n // rows[0].classList.remove('p-highlight');\r\n // rows[0].classList.remove('highlight');\r\n // }\r\n this.chargeNumberHeader =\r\n this.selectedContract.ContractDesc + '\\xa0\\xa0' + 'Charge Numbers';\r\n this.fundingModHeader =\r\n this.selectedContract.ContractDesc +\r\n '\\xa0\\xa0' +\r\n 'Funding Modifications';\r\n this.contractSelected = true;\r\n // const contract = {\r\n // ContractListID: value.data.ContractListID,\r\n // Activeonly: true\r\n // };\r\n const contract = {\r\n ContractListID: this.selectedContract.ContractListID,\r\n Activeonly: true\r\n };\r\n this.cnCbxValue = false;\r\n this.contractSelectedEvent.emit(contract);\r\n this.chargeNumbersSelectedEvent.emit(contract);\r\n }\r\n\r\n onCycleEffectiveDateSelected(value) {\r\n this.log.verbose('EffectiveDateSelected');\r\n }\r\n\r\n onContractEndDateSelected(value, rowData) {\r\n if (this.userInfo) {\r\n if (this.currentSavedContractEndDate < this.userInfo.FYStartDate) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'This will update a contact that had previously expired. Please update invoice schedule in eFAACT Central-Invoice Schedules.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {})\r\n .catch(() => {\r\n rowData.ContractEndDate =\r\n this.currentSavedContractEndDate;\r\n });\r\n }\r\n }\r\n this.log.verbose('EndDateSelected');\r\n }\r\n\r\n onContractStartDateSelected(value) {\r\n this.log.verbose('StartDateSelected');\r\n }\r\n\r\n invoiceCycleValueChanged(event) {\r\n this.invoiceCycleHasBeenSelected = true;\r\n if (event.value === 24) {\r\n this.invoiceCycle24Selected = true;\r\n\r\n // this.invoiceCycleDays = [{\r\n // InvoiceCycle: 24,\r\n // InvoiceCycleDay: \"15\"\r\n // }];\r\n\r\n // this.invoiceCycleDay2Arr = [{\r\n // InvoiceCycle: 24,\r\n // InvoiceCycleDay: \"EOM\"\r\n // }];\r\n this.invoiceCycleDays = this.invoiceCycle.filter(\r\n x => x.InvoiceCycle === event.value\r\n );\r\n this.contractSelectItems = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n this.contractSelectItemsD2 = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n\r\n if (\r\n JSON.stringify(this.contractSelectItems.sort()) ===\r\n JSON.stringify(this.contractSelectItemsD2.sort())\r\n ) {\r\n this.contractSelectItemsD2 = this.contractSelectItemsD2.filter(\r\n x => x.value !== '15'\r\n );\r\n this.contractSelectItems = this.contractSelectItems.filter(\r\n x => x.value !== '99'\r\n );\r\n }\r\n } else {\r\n this.invoiceCycle24Selected = false;\r\n this.invoiceCycleDays = this.invoiceCycle.filter(\r\n x => x.InvoiceCycle === event.value\r\n );\r\n this.contractSelectItems = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n }\r\n this.invoiceCycleSelected = event.value;\r\n }\r\n\r\n invoiceCycleDayValueChanged(event) {\r\n this.invoiceCycleDayHasBeenSelected = true;\r\n this.invoiceCycleDaySelected = event.value;\r\n }\r\n\r\n invoiceCycleDay2ValueChanged(event) {}\r\n\r\n showAllContractsChecked(event) {\r\n if (event.checked === true) {\r\n this.ctableFrozenColSpan = 2;\r\n this.ctableFrozenWidth = '38rem';\r\n this.invoicingColSpan = 6;\r\n } else {\r\n this.invoicingColSpan = 5;\r\n this.ctableFrozenColSpan = 1;\r\n this.ctableFrozenWidth = '34rem';\r\n }\r\n this.ToggleInactiveContracts.next(!event.checked);\r\n }\r\n\r\n findInvoiceDayDesc(rowData: IContractManagement): string {\r\n if (rowData.InvoiceCycleDay != null) {\r\n if (this.invoiceCycle.length > 0) {\r\n const index = this.invoiceCycle.findIndex(\r\n x =>\r\n x.CycleDayCode === rowData.InvoiceCycleDay &&\r\n x.InvoiceCycle === rowData.InvoiceCycle\r\n );\r\n if (index !== -1) {\r\n const cc = this.invoiceCycle[index];\r\n return cc.InvoiceCycleDay;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findInvoiceDay2Desc(rowData: IContractManagement): string {\r\n if (rowData.InvoiceCycleDay2 != null) {\r\n if (this.invoiceCycle.length > 0) {\r\n const index = this.invoiceCycle.findIndex(\r\n x =>\r\n x.CycleDayCode === rowData.InvoiceCycleDay2 &&\r\n x.InvoiceCycle === rowData.InvoiceCycle\r\n );\r\n if (index !== -1) {\r\n const cc = this.invoiceCycle[index];\r\n return cc.InvoiceCycleDay;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n onStatusClick(item: IContractManagement) {\r\n this.ShowError.emit({ open: true, MsgEntityID: item.ContractListID });\r\n }\r\n\r\n // ----------------------FUNDING MOD FUNCTIONS------------------------------\r\n onFMRowEditInit(rowData: IFundingMod) {\r\n const fmindex = this.fundingMods.findIndex(\r\n x => x.FundingID === rowData.FundingID\r\n );\r\n this.oldFMAmount = +this.fundingMods[fmindex].FundingModAmount;\r\n this.clonedFundingMods[rowData.CNListID] = { ...rowData };\r\n this.fmEditing = { ...rowData };\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onFMRowEditSave(rowData: IFundingMod) {\r\n this.performFundingCalc(rowData);\r\n this.SaveFundingMod.next(rowData);\r\n delete this.clonedFundingMods[rowData.CNListID];\r\n delete this.fmEditing;\r\n this.log.verbose('onRowEditSave' + rowData);\r\n }\r\n\r\n onFMRowEditCancel(rowData: IFundingMod, index: number) {\r\n this.fundingMods.splice(\r\n index,\r\n 1,\r\n this.clonedFundingMods[rowData.CNListID]\r\n );\r\n delete this.clonedFundingMods[rowData.CNListID];\r\n delete this.fmEditing;\r\n this.log.verbose('onRowEditCancel' + index);\r\n }\r\n\r\n performFundingCalc(rowData) {\r\n const cindex = this.contracts.findIndex(\r\n x => x.ContractListID === rowData.ContractListID\r\n );\r\n const cnindex = this.chargeNumbers.findIndex(\r\n x => x.CNListID === rowData.CNListID\r\n );\r\n if (+rowData.FundingModAmount >= this.oldFMAmount) {\r\n this.fundingToSubtract =\r\n +rowData.FundingModAmount - this.oldFMAmount;\r\n this.contracts[cindex].ContractFunding = (\r\n +this.contracts[cindex].ContractFunding + this.fundingToSubtract\r\n ).toString();\r\n this.ContractsSubject.next(this.contracts);\r\n this.chargeNumbers[cnindex].FundedAmount = (\r\n +this.chargeNumbers[cnindex].FundedAmount +\r\n this.fundingToSubtract\r\n ).toString();\r\n this.chargeNumbers[cnindex].FundingAvailable = (\r\n +this.chargeNumbers[cnindex].FundingAvailable +\r\n this.fundingToSubtract\r\n ).toString();\r\n this.ChargeNumbersSubject.next(this.chargeNumbers);\r\n } else {\r\n this.fundingToSubtract =\r\n this.oldFMAmount - +rowData.FundingModAmount;\r\n this.contracts[cindex].ContractFunding = (\r\n +this.contracts[cindex].ContractFunding - this.fundingToSubtract\r\n ).toString();\r\n this.ContractsSubject.next(this.contracts);\r\n this.chargeNumbers[cnindex].FundedAmount = (\r\n +this.chargeNumbers[cnindex].FundedAmount -\r\n this.fundingToSubtract\r\n ).toString();\r\n this.chargeNumbers[cnindex].FundingAvailable = (\r\n +this.chargeNumbers[cnindex].FundingAvailable -\r\n this.fundingToSubtract\r\n ).toString();\r\n this.ChargeNumbersSubject.next(this.chargeNumbers);\r\n }\r\n }\r\n\r\n onFundingModDateSelected(value) {\r\n this.log.verbose(\r\n `FundingModDateSelected: ${moment(value).format('MM/DD/YYYY')}`\r\n );\r\n }\r\n\r\n addNewCNValueChanged(event) {\r\n // this.newFundingMod.FullName = event.value.FullName;\r\n // this.newFundingMod.CNListID = event.value.CNListID;\r\n }\r\n\r\n onFundingModDelete(rowData) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure you want to delete this funding modification?',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n this.fundingToSubtract = +rowData.FundingModAmount;\r\n const cindex = this.contracts.findIndex(\r\n x => x.ContractListID === rowData.ContractListID\r\n );\r\n const cnindex = this.chargeNumbers.findIndex(\r\n x => x.CNListID === rowData.CNListID\r\n );\r\n this.contracts[cindex].ContractFunding = (\r\n +this.contracts[cindex].ContractFunding -\r\n this.fundingToSubtract\r\n ).toString();\r\n this.ContractsSubject.next(this.contracts);\r\n this.chargeNumbers[cnindex].FundedAmount = (\r\n +this.chargeNumbers[cnindex].FundedAmount -\r\n this.fundingToSubtract\r\n ).toString();\r\n this.chargeNumbers[cnindex].FundingAvailable = (\r\n +this.chargeNumbers[cnindex].FundingAvailable -\r\n this.fundingToSubtract\r\n ).toString();\r\n this.ChargeNumbersSubject.next(this.chargeNumbers);\r\n this.DeleteFundingMod.next(rowData);\r\n })\r\n .catch(() => {});\r\n }\r\n\r\n openNew() {\r\n this.newFundingMod = {};\r\n this.submitted = false;\r\n this.addNewDialog = true;\r\n }\r\n\r\n hideDialog() {\r\n this.addNewDialog = false;\r\n this.submitted = false;\r\n }\r\n saveNewMod() {\r\n this.submitted = true;\r\n const cn = this.chargeNumbers.find(\r\n x => x.CNListID === this.newFundingMod.CNListID\r\n );\r\n if (\r\n this.newFundingMod.CNListID &&\r\n this.newFundingMod.FundingModNbr.trim() &&\r\n this.newFundingMod.FundingModDate &&\r\n this.newFundingMod.FundingModAmount.trim()\r\n ) {\r\n this.newFundingMod.FullName = cn.FullName;\r\n this.newFundingMod.FundingID = -1;\r\n this.newFundingMod.DateUpdated = null;\r\n this.newFundingMod.CNFundedAmount = null;\r\n this.newFundingMod.ContractListID = null;\r\n this.newFundingMod.ContractFunding = null;\r\n this.newFundingMod.Status = {\r\n StatusCode: 0,\r\n Message: null,\r\n MsgProcessID: 0,\r\n MsgEntityID: null\r\n };\r\n this.newFundingMod.Row_Version = '0x0000000000000000';\r\n this.SaveFundingMod.next(this.newFundingMod);\r\n this.fundingMods = [...this.fundingMods];\r\n this.addNewDialog = false;\r\n this.newFundingMod = {};\r\n this.newFundingMod.FullName = null;\r\n this.newFundingMod.CNListID = null;\r\n }\r\n }\r\n\r\n handleOnOpen($event) {\r\n const baseHeight = '22vh';\r\n let accHeight = 0;\r\n if ($event.length === 1) {\r\n accHeight += 48;\r\n } else if ($event.length === 2) {\r\n accHeight += 12;\r\n } else {\r\n accHeight += 0;\r\n }\r\n\r\n if (this.activeState[0]) {\r\n this.cTabHeight = `calc(${baseHeight} + ${accHeight}vh)`;\r\n }\r\n if (this.activeState[1]) {\r\n this.cnTabHeight = `calc(${baseHeight} + ${accHeight}vh)`;\r\n }\r\n if (this.activeState[2]) {\r\n this.fmTabHeight = `calc(${baseHeight} + ${accHeight}vh)`;\r\n }\r\n // this.CTable.scrollHeight = `calc(${baseHeight} + ${accHeight}em)`;\r\n this.log.verbose({\r\n type: 'ContractManagementComponent:handleOnOpen',\r\n $event,\r\n scrollHeight: this.CTable.scrollHeight\r\n });\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n onSelectedChargeNumberTab($event) {\r\n if ($event === true) {\r\n // this.activeState[1] = true;\r\n const event = [];\r\n if (this.activeState[0]) {\r\n event.push(0);\r\n }\r\n if (this.activeState[1]) {\r\n event.push(1);\r\n }\r\n if (this.activeState[2]) {\r\n event.push(2);\r\n }\r\n setTimeout(() => {\r\n this.handleOnOpen(event);\r\n }, 0);\r\n }\r\n }\r\n}\r\n\r\nexport interface IContract {\r\n ContractListID: string;\r\n Activeonly: boolean;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { ChargeNumberManagement } from './charge-number-management.model';\r\nimport { IContractManagement } from '../IContractManagement';\r\nimport { IChargeNumberManagement } from '../IChargeNumberManagement';\r\nimport { IContract } from '../presenters/contract-management-presenters.component';\r\n\r\nexport const getChargeNumbers = createAction(\r\n '[ChargeNumberManagement/API] Get Charge Numbers',\r\n props<{ Contract: IContract }>()\r\n);\r\n\r\nexport const putChargeNumbers = createAction(\r\n '[ChargeNumberManagement/API] Update Charge Numbers',\r\n props<{ chargeNumbers: Array, Activeonly?: boolean }>()\r\n);\r\n\r\nexport const loadChargeNumberManagements = createAction(\r\n '[ChargeNumberManagement/API] Load ChargeNumberManagements',\r\n props<{ chargeNumberManagements: IChargeNumberManagement[] }>()\r\n);\r\n\r\nexport const addChargeNumberManagement = createAction(\r\n '[ChargeNumberManagement/API] Add ChargeNumberManagement',\r\n props<{ chargeNumberManagement: IChargeNumberManagement }>()\r\n);\r\n\r\nexport const upsertChargeNumberManagement = createAction(\r\n '[ChargeNumberManagement/API] Upsert ChargeNumberManagement',\r\n props<{ chargeNumberManagement: IChargeNumberManagement }>()\r\n);\r\n\r\nexport const addChargeNumberManagements = createAction(\r\n '[ChargeNumberManagement/API] Add ChargeNumberManagements',\r\n props<{ chargeNumberManagements: IChargeNumberManagement[] }>()\r\n);\r\n\r\nexport const upsertChargeNumberManagements = createAction(\r\n '[ChargeNumberManagement/API] Upsert ChargeNumberManagements',\r\n props<{ chargeNumberManagements: IChargeNumberManagement[] }>()\r\n);\r\n\r\nexport const updateChargeNumberManagement = createAction(\r\n '[ChargeNumberManagement/API] Update ChargeNumberManagement',\r\n props<{ chargeNumberManagement: Update }>()\r\n);\r\n\r\nexport const updateChargeNumberManagements = createAction(\r\n '[ChargeNumberManagement/API] Update ChargeNumberManagements',\r\n props<{ chargeNumberManagements: Update[] }>()\r\n);\r\n\r\nexport const deleteChargeNumberManagement = createAction(\r\n '[ChargeNumberManagement/API] Delete ChargeNumberManagement',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteChargeNumberManagements = createAction(\r\n '[ChargeNumberManagement/API] Delete ChargeNumberManagements',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearChargeNumberManagements = createAction(\r\n '[ChargeNumberManagement/API] Clear ChargeNumberManagements'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { ContractManagementService } from '../contract-management.service';\r\nimport * as ChargeNumberManagementActions from './charge-number-management.actions';\r\nimport { catchError, switchMap, map, flatMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\n\r\n@Injectable()\r\nexport class ChargeNumberManagementEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ContractManagementService\r\n ) {}\r\n\r\n getChargeNumbers$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ChargeNumberManagementActions.getChargeNumbers),\r\n switchMap(x =>\r\n this.service.getChargeNumbers(x.Contract).pipe(\r\n flatMap(resp => [\r\n ChargeNumberManagementActions.loadChargeNumberManagements(\r\n {\r\n chargeNumberManagements: resp\r\n }\r\n ),\r\n // new fromShared.Errors.RemoveErrors(\r\n // resp\r\n // .filter(\r\n // cnm =>\r\n // cnm.Status.StatusCode ===\r\n // ResponseStatus.Success\r\n // )\r\n // .map(cnm => cnm.CNListID)\r\n // ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putChargeNumbers$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ChargeNumberManagementActions.putChargeNumbers),\r\n switchMap(a =>\r\n this.service.putCNMgmt(a.chargeNumbers).pipe(\r\n flatMap(c => [\r\n ChargeNumberManagementActions.updateChargeNumberManagements(\r\n {\r\n chargeNumberManagements: [\r\n {\r\n id: a.chargeNumbers\r\n .map(x => x.CNListID)\r\n .toString(),\r\n changes: c.Items[0]\r\n }\r\n ]\r\n }\r\n ),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.CNListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","export interface ChargeNumberManagement {\r\n id: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { IChargeNumberManagement } from '../IChargeNumberManagement';\r\nimport * as ChargeNumberManagementActions from './charge-number-management.actions';\r\n\r\nexport const chargeNumberManagementsFeatureKey = 'chargeNumberManagements';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: IChargeNumberManagement) => model.CNListID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst chargeNumberManagementReducer = createReducer(\r\n initialState,\r\n on(\r\n ChargeNumberManagementActions.addChargeNumberManagement,\r\n (state, action) => adapter.addOne(action.chargeNumberManagement, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.upsertChargeNumberManagement,\r\n (state, action) =>\r\n adapter.upsertOne(action.chargeNumberManagement, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.addChargeNumberManagements,\r\n (state, action) =>\r\n adapter.addMany(action.chargeNumberManagements, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.upsertChargeNumberManagements,\r\n (state, action) =>\r\n adapter.upsertMany(action.chargeNumberManagements, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.updateChargeNumberManagement,\r\n (state, action) =>\r\n adapter.updateOne(action.chargeNumberManagement, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.updateChargeNumberManagements,\r\n (state, action) =>\r\n adapter.updateMany(action.chargeNumberManagements, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.deleteChargeNumberManagement,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.deleteChargeNumberManagements,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(\r\n ChargeNumberManagementActions.loadChargeNumberManagements,\r\n (state, action) => adapter.setAll(action.chargeNumberManagements, state)\r\n ),\r\n on(ChargeNumberManagementActions.clearChargeNumberManagements, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return chargeNumberManagementReducer(state, action);\r\n}\r\n\r\nexport const selectChargeNumberMgmtState = createFeatureSelector(\r\n chargeNumberManagementsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectChargeNumberMgmtState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { IContractManagement } from '../IContractManagement';\r\nimport { IChargeNumberManagement } from '../IChargeNumberManagement';\r\nimport { Action } from 'rxjs/internal/scheduler/Action';\r\n\r\nexport const getContracts = createAction(\r\n '[ContractManagement/API] Get Contracts',\r\n props<{ Activeonly?: boolean }>()\r\n);\r\n\r\nexport const putContracts = createAction(\r\n '[ContractManagement/API] Update Contracts',\r\n props<{ contracts: Array; Activeonly?: boolean }>()\r\n);\r\n\r\nexport const loadContractManagements = createAction(\r\n '[ContractManagement/API] Load ContractManagements',\r\n props<{ contractManagements: IContractManagement[] }>()\r\n);\r\n\r\nexport const addContractManagement = createAction(\r\n '[ContractManagement/API] Add ContractManagement',\r\n props<{ contractManagement: IContractManagement }>()\r\n);\r\n\r\nexport const upsertContractManagement = createAction(\r\n '[ContractManagement/API] Upsert ContractManagement',\r\n props<{ contractManagement: IContractManagement }>()\r\n);\r\n\r\nexport const addContractManagements = createAction(\r\n '[ContractManagement/API] Add ContractManagements',\r\n props<{ contractManagements: IContractManagement[] }>()\r\n);\r\n\r\nexport const upsertContractManagements = createAction(\r\n '[ContractManagement/API] Upsert ContractManagements',\r\n props<{ contractManagements: IContractManagement[] }>()\r\n);\r\n\r\nexport const updateContractManagement = createAction(\r\n '[ContractManagement/API] Update ContractManagement',\r\n props<{ contractManagement: Update }>()\r\n);\r\n\r\nexport const updateContractManagements = createAction(\r\n '[ContractManagement/API] Update ContractManagements',\r\n props<{ contractManagements: Update[] }>()\r\n);\r\n\r\nexport const deleteContractManagement = createAction(\r\n '[ContractManagement/API] Delete ContractManagement',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteContractManagements = createAction(\r\n '[ContractManagement/API] Delete ContractManagements',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearContractManagements = createAction(\r\n '[ContractManagement/API] Clear ContractManagements'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { ContractManagementService } from '../contract-management.service';\r\nimport * as ContractManagementActions from './contract-management.actions';\r\nimport { switchMap, map, catchError, flatMap } from 'rxjs/operators';\r\nimport { of } from 'rxjs';\r\nimport {\r\n ResponseStatus,\r\n IStatusMessage,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Injectable()\r\nexport class ContractManagementEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ContractManagementService\r\n ) {}\r\n\r\n getContracts$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ContractManagementActions.getContracts),\r\n switchMap(a =>\r\n this.service.getContracts(a.Activeonly).pipe(\r\n flatMap(resp => [\r\n ContractManagementActions.loadContractManagements({\r\n contractManagements: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.ContractListID)\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putContracts$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ContractManagementActions.putContracts),\r\n switchMap(a =>\r\n this.service.putContractMgmt(a.contracts).pipe(\r\n flatMap(c => [\r\n ContractManagementActions.updateContractManagements({\r\n contractManagements: [\r\n {\r\n id: a.contracts\r\n .map(x => x.ContractListID)\r\n .toString(),\r\n changes: c.Items[0]\r\n }\r\n ]\r\n }),\r\n\r\n // ContractManagementActions.getContracts({ Activeonly: a.Activeonly }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.ContractListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { IContractManagement } from '../IContractManagement';\r\nimport * as ContractManagementActions from './contract-management.actions';\r\n\r\nexport const contractManagementsFeatureKey = 'contractManagements';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: IContractManagement) => model.ContractListID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst contractManagementReducer = createReducer(\r\n initialState,\r\n on(ContractManagementActions.addContractManagement, (state, action) =>\r\n adapter.addOne(action.contractManagement, state)\r\n ),\r\n on(ContractManagementActions.upsertContractManagement, (state, action) =>\r\n adapter.upsertOne(action.contractManagement, state)\r\n ),\r\n on(ContractManagementActions.addContractManagements, (state, action) =>\r\n adapter.addMany(action.contractManagements, state)\r\n ),\r\n on(ContractManagementActions.upsertContractManagements, (state, action) =>\r\n adapter.upsertMany(action.contractManagements, state)\r\n ),\r\n on(ContractManagementActions.updateContractManagement, (state, action) =>\r\n adapter.updateOne(action.contractManagement, state)\r\n ),\r\n on(ContractManagementActions.updateContractManagements, (state, action) =>\r\n adapter.updateMany(action.contractManagements, state)\r\n ),\r\n on(ContractManagementActions.deleteContractManagement, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(ContractManagementActions.deleteContractManagements, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(ContractManagementActions.loadContractManagements, (state, action) =>\r\n adapter.setAll(action.contractManagements, state)\r\n ),\r\n on(ContractManagementActions.clearContractManagements, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return contractManagementReducer(state, action);\r\n}\r\n\r\nexport const selectContractMgmtState = createFeatureSelector(\r\n contractManagementsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectContractMgmtState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { IFundingMod } from '../IFundingMod';\r\nimport { IChargeNumberManagement } from '../IChargeNumberManagement';\r\nimport { IContract } from '../presenters';\r\n\r\nexport const getFundingMod = createAction(\r\n '[FundingMod/API] Get Funding Mod',\r\n props<{ contract: IContract }>()\r\n);\r\n\r\nexport const putFundingMod = createAction(\r\n '[FundingMod/API] Update Funding Mod',\r\n props<{ fundingMod: Array }>()\r\n);\r\n\r\nexport const removeFundingMod = createAction(\r\n '[FundingMod/API] Remove Funding Mod',\r\n props<{ ids: Array }>()\r\n);\r\n\r\nexport const loadFundingMods = createAction(\r\n '[FundingMod/API] Load FundingMods',\r\n props<{ fundingMods: IFundingMod[] }>()\r\n);\r\n\r\nexport const addFundingMod = createAction(\r\n '[FundingMod/API] Add FundingMod',\r\n props<{ fundingMod: IFundingMod }>()\r\n);\r\n\r\nexport const upsertFundingMod = createAction(\r\n '[FundingMod/API] Upsert FundingMod',\r\n props<{ fundingMod: IFundingMod }>()\r\n);\r\n\r\nexport const addFundingMods = createAction(\r\n '[FundingMod/API] Add FundingMods',\r\n props<{ fundingMods: IFundingMod[] }>()\r\n);\r\n\r\nexport const upsertFundingMods = createAction(\r\n '[FundingMod/API] Upsert FundingMods',\r\n props<{ fundingMods: IFundingMod[] }>()\r\n);\r\n\r\nexport const updateFundingMod = createAction(\r\n '[FundingMod/API] Update FundingMod',\r\n props<{ fundingMod: Update }>()\r\n);\r\n\r\nexport const updateFundingMods = createAction(\r\n '[FundingMod/API] Update FundingMods',\r\n props<{ fundingMods: Update[] }>()\r\n);\r\n\r\nexport const deleteFundingMod = createAction(\r\n '[FundingMod/API] Delete FundingMod',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteFundingMods = createAction(\r\n '[FundingMod/API] Delete FundingMods',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearFundingMods = createAction(\r\n '[FundingMod/API] Clear FundingMods'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { ContractManagementService } from '../contract-management.service';\r\nimport * as FundingModActions from './funding-mod.actions';\r\n\r\n@Injectable()\r\nexport class FundingModEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ContractManagementService\r\n ) {}\r\n\r\n getFundingMod$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FundingModActions.getFundingMod),\r\n switchMap(x =>\r\n this.service.getFundingMod(x.contract).pipe(\r\n flatMap(resp => [\r\n FundingModActions.loadFundingMods({\r\n fundingMods: resp\r\n }),\r\n // new fromShared.Errors.RemoveErrors(\r\n // resp\r\n // .filter(\r\n // x =>\r\n // x.Status.StatusCode ===\r\n // ResponseStatus.Success\r\n // )\r\n // .map(x => x.FundingID.toString())\r\n // ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putFundingMod$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(FundingModActions.putFundingMod),\r\n switchMap(a =>\r\n this.service.putFundingMod(a.fundingMod).pipe(\r\n flatMap(c => [\r\n FundingModActions.upsertFundingMods({\r\n fundingMods: c.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.FundingID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n deleteFundingMod$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(FundingModActions.removeFundingMod),\r\n switchMap(a =>\r\n this.service.deleteFundingMod(a.ids).pipe(\r\n flatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n FundingModActions.deleteFundingMods({\r\n ids: resp.Items.map(\r\n x => x.EntityID as string\r\n )\r\n })\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { IFundingMod } from '../IFundingMod';\r\nimport * as FundingModActions from './funding-mod.actions';\r\n\r\nexport const fundingModsFeatureKey = 'fundingMods';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: IFundingMod) => model.FundingID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst fundingModReducer = createReducer(\r\n initialState,\r\n on(FundingModActions.addFundingMod, (state, action) =>\r\n adapter.addOne(action.fundingMod, state)\r\n ),\r\n on(FundingModActions.upsertFundingMod, (state, action) =>\r\n adapter.upsertOne(action.fundingMod, state)\r\n ),\r\n on(FundingModActions.addFundingMods, (state, action) =>\r\n adapter.addMany(action.fundingMods, state)\r\n ),\r\n on(FundingModActions.upsertFundingMods, (state, action) =>\r\n adapter.upsertMany(action.fundingMods, state)\r\n ),\r\n on(FundingModActions.updateFundingMod, (state, action) =>\r\n adapter.updateOne(action.fundingMod, state)\r\n ),\r\n on(FundingModActions.updateFundingMods, (state, action) =>\r\n adapter.updateMany(action.fundingMods, state)\r\n ),\r\n on(FundingModActions.deleteFundingMod, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(FundingModActions.deleteFundingMods, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(FundingModActions.loadFundingMods, (state, action) =>\r\n adapter.setAll(action.fundingMods, state)\r\n ),\r\n on(FundingModActions.clearFundingMods, state => adapter.removeAll(state))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return fundingModReducer(state, action);\r\n}\r\n\r\nexport const selectFundingModState = createFeatureSelector(\r\n fundingModsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectFundingModState);\r\n","export * from './charge-number-management.actions';\r\nexport * from './charge-number-management.effects';\r\nexport * from './charge-number-management.model';\r\nexport * as fromChargeNumber from './charge-number-management.reducer';\r\nexport * from './contract-management.actions';\r\nexport * from './contract-management.effects';\r\nexport * as fromContract from './contract-management.reducer';\r\nexport * from './funding-mod.actions';\r\nexport * from './funding-mod.effects';\r\nexport * as fromFundingMod from './funding-mod.reducer';\r\nexport * from './invoice-cycle.actions';\r\nexport * as fromCycle from './invoice-cycle.reducer';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { IInvoiceCycle } from '../IInvoiceCycle';\r\n\r\n\r\nexport const getInvoiceCycle = createAction('[InvoiceCycle/API] Get Invoice Cycle');\r\n\r\nexport const loadInvoiceCycles = createAction(\r\n '[InvoiceCycle/API] Load InvoiceCycles',\r\n props<{ invoiceCycles: IInvoiceCycle[] }>()\r\n);\r\n\r\nexport const addInvoiceCycle = createAction(\r\n '[InvoiceCycle/API] Add InvoiceCycle',\r\n props<{ invoiceCycle: IInvoiceCycle }>()\r\n);\r\n\r\nexport const upsertInvoiceCycle = createAction(\r\n '[InvoiceCycle/API] Upsert InvoiceCycle',\r\n props<{ invoiceCycle: IInvoiceCycle }>()\r\n);\r\n\r\nexport const addInvoiceCycles = createAction(\r\n '[InvoiceCycle/API] Add InvoiceCycles',\r\n props<{ invoiceCycles: IInvoiceCycle[] }>()\r\n);\r\n\r\nexport const upsertInvoiceCycles = createAction(\r\n '[InvoiceCycle/API] Upsert InvoiceCycles',\r\n props<{ invoiceCycles: IInvoiceCycle[] }>()\r\n);\r\n\r\nexport const updateInvoiceCycle = createAction(\r\n '[InvoiceCycle/API] Update InvoiceCycle',\r\n props<{ invoiceCycle: Update }>()\r\n);\r\n\r\nexport const updateInvoiceCycles = createAction(\r\n '[InvoiceCycle/API] Update InvoiceCycles',\r\n props<{ invoiceCycles: Update[] }>()\r\n);\r\n\r\nexport const deleteInvoiceCycle = createAction(\r\n '[InvoiceCycle/API] Delete InvoiceCycle',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteInvoiceCycles = createAction(\r\n '[InvoiceCycle/API] Delete InvoiceCycles',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearInvoiceCycles = createAction(\r\n '[InvoiceCycle/API] Clear InvoiceCycles'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { ContractManagementService } from '../contract-management.service';\r\nimport * as InvoiceCycleActions from './invoice-cycle.actions';\r\nimport { switchMap, map, catchError, flatMap } from 'rxjs/operators';\r\nimport { of } from 'rxjs';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Injectable()\r\nexport class InvoiceCycleEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ContractManagementService\r\n ) {}\r\n\r\n getInvoiceCycle$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceCycleActions.getInvoiceCycle),\r\n switchMap(() =>\r\n this.service.getInvoiceCycle().pipe(\r\n map(resp =>\r\n InvoiceCycleActions.loadInvoiceCycles({\r\n invoiceCycles: resp\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { IInvoiceCycle } from '../IInvoiceCycle';\r\nimport * as InvoiceCycleActions from './invoice-cycle.actions';\r\n\r\nexport const invoiceCyclesFeatureKey = 'invoiceCycles';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst invoiceCycleReducer = createReducer(\r\n initialState,\r\n on(InvoiceCycleActions.addInvoiceCycle, (state, action) =>\r\n adapter.addOne(action.invoiceCycle, state)\r\n ),\r\n on(InvoiceCycleActions.upsertInvoiceCycle, (state, action) =>\r\n adapter.upsertOne(action.invoiceCycle, state)\r\n ),\r\n on(InvoiceCycleActions.addInvoiceCycles, (state, action) =>\r\n adapter.addMany(action.invoiceCycles, state)\r\n ),\r\n on(InvoiceCycleActions.upsertInvoiceCycles, (state, action) =>\r\n adapter.upsertMany(action.invoiceCycles, state)\r\n ),\r\n on(InvoiceCycleActions.updateInvoiceCycle, (state, action) =>\r\n adapter.updateOne(action.invoiceCycle, state)\r\n ),\r\n on(InvoiceCycleActions.updateInvoiceCycles, (state, action) =>\r\n adapter.updateMany(action.invoiceCycles, state)\r\n ),\r\n on(InvoiceCycleActions.deleteInvoiceCycle, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(InvoiceCycleActions.deleteInvoiceCycles, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(InvoiceCycleActions.loadInvoiceCycles, (state, action) =>\r\n adapter.setAll(action.invoiceCycles, state)\r\n ),\r\n on(InvoiceCycleActions.clearInvoiceCycles, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return invoiceCycleReducer(state, action);\r\n}\r\n\r\nexport const selectInvoiceCycleState = createFeatureSelector(\r\n invoiceCyclesFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectInvoiceCycleState);\r\n","import { NgModule } from '@angular/core';\r\nimport * as fromCJ from './store/reducer';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MultiSelectModule, DropdownModule, MenuModule } from '../shared/efaact-primeng.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { ContractStructureFeaturesComponent } from './features/contract-structure-features.component';\r\nimport { ContractStructurePresentersComponent } from './presenters/contract-structure-presenters.component';\r\nimport { CustomerJobEffects } from './store/effects';\r\nimport { ExpensesModule } from '../expenses';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n , StoreModule.forFeature('customerjob', fromCJ.reducer)\r\n , EffectsModule.forFeature([CustomerJobEffects])\r\n , EfaactMaterialModule\r\n , FormsModule\r\n , ReactiveFormsModule\r\n , MultiSelectModule\r\n , DropdownModule\r\n , SharedModule\r\n , ExpensesModule\r\n , MenuModule\r\n ],\r\n declarations: [ContractStructureFeaturesComponent, ContractStructurePresentersComponent],\r\n})\r\nexport class CustomerJobModule { }\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { IContractStructure } from './IContractStructure';\r\nimport { IEntityFilter } from './IEntityFilter';\r\nimport { ICustomer } from './ICustomer';\r\nimport { IContractType } from './IContractType';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { IGenericResponse } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ContractStructureService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService) { }\r\n\r\n private url = `${environment.apiLocation}/EntityFilter`;\r\n private customerurl = `${environment.apiLocation}/Customer`;\r\n private contracttypeurl = `${environment.apiLocation}/ContractType`;\r\n private uri = `${environment.apiLocation}/ContractStructure`;\r\n\r\n public getEntityFilter (): Observable> {\r\n return this.http.get>(this.url)\r\n .pipe(res => {\r\n this.log.verbose({ type: 'CustomerJobComponent:getEntityFilter:reponse', res });\r\n return res;\r\n });\r\n }\r\n\r\n public getCustomers (): Observable> {\r\n return this.http.get>(this.customerurl)\r\n .pipe(res => {\r\n this.log.verbose({ type: 'CustomerJobComponent:getCustomers:reponse', res });\r\n return res;\r\n });\r\n }\r\n\r\n public getContractTypes (): Observable> {\r\n return this.http.get>(this.contracttypeurl)\r\n .pipe(res => {\r\n this.log.verbose({ type: 'CustomerJobComponent:getContractTypes:reponse', res });\r\n return res;\r\n });\r\n }\r\n\r\n public getCustomerJobs (customers: Array, filterid: IEntityFilter): Observable> {\r\n return this.http.post>(this.uri, { customerlist: customers, customerfilterid: filterid.FilterID })\r\n .pipe(res => {\r\n this.log.verbose({ type: 'CustomerJobComponent:getCustomerJobs:reponse', res });\r\n return res;\r\n });\r\n }\r\n\r\n public putContractStructure (contracts: Array): Observable> {\r\n this.log.debug({ type: 'ContractStructureService:putContractStructure', contracts });\r\n this.log.verbose(JSON.stringify({ contractlist: contracts }));\r\n return this.http.put>(this.uri, { ContractStructureList: contracts })\r\n .pipe(res => {\r\n this.log.verbose({ type: 'ContractStructureService:putContractStructure:reponse', res });\r\n return res;\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n Inject,\r\n Input,\r\n AfterViewInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport * as fromCJ_r from '../store/reducer';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport * as fromErrors from '../../shared';\r\nimport * as fromLookups from '../../lookups';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Process } from '../../shared';\r\nimport { combineLatest, Observable, ReplaySubject, Subscription } from 'rxjs';\r\nimport { IContractStructure } from '../IContractStructure';\r\nimport {\r\n LoadCustomerJobs,\r\n Reset,\r\n LoadEntityFilter,\r\n UpdateContractStructure,\r\n LoadCustomers\r\n} from '../store/actions';\r\nimport { takeWhile, withLatestFrom, filter } from 'rxjs/operators';\r\nimport { IEntityFilter } from '../IEntityFilter';\r\nimport { ContractStructurePresentersComponent } from '../presenters/contract-structure-presenters.component';\r\nimport { ICustomer } from '../ICustomer';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-contract-structure-features',\r\n templateUrl: './contract-structure-features.component.html',\r\n styleUrls: ['./contract-structure-features.component.scss']\r\n})\r\nexport class ContractStructureFeaturesComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n private lookupsSub: Subscription;\r\n public active = true;\r\n process$: Observable;\r\n public jobs$: Observable>;\r\n public jobListStatus$: Observable>;\r\n public customers$: Observable>;\r\n public contractTypes$: Observable;\r\n public selectedStatus: IEntityFilter;\r\n\r\n @ViewChild(ContractStructurePresentersComponent, { static: true })\r\n cspc: ContractStructurePresentersComponent;\r\n\r\n errors$: Observable;\r\n selectedError$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n\r\n constructor(\r\n private customerJobStore: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private lookupsStore: Store,\r\n private store: Store,\r\n private errorStore: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.jobs$ = this.customerJobStore.pipe(\r\n select(fromCJ_r.getCustomerJobs),\r\n filter(x => !!x)\r\n );\r\n\r\n this.jobListStatus$ = this.customerJobStore.pipe(\r\n select(fromCJ_r.getEntityFilter),\r\n filter(x => !!x)\r\n );\r\n\r\n this.customers$ = this.customerJobStore.pipe(\r\n select(fromCJ_r.getCustomers),\r\n filter(x => !!x)\r\n );\r\n\r\n this.contractTypes$ = this.lookupsStore.pipe(\r\n select(fromLookups.getContractTypes)\r\n );\r\n\r\n this.errors$ = this.store.pipe(select(fromCJ_r.getCustomerJobErrors));\r\n\r\n this.selectedError$ = this.errorStore.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n // this.customerJobStore.dispatch(new LoadContractTypes());\r\n\r\n this.customerJobStore.dispatch(new LoadEntityFilter());\r\n\r\n this.customerJobStore.dispatch(new LoadCustomers());\r\n this.store.dispatch(new fromLookups.LoadContractTypes());\r\n\r\n this.customerJobStore.dispatch(\r\n new LoadCustomerJobs([], {\r\n FilterID: 1,\r\n FilterDesc: null,\r\n FilterEntity: null\r\n })\r\n );\r\n\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.cspc.selectStatus\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedStatus = value;\r\n this.customerJobStore.dispatch(\r\n new LoadCustomerJobs([], value)\r\n );\r\n }\r\n });\r\n\r\n this.cspc.selectCustomer\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n withLatestFrom(this.jobListStatus$)\r\n )\r\n .subscribe(([customers, jobStatuses]) => {\r\n if (customers != null) {\r\n if (this.selectedStatus == null) {\r\n this.selectedStatus = jobStatuses[0];\r\n }\r\n\r\n this.customerJobStore.dispatch(\r\n new LoadCustomerJobs(customers, this.selectedStatus)\r\n );\r\n }\r\n });\r\n\r\n this.cspc.resetFilters\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.customerJobStore.dispatch(\r\n new LoadCustomerJobs(value, {\r\n FilterID: 1,\r\n FilterDesc: null,\r\n FilterEntity: null\r\n })\r\n );\r\n });\r\n\r\n this.cspc.rowUpdate\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.customerJobStore.dispatch(\r\n new UpdateContractStructure(value)\r\n );\r\n }\r\n });\r\n\r\n this.cspc.resetData\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.customerJobStore.dispatch(new Reset());\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n public onResetData() {\r\n this.customerJobStore.dispatch(new Reset());\r\n }\r\n\r\n OnShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n\r\n onLoadJobListStatus($event) {\r\n this.customerJobStore.dispatch(new LoadEntityFilter());\r\n }\r\n\r\n onLoadCustomerJobs($event) {\r\n this.selectedStatus = $event.Status;\r\n this.customerJobStore.dispatch(\r\n new LoadCustomerJobs($event.Customers, $event.Status)\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport * as $ from 'jquery';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport * as fromLookups from '../../lookups';\r\nimport {\r\n DisplayMessageMinimum,\r\n getStatusIcon,\r\n Process,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { MenuItem } from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { selectEditor } from '../../shared/selectEditor';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { TabulatorService } from '../../tabulator.service';\r\nimport { IContractStructure } from '../IContractStructure';\r\nimport { ICustomer } from '../ICustomer';\r\nimport { IEntityFilter } from '../IEntityFilter';\r\n@Component({\r\n selector: 'ef-contract-structure-presenters',\r\n templateUrl: './contract-structure-presenters.component.html',\r\n styleUrls: ['./contract-structure-presenters.component.scss']\r\n})\r\nexport class ContractStructurePresentersComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @Input() public set errors(value: Array) {\r\n this.log.debug({\r\n type: 'ContractStructurePresenterComponent:errors:set',\r\n value\r\n });\r\n this._errors = value;\r\n if (value && value.length) {\r\n this.errorHelpText = value\r\n .reduce((a, c) => a + c + '\\r\\n', '')\r\n .trim();\r\n } else {\r\n this.errorHelpText = '';\r\n }\r\n if (this.tabCustomerJob) {\r\n this.tabCustomerJob.redraw();\r\n }\r\n }\r\n public get errors(): Array {\r\n return this._errors;\r\n }\r\n @Input() public set selectedError(value: IShowErrors) {\r\n this.log.debug({\r\n type: 'ContractStructurePresenterComponent:selectedError:set',\r\n value\r\n });\r\n try {\r\n if (value.MsgProcessID === this.process.ProcessID) {\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const prevRow = this.findChild(\r\n this.tabCustomerJob.getRows(),\r\n this.rowSelected.QB_SubLevel,\r\n this.parentID,\r\n this._selectedError.MsgEntityID\r\n );\r\n if (prevRow) {\r\n prevRow.getElement().classList.remove('highlight');\r\n }\r\n }\r\n this._selectedError = value;\r\n this.rowSelected = this.flattenedJobs.find(\r\n job => job.QB_ListID === value.MsgEntityID\r\n );\r\n this.parentID = this.rowSelected.QB_ParentListID;\r\n const theRow = this.findChild(\r\n this.tabCustomerJob.getRows(),\r\n this.rowSelected.QB_SubLevel,\r\n this.parentID,\r\n value.MsgEntityID\r\n );\r\n if (theRow) {\r\n theRow.scrollTo();\r\n theRow.getElement().classList.add('highlight');\r\n this.log.debug({\r\n type: 'ContractStructurePresenterComponent:selectedError:set',\r\n rowElement: theRow.getElement()\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n this.log.error(e);\r\n }\r\n }\r\n public get selectedError(): IShowErrors {\r\n return this._selectedError;\r\n }\r\n @Input() public set jobs(value: Array) {\r\n if (!value || value.length === 0) {\r\n value = null;\r\n }\r\n if (value == null) {\r\n this._jobs = clone([]);\r\n // this.loadingData = false;\r\n } else {\r\n this._jobs = clone(value);\r\n this.JobsSubject.next(this.jobs);\r\n }\r\n // if (this.rowToToggle != null) {\r\n // this.rowToToggle.treeExpand();\r\n // }\r\n }\r\n public get jobs(): Array {\r\n return this._jobs;\r\n }\r\n @Input('jobListStatus') set jobListStatus(value: Array) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n this._jobliststatus = value.map(x => ({ ...x }));\r\n if (this.IsContractSelected == false) {\r\n this._jobliststatus.splice(1, 1);\r\n }\r\n }\r\n get jobListStatus(): Array {\r\n return this._jobliststatus;\r\n }\r\n @Input('customers') set customers(value: Array) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n this._customers = value.map(x => ({ ...x }));\r\n this.filteredCustomers = this._customers.filter(\r\n y => y.IsActive === true\r\n );\r\n }\r\n get customers(): Array {\r\n return this._customers;\r\n }\r\n @Input() public set contractTypes(value: Array) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n this._contractTypes = value;\r\n this.ContractTypesSubject.next(this._contractTypes);\r\n }\r\n public get contractTypes(): Array {\r\n return this._contractTypes;\r\n }\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(TabulatorService) private tabService: TabulatorService,\r\n @Inject(UnsavedChangesService)\r\n private confirmservice: UnsavedChangesService\r\n ) {\r\n this.filterFormGroup = new FormGroup({\r\n jobListStatus: new FormControl(null),\r\n customers: new FormControl(null)\r\n });\r\n //// this.loadingData = true;\r\n }\r\n static table: any;\r\n IsContractSelected = false;\r\n tableData: any;\r\n\r\n private _errors: Array;\r\n expanded: boolean;\r\n collapsed: boolean;\r\n private _selectedError: IShowErrors;\r\n\r\n private JobsSubject = new ReplaySubject>(1);\r\n private _jobs: Array;\r\n\r\n private _jobliststatus: Array;\r\n\r\n private _customers: Array;\r\n\r\n private ContractTypesSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _contractTypes: Array;\r\n\r\n public tableNestedData: Array = [];\r\n public filteredCustomers: Array = [];\r\n public tabCustomerJob: Tabulator;\r\n public filterFormGroup: FormGroup;\r\n public errorHelpText = '';\r\n public EntityFilterText = 'Customer/Job List Status';\r\n public CustomerFilterText = 'Customer Name';\r\n public selectColumnWidth = 50;\r\n public entryColumnsWidth = 85;\r\n public active = true;\r\n public cspc: ContractStructurePresentersComponent = this;\r\n public selectedRowsCheckbox = { checked: false, indeterminate: false };\r\n public dataTreeStartExpandedValue = false;\r\n public rowPos: number;\r\n public parentRow: any;\r\n public loadingData = true;\r\n public rowSelected: any;\r\n public parentID: any;\r\n public selectedRow: any;\r\n rowUpdated = false;\r\n public flattenedJobs: Array = [];\r\n public downloadOptions: Array = [];\r\n public categories = [\r\n { value: 'Government', label: 'Government' },\r\n { value: 'Commercial', label: 'Commercial' },\r\n { value: 'Indirect', label: 'Indirect' }\r\n ];\r\n\r\n rowToToggle: any;\r\n\r\n @Output() LoadJobListStatus = new ReplaySubject(1);\r\n @Output() LoadCustomerJobs = new ReplaySubject(1);\r\n\r\n allCustomersAllJobs: IEntityFilter;\r\n\r\n selectedContracts = [];\r\n\r\n @ViewChild('cbxColumnHeader', { static: true })\r\n cbxColumnHeader: MatCheckbox;\r\n // @ViewChild('csv', { read: ElementRef , static: true }) downloadCSV: ElementRef;\r\n @Input() public process: Process;\r\n @Output() selectStatus = new EventEmitter();\r\n @Output() selectCustomer = new EventEmitter>();\r\n @Output() resetFilters = new EventEmitter>();\r\n @Output() rowUpdate = new EventEmitter>();\r\n @Output() resetData = new EventEmitter();\r\n\r\n @Output() public ShowError = new EventEmitter();\r\n\r\n setupSubscriptions() {\r\n this.filterFormGroup.controls['jobListStatus'].valueChanges\r\n .pipe(\r\n // startWith({}),\r\n takeWhile(_ => this.active)\r\n )\r\n .subscribe(value => {\r\n this.loadingData = true;\r\n try {\r\n // if (this.selectedContracts.length > 0) {\r\n // this.LoadCustomerJobs.next({\r\n // Customers: this.selectedContracts,\r\n // Status: value\r\n // });\r\n // } else {\r\n // this.LoadCustomerJobs.next({\r\n // Customers: [],\r\n // Status: value\r\n // });\r\n // }\r\n // this.selectStatus.emit(value);\r\n if (value.FilterID === 1 || value.FilterID === 2) {\r\n this.filteredCustomers = this.customers.filter(\r\n y => y.IsActive === true\r\n );\r\n } else {\r\n this.filteredCustomers = this.customers;\r\n }\r\n // this.filterFormGroup.controls['customers'].reset();\r\n } catch (e) {\r\n this.log.verbose(e);\r\n }\r\n });\r\n\r\n this.filterFormGroup.controls['customers'].valueChanges\r\n .pipe(\r\n // startWith({}),\r\n takeWhile(_ => this.active)\r\n )\r\n .subscribe(value => {\r\n this.loadingData = true;\r\n this.selectedContracts = [];\r\n if (value && value.length > 0) {\r\n value.forEach(x => {\r\n this.selectedContracts.push(x);\r\n });\r\n this.IsContractSelected = true;\r\n this.LoadJobListStatus.next();\r\n } else {\r\n this.IsContractSelected = false;\r\n this.LoadJobListStatus.next();\r\n this.filterFormGroup.controls['jobListStatus'].reset();\r\n }\r\n try {\r\n this.selectCustomer.emit(value);\r\n } catch (e) {\r\n this.log.verbose(e);\r\n }\r\n });\r\n combineLatest([this.JobsSubject, this.ContractTypesSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([jobs, contracts]) => {\r\n if (jobs.length > 0) {\r\n this.flattenedJobs = this.flattenNestedData(jobs);\r\n let i = 0;\r\n this.flattenedJobs.forEach(job => {\r\n i++;\r\n job.id = i;\r\n });\r\n // this.loadingData = false;\r\n }\r\n if (jobs == null) {\r\n // this.loadingData = false;\r\n }\r\n if (this.tabCustomerJob) {\r\n if (this.rowUpdated === true) {\r\n // this.tabCustomerJob.options.dataTreeStartExpanded = true;\r\n\r\n this.tabCustomerJob.replaceData(jobs);\r\n this.tabCustomerJob.redraw(true);\r\n\r\n const lvl0Row = this.findParent(\r\n this.tabCustomerJob.getRows(),\r\n this.parentRow._row.data.QB_SubLevel,\r\n this.parentRow._row.data.QB_ParentListID,\r\n this.parentRow._row.data\r\n );\r\n if (lvl0Row != null) {\r\n lvl0Row.treeExpand();\r\n }\r\n this.tabCustomerJob\r\n .scrollToRow(\r\n lvl0Row._row.data.QB_ListID,\r\n 'center',\r\n false\r\n )\r\n .then(function () {\r\n this.log.verbose('scrollToRow hit');\r\n })\r\n .catch(function (error) {\r\n this.log.verbose('scrollTo errored: ' + error);\r\n });\r\n\r\n // var childRow;\r\n // var updatedRow = this.flattenedJobs.find((job) => job.QB_ListID == this.parentRow._row.data.QB_ListID);\r\n // var updatedChildRow;\r\n // var childrenRows = this.parentRow.getTreeChildren();\r\n // var childrenL2Rows;\r\n // this.parentRow.update({\r\n // QB_SubLevel: updatedRow.QB_SubLevel,\r\n // QB_ListID: updatedRow.QB_ListID,\r\n // QB_IsActive: updatedRow.QB_IsActive,\r\n // QB_FullName: updatedRow.QB_FullName,\r\n // QB_Name: updatedRow.QB_Name,\r\n // QB_ParentListID: updatedRow.QB_ParentListID,\r\n // QB_QBParentName: updatedRow.QB_QBParentName,\r\n // IsCustomer: updatedRow.IsCustomer,\r\n // IsContract: updatedRow.IsContract,\r\n // IsChargeNumber: updatedRow.IsChargeNumber,\r\n // IsInvoiceLevel: updatedRow.IsInvoiceLevel,\r\n // ContractType: updatedRow.ContractType,\r\n // IsFeeLevel: updatedRow.IsFeeLevel,\r\n // CLIN: updatedRow.CLIN,\r\n // CurrentTM: updatedRow.CurrentTM,\r\n // CurrentAuthUser: updatedRow.CurrentAuthUser,\r\n // LastActivity: updatedRow.LastActivity,\r\n // FirstProcessDate: updatedRow.FirstProcessDate,\r\n // Status: updatedRow.Status,\r\n // StructureIsReadOnly: updatedRow.StructureIsReadOnly,\r\n // ContractCategory: updatedRow.ContractCategory,\r\n // _children: updatedRow._children,\r\n // });\r\n // for (var i = 0; i < childrenRows.length; i++) {\r\n\r\n // childRow = childrenRows[i];\r\n // childrenL2Rows = childRow.getTreeChildren();\r\n // updatedChildRow = this.flattenedJobs.find((job) => job.QB_ListID == childRow._row.data.QB_ListID);\r\n // childRow.update({\r\n // QB_SubLevel: updatedChildRow.QB_SubLevel,\r\n // QB_ListID: updatedChildRow.QB_ListID,\r\n // QB_IsActive: updatedChildRow.QB_IsActive,\r\n // QB_FullName: updatedChildRow.QB_FullName,\r\n // QB_Name: updatedChildRow.QB_Name,\r\n // QB_ParentListID: updatedChildRow.QB_ParentListID,\r\n // QB_QBParentName: updatedChildRow.QB_QBParentName,\r\n // IsCustomer: updatedChildRow.IsCustomer,\r\n // IsContract: updatedChildRow.IsContract,\r\n // IsChargeNumber: updatedChildRow.IsChargeNumber,\r\n // IsInvoiceLevel: updatedChildRow.IsInvoiceLevel,\r\n // ContractType: updatedChildRow.ContractType,\r\n // IsFeeLevel: updatedChildRow.IsFeeLevel,\r\n // CLIN: updatedChildRow.CLIN,\r\n // CurrentTM: updatedChildRow.CurrentTM,\r\n // CurrentAuthUser: updatedChildRow.CurrentAuthUser,\r\n // LastActivity: updatedChildRow.LastActivity,\r\n // FirstProcessDate: updatedChildRow.FirstProcessDate,\r\n // Status: updatedChildRow.Status,\r\n // StructureIsReadOnly: updatedChildRow.StructureIsReadOnly,\r\n // ContractCategory: updatedChildRow.ContractCategory,\r\n // _children: updatedChildRow._children,\r\n // });\r\n // }\r\n // if (childrenL2Rows.length > 0) {\r\n // for (var i = 0; i < updatedChildRow._children.length; i++) {\r\n // var childrenL2Rows = childRow.getTreeChildren();\r\n // var childL2Row = childrenL2Rows[i];\r\n // var updatedChildL2Row = this.flattenedJobs.find((job) => job.QB_ListID == childL2Row._row.data.QB_ListID);\r\n // childL2Row.update({\r\n // QB_SubLevel: updatedChildL2Row.QB_SubLevel,\r\n // QB_ListID: updatedChildL2Row.QB_ListID,\r\n // QB_IsActive: updatedChildL2Row.QB_IsActive,\r\n // QB_FullName: updatedChildL2Row.QB_FullName,\r\n // QB_Name: updatedChildL2Row.QB_Name,\r\n // QB_ParentListID: updatedChildL2Row.QB_ParentListID,\r\n // QB_QBParentName: updatedChildL2Row.QB_QBParentName,\r\n // IsCustomer: updatedChildL2Row.IsCustomer,\r\n // IsContract: updatedChildL2Row.IsContract,\r\n // IsChargeNumber: updatedChildL2Row.IsChargeNumber,\r\n // IsInvoiceLevel: updatedChildL2Row.IsInvoiceLevel,\r\n // ContractType: updatedChildL2Row.ContractType,\r\n // IsFeeLevel: updatedChildL2Row.IsFeeLevel,\r\n // CLIN: updatedChildL2Row.CLIN,\r\n // CurrentTM: updatedChildL2Row.CurrentTM,\r\n // CurrentAuthUser: updatedChildL2Row.CurrentAuthUser,\r\n // LastActivity: updatedChildL2Row.LastActivity,\r\n // FirstProcessDate: updatedChildL2Row.FirstProcessDate,\r\n // Status: updatedChildL2Row.Status,\r\n // StructureIsReadOnly: updatedChildL2Row.StructureIsReadOnly,\r\n // ContractCategory: updatedChildL2Row.ContractCategory,\r\n // _children: updatedChildL2Row._children,\r\n // });\r\n // }\r\n // }\r\n } else {\r\n this.tabCustomerJob.replaceData(jobs);\r\n this.tabCustomerJob.redraw(true);\r\n }\r\n\r\n this.rowUpdated = false;\r\n this.parentRow = null;\r\n } else {\r\n this.createTabulator(this.cspc, jobs, contracts);\r\n }\r\n });\r\n }\r\n\r\n transformDate(date): Date {\r\n return moment(date).startOf('day').toDate();\r\n }\r\n\r\n public accessRow(row) {\r\n return row;\r\n }\r\n\r\n public updateRow(row) {\r\n const rowData: IContractStructure = row.getData();\r\n const rows = this.tabCustomerJob.getRows();\r\n this.rowToToggle = this.findParent(\r\n rows,\r\n rowData.QB_SubLevel,\r\n rowData.QB_ParentListID,\r\n rowData\r\n );\r\n\r\n const rowDataForUpdate: IContractStructure = {\r\n QB_SubLevel: rowData.QB_SubLevel,\r\n QB_ListID: rowData.QB_ListID,\r\n QB_IsActive: rowData.QB_IsActive,\r\n QB_FullName: rowData.QB_FullName,\r\n QB_Name: rowData.QB_Name,\r\n QB_ParentListID: rowData.QB_ParentListID,\r\n QB_QBParentName: rowData.QB_QBParentName,\r\n IsCustomer: rowData.IsCustomer,\r\n IsContract: rowData.IsContract,\r\n IsChargeNumber: rowData.IsChargeNumber,\r\n IsInvoiceLevel: rowData.IsInvoiceLevel,\r\n ContractType: rowData.ContractType,\r\n IsFeeLevel: rowData.IsFeeLevel,\r\n CLIN: rowData.CLIN,\r\n FirstProcessDate: rowData.FirstProcessDate,\r\n LastActivity: rowData.LastActivity,\r\n ContractCategory: rowData.ContractCategory,\r\n StructureIsReadOnly: rowData.StructureIsReadOnly,\r\n CurrentAuthUser: rowData.CurrentAuthUser,\r\n CurrentTM: rowData.CurrentTM,\r\n Status: {\r\n StatusCode: null,\r\n Message: null,\r\n MsgProcessID: null,\r\n MsgEntityID: null\r\n },\r\n _children: []\r\n };\r\n\r\n this.rowUpdate.emit([rowDataForUpdate]);\r\n this.rowUpdated = true;\r\n this.parentRow = this.accessRow(row);\r\n }\r\n\r\n public downloadTable(type) {\r\n this.tabCustomerJob.download(\r\n type,\r\n `${this.process.ProcessTitle}_${moment(new Date()).format(\r\n 'MM-DD-YYYY'\r\n )}.${type}`,\r\n { sheetName: 'Customer Job Structure' }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.resetData.emit();\r\n }\r\n ngOnInit() {\r\n this.downloadOptions = [\r\n {\r\n label: 'CSV',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('csv')\r\n },\r\n {\r\n label: 'Excel',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('xlsx')\r\n }\r\n ];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setupSubscriptions();\r\n\r\n this.createTabulator(this.cspc, this.jobs, this.contractTypes);\r\n\r\n // this.filterFormGroup = new FormGroup({\r\n // jobListStatus: new FormControl(null),\r\n // customers: new FormControl(null)\r\n // });\r\n }\r\n\r\n refreshTable() {\r\n this.selectCustomer.emit([]);\r\n }\r\n\r\n customerFilter($event) {\r\n this.loadingData = true;\r\n this.selectedContracts = [];\r\n if ($event.value && $event.value.length > 0) {\r\n $event.value.forEach(x => {\r\n this.selectedContracts.push(x);\r\n });\r\n this.IsContractSelected = true;\r\n this.LoadJobListStatus.next();\r\n } else {\r\n this.IsContractSelected = false;\r\n this.LoadJobListStatus.next();\r\n this.filterFormGroup.controls['jobListStatus'].reset();\r\n }\r\n try {\r\n this.selectCustomer.emit($event.value);\r\n } catch (e) {\r\n this.log.verbose(e);\r\n }\r\n }\r\n\r\n public createTabulator(\r\n cjc: ContractStructurePresentersComponent,\r\n jobs: Array,\r\n contractTypes: Array\r\n ) {\r\n let xMark = '
check
';\r\n const xMarkRed = '
clear
';\r\n const xMarkDisabled =\r\n '
check
';\r\n\r\n const categoryEditCheck = function (cell) {\r\n const rowdata = cell.getRow().getData();\r\n let editable = true;\r\n\r\n if (rowdata.IsContract === false) {\r\n editable = false;\r\n } else {\r\n if (rowdata.ContractCategory === 'Indirect') {\r\n if (rowdata.FirstProcessDate != null) {\r\n editable = false;\r\n } else {\r\n editable = true;\r\n }\r\n } else {\r\n editable = true;\r\n }\r\n }\r\n\r\n return editable;\r\n };\r\n\r\n const editCheckStatus = function (cell) {\r\n const rowdata = cell.getRow().getData();\r\n let editable = true;\r\n if (rowdata.QB_IsActive === false) {\r\n editable = false;\r\n }\r\n if (\r\n rowdata.IsContract === false &&\r\n rowdata.IsChargeNumber === false\r\n ) {\r\n editable = false;\r\n }\r\n if (cell._cell.column.field === 'IsContract') {\r\n if (rowdata.StructureIsReadOnly === true) {\r\n editable = false;\r\n }\r\n if (rowdata.QB_SubLevel == 1) {\r\n if (rowdata._children == null) {\r\n editable = false;\r\n }\r\n }\r\n }\r\n if (cell._cell.column.field === 'ContractType') {\r\n const rows = cjc.tabCustomerJob.getRows();\r\n const parent = cjc.findParent(\r\n rows,\r\n rowdata.QB_SubLevel,\r\n rowdata.QB_ParentListID,\r\n rowdata\r\n );\r\n const parentdata = parent.getData();\r\n // if (parentdata.ContractCategory === 'Indirect') {\r\n // editable = false;\r\n // } else {\r\n // editable = true;\r\n // }\r\n // if (rowdata.IsContract == true && rowdata.FirstProcessDate != null) {\r\n // editable = false;\r\n // cell.getElement().classList.add('disabled');\r\n // } else {\r\n // editable = true;\r\n // }\r\n\r\n if (parentdata.ContractCategory == 'Indirect') {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n } else {\r\n if (rowdata.IsContract == false) {\r\n if (rowdata.QB_SubLevel == 0) {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n } else {\r\n editable = true;\r\n }\r\n } else {\r\n if (\r\n rowdata.IsContract === true &&\r\n rowdata.FirstProcessDate !== null\r\n ) {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n } else {\r\n editable = true;\r\n }\r\n }\r\n }\r\n }\r\n return editable;\r\n };\r\n\r\n const headerClicked = false;\r\n function checkIndeterminate() {\r\n if (cjc.tabCustomerJob) {\r\n const rows = cjc.tabCustomerJob.getRows(true);\r\n const selectedRows: Array = [];\r\n rows.forEach(row => {\r\n if (row._row.data.selected === true) {\r\n selectedRows.push(row);\r\n }\r\n });\r\n\r\n cjc.cbxColumnHeader.checked = rows.reduce(\r\n (a, c) => a && c.getData().selected,\r\n true\r\n );\r\n cjc.cbxColumnHeader.indeterminate =\r\n selectedRows.length > 0 &&\r\n !rows.reduce((a, c) => a && c.getData().selected, true);\r\n }\r\n }\r\n\r\n this.tabCustomerJob = new Tabulator('#tabCustomerJob', {\r\n placeholder: 'No Data Available',\r\n index: 'QB_ListID',\r\n height: '55vh',\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n scrollToRowPosition: 'center',\r\n scrollToRowIfVisible: false,\r\n data: jobs,\r\n dataTree: true,\r\n dataTreeStartExpanded: false,\r\n dataTreeExpandElement:\r\n \"\",\r\n dataTreeCollapseElement:\r\n \"\",\r\n dataTreeChildIndent: 15,\r\n dataTreeChildField: '_children',\r\n dataTreeElementColumn: 'QB_Name',\r\n dataTreeRowExpanded: function (row) {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n child.treeExpand();\r\n });\r\n },\r\n dataTreeRowCollapsed: function (row) {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n child.treeCollapse();\r\n });\r\n },\r\n renderComplete: function () {\r\n if (cjc.jobs.length > 0) {\r\n cjc.loadingData = false;\r\n } else {\r\n cjc.loadingData = true;\r\n }\r\n },\r\n // downloadDataFormatter: function(data) {\r\n // let tableData: Array = [];\r\n // tableData = data;\r\n // tableData.forEach(x => {\r\n // if (x.QB_IsActive === true) {\r\n // x.QB_IsActive = false;\r\n // } else {\r\n // x.QB_IsActive = true;\r\n // }\r\n // });\r\n // return tableData;\r\n // },\r\n // printConfig:{\r\n // dataTree: true,\r\n // },\r\n // downloadConfig:{\r\n // dataTree: true,\r\n // },\r\n resizableRows: false,\r\n columns: [\r\n {\r\n title: 'index',\r\n field: 'id',\r\n frozen: true,\r\n visible: false\r\n },\r\n {\r\n title: 'ListID',\r\n field: 'QB_ListID',\r\n frozen: true,\r\n visible: false\r\n },\r\n // 1 Status\r\n {\r\n title: '',\r\n width: cjc.selectColumnWidth,\r\n field: 'Status',\r\n download: false,\r\n formatter: cell => {\r\n cjc.selectedRow = cell.getRow();\r\n const status = cell.getValue();\r\n if (status) {\r\n switch (status.StatusCode) {\r\n case 1:\r\n return '
check_circle
';\r\n case 2:\r\n return '
report_problem
';\r\n case 3:\r\n return '
highlight_off
';\r\n case 4:\r\n return '
highlight_off
';\r\n case 5:\r\n return '
highlight_off
';\r\n case 6:\r\n return '
highlight_off
';\r\n case 99:\r\n // return '
';\r\n default:\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n // if (status) {\r\n // return getStatusIcon(status.StatusCode).iconText;\r\n // }\r\n },\r\n headerSort: false,\r\n cellClick: function (e, cell) {\r\n const status = cell.getValue();\r\n cjc.log.verbose({\r\n type: 'UserEntryDatesPresenterComponent:StatusCellClick',\r\n status\r\n });\r\n if (status) {\r\n switch (status.StatusCode) {\r\n case 2:\r\n case 3:\r\n case 4:\r\n case 5:\r\n cjc.ShowError.emit({\r\n open: true,\r\n MsgEntityID: status.MsgEntityID\r\n });\r\n }\r\n }\r\n }\r\n },\r\n // 3 Page Specific Columns\r\n {\r\n title: 'Inactive',\r\n downloadTitle: 'Inactive',\r\n field: 'QB_IsActive',\r\n width: 100,\r\n align: 'center',\r\n cssClass: 'tabulator-cell-readonly disabled',\r\n formatter: cell => {\r\n const row = cell.getRow();\r\n if (row._row.data.QB_IsActive === false) {\r\n // row._row.data.QB_IsActive = true;\r\n return xMarkRed;\r\n } else {\r\n // row._row.data.QB_IsActive = false;\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n editor: false\r\n },\r\n {\r\n title: 'QuickBooks
Level',\r\n downloadTitle: 'QuickBooks Level',\r\n field: 'QB_SubLevel',\r\n width: cjc.entryColumnsWidth,\r\n editor: false,\r\n visible: false\r\n },\r\n {\r\n title: 'Customer/Job Name',\r\n downloadTitle: 'Customer/Job Name',\r\n field: 'QB_Name',\r\n editor: false,\r\n cssClass: 'tabulator-cell-readonly disabled',\r\n minWidth: 250\r\n },\r\n {\r\n title: 'Contract',\r\n downloadTitle: 'Contract',\r\n field: 'IsContract',\r\n align: 'center',\r\n width: 100,\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n const rowdata = cell.getRow().getData();\r\n let checkMark = xMark;\r\n if (rowdata.QB_IsActive === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n if (rowdata.QB_SubLevel > 1) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n if (\r\n rowdata.QB_SubLevel == 1 ||\r\n rowdata.QB_SubLevel == 0\r\n ) {\r\n if (rowdata._children == null) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n }\r\n if (rowdata.StructureIsReadOnly === true) {\r\n checkMark = xMarkDisabled;\r\n }\r\n // if (\r\n // rowdata.IsContract === false &&\r\n // rowdata.IsChargeNumber === false\r\n // ) {\r\n // cell.getElement().style.backgroundColor =\r\n // 'lightgrey';\r\n // }\r\n if (cell._cell.column.field === 'IsContract') {\r\n if (rowdata.StructureIsReadOnly === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n }\r\n if (cell._cell.column.field === 'ContractType') {\r\n const rows = cjc.tabCustomerJob.getRows();\r\n const parent = cjc.findParent(\r\n rows,\r\n rowdata.QB_SubLevel,\r\n rowdata.QB_ParentListID,\r\n rowdata\r\n );\r\n const parentdata = parent.getData();\r\n if (parentdata.ContractCategory === 'Indirect') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return checkMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n // editor:true,\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const status = cell.getValue();\r\n const rowdata = row.getData();\r\n if (rowdata.StructureIsReadOnly === true) {\r\n return editCheckStatus;\r\n }\r\n if (\r\n rowdata.QB_SubLevel == 1 ||\r\n rowdata.QB_SubLevel == 0\r\n ) {\r\n if (rowdata._children == null) {\r\n return editCheckStatus;\r\n }\r\n }\r\n if (rowdata.CurrentAuthUser > 0) {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n headerText: 'Are you sure?',\r\n dialogText:\r\n 'This will impact all current authorizations.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n if (row._row.data.QB_IsActive === true) {\r\n if (\r\n row._row.data.QB_SubLevel === 1 ||\r\n row._row.data.QB_SubLevel === 0\r\n ) {\r\n if (status === true) {\r\n // xMark = '';\r\n row.update({\r\n IsContract: false,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({\r\n IsContract: true,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n }\r\n }\r\n }\r\n })\r\n .catch(() => {});\r\n } else {\r\n if (row._row.data.QB_IsActive === true) {\r\n if (\r\n row._row.data.QB_SubLevel === 1 ||\r\n row._row.data.QB_SubLevel === 0\r\n ) {\r\n if (status === true) {\r\n // xMark = '';\r\n row.update({\r\n IsContract: false,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({\r\n IsContract: true,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Contract Category', // only editable at the contract level\r\n downloadTitle: 'Contract Category',\r\n field: 'ContractCategory', // if indirect, then the contract type should not be editable\r\n // if there is a FPD (contract level) and your going from Indirect to something or going from something to indirect => show Are you sure\r\n formatter: c => {\r\n const rowdata = c.getRow().getData();\r\n if (rowdata.IsContract === false) {\r\n c.getElement().classList.add('disabled');\r\n } else {\r\n if (rowdata.ContractCategory === 'Indirect') {\r\n if (rowdata.FirstProcessDate !== null) {\r\n c.getElement().classList.add('disabled');\r\n }\r\n }\r\n }\r\n return c.getValue() ? c.getValue() : '';\r\n },\r\n editable: categoryEditCheck,\r\n editor: selectEditor,\r\n width: 150,\r\n editorParams: {\r\n values:\r\n this.categories.length > 0\r\n ? this.categories\r\n .map(x => ({\r\n value: x.value,\r\n label: x.label\r\n }))\r\n .sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n )\r\n : ''\r\n },\r\n sortValuesList: 'asc',\r\n cellEdited: function (e) {\r\n const row = e.getRow();\r\n const cT = e._cell.value;\r\n const rowData = row.getData();\r\n const data = cjc.flattenedJobs.find(\r\n job => job.QB_ListID === rowData.QB_ListID\r\n );\r\n\r\n if (data.FirstProcessDate !== null) {\r\n if (\r\n data.ContractCategory === 'Indirect' ||\r\n cT === 'Indirect'\r\n ) {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Sessions (incl. Invoices) will be deleted! ' +\r\n 'Changing a contract category invalidates all previous calculations for that contract. ' +\r\n 'All periods processed from ' +\r\n moment(\r\n data.FirstProcessDate\r\n ).format('MM/DD/YYYY') +\r\n ' forward will be deleted and must be processed again. ' +\r\n 'This affects all contracts. If you have questions, please enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n ContractCategory: cT,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n ContractCategory:\r\n data.ContractCategory\r\n });\r\n });\r\n } else {\r\n row.update({\r\n ContractCategory: cT,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n }\r\n } else {\r\n row.update({\r\n ContractCategory: cT,\r\n Status: { StatusCode: ResponseStatus.Loading }\r\n });\r\n cjc.updateRow(row);\r\n }\r\n }\r\n },\r\n {\r\n title: 'Charge
Number',\r\n downloadTitle: 'Charge Number',\r\n field: 'IsChargeNumber',\r\n align: 'center',\r\n width: 100,\r\n cssClass: 'tabulator-cell-readonly disabled',\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n\r\n cell.getElement().classList.add('disabled');\r\n\r\n switch (status) {\r\n case true:\r\n return xMarkDisabled;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n editor: false\r\n },\r\n {\r\n title: 'Structure Locked',\r\n downloadTitle: 'Structure Locked',\r\n cssClass: 'tabulator-cell-readonly disabled',\r\n width: 125,\r\n formatter: c => {\r\n c.getElement().classList.add('disabled');\r\n const value = c.getValue();\r\n if (value === true) {\r\n return 'YES';\r\n } else {\r\n return 'NO';\r\n }\r\n },\r\n field: 'StructureIsReadOnly',\r\n visible: true\r\n },\r\n {\r\n title: 'Contract Type',\r\n downloadTitle: 'Contract Type',\r\n field: 'ContractType',\r\n width: 150,\r\n formatter: cell => {\r\n // const rowData = c.getRow().getData();\r\n const rowdata = cell.getRow().getData();\r\n\r\n if (\r\n rowdata.IsChargeNumber === false &&\r\n rowdata.IsContract === false\r\n ) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n return contractTypes.findIndex(\r\n x =>\r\n x.ContractType === cell.getValue() &&\r\n x.ContractType === rowdata.ContractType\r\n ) < 0\r\n ? cell.getValue()\r\n : contractTypes.find(\r\n x =>\r\n x.ContractType === cell.getValue() &&\r\n x.ContractType === rowdata.ContractType\r\n ).ContractTypeName;\r\n },\r\n editable: editCheckStatus,\r\n editor: selectEditor,\r\n editorParams: {\r\n values:\r\n contractTypes.length > 0\r\n ? contractTypes\r\n .map(x => ({\r\n value: x.ContractType,\r\n label: x.ContractTypeName\r\n }))\r\n .sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n )\r\n : ''\r\n\r\n // if (contractTypes.length > 0) {\r\n // return contractTypes\r\n // .map(x => ({\r\n // value: x.ContractType,\r\n // label: x.ContractTypeName\r\n // }))\r\n // .sort((a, b) => a.label.localeCompare(b.label));\r\n // }\r\n },\r\n sortValuesList: 'asc',\r\n cellEdited: function (e) {\r\n const row = e.getRow();\r\n const cT = e._cell.value;\r\n const rowData = row.getData();\r\n const data = cjc.flattenedJobs.find(\r\n job => job.QB_ListID === rowData.QB_ListID\r\n );\r\n if (cT != '') {\r\n if (data.FirstProcessDate != null) {\r\n if (data.QB_ParentListID != null) {\r\n const parent = cjc.flattenedJobs.find(x => x.QB_ListID == data.QB_ParentListID);\r\n if (parent.ContractCategory == \"Government\") {\r\n if (data.ContractType === 'TM') {\r\n if (cT === 'FFP/LOE') {\r\n // Do not display the Are you sure\r\n row.update({ ContractType: cT });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n this.log.verbose(\r\n 'cell value is FFP/LOE'\r\n );\r\n } else {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'READ BEFORE CONTINUING Processed periods, including invoices will be deleted!' +\r\n '\\xa0\\xa0' +\r\n 'Changing a contract type invalidates all previous calculations for that contract.' +\r\n '\\xa0\\xa0' +\r\n 'Periods processed FROM' +\r\n '\\xa0\\xa0' +\r\n moment(\r\n data.FirstProcessDate\r\n ).format('MM/DD/YYYY') +\r\n '\\xa0\\xa0' +\r\n 'forward will be deleted and must be processed again.' +\r\n '\\xa0\\xa0' +\r\n 'This affects all contracts.' +\r\n '\\xa0\\xa0' +\r\n 'If you have questions, please cancel and enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n ContractType: cT,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n ContractType:\r\n data.ContractType\r\n });\r\n });\r\n }\r\n } else if (data.ContractType === 'FFP/LOE') {\r\n if (cT === 'TM') {\r\n // Do not display the Are you sure\r\n row.update({ ContractType: cT });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n this.log.verbose('cell value is TM');\r\n } else {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'READ BEFORE CONTINUING Processed periods, including invoices will be deleted!' +\r\n '\\xa0\\xa0' +\r\n 'Changing a contract type invalidates all previous calculations for that contract.' +\r\n '\\xa0\\xa0' +\r\n 'Periods processed FROM' +\r\n '\\xa0\\xa0' +\r\n moment(\r\n data.FirstProcessDate\r\n ).format('MM/DD/YYYY') +\r\n '\\xa0\\xa0' +\r\n 'forward will be deleted and must be processed again.' +\r\n '\\xa0\\xa0' +\r\n 'This affects all contracts.' +\r\n '\\xa0\\xa0' +\r\n 'If you have questions, please cancel and enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n ContractType: cT,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n ContractType:\r\n data.ContractType\r\n });\r\n });\r\n }\r\n } else {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'READ BEFORE CONTINUING Processed periods, including invoices will be deleted!' +\r\n '\\xa0\\xa0' +\r\n 'Changing a contract type invalidates all previous calculations for that contract.' +\r\n '\\xa0\\xa0' +\r\n 'Periods processed FROM' +\r\n '\\xa0\\xa0' +\r\n moment(\r\n data.FirstProcessDate\r\n ).format('MM/DD/YYYY') +\r\n '\\xa0\\xa0' +\r\n 'forward will be deleted and must be processed again.' +\r\n '\\xa0\\xa0' +\r\n 'This affects all contracts.' +\r\n '\\xa0\\xa0' +\r\n 'If you have questions, please cancel and enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n ContractType: cT,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n ContractType: data.ContractType\r\n });\r\n });\r\n }\r\n } else {\r\n row.update({ ContractType: cT });\r\n cjc.updateRow(row);\r\n }\r\n } else {\r\n if (data.ContractCategory == \"Government\") {\r\n if (data.ContractType === 'TM') {\r\n if (cT === 'FFP/LOE') {\r\n // Do not display the Are you sure\r\n row.update({ ContractType: cT });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n this.log.verbose(\r\n 'cell value is FFP/LOE'\r\n );\r\n } else {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'READ BEFORE CONTINUING Processed periods, including invoices will be deleted!' +\r\n '\\xa0\\xa0' +\r\n 'Changing a contract type invalidates all previous calculations for that contract.' +\r\n '\\xa0\\xa0' +\r\n 'Periods processed FROM' +\r\n '\\xa0\\xa0' +\r\n moment(\r\n data.FirstProcessDate\r\n ).format('MM/DD/YYYY') +\r\n '\\xa0\\xa0' +\r\n 'forward will be deleted and must be processed again.' +\r\n '\\xa0\\xa0' +\r\n 'This affects all contracts.' +\r\n '\\xa0\\xa0' +\r\n 'If you have questions, please cancel and enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n ContractType: cT,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n ContractType:\r\n data.ContractType\r\n });\r\n });\r\n }\r\n } else if (data.ContractType === 'FFP/LOE') {\r\n if (cT === 'TM') {\r\n // Do not display the Are you sure\r\n row.update({ ContractType: cT });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n this.log.verbose('cell value is TM');\r\n } else {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'READ BEFORE CONTINUING Processed periods, including invoices will be deleted!' +\r\n '\\xa0\\xa0' +\r\n 'Changing a contract type invalidates all previous calculations for that contract.' +\r\n '\\xa0\\xa0' +\r\n 'Periods processed FROM' +\r\n '\\xa0\\xa0' +\r\n moment(\r\n data.FirstProcessDate\r\n ).format('MM/DD/YYYY') +\r\n '\\xa0\\xa0' +\r\n 'forward will be deleted and must be processed again.' +\r\n '\\xa0\\xa0' +\r\n 'This affects all contracts.' +\r\n '\\xa0\\xa0' +\r\n 'If you have questions, please cancel and enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n ContractType: cT,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n ContractType:\r\n data.ContractType\r\n });\r\n });\r\n }\r\n } else {\r\n cjc.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'READ BEFORE CONTINUING Processed periods, including invoices will be deleted!' +\r\n '\\xa0\\xa0' +\r\n 'Changing a contract type invalidates all previous calculations for that contract.' +\r\n '\\xa0\\xa0' +\r\n 'Periods processed FROM' +\r\n '\\xa0\\xa0' +\r\n moment(\r\n data.FirstProcessDate\r\n ).format('MM/DD/YYYY') +\r\n '\\xa0\\xa0' +\r\n 'forward will be deleted and must be processed again.' +\r\n '\\xa0\\xa0' +\r\n 'This affects all contracts.' +\r\n '\\xa0\\xa0' +\r\n 'If you have questions, please cancel and enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n ContractType: cT,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n ContractType: data.ContractType\r\n });\r\n });\r\n }\r\n } else {\r\n row.update({ ContractType: cT });\r\n cjc.updateRow(row);\r\n }\r\n }\r\n\r\n } else {\r\n row.update({ ContractType: cT });\r\n // if (rowData.QB_SubLevel == 0) {\r\n // rowData._children.forEach(child => {\r\n // child.ContractType = cT;\r\n // });\r\n // }\r\n cjc.updateRow(row);\r\n }\r\n e._cell.focus();\r\n }\r\n }\r\n },\r\n {\r\n title: 'First Process Date',\r\n downloadTitle: 'First Process Date',\r\n field: 'FirstProcessDate',\r\n width: 140,\r\n cssClass: 'tabulator-cell-readonly disabled',\r\n formatter: cell => {\r\n const row = cell.getRow();\r\n const rowdata = row.getData();\r\n cell.getElement().classList.add('disabled');\r\n // Only show if the row is a charge number\r\n if (cell.getValue() != null) {\r\n const date = new Date(cell.getValue());\r\n const formattedDate =\r\n moment(date).format('MM/DD/YYYY'); // cjc.transformDate(date);\r\n return formattedDate.toString();\r\n // if (rowdata.QB_SubLevel === 0) {\r\n // return '';\r\n // } else {\r\n // const date = new Date(cell.getValue());\r\n // const formattedDate = moment(date).format(\r\n // 'MM/DD/YYYY'\r\n // ); // cjc.transformDate(date);\r\n // return formattedDate.toString();\r\n // }\r\n }\r\n },\r\n editor: false\r\n },\r\n {\r\n title: 'Invoice
Level',\r\n downloadTitle: 'Invoice Level',\r\n field: 'IsInvoiceLevel',\r\n width: 100,\r\n align: 'center',\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n\r\n const rowdata = cell.getRow().getData();\r\n if (rowdata.QB_IsActive === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n if (\r\n rowdata.IsContract === false &&\r\n rowdata.IsChargeNumber === false\r\n ) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n if (cell._cell.column.field === 'IsContract') {\r\n if (rowdata.StructureIsReadOnly === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n }\r\n if (cell._cell.column.field === 'ContractType') {\r\n const rows = cjc.tabCustomerJob.getRows();\r\n const parent = cjc.findParent(\r\n rows,\r\n rowdata.QB_SubLevel,\r\n rowdata.QB_ParentListID,\r\n rowdata\r\n );\r\n const parentdata = parent.getData();\r\n if (parentdata.ContractCategory === 'Indirect') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return xMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const rowdata = row.getData();\r\n const status = cell.getValue();\r\n if (rowdata.QB_IsActive === true) {\r\n if (status === true) {\r\n if (\r\n rowdata.IsChargeNumber === true ||\r\n rowdata.IsContract === true\r\n ) {\r\n row.update({\r\n IsInvoiceLevel: false,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n }\r\n } else {\r\n if (\r\n rowdata.IsChargeNumber === true ||\r\n rowdata.IsContract === true\r\n ) {\r\n xMark =\r\n '
check
';\r\n row.update({\r\n IsInvoiceLevel: true,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading\r\n }\r\n });\r\n cjc.updateRow(row);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n // {\r\n // title: 'Task
Managers',\r\n // downloadTitle: 'Task Managers',\r\n // field: 'CurrentTM',\r\n // width: 100,\r\n // cssClass: 'tabulator-cell-readonly disabled',\r\n // visible: true,\r\n // formatter: cell => {\r\n // this.log.verbose('TaskManagers: ' + cell.getValue());\r\n // cell.getElement().classList.add('disabled');\r\n // return cell.getValue();\r\n // }\r\n // },\r\n {\r\n title: 'Authorized
Users',\r\n downloadTitle: 'Authorized Users',\r\n field: 'CurrentAuthUser',\r\n width: 100,\r\n cssClass: 'tabulator-cell-readonly disabled',\r\n visible: true,\r\n formatter: cell => {\r\n cell.getElement().classList.add('disabled');\r\n return cell.getValue();\r\n }\r\n },\r\n {\r\n title: '',\r\n field: 'Row_Version',\r\n visible: false\r\n }\r\n ],\r\n rowSelected: function (row) {\r\n row.update({ selected: true });\r\n if (!headerClicked) {\r\n checkIndeterminate();\r\n }\r\n },\r\n rowDeselected: function (row) {\r\n row.update({ selected: false });\r\n if (!headerClicked) {\r\n checkIndeterminate();\r\n }\r\n },\r\n cellEdited: this.tabService.cellEdited,\r\n cellEditing: this.tabService.cellEditing,\r\n cellClick: this.tabService.cellMouseHandler,\r\n cellTap: this.tabService.cellMouseHandler,\r\n rowClick: this.tabService.rowMouseHandler,\r\n rowTap: this.tabService.rowMouseHandler\r\n });\r\n\r\n this.tabService.tabulator = $('#tabCustomerJob');\r\n }\r\n\r\n public hasErrorStatus = ued =>\r\n ued && ued.Status && ued.Status.StatusCode >= DisplayMessageMinimum;\r\n\r\n public clearSelectedRows() {\r\n this.tabCustomerJob.deselectRow();\r\n const data = this.tabCustomerJob.getRows();\r\n data.forEach(d => {\r\n d.update({ selected: false });\r\n });\r\n this.cbxColumnHeader.checked = false;\r\n }\r\n\r\n public expandCollapse(action: string) {\r\n if (action === 'expand') {\r\n this.expanded = true;\r\n this.collapsed = false;\r\n this.tabCustomerJob.options.dataTreeStartExpanded = true;\r\n } else {\r\n this.expanded = false;\r\n this.collapsed = true;\r\n this.tabCustomerJob.options.dataTreeStartExpanded = false;\r\n }\r\n\r\n this.tabCustomerJob._create();\r\n this.tabCustomerJob.replaceData(this.jobs);\r\n this.tabCustomerJob.redraw(true);\r\n }\r\n\r\n public clearFilters() {\r\n this.filterFormGroup.controls['customers'].reset();\r\n this.filterFormGroup.controls['jobListStatus'].reset();\r\n this.resetFilters.emit([]);\r\n }\r\n\r\n public flattenNestedData(\r\n cs: Array\r\n ): Array {\r\n const flatten = ary => {\r\n return ary.reduce((r, { _children, ...rest }) => {\r\n r.push(rest);\r\n if (_children) {\r\n r.push(...flatten(_children));\r\n }\r\n return r;\r\n }, []);\r\n };\r\n return flatten(cs);\r\n }\r\n\r\n public findChild(rows, level, parentID, id) {\r\n let selectedRow = null;\r\n let selectedChild = null;\r\n\r\n if (level === 1) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const rowData = row.getData();\r\n if (rowData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n\r\n // FIND SELECTED CHILD\r\n const childRows = selectedRow.getTreeChildren();\r\n childRows.forEach(child => {\r\n const childData = child.getData();\r\n if (childData.QB_ListID === id) {\r\n selectedChild = child;\r\n }\r\n });\r\n } else if (level === 2) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n const childData = child.getData();\r\n if (childData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n });\r\n\r\n // FIND SELECTED CHILD\r\n const childRows = selectedRow.getTreeChildren();\r\n childRows.forEach(child => {\r\n if (child.getTreeChildren() !== false) {\r\n const children2 = child.getTreeChildren();\r\n children2.forEach(child2 => {\r\n const childData = child2.getData();\r\n if (childData.QB_ListID === id) {\r\n selectedChild = child2;\r\n }\r\n });\r\n }\r\n });\r\n } else if (level === 3) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n const children2 = child.getTreeChildren();\r\n children2.forEach(child2 => {\r\n const childData = child2.getData();\r\n if (childData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n });\r\n });\r\n\r\n // FIND SELECTED CHILD\r\n const childRows = selectedRow.getTreeChildren();\r\n childRows.forEach(child => {\r\n if (child.getTreeChildren() !== false) {\r\n const children2 = child.getTreeChildren();\r\n children2.forEach(child2 => {\r\n if (child2.getTreeChildren() !== false) {\r\n const children3 = child2.getTreeChildren();\r\n children3.forEach(child3 => {\r\n const childData = child3.getData();\r\n if (childData.QB_ListID === id) {\r\n selectedChild = child3;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n } else if (level === 4) {\r\n } else if (level === 5) {\r\n } else {\r\n selectedChild = rows.find(row => row.getData().QB_ListID === id);\r\n }\r\n\r\n return selectedChild;\r\n }\r\n\r\n public findParent(rows, level, parentID, rowData?) {\r\n let selectedRow = null;\r\n\r\n if (level === 1) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n if (data.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n } else if (level === 2) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n const childData = child.getData();\r\n if (childData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n });\r\n } else {\r\n selectedRow = rows.find(\r\n row => row.getData().QB_ListID === rowData.QB_ListID\r\n );\r\n }\r\n\r\n return selectedRow;\r\n }\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport {\r\n IContractStructure\r\n} from '../IContractStructure';\r\nimport { IEntityFilter } from '../IEntityFilter';\r\nimport { ICustomer } from '../ICustomer';\r\nimport { IContractType } from '../IContractType';\r\nimport { IGenericResponse } from '../../shared';\r\n\r\nexport enum ActionTypes {\r\n Reset = '[customerjob] Reset',\r\n LoadCustomerJobs = '[customerjob] Load Customer Jobs',\r\n SetCustomerJobs = '[customerjob] Set Customer Jobs',\r\n LoadEntityFilter = '[customerjob] Load Entity Filter',\r\n SetEntityFilter = '[customerjob] Set Entity Filter',\r\n UpdateContractStructure = '[customerjob] Update Contract Structure',\r\n UpdateContractStructureSuccess = '[customerjob] Update Contract Structure Success',\r\n LoadCustomers = '[customerjob] Load Customers',\r\n SetCustomers = '[customerjob] Set Customers',\r\n LoadContractTypes = '[customerjob] Load Contract Types',\r\n SetContractTypes = '[customerjob] Set Contract Types'\r\n}\r\n\r\nexport class Reset implements Action {\r\n readonly type = ActionTypes.Reset;\r\n}\r\n\r\nexport class LoadContractTypes implements Action {\r\n constructor() {}\r\n readonly type = ActionTypes.LoadContractTypes;\r\n}\r\n\r\nexport class LoadCustomers implements Action {\r\n constructor() {}\r\n readonly type = ActionTypes.LoadCustomers;\r\n}\r\n\r\nexport class LoadEntityFilter implements Action {\r\n constructor() {}\r\n readonly type = ActionTypes.LoadEntityFilter;\r\n}\r\n\r\nexport class LoadCustomerJobs implements Action {\r\n constructor(\r\n public payload: Array,\r\n public filterpayload: IEntityFilter\r\n ) {}\r\n readonly type = ActionTypes.LoadCustomerJobs;\r\n}\r\n\r\nexport class SetCustomerJobs implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = ActionTypes.SetCustomerJobs;\r\n}\r\n\r\nexport class SetEntityFilter implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = ActionTypes.SetEntityFilter;\r\n}\r\n\r\nexport class SetCustomers implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = ActionTypes.SetCustomers;\r\n}\r\n\r\nexport class SetContractTypes implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = ActionTypes.SetContractTypes;\r\n}\r\n\r\n// export class LoadUserEntryDates implements Action {\r\n// constructor() {\r\n// }\r\n// readonly type = ActionTypes.LoadUserEntryDates;\r\n// }\r\n\r\n// export class SetUserEntryDates implements Action {\r\n// constructor(public payload: Array) {\r\n// }\r\n// readonly type = ActionTypes.SetUserEntryDates;\r\n// }\r\n\r\nexport class UpdateContractStructure implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = ActionTypes.UpdateContractStructure;\r\n}\r\n\r\nexport class UpdateContractStructureSuccess implements Action {\r\n constructor(public payload: IGenericResponse) {}\r\n readonly type = ActionTypes.UpdateContractStructureSuccess;\r\n}\r\n\r\nexport type ActionsUnion =\r\n | Reset\r\n | LoadCustomerJobs\r\n | SetCustomerJobs\r\n | LoadEntityFilter\r\n | SetEntityFilter\r\n | UpdateContractStructure\r\n | UpdateContractStructureSuccess\r\n | LoadCustomers\r\n | SetCustomers\r\n | LoadContractTypes\r\n | SetContractTypes;\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, map, switchMap, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ContractStructureService } from '../contract-structure.service';\r\nimport { IContractStructure } from '../IContractStructure';\r\nimport * as fromCJ from './actions';\r\n\r\n@Injectable()\r\nexport class CustomerJobEffects {\r\n newCJ: Array = [];\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: ContractStructureService,\r\n private log: LoggingService\r\n ) {}\r\n\r\n @Effect() LoadCustomerJobs$ = this.actions$.pipe(\r\n ofType(fromCJ.ActionTypes.LoadCustomerJobs),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'CustomerJobEffects:LoadCustomerJobs$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getCustomerJobs(x.payload, x.filterpayload).pipe(\r\n flatMap(cs => [\r\n new fromCJ.SetCustomerJobs(cs),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...this.flattenNestedData(cs)\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadContractTypes$ = this.actions$.pipe(\r\n ofType(fromCJ.ActionTypes.LoadContractTypes),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'CustomerJobEffects:LoadContractTypes$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getContractTypes().pipe(\r\n flatMap(exp => [new fromCJ.SetContractTypes(exp)]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n );\r\n\r\n @Effect() LoadEntityFilter$ = this.actions$.pipe(\r\n ofType(fromCJ.ActionTypes.LoadEntityFilter),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'UserEntryDatesEffects:LoadEntityFilter$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getEntityFilter().pipe(\r\n map(exp => new fromCJ.SetEntityFilter(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n );\r\n\r\n @Effect() LoadCustomers$ = this.actions$.pipe(\r\n ofType(fromCJ.ActionTypes.LoadCustomers),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'UserEntryDatesEffects:LoadCustomers$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getCustomers().pipe(\r\n map(exp => new fromCJ.SetCustomers(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n );\r\n @Effect() UpdateContractStructure$ = this.actions$.pipe(\r\n ofType(\r\n fromCJ.ActionTypes.UpdateContractStructure\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ContractStructureEffects:UpdateContractStructure$',\r\n x\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.putContractStructure([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromCJ.UpdateContractStructureSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x => x.Status.StatusCode === ResponseStatus.Success\r\n ).map(x => x.QB_ListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...this.flattenNestedData(resp.Items)\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n public flattenNestedData(\r\n cs: Array\r\n ): Array {\r\n const flatten = cs => {\r\n return cs.reduce((r, { _children, ...rest }) => {\r\n r.push(rest);\r\n if (_children) {\r\n r.push(...flatten(_children));\r\n }\r\n return r;\r\n }, []);\r\n };\r\n return flatten(cs);\r\n }\r\n}\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as actions from './actions';\r\nimport { IContractStructure } from '../IContractStructure';\r\nimport { IEntityFilter } from '../IEntityFilter';\r\nimport { ICustomer } from '../ICustomer';\r\nimport { IContractType } from '../IContractType';\r\n\r\nexport interface State {\r\n jobs: Array;\r\n jobListStatus: Array;\r\n customers: Array;\r\n contractTypes: Array;\r\n errors: Array;\r\n}\r\n\r\nexport const initialState: State = {\r\n jobs: undefined,\r\n jobListStatus: undefined,\r\n customers: undefined,\r\n contractTypes: undefined,\r\n errors: undefined\r\n};\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: actions.ActionsUnion\r\n): State {\r\n switch (action.type) {\r\n case actions.ActionTypes.Reset:\r\n return initialState;\r\n case actions.ActionTypes.SetCustomerJobs:\r\n return {\r\n ...state,\r\n jobs: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetEntityFilter:\r\n return {\r\n ...state,\r\n jobListStatus: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetCustomers:\r\n return {\r\n ...state,\r\n customers: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetContractTypes:\r\n return {\r\n ...state,\r\n contractTypes: [...action.payload]\r\n };\r\n // case actions.ActionTypes.SetUserEntryDates:\r\n // return {\r\n // ...state,\r\n // entryDates: [...action.payload]\r\n // };\r\n case actions.ActionTypes.UpdateContractStructureSuccess:\r\n const resp = action.payload;\r\n return {\r\n ...state,\r\n jobs: state.jobs\r\n .map(\r\n x =>\r\n resp.Items.find(\r\n y => y.QB_ListID === x.QB_ListID\r\n ) || {\r\n ...x\r\n }\r\n ) // update any existing\r\n .concat(\r\n resp.Items.filter(\r\n x =>\r\n !state.jobs.find(\r\n y => y.QB_ListID === x.QB_ListID\r\n )\r\n )\r\n ), // add any new\r\n errors: resp.ErrorMessages\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\nconst StateFeatureSelector = createFeatureSelector('customerjob');\r\nexport const getContractTypes = createSelector(\r\n StateFeatureSelector,\r\n x => x.contractTypes\r\n);\r\nexport const getCustomers = createSelector(\r\n StateFeatureSelector,\r\n x => x.customers\r\n);\r\nexport const getEntityFilter = createSelector(\r\n StateFeatureSelector,\r\n x => x.jobListStatus\r\n);\r\nexport const getCustomerJobs = createSelector(\r\n StateFeatureSelector,\r\n x => x.jobs\r\n);\r\nexport const getCustomerJobErrors = createSelector(\r\n StateFeatureSelector,\r\n x => x.errors\r\n);\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport * as fromCompanyInfoActions from '../store/company-info/company-info.actions';\r\nimport * as fromCompanyInfoReducer from '../store/company-info/company-info.reducer';\r\nimport { Advisor, CompanyInfo } from '../customer-admin.model';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, take, takeWhile } from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport * as fromAdvisorsActions from '../store/advisors/advisor.actions';\r\nimport * as fromAdvisorsReducer from '../store/advisors/advisor.reducer';\r\nimport * as fromShared from '../../shared';\r\nimport { IUserInfo } from '../../user-info';\r\nimport * as fromUser from '../../user-info/store';\r\nimport * as fromLookup from '../../lookups';\r\nimport * as fromAuth from '../../auth';\r\nimport * as fromAuthR from '../../auth/store/auth.reducer';\r\nimport * as fromRoot from '../../store';\r\n@Component({\r\n selector: 'ef-customer-admin-feature',\r\n templateUrl: './customer-admin-feature.component.html',\r\n styleUrls: ['./customer-admin-feature.component.scss']\r\n})\r\nexport class CustomerAdminFeatureComponent implements OnInit {\r\n process$: Observable;\r\n items$: Observable;\r\n advisors$: Observable;\r\n userInfo$: Observable;\r\n states$: Observable>;\r\n auth$: Observable;\r\n public version$: Observable;\r\n showUpdateMessage = false;\r\n showUpdateFailedMessage = false;\r\n\r\n constructor(private store: Store) {}\r\n\r\n ngOnInit(): void {\r\n this.auth$ = this.store.pipe(select(fromAuthR.getAuth));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n //this.version$ = this.store.pipe(select(fromRoot.Version.selectVersion));\r\n this.store.dispatch(fromAdvisorsActions.getAdvisor());\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.states$ = this.store.pipe(select(fromLookup.getStates));\r\n this.items$ = this.store.pipe(\r\n select(fromCompanyInfoReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.advisors$ = this.store.pipe(\r\n select(fromAdvisorsReducer.selectAll),\r\n map(z => clone(z))\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.auth$.pipe(take(1)).subscribe(auth => {\r\n this.store.dispatch(\r\n fromCompanyInfoActions.getCompanyInfo({\r\n customerid: auth.CustomerID,\r\n IsInternal: false\r\n })\r\n );\r\n });\r\n }\r\n\r\n onUpdateCompanyInfo(event) {\r\n this.store.dispatch(\r\n fromCompanyInfoActions.putCompanyInfo({ JsonString: event })\r\n );\r\n }\r\n onUpdateAdvisor(event) {\r\n this.store.dispatch(\r\n fromCompanyInfoActions.putCompanyInfo({ JsonString: event })\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { Advisor, CompanyInfo } from '../customer-admin.model';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromCompanyInfoActions from '../store/company-info/company-info.actions';\r\nimport * as fromCompanyInfoReducer from '../store/company-info/company-info.reducer';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IUserInfo } from '../../user-info';\r\nimport moment from 'moment';\r\nimport { IState } from '../../lookups';\r\n\r\n@Component({\r\n selector: 'ef-customer-admin-presenter',\r\n templateUrl: './customer-admin-presenter.component.html',\r\n styleUrls: ['./customer-admin-presenter.component.scss']\r\n})\r\nexport class CustomerAdminPresenterComponent implements OnInit {\r\n private ItemsSubject = new ReplaySubject>(1);\r\n private _items: Array;\r\n @Input() set items(value: Array) {\r\n if (value && value.length > 0) {\r\n this._items = value;\r\n this.ItemsSubject.next(value);\r\n if (value[0] != null) {\r\n this.customerID = value[0].CustomerID;\r\n this.customerPIN = value[0].PIN;\r\n this.productCode = value[0].ProductCode;\r\n this.adminCount = value[0].AdminCount;\r\n this.companyName = value[0].Name;\r\n this.address = value[0].Address1;\r\n this.address2 = value[0].Address2;\r\n this.address3 = value[0].Address3;\r\n this.city = value[0].City;\r\n this.selectedState = value[0].State;\r\n this.zip = value[0].ZipCode;\r\n this.installLink = value[0].efdinstallurl;\r\n this.crystalReportsLink = value[0].CRinstallurl;\r\n this.microsoftDriverLink = value[0].MSOLEDBinstallurl;\r\n this.selectedAdvisor = value[0].AdvisorID;\r\n this.modifiedBy = value[0].eFCModifiedBy;\r\n\r\n this.modified = (value[0].eFCModifiedBy != null && value[0].eFCModifiedDate != null) ? `Last modified on ${moment(value[0].eFCModifiedDate).format('MM/DD/YYYY HH:mm:ss')} by ${value[0].eFCModifiedBy}` : 'No previous updates found.';\r\n }\r\n\r\n }\r\n }\r\n get items(): Array {\r\n return this._items;\r\n }\r\n\r\n private AdvisorSubject = new ReplaySubject>(1);\r\n private _advisors: Array;\r\n @Input() set advisors(value: Array) {\r\n if (value && value.length > 0) {\r\n this._advisors = value;\r\n this.AdvisorSubject.next(value);\r\n this.advisorsSelectItem = value.map(x => ({\r\n label: x.AdvisorName,\r\n value: x.AdvisorID\r\n }));\r\n }\r\n }\r\n get advisors(): Array {\r\n return this._advisors;\r\n }\r\n\r\n private StatesSubject = new ReplaySubject>(1);\r\n private _states: Array;\r\n @Input() set states(value: Array) {\r\n if (value && value.length > 0) {\r\n this._states = value;\r\n this.StatesSubject.next(value);\r\n this.statesSelectItem = value.map(x => ({\r\n label: x.State,\r\n value: x.State\r\n }));\r\n }\r\n }\r\n get states(): Array {\r\n return this._states;\r\n }\r\n\r\n private UserInfoSubject = new ReplaySubject(1);\r\n private _userinfo: IUserInfo;\r\n @Input() set userInfo(value: IUserInfo) {\r\n if (value) {\r\n this._userinfo = value;\r\n this.UserInfoSubject.next(value);\r\n this.employeeName = value.EmployeeName;\r\n }\r\n }\r\n get userInfo(): IUserInfo {\r\n return this._userinfo;\r\n }\r\n\r\n statesSelectItem: SelectItem[];\r\n advisorsSelectItem: SelectItem[];\r\n selectedAdvisor: any;\r\n selectedState: any;\r\n customerID: any;\r\n customerPIN: any;\r\n productCode: any;\r\n adminCount: any;\r\n companyName: any;\r\n address: any;\r\n address2: any;\r\n address3: any;\r\n city: any;\r\n //state: any;\r\n zip: any;\r\n installLink: any;\r\n crystalReportsLink: any;\r\n microsoftDriverLink: any;\r\n modifiedBy: any;\r\n advisorMessage = `An authorized eFAACT Advisor is allowed access to your eFAACT data.\r\n In order to open your data, the eFAACT Advisor must also be setup as a QuickBooks Vendor and assigned a valid eFAACT userID and password.`;\r\n acknowledgedMessage = `I acknowledge the statement of understanding.`;\r\n acknowledged = false;\r\n employeeName: any;\r\n modified: any;\r\n\r\n // @Input() version: string;\r\n // public environment = environment;\r\n // eFAACTVersion = `${environment.version}-${environment.environment}`;\r\n\r\n @Output() UpdateCompanyInfo = new ReplaySubject(1);\r\n @Output() UpdateAdvisor = new ReplaySubject(1);\r\n\r\n ngOnInit(): void {}\r\n\r\n updateCompanyInfo() {\r\n if (this.items != null) {\r\n const data = JSON.stringify({\r\n ...this.items[0],\r\n CustomerID: this.customerID,\r\n Name: this.companyName,\r\n PIN: this.customerPIN,\r\n Address1: this.address,\r\n Address2: this.address2,\r\n Address3: this.address3,\r\n City: this.city,\r\n State: this.selectedState,\r\n ZipCode: this.zip,\r\n AdvisorName: '',\r\n AdvisorID: this.selectedAdvisor,\r\n eFCModifiedBy: this.employeeName\r\n });\r\n\r\n this.UpdateCompanyInfo.next(data);\r\n } else {\r\n alert('Update failed');\r\n }\r\n\r\n }\r\n updateAdvisor() {\r\n if (this.items != null) {\r\n const data = JSON.stringify({\r\n ...this.items[0],\r\n CustomerID: this.customerID,\r\n Name: this.companyName,\r\n PIN: this.customerPIN,\r\n Address1: this.address,\r\n Address2: this.address2,\r\n Address3: this.address3,\r\n City: this.city,\r\n State: this.selectedState,\r\n ZipCode: this.zip,\r\n AdvisorName: '',\r\n AdvisorID: this.selectedAdvisor,\r\n eFCModifiedBy: this.employeeName\r\n });\r\n\r\n this.UpdateAdvisor.next(data);\r\n } else {\r\n alert('Update failed.')\r\n }\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { CustomerAdminRoute } from './customer-admin.route';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport * as reducer from './store/company-info/company-info.reducer';\r\nimport * as advisorreducer from './store/advisors/advisor.reducer';\r\nimport { CompanyInfoEffects } from './store/company-info/company-info.effects';\r\nimport { AdvisorEffects } from './store/advisors/advisor.effects';\r\n\r\n@NgModule({\r\n providers: [],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [CustomerAdminRoute]\r\n }),\r\n StoreModule.forFeature(advisorreducer.advisorFeatureKey, advisorreducer.reducer),\r\n StoreModule.forFeature(reducer.companyInfoFeatureKey, reducer.reducer),\r\n EffectsModule.forFeature([CompanyInfoEffects, AdvisorEffects])\r\n ]\r\n})\r\nexport class CustomerAdminModule {\r\n constructor() {}\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CustomerAdminFeatureComponent } from './customer-admin-feature/customer-admin-feature.component';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const CustomerAdminRoute: Ng2StateDeclaration = {\r\n name: 'companyinfo',\r\n url: '/companyinfo',\r\n data: { requiresAuth: true },\r\n\r\n component: CustomerAdminFeatureComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IDeleteEntity, IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomerAdminService {\r\n customerid: string;\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private uri = `${environment.apiLocation}/CompanyInfo`;\r\n private advisoruri = `${environment.apiLocation}/Advisor`;\r\n\r\n public getAdvisors(): Observable {\r\n this.log.verbose({\r\n type: 'CompanyInfoService:getAdvisors',\r\n uri: this.advisoruri\r\n });\r\n return this.http.get(this.advisoruri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'CompanyInfoService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public get(customerid, IsInternal): Observable {\r\n this.log.verbose({\r\n type: 'CompanyInfoService:post',\r\n uri: this.uri\r\n });\r\n return this.http\r\n .get(`${environment.apiLocation}/CompanyInfo?customerid=${customerid}&IsInternal=${IsInternal}`)\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'CompanyInfoService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public put(jsonstring: string): Observable {\r\n return this.http\r\n .put(this.uri, {\r\n JsonString: jsonstring\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'CompanyInfoService:put',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Advisor } from '../../customer-admin.model';\r\n\r\nexport const getAdvisor = createAction('[Advisor/API] GET Advisor');\r\n\r\nexport const putAdvisor = createAction(\r\n '[Advisor/API] PUT Advisor',\r\n props<{ JsonString: any }>()\r\n);\r\n\r\nexport const loadAdvisors = createAction(\r\n '[Advisor/API] Load Advisors',\r\n props<{ Advisors: any[] }>()\r\n);\r\n\r\nexport const addAdvisor = createAction(\r\n '[Advisor/API] Add Advisor',\r\n props<{ Advisor: Advisor }>()\r\n);\r\n\r\nexport const upsertAdvisor = createAction(\r\n '[Advisor/API] Upsert Advisor',\r\n props<{ Advisor: Advisor }>()\r\n);\r\n\r\nexport const addAdvisors = createAction(\r\n '[Advisor/API] Add Advisors',\r\n props<{ Advisors: Advisor[] }>()\r\n);\r\n\r\nexport const upsertAdvisors = createAction(\r\n '[Advisor/API] Upsert Advisors',\r\n props<{ Advisors: Advisor[] }>()\r\n);\r\n\r\nexport const updateAdvisor = createAction(\r\n '[Advisor/API] Update Advisor',\r\n props<{ Advisor: Update }>()\r\n);\r\n\r\nexport const updateAdvisors = createAction(\r\n '[Advisor/API] Update Advisors',\r\n props<{ Advisors: Update[] }>()\r\n);\r\n\r\nexport const deleteAdvisor = createAction(\r\n '[Advisor/API] Delete Advisor',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteAdvisors = createAction(\r\n '[Advisor/API] Delete Advisors',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearAdvisors = createAction('[Advisor/API] Clear Advisors');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport { CustomerAdminService } from '../../customer-admin.service';\r\nimport * as AdvisorActions from './advisor.actions';\r\n\r\n@Injectable()\r\nexport class AdvisorEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: CustomerAdminService\r\n ) {}\r\n\r\n get$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(AdvisorActions.getAdvisor),\r\n switchMap(a =>\r\n this.service.getAdvisors().pipe(\r\n flatMap(resp => [\r\n AdvisorActions.loadAdvisors({\r\n Advisors: JSON.parse(resp)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as AdvisorActions from './advisor.actions';\r\nimport { Advisor } from '../../customer-admin.model';\r\n\r\nexport const advisorFeatureKey = 'Advisor';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: Advisor) => `${model.AdvisorID}`\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const AdvisorReducer = createReducer(\r\n initialState,\r\n on(AdvisorActions.addAdvisor, (state, action) =>\r\n adapter.addOne(action.Advisor, state)\r\n ),\r\n on(AdvisorActions.upsertAdvisor, (state, action) =>\r\n adapter.upsertOne(action.Advisor, state)\r\n ),\r\n on(AdvisorActions.addAdvisors, (state, action) =>\r\n adapter.addMany(action.Advisors, state)\r\n ),\r\n on(AdvisorActions.upsertAdvisors, (state, action) =>\r\n adapter.upsertMany(action.Advisors, state)\r\n ),\r\n on(AdvisorActions.updateAdvisor, (state, action) =>\r\n adapter.updateOne(action.Advisor, state)\r\n ),\r\n on(AdvisorActions.updateAdvisors, (state, action) =>\r\n adapter.updateMany(action.Advisors, state)\r\n ),\r\n on(AdvisorActions.deleteAdvisor, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(AdvisorActions.deleteAdvisors, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(AdvisorActions.loadAdvisors, (state, action) =>\r\n adapter.setAll(action.Advisors, state)\r\n ),\r\n on(AdvisorActions.clearAdvisors, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return AdvisorReducer(state, action);\r\n}\r\n\r\nexport const selectAdvisorState = createFeatureSelector(\r\n advisorFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectAdvisorState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { CompanyInfo } from '../../customer-admin.model';\r\n\r\nexport const getCompanyInfo = createAction(\r\n '[CompanyInfo/API] GET CompanyInfo',\r\n props<{ customerid: string; IsInternal: boolean }>()\r\n);\r\n\r\nexport const putCompanyInfo = createAction(\r\n '[CompanyInfo/API] PUT CompanyInfo',\r\n props<{ JsonString: any }>()\r\n);\r\n\r\nexport const loadCompanyInfos = createAction(\r\n '[CompanyInfo/API] Load CompanyInfos',\r\n props<{ CompanyInfos: any[] }>()\r\n);\r\n\r\nexport const addCompanyInfo = createAction(\r\n '[CompanyInfo/API] Add CompanyInfo',\r\n props<{ CompanyInfo: CompanyInfo }>()\r\n);\r\n\r\nexport const upsertCompanyInfo = createAction(\r\n '[CompanyInfo/API] Upsert CompanyInfo',\r\n props<{ JsonString: string }>()\r\n);\r\n\r\nexport const addCompanyInfos = createAction(\r\n '[CompanyInfo/API] Add CompanyInfos',\r\n props<{ CompanyInfos: CompanyInfo[] }>()\r\n);\r\n\r\nexport const upsertCompanyInfos = createAction(\r\n '[CompanyInfo/API] Upsert CompanyInfos',\r\n props<{ CompanyInfos: CompanyInfo[] }>()\r\n);\r\n\r\nexport const updateCompanyInfo = createAction(\r\n '[CompanyInfo/API] Update CompanyInfo',\r\n props<{ CompanyInfo: Update }>()\r\n);\r\n\r\nexport const updateCompanyInfos = createAction(\r\n '[CompanyInfo/API] Update CompanyInfos',\r\n props<{ CompanyInfos: Update[] }>()\r\n);\r\n\r\nexport const deleteCompanyInfo = createAction(\r\n '[CompanyInfo/API] Delete CompanyInfo',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteCompanyInfos = createAction(\r\n '[CompanyInfo/API] Delete CompanyInfos',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearCompanyInfos = createAction('[CompanyInfo/API] Clear CompanyInfos');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport { CustomerAdminService } from '../../customer-admin.service';\r\nimport * as CompanyInfoActions from './company-info.actions';\r\n\r\n@Injectable()\r\nexport class CompanyInfoEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: CustomerAdminService\r\n ) {}\r\n\r\n post$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(CompanyInfoActions.getCompanyInfo),\r\n switchMap(a =>\r\n this.service.get(a.customerid, a.IsInternal).pipe(\r\n flatMap(resp => [\r\n CompanyInfoActions.loadCompanyInfos({\r\n CompanyInfos: JSON.parse(resp)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n put$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(CompanyInfoActions.putCompanyInfo),\r\n switchMap(a =>\r\n this.service.put(a.JsonString).pipe(\r\n flatMap(c => [\r\n CompanyInfoActions.upsertCompanyInfos({\r\n CompanyInfos: JSON.parse(c)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as CompanyInfoActions from './company-info.actions';\r\nimport { CompanyInfo } from '../../customer-admin.model';\r\n\r\nexport const companyInfoFeatureKey = 'CompanyInfo';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: CompanyInfo) => `${model.CustomerID}`\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const CompanyInfoReducer = createReducer(\r\n initialState,\r\n on(CompanyInfoActions.addCompanyInfo, (state, action) =>\r\n adapter.addOne(action.CompanyInfo, state)\r\n ),\r\n on(CompanyInfoActions.upsertCompanyInfo, (state, action) =>\r\n adapter.upsertOne(action.JsonString, state)\r\n ),\r\n on(CompanyInfoActions.addCompanyInfos, (state, action) =>\r\n adapter.addMany(action.CompanyInfos, state)\r\n ),\r\n on(CompanyInfoActions.upsertCompanyInfos, (state, action) =>\r\n adapter.upsertMany(action.CompanyInfos, state)\r\n ),\r\n on(CompanyInfoActions.updateCompanyInfo, (state, action) =>\r\n adapter.updateOne(action.CompanyInfo, state)\r\n ),\r\n on(CompanyInfoActions.updateCompanyInfos, (state, action) =>\r\n adapter.updateMany(action.CompanyInfos, state)\r\n ),\r\n on(CompanyInfoActions.deleteCompanyInfo, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(CompanyInfoActions.deleteCompanyInfos, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(CompanyInfoActions.loadCompanyInfos, (state, action) =>\r\n adapter.setAll(action.CompanyInfos, state)\r\n ),\r\n on(CompanyInfoActions.clearCompanyInfos, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return CompanyInfoReducer(state, action);\r\n}\r\n\r\nexport const selectCompanyInfoState = createFeatureSelector(\r\n companyInfoFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectCompanyInfoState);\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { combineLatest, Observable } from 'rxjs';\r\nimport * as fromSettings from '../../company-setting';\r\nimport { IUser, IUserInfo } from '../../user-info';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport {\r\n distinctUntilKeyChanged,\r\n filter,\r\n map,\r\n take,\r\n takeWhile,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { Process } from '../../shared';\r\nimport { StatusData } from '../../data-services/dashboard/status';\r\nimport { Contract } from '../../data-services/contract';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport clone from 'just-clone';\r\nimport { Funding } from '../../data-services/dashboard/funding/funding.model';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IUserRole } from '../../user-role';\r\nimport * as fromUserRole from '../../user-role/store/reducers';\r\nimport * as fromUserSetting from '../../user-setting/store';\r\nimport { Accrual } from '../../data-services/dashboard/accrual';\r\n\r\n@Component({\r\n selector: 'ef-dashboard-feature',\r\n templateUrl: './dashboard-feature.component.html',\r\n styleUrls: ['./dashboard-feature.component.scss']\r\n})\r\nexport class DashboardFeatureComponent implements OnInit {\r\n active = true;\r\n public contracts$: Observable;\r\n public companySettings$: Observable;\r\n public accrualData$: Observable;\r\n public statusData$: Observable;\r\n public funding$: Observable;\r\n public drStatus$: Observable;\r\n public user$: Observable;\r\n public userInfo$: Observable;\r\n public userRoles$: Observable;\r\n public users$: Observable>;\r\n public userSettings$: Observable>;\r\n public dashboardSettings$: Observable<\r\n fromDataServices.DashboardSettings.DashboardSettings[]\r\n >;\r\n roleID: number;\r\n\r\n adminMsg: string;\r\n mgrMsg: string;\r\n userMsg: string;\r\n announcement: string;\r\n announcementAdmin: string;\r\n\r\n showPMStatusBlock: boolean;\r\n showSupervisorStatusBlock: boolean;\r\n\r\n processes: Process[] = [];\r\n\r\n contractDataService: EntityCollectionService;\r\n roleStatusDataService: EntityCollectionService;\r\n fundingDataService: EntityCollectionService;\r\n drStatusDataService: EntityCollectionService;\r\n accrualDataService: EntityCollectionService;\r\n dashboardSettingsDataService: EntityCollectionService;\r\n contractFunding: ContractFunding[];\r\n showMsg: any;\r\n\r\n selectedProcesses: Process[] = [];\r\n\r\n user: IUser;\r\n\r\n constructor(private store: Store, public entityServices: EntityServices) {\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n this.roleStatusDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.RoleStatus.entityName\r\n );\r\n this.fundingDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Funding.entityName\r\n );\r\n this.drStatusDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.DRStatus.entityName\r\n );\r\n this.accrualDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Accrual.entityName\r\n );\r\n this.dashboardSettingsDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.DashboardSettings.entityName\r\n );\r\n\r\n this.user$ = this.store.pipe(select(fromUser.getUser));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n }\r\n\r\n ngOnInit(): void {\r\n this.users$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup)\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'announcement'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'announcement_admin'\r\n })\r\n );\r\n this.userRoles$ = this.store.pipe(select(fromUserRole.getUserRoles));\r\n this.user$.pipe(takeWhile(() => this.active)).subscribe(user => {\r\n this.user = user;\r\n });\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n distinctUntilKeyChanged('DefaultRoleGroupID')\r\n )\r\n .subscribe(userInfo => {\r\n this.roleID = userInfo.DefaultRoleGroupID;\r\n if (userInfo.EmployeeListID != null) {\r\n this.roleStatusDataService.getWithQuery(\r\n `?UserListId=${userInfo.EmployeeListID}&RoleId=${userInfo.DefaultRoleGroupID}`\r\n );\r\n console.log('rolestatus: rolestatus call completed');\r\n } else {\r\n console.log('rolestatus: employeelistid is undefined');\r\n }\r\n });\r\n // this.store\r\n // .pipe(\r\n // select(fromUser.getUserInfo),\r\n // takeWhile(() => this.active),\r\n // distinctUntilKeyChanged('DefaultRoleGroupID')\r\n // )\r\n // .subscribe(userInfo => {\r\n // this.roleID = userInfo.DefaultRoleGroupID;\r\n // this.roleStatusDataService.getWithQuery(\r\n // `?UserListId=${userInfo.EmployeeListID}&RoleId=${userInfo.DefaultRoleGroupID}`\r\n // );\r\n // });\r\n\r\n this.dashboardSettingsDataService.getWithQuery(`?employeeListId=`);\r\n this.contractDataService.getAll();\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dashboardSettingsDataService.clearCache();\r\n this.drStatusDataService.clearCache();\r\n this.roleStatusDataService.clearCache();\r\n this.fundingDataService.clearCache();\r\n this.accrualDataService.clearCache();\r\n this.active = false;\r\n }\r\n\r\n setupObservables() {\r\n this.userSettings$ = this.store.pipe(select(fromUserSetting.selectAll));\r\n this.companySettings$ = this.store.pipe(select(fromSettings.selectAll));\r\n\r\n this.contracts$ = this.contractDataService.entities$.pipe(\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n )\r\n );\r\n this.statusData$ = this.roleStatusDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.funding$ = this.fundingDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.drStatus$ = this.drStatusDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.accrualData$ = this.accrualDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.dashboardSettings$ =\r\n this.dashboardSettingsDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n this.userSettings$\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(userSettings => {\r\n if (userSettings.length > 0) {\r\n if (userSettings[0].EmpSettingValue != null) {\r\n this.showMsg =\r\n userSettings[0].EmpSettingValue == '1'\r\n ? true\r\n : false;\r\n }\r\n }\r\n });\r\n this.companySettings$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(settings => {\r\n if (settings && settings.length > 0) {\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'announcement'\r\n ) != -1\r\n ) {\r\n this.announcement = settings.find(\r\n x => x.SettingType == 'announcement'\r\n ).SettingValue;\r\n }\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'announcement_admin'\r\n ) != -1\r\n ) {\r\n this.announcementAdmin = settings.find(\r\n x => x.SettingType == 'announcement_admin'\r\n ).SettingValue;\r\n }\r\n if (this.roleID != null) {\r\n if (this.roleID == 1) {\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'AdminMsg1'\r\n ) != -1\r\n ) {\r\n this.adminMsg = settings.find(\r\n x => x.SettingType == 'AdminMsg1'\r\n ).SettingValue;\r\n }\r\n\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'MgrMsg1'\r\n ) != -1\r\n ) {\r\n this.mgrMsg = settings.find(\r\n x => x.SettingType == 'MgrMsg1'\r\n ).SettingValue;\r\n }\r\n\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'UserMsg1'\r\n ) != -1\r\n ) {\r\n this.userMsg = settings.find(\r\n x => x.SettingType == 'UserMsg1'\r\n ).SettingValue;\r\n }\r\n } else if (\r\n this.roleID == 12024 ||\r\n this.roleID == 12025\r\n ) {\r\n this.adminMsg = '';\r\n\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'MgrMsg1'\r\n ) != -1\r\n ) {\r\n this.mgrMsg = settings.find(\r\n x => x.SettingType == 'MgrMsg1'\r\n ).SettingValue;\r\n }\r\n\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'UserMsg1'\r\n ) != -1\r\n ) {\r\n this.userMsg = settings.find(\r\n x => x.SettingType == 'UserMsg1'\r\n ).SettingValue;\r\n }\r\n } else {\r\n this.adminMsg = '';\r\n\r\n this.mgrMsg = '';\r\n\r\n if (\r\n settings.findIndex(\r\n x => x.SettingType == 'UserMsg1'\r\n ) != -1\r\n ) {\r\n this.userMsg = settings.find(\r\n x => x.SettingType == 'UserMsg1'\r\n ).SettingValue;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n combineLatest([this.userRoles$, this.user$])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([userRoles, user]) => {\r\n if (\r\n userRoles.findIndex(x => x.RoleGroupID == 12024) != -1 &&\r\n user.userInfo.DefaultRoleGroupID == 12024\r\n ) {\r\n this.showSupervisorStatusBlock = true;\r\n } else {\r\n this.showSupervisorStatusBlock = false;\r\n }\r\n if (\r\n userRoles.findIndex(x => x.RoleGroupID == 12025) != -1 &&\r\n user.userInfo.DefaultRoleGroupID == 12025\r\n ) {\r\n this.showPMStatusBlock = true;\r\n } else {\r\n this.showPMStatusBlock = false;\r\n }\r\n if (\r\n userRoles.findIndex(x => x.RoleGroupID == 1) != -1 &&\r\n user.userInfo.DefaultRoleGroupID == 1\r\n ) {\r\n if (\r\n userRoles.findIndex(x => x.RoleGroupID == 12025) != -1\r\n ) {\r\n this.showPMStatusBlock = true;\r\n } else {\r\n this.showPMStatusBlock = false;\r\n }\r\n if (\r\n userRoles.findIndex(x => x.RoleGroupID == 12024) != -1\r\n ) {\r\n this.showSupervisorStatusBlock = true;\r\n } else {\r\n this.showSupervisorStatusBlock = false;\r\n }\r\n }\r\n\r\n this.selectedProcesses = [];\r\n user.UserProcessCategories.forEach(cat => {\r\n cat.UserProcesses.forEach(process => {\r\n this.processes.push(process);\r\n });\r\n });\r\n const home = {\r\n ProcessID: 0,\r\n ProcessName: 'Main',\r\n RouteName: 'Main',\r\n ProcessDesc: '',\r\n ProcessTitle: 'Home',\r\n MsgCount: null\r\n };\r\n const auths = this.processes.find(x => x.ProcessID == 2);\r\n const allUsers = this.processes.find(x => x.ProcessID == 14);\r\n const timeentry = this.processes.find(x => x.ProcessID == 64);\r\n const leave = this.processes.find(x => x.ProcessID == 69);\r\n const expentry = this.processes.find(x => x.ProcessID == 70);\r\n const timeapproval = this.processes.find(\r\n x => x.ProcessID == 85\r\n );\r\n const expapproval = this.processes.find(x => x.ProcessID == 86);\r\n const timevalidate = this.processes.find(\r\n x => x.ProcessID == 87\r\n );\r\n const expvalidate = this.processes.find(x => x.ProcessID == 88);\r\n const checkup = this.processes.find(x => x.ProcessID == 145);\r\n if (\r\n userRoles.findIndex(x => x.RoleGroupID == 1) != -1 &&\r\n user.userInfo.DefaultRoleGroupID == 1\r\n ) {\r\n this.selectedProcesses.push(home);\r\n\r\n this.selectedProcesses.push(allUsers);\r\n\r\n // var contractsandfunding = this.processes.find(x => x.ProcessID == 13);\r\n // this.selectedProcesses.push(contractsandfunding);\r\n\r\n this.selectedProcesses.push(auths);\r\n\r\n this.selectedProcesses.push(timeentry);\r\n if (\r\n this.processes.findIndex(x => x.ProcessID == 85) != -1\r\n ) {\r\n this.selectedProcesses.push(timeapproval);\r\n }\r\n\r\n this.selectedProcesses.push(checkup);\r\n } else if (\r\n userRoles.findIndex(x => x.RoleGroupID == 12024) != -1 &&\r\n user.userInfo.DefaultRoleGroupID == 12024\r\n ) {\r\n this.selectedProcesses.push(home);\r\n if (this.processes.findIndex(x => x.ProcessID == 2) != -1) {\r\n this.selectedProcesses.push(auths);\r\n }\r\n this.selectedProcesses.push(timeentry);\r\n\r\n this.selectedProcesses.push(timeapproval);\r\n\r\n if (\r\n this.processes.findIndex(x => x.ProcessID == 86) != -1\r\n ) {\r\n this.selectedProcesses.push(expapproval);\r\n }\r\n } else if (\r\n userRoles.findIndex(x => x.RoleGroupID == 12025) != -1 &&\r\n user.userInfo.DefaultRoleGroupID == 12025\r\n ) {\r\n this.selectedProcesses.push(home);\r\n\r\n this.selectedProcesses.push(timeentry);\r\n\r\n this.selectedProcesses.push(timevalidate);\r\n\r\n if (\r\n this.processes.findIndex(x => x.ProcessID == 88) != -1\r\n ) {\r\n this.selectedProcesses.push(expvalidate);\r\n }\r\n } else {\r\n this.selectedProcesses.push(home);\r\n\r\n this.selectedProcesses.push(timeentry);\r\n\r\n if (\r\n this.processes.findIndex(x => x.ProcessID == 70) != -1\r\n ) {\r\n this.selectedProcesses.push(expentry);\r\n }\r\n\r\n if (\r\n this.processes.findIndex(x => x.ProcessID == 69) != -1\r\n ) {\r\n this.selectedProcesses.push(leave);\r\n }\r\n }\r\n });\r\n }\r\n\r\n onGetAccrualData($event) {\r\n this.accrualDataService.clearCache();\r\n this.accrualDataService.getAll();\r\n }\r\n onGetFunding($event) {\r\n this.fundingDataService.clearCache();\r\n this.fundingDataService.getWithQuery($event);\r\n }\r\n onGetDRStatus($event) {\r\n this.drStatusDataService.clearCache();\r\n this.drStatusDataService.getWithQuery($event);\r\n }\r\n onGetDirectReports($event) {\r\n this.store.dispatch(new fromLookups.LoadDirectReports($event));\r\n }\r\n onMarkAsRead($event) {\r\n this.store.dispatch(\r\n fromUserSetting.putUserSettings({\r\n settings: [\r\n {\r\n EmployeeListID: $event.ListID,\r\n EmpSettingID: 31.0,\r\n EmpSettingType: 'ShowUserMsg',\r\n EmpSettingTypeLabel: 'Show User Message',\r\n EmpSettingValue: $event.flag,\r\n CtrlType: 'CheckBox',\r\n CatID: 1,\r\n CatDescription: 'User Setting'\r\n }\r\n ]\r\n })\r\n );\r\n }\r\n onUpdateDashboardSettings($event) {\r\n this.dashboardSettingsDataService.upsert($event);\r\n }\r\n}\r\nexport interface ContractFunding {\r\n Contract: string;\r\n ContractValue: number;\r\n ContractFunded: number;\r\n ContractSpent: number;\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MenuItem, SelectItem } from 'primeng/api';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { AppComponent } from '../../app.component';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport { Contract } from '../../data-services/contract';\r\nimport { StatusData } from '../../data-services/dashboard/status';\r\nimport { Funding } from '../../data-services/dashboard/funding/funding.model';\r\nimport { Process } from '../../shared';\r\nimport { IUser } from '../../user-info';\r\nimport { IDirectReport } from '../../lookups';\r\nimport { IUserRole } from '../../user-role';\r\nimport { DRStatus } from '../../data-services/dashboard/dr-status';\r\nimport { Chart } from 'chart.js';\r\nimport zoomPlugin from 'chartjs-plugin-zoom';\r\nimport { Accrual } from '../../data-services/dashboard/accrual';\r\nimport moment from 'moment';\r\nimport { DashboardSettings } from '../../data-services/dashboard-settings';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n//import * as ShopifyBuy from '../../../../node_modules/@shopify/buy-button-js';\r\n\r\n@Component({\r\n selector: 'ef-dashboard-presenter',\r\n templateUrl: './dashboard-presenter.component.html',\r\n styleUrls: ['./dashboard-presenter.component.scss']\r\n})\r\nexport class DashboardPresenterComponent implements OnInit {\r\n linea = 'Please be aware that we will be performing routine server maintenance on December 9th from 12:01-11:00am (EST). This is necessary for server performance updates.';\r\n lineb = 'As a result, the eFAACT Desktop and eFAACTCentral.com will be unavailable during that time frame.';\r\n linec = 'Thank you for being a valued customer.';\r\n\r\n contractGraphIsVisible: boolean;\r\n quickAccessIsVisible: boolean;\r\n myStatusIsVisible: boolean;\r\n adminActionsIsVisible: boolean;\r\n supActionsIsVisible: boolean;\r\n pmActionsIsVisible: boolean;\r\n plannedHoursGraphIsVisible: boolean;\r\n leaveGraphIsVisible: boolean;\r\n\r\n dashboardSettingsTableData: DashboardSettings[];\r\n\r\n private DashboardSettingsSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _dashboardsettings: Array;\r\n @Input() set dashboardSettings(value: Array) {\r\n this._dashboardsettings = value;\r\n this.DashboardSettingsSubject.next(value);\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 1) != -1\r\n ) {\r\n this.quickAccessIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 1\r\n ).IsVisible;\r\n }\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 2) != -1\r\n ) {\r\n this.myStatusIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 2\r\n ).IsVisible;\r\n }\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 3) != -1\r\n ) {\r\n this.adminActionsIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 3\r\n ).IsVisible;\r\n }\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 4) != -1\r\n ) {\r\n this.supActionsIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 4\r\n ).IsVisible;\r\n }\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 5) != -1\r\n ) {\r\n this.pmActionsIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 5\r\n ).IsVisible;\r\n }\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 6) != -1\r\n ) {\r\n this.contractGraphIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 6\r\n ).IsVisible;\r\n }\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 7) != -1\r\n ) {\r\n this.plannedHoursGraphIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 7\r\n ).IsVisible;\r\n }\r\n if (\r\n this._dashboardsettings.findIndex(x => x.DashboardItemID == 8) != -1\r\n ) {\r\n this.leaveGraphIsVisible = this._dashboardsettings.find(\r\n x => x.DashboardItemID == 8\r\n ).IsVisible;\r\n }\r\n }\r\n get dashboardSettings(): Array {\r\n return this._dashboardsettings;\r\n }\r\n private StatusDataSubject = new ReplaySubject>(1);\r\n private _statusdata: Array;\r\n contractChartTypes: { label: string; value: string }[];\r\n adminPlus: boolean;\r\n highPlannedHoursCount: boolean;\r\n @Input() set statusData(value: Array) {\r\n value = value.map(x => ({\r\n ...x,\r\n Process:\r\n this.processes.find(y => y.ProcessID == x.ProcessID) != null\r\n ? this.processes.find(y => y.ProcessID == x.ProcessID)\r\n : null\r\n }));\r\n value.forEach(v => {\r\n if (\r\n this.processes.findIndex(x => x.ProcessID == v.ProcessID) == -1\r\n ) {\r\n v.ProcessID = null;\r\n }\r\n });\r\n this._statusdata = value;\r\n this.StatusDataSubject.next(value);\r\n }\r\n get statusData(): Array {\r\n return this._statusdata;\r\n }\r\n hasActivity: boolean;\r\n private ContractsSubject = new ReplaySubject(1);\r\n private _contracts: Contract[];\r\n @Input() set contracts(value: Contract[]) {\r\n if (value) {\r\n this.hasActivity = value.some(x => x.HasActivity == true);\r\n\r\n this.contractsSelectItem = value.map(x => ({\r\n label: x.ContractDesc,\r\n value: x.ContractListID\r\n }));\r\n if (this.hasActivity == true) {\r\n const filteredContracts = value.filter(\r\n x => x.HasActivity == true\r\n );\r\n const filteredContractsSelectItem = filteredContracts.map(\r\n x => ({\r\n label: x.ContractDesc,\r\n value: x.ContractListID\r\n })\r\n );\r\n const initialContractsForChart = [];\r\n let COUNT;\r\n if (filteredContractsSelectItem.length > 10) {\r\n COUNT = 10;\r\n } else {\r\n COUNT = filteredContractsSelectItem.length;\r\n }\r\n for (let i = 0; i < COUNT; i++) {\r\n initialContractsForChart.push(\r\n filteredContractsSelectItem[i].value\r\n );\r\n }\r\n if (this.contractFormGroup) {\r\n this.contractFormGroup.controls['MultiContract'].patchValue(\r\n initialContractsForChart\r\n );\r\n }\r\n }\r\n }\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n }\r\n get contracts(): Contract[] {\r\n return this._contracts;\r\n }\r\n\r\n private AnnouncementSubject = new ReplaySubject(1);\r\n private _announcement: any;\r\n @Input() set announcement(value: any) {\r\n this._announcement = value;\r\n this.AnnouncementSubject.next(value);\r\n }\r\n get announcement(): any {\r\n return this._announcement;\r\n }\r\n\r\n private AnnouncementAdminSubject = new ReplaySubject(1);\r\n private _announcementadmin: any;\r\n @Input() set announcementAdmin(value: any) {\r\n this._announcementadmin = value;\r\n this.AnnouncementAdminSubject.next(value);\r\n }\r\n get announcementAdmin(): any {\r\n return this._announcementadmin;\r\n }\r\n\r\n private AdminMsgSubject = new ReplaySubject(1);\r\n private _adminmsg: any;\r\n @Input() set adminMsg(value: any) {\r\n this._adminmsg = value;\r\n if (value) {\r\n this.messages.push(value);\r\n this.messageCount++;\r\n }\r\n this.AdminMsgSubject.next(value);\r\n }\r\n get adminMsg(): any {\r\n return this._adminmsg;\r\n }\r\n\r\n private MgrMsgSubject = new ReplaySubject(1);\r\n private _mgrmsg: any;\r\n @Input() set mgrMsg(value: any) {\r\n this._mgrmsg = value;\r\n if (value) {\r\n this.messages.push(value);\r\n this.messageCount++;\r\n }\r\n this.MgrMsgSubject.next(value);\r\n }\r\n get mgrMsg(): any {\r\n return this._mgrmsg;\r\n }\r\n\r\n private UserMsgSubject = new ReplaySubject(1);\r\n private _usermsg: any;\r\n @Input() set userMsg(value: any) {\r\n this._usermsg = value;\r\n if (value) {\r\n this.messages.push(value);\r\n this.messageCount++;\r\n }\r\n this.UserMsgSubject.next(value);\r\n }\r\n get userMsg(): any {\r\n return this._usermsg;\r\n }\r\n\r\n private UserRolesSubject = new ReplaySubject>(1);\r\n private _userroles: Array;\r\n @Input() set userRoles(value: Array) {\r\n this._userroles = value;\r\n this.UserRolesSubject.next(value);\r\n if (\r\n (value.findIndex(x => x.RoleGroupID == 1) != 1 &&\r\n value.findIndex(x => x.RoleGroupID == 12024) != -1) ||\r\n (value.findIndex(x => x.RoleGroupID == 1) != 1 &&\r\n value.findIndex(x => x.RoleGroupID == 12025) != -1)\r\n ) {\r\n this.adminPlus = true;\r\n } else {\r\n this.adminPlus = false;\r\n }\r\n\r\n if (value.findIndex(x => x.RoleGroupID == 1) != -1) {\r\n this.admin = true;\r\n } else {\r\n this.admin = false;\r\n }\r\n }\r\n get userRoles(): Array {\r\n return this._userroles;\r\n }\r\n\r\n private UsersSubject = new ReplaySubject>(1);\r\n private _users: Array;\r\n @Input() set users(value: Array) {\r\n this._users = value;\r\n this.UsersSubject.next(value);\r\n value = value.filter(x => x.IsActive == true);\r\n this.usersSelectItem = value.map(x => ({\r\n label: x.EmployeeName,\r\n value: x.EmployeeListID\r\n }));\r\n }\r\n get users(): Array {\r\n return this._users;\r\n }\r\n\r\n private UserSubject = new ReplaySubject(1);\r\n private _user: IUser;\r\n @Input() set user(value: IUser) {\r\n if (value) {\r\n this._user = value;\r\n this.UserSubject.next(value);\r\n\r\n if (this.supGraphFormGroup) {\r\n this.supGraphFormGroup.controls['percent'].patchValue('75');\r\n }\r\n }\r\n }\r\n get user(): IUser {\r\n return this._user;\r\n }\r\n\r\n private FundingSubject = new ReplaySubject>(1);\r\n private _funding: Array;\r\n @Input() set funding(value: Array) {\r\n this._funding = value;\r\n this.FundingSubject.next(value);\r\n if (value.length == 0) {\r\n if (this.contractFormGroup) {\r\n if (\r\n this.contractFormGroup.controls['percentSpent'].value !=\r\n null ||\r\n this.contractFormGroup.controls['Contract'].value != null\r\n ) {\r\n this.showContractsGraph = true;\r\n } else {\r\n this.showContractsGraph = false;\r\n }\r\n }\r\n }\r\n if (value && value.length > 0) {\r\n this.showContractsGraph = true;\r\n this.maxProcessDate = value[0].MaxProcessDate;\r\n this.lastFundingMod = moment(value[0].LastFundingModOverall).format(\r\n 'MM/DD/YYYY'\r\n );\r\n if (value.length > 19) {\r\n this.highFundingDataCount = true;\r\n } else {\r\n this.highFundingDataCount = false;\r\n }\r\n }\r\n\r\n const desc = [];\r\n const contractSpent = [];\r\n const contractFunded = [];\r\n const contractValue: number[] = [];\r\n const spentBarColors: any[] = [];\r\n value.forEach(c => {\r\n if (\r\n this.contractFormGroup &&\r\n this.contractFormGroup.controls['toggle'].value == true\r\n ) {\r\n desc.push(c.ChargeNumber);\r\n } else {\r\n desc.push(c.ContractDesc);\r\n }\r\n if (c.Spent > c.Funded) {\r\n spentBarColors.push('#9A2A2A');\r\n } else {\r\n spentBarColors.push('#85BAA1');\r\n }\r\n contractSpent.push(c.Spent);\r\n contractFunded.push(c.Funded);\r\n contractValue.push(c.ContractValue);\r\n });\r\n const spentExceedsFundingIndexes = [];\r\n value.forEach(v => {\r\n if (v.Spent > v.Funded) {\r\n const index = value.findIndex(x => x == v);\r\n spentExceedsFundingIndexes.push(index);\r\n }\r\n });\r\n\r\n if (\r\n this.contractFormGroup &&\r\n this.contractFormGroup.controls['toggle'].value == true\r\n ) {\r\n this.fundingData = {\r\n labels: desc,\r\n datasets: [\r\n {\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Spent',\r\n backgroundColor: spentBarColors, //'#85BAA1', //seafoam green\r\n //backgroundColor: '#81A684', // light forrest green\r\n //backgroundColor: '#6D9F71', // forrest green crayola\r\n data: contractSpent //[650, 590, 800, 810, 560, 550, 400]\r\n },\r\n {\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Funded',\r\n //backgroundColor: '#6E8894', //dark slate blue\r\n backgroundColor: '#57886C', //forrest green\r\n //backgroundColor: '#337357', //amazon green\r\n data: contractFunded //[980, 880, 1400, 1000, 860, 770, 900]\r\n },\r\n {\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Over 100%',\r\n backgroundColor: '#9A2A2A',\r\n data: []\r\n },\r\n ]\r\n };\r\n } else {\r\n this.fundingData = {\r\n labels: desc,\r\n datasets: [\r\n {\r\n stack: 1,\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Spent',\r\n //backgroundColor: '#B9C6AE',\r\n backgroundColor: spentBarColors,//'#85BAA1', //seafoam green\r\n //backgroundColor: '#81A684', // light forrest green\r\n //backgroundColor: '#6D9F71', // forrest green crayola\r\n //borderColor: '#81A684',\r\n //borderWidth: 3,\r\n data: contractSpent //[650, 590, 800, 810, 560, 550, 400]\r\n },\r\n {\r\n stack: 2,\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Funded',\r\n //backgroundColor: '#8A95A5',\r\n //backgroundColor: '#6E8894', //dark slate blue\r\n backgroundColor: '#57886C', //forrest green\r\n //backgroundColor: '#337357', //amazon green\r\n //borderColor: '#57886C',\r\n //borderWidth: 3,\r\n data: contractFunded //[980, 880, 1400, 1000, 860, 770, 900]\r\n },\r\n {\r\n stack: 3,\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Awarded',\r\n //backgroundColor: '#757083',\r\n //backgroundColor: '#544E61', //dark slate purple\r\n backgroundColor: '#466060', //dark forrest green\r\n //backgroundColor: '#2E2D4D', //dark purple\r\n //borderColor: '#757083',\r\n //borderWidth: 3,\r\n data: contractValue //[980, 880, 1400, 1000, 860, 770, 900]\r\n },\r\n {\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Over 100%',\r\n backgroundColor: '#9A2A2A',\r\n data: []\r\n },\r\n ]\r\n };\r\n }\r\n\r\n this.stackedOptions = {\r\n indexAxis: 'y',\r\n responsive: true,\r\n aspectRatio: desc.length > 19 ? 1 : 1 | 2,\r\n //maintainAspectRatio: false,\r\n plugins: {\r\n tooltips: {\r\n mode: 'index',\r\n intersect: false\r\n },\r\n legend: {\r\n display: false,\r\n labels: {\r\n color: '#495057'\r\n }\r\n }\r\n // zoom: {\r\n // zoom: {\r\n // wheel: {\r\n // enabled: true,\r\n // },\r\n // pan: {\r\n // enabled: true\r\n // },\r\n // pinch: {\r\n // enabled: true\r\n // },\r\n // mode: 'y',\r\n // }\r\n // }\r\n },\r\n layout: {\r\n padding: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n }\r\n },\r\n scales: {\r\n x: {\r\n //stacked: true,\r\n ticks: {\r\n color: '#495057',\r\n fontSize: 6,\r\n callback: function (value, index, ticks) {\r\n return '$' + value;\r\n }\r\n },\r\n grid: {\r\n color: '#ebedef'\r\n },\r\n suggestedMin: Math.min(...contractValue),\r\n suggestedMax: Math.max(...contractValue)\r\n },\r\n y: {\r\n //stacked: true,\r\n ticks: {\r\n color: '#495057',\r\n fontSize: 6,\r\n autoSkip: false\r\n },\r\n grid: {\r\n color: '#ebedef'\r\n },\r\n suggestedMin: Math.min(...contractValue),\r\n suggestedMax: Math.max(...contractValue)\r\n }\r\n }\r\n };\r\n }\r\n get funding(): Array {\r\n return this._funding;\r\n }\r\n\r\n private DRStatusSubject = new ReplaySubject>(1);\r\n private _drstatus: Array;\r\n @Input() set drStatus(value: Array) {\r\n this._drstatus = value;\r\n this.DRStatusSubject.next(value);\r\n\r\n if (value && value.length > 0) {\r\n if (value.length > 19) {\r\n this.highPlannedHoursCount = true;\r\n } else {\r\n this.highPlannedHoursCount = false;\r\n }\r\n this.supervisorGraphTitle = 'Planned Hours Worked';\r\n } else {\r\n this.supervisorGraphTitle = 'No Planned Hours Found';\r\n }\r\n const desc = [];\r\n const hoursWorked = [];\r\n const hoursPlanned = [];\r\n const percentWorked = [];\r\n const hrsWorkedColors = [];\r\n value.forEach(c => {\r\n desc.push(c.Name_Task);\r\n hoursWorked.push(c.HrsWorked);\r\n hoursPlanned.push(c.HrsPlanned);\r\n percentWorked.push(c.PercentWorked);\r\n\r\n if (c.HrsWorked > c.HrsPlanned) {\r\n hrsWorkedColors.push('#9A2A2A');\r\n } else {\r\n hrsWorkedColors.push('#337ab7');\r\n }\r\n });\r\n this.usersData = {\r\n labels: desc,\r\n datasets: [\r\n {\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Worked',\r\n backgroundColor: hrsWorkedColors,//'#337ab7',\r\n //backgroundColor: '#42A5F5',\r\n //backgroundColor: '#AFBFC0',\r\n data: hoursWorked\r\n },\r\n {\r\n categoryPercentage: 0.7,\r\n barPercentage: 1,\r\n type: 'bar',\r\n label: 'Planned',\r\n backgroundColor: '#1e3c72',\r\n //backgroundColor: '#847E89',\r\n data: hoursPlanned\r\n },\r\n {\r\n categoryPercentage: 0.0,\r\n barPercentage: 0,\r\n type: 'bar',\r\n label: 'Over Worked',\r\n backgroundColor: '#9A2A2A',\r\n data: []\r\n }\r\n ]\r\n };\r\n\r\n this.supStackedOptions = {\r\n indexAxis: 'y',\r\n responsive: true,\r\n aspectRatio: desc.length > 19 ? 1 : 1 | 2,\r\n plugins: {\r\n tooltips: {\r\n mode: 'index',\r\n intersect: false\r\n },\r\n legend: {\r\n display: false,\r\n labels: {\r\n color: '#495057'\r\n }\r\n }\r\n // zoom: {\r\n // zoom: {\r\n // wheel: {\r\n // enabled: true,\r\n // },\r\n // pinch: {\r\n // enabled: true\r\n // },\r\n // mode: 'y',\r\n // }\r\n // }\r\n },\r\n layout: {\r\n padding: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n }\r\n },\r\n scales: {\r\n x: {\r\n //stacked: true,\r\n ticks: {\r\n color: '#495057',\r\n fontSize: 6\r\n },\r\n grid: {\r\n color: '#ebedef'\r\n },\r\n suggestedMin: Math.min(...hoursPlanned),\r\n suggestedMax: Math.max(...hoursPlanned)\r\n },\r\n y: {\r\n //stacked: true,\r\n ticks: {\r\n color: '#495057',\r\n fontSize: 6,\r\n autoSkip: false\r\n },\r\n grid: {\r\n color: '#ebedef'\r\n },\r\n suggestedMin: Math.min(...hoursPlanned),\r\n suggestedMax: Math.max(...hoursPlanned)\r\n }\r\n }\r\n };\r\n }\r\n get drStatus(): Array {\r\n return this._drstatus;\r\n }\r\n\r\n private AccrualDataSubject = new ReplaySubject>(1);\r\n private _accrualdata: Array;\r\n @Input() set accrualData(value: Array) {\r\n this._accrualdata = value;\r\n this.AccrualDataSubject.next(value);\r\n\r\n if (value.length == 0) {\r\n this.showAccrualGraphs = false;\r\n }\r\n\r\n if (value && value.length > 0) {\r\n this.showAccrualGraphs = true;\r\n const desc = [];\r\n const availableHours = [];\r\n const plannedHours = [];\r\n value.forEach(c => {\r\n desc.push(moment(c.PPE).format('MM/DD'));\r\n if (\r\n new Date(c.PPE) >\r\n new Date(this.user.userInfo.PrevPayPeriodEnd)\r\n ) {\r\n availableHours.push(null);\r\n } else {\r\n availableHours.push(c.PPEAvailableVacHrs);\r\n }\r\n if (\r\n new Date(c.PPE) <\r\n new Date(this.user.userInfo.PrevPayPeriodEnd)\r\n ) {\r\n plannedHours.push(null);\r\n } else {\r\n plannedHours.push(c.PPEAvailable_PlannedVacHrs);\r\n }\r\n });\r\n this.accrualChartData = {\r\n labels: desc,\r\n datasets: [\r\n {\r\n label: 'Available',\r\n data: availableHours,\r\n fill: false,\r\n tension: 0.4,\r\n borderColor: '#42A5F5'\r\n },\r\n {\r\n label: 'Planned',\r\n data: plannedHours,\r\n fill: false,\r\n borderDash: [5, 5],\r\n tension: 0.4,\r\n borderColor: '#66BB6A'\r\n }\r\n ]\r\n };\r\n\r\n this.accrualChartOptions = {\r\n responsive: true,\r\n aspectRatio: 1 | 2,\r\n plugins: {\r\n legend: {\r\n labels: {\r\n color: '#495057'\r\n }\r\n }\r\n },\r\n scales: {\r\n x: {\r\n ticks: {\r\n color: '#495057'\r\n },\r\n grid: {\r\n color: '#ebedef'\r\n }\r\n },\r\n y: {\r\n ticks: {\r\n color: '#495057'\r\n },\r\n grid: {\r\n color: '#ebedef'\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }\r\n get accrualData(): Array {\r\n return this._accrualdata;\r\n }\r\n\r\n showContractsGraph = true;\r\n showAccrualGraphs = true;\r\n showDashboardSettings = false;\r\n items: MenuItem[];\r\n usersData: any;\r\n fundingData: any;\r\n basicData: any;\r\n accrualChartData: any;\r\n stackedOptions: any;\r\n accrualChartOptions: any;\r\n supStackedOptions: any;\r\n active = true;\r\n usersSelectItem: SelectItem[];\r\n contractsSelectItem: SelectItem[];\r\n periodsSelectItem: SelectItem[];\r\n selectedContracts: any[] = [];\r\n contractFormGroup: FormGroup;\r\n supGraphFormGroup: FormGroup;\r\n\r\n //@Input() contracts: Contract[];\r\n @Input() companySettings: CompanySetting[];\r\n @Input() roleID: number;\r\n @Input() processes: Process[];\r\n @Input() showSupervisorStatusBlock: boolean;\r\n @Input() showPMStatusBlock: boolean;\r\n @Input() selectedProcesses: Process[];\r\n @Input() showMsg: boolean;\r\n\r\n //colHeaders: any[];\r\n settingsData: any[];\r\n\r\n contractFunding: Funding[] = [];\r\n\r\n @Output() GetAccrualData = new ReplaySubject(1);\r\n @Output() GetFunding = new ReplaySubject(1);\r\n @Output() GetDRStatus = new ReplaySubject(1);\r\n @Output() GetDirectReports = new ReplaySubject(1);\r\n @Output() markAsRead = new ReplaySubject(1);\r\n @Output() UpdateDashboardSettings = new ReplaySubject(1);\r\n\r\n messages: any[] = [];\r\n messageCount = 0;\r\n\r\n showMessageBlock = false;\r\n\r\n chartTypes: any[];\r\n\r\n periodStart: any;\r\n periodEnd: any;\r\n chartType: number;\r\n\r\n maxProcessDate: string;\r\n\r\n supervisorGraphTitle: string;\r\n\r\n contractsAndFundingProcess: Process;\r\n\r\n highFundingDataCount: boolean;\r\n admin: boolean;\r\n\r\n auths: Process;\r\n\r\n lastFundingMod: string;\r\n\r\n testTableData: any;\r\n\r\n Object: any;\r\n\r\n colSpan: any;\r\n\r\n rows: any;\r\n\r\n colGroupNames: any;\r\n\r\n colHeaders: any = [];\r\n\r\n rowCells: any = [];\r\n rowCellsForcast: any = [];\r\n\r\n helpdeskVideoMP4 = '/videos/helpdesk.mp4';\r\n\r\n showVideo = false;\r\n\r\n constructor(public app: AppComponent, private log: LoggingService) {\r\n Chart.register(zoomPlugin);\r\n this.Object = Object;\r\n }\r\n\r\n ngOnInit() {\r\n this.contractFormGroup = new FormGroup({\r\n MultiContract: new FormControl(null),\r\n Contract: new FormControl(null),\r\n toggle: new FormControl(null),\r\n percentSpent: new FormControl(null)\r\n });\r\n this.supGraphFormGroup = new FormGroup({\r\n drOnly: new FormControl(null),\r\n percent: new FormControl(null),\r\n period: new FormControl(null),\r\n users: new FormControl(null),\r\n user: new FormControl(null),\r\n tasktoggle: new FormControl(null)\r\n });\r\n\r\n this.GetAccrualData.next();\r\n\r\n this.setupSubscriptions();\r\n\r\n if (this.processes) {\r\n if (this.processes.findIndex(x => x.ProcessID == 13) != -1) {\r\n this.contractsAndFundingProcess = this.processes.find(\r\n x => x.ProcessID == 13\r\n );\r\n }\r\n\r\n if (this.processes.findIndex(x => x.ProcessID == 2) != -1) {\r\n this.auths = this.processes.find(x => x.ProcessID == 2);\r\n }\r\n }\r\n\r\n // if (this.processes && this.userRoles && this.user) {\r\n // const home = {\r\n // ProcessID: 0,\r\n // ProcessName: 'Main',\r\n // RouteName: 'Main',\r\n // ProcessDesc: '',\r\n // ProcessTitle: 'Home',\r\n // MsgCount: null\r\n // };\r\n // if (\r\n // this.userRoles.findIndex(x => x.RoleGroupID == 1) != -1 &&\r\n // this.user.userInfo.DefaultRoleGroupID == 1\r\n // ) {\r\n // this.selectedProcesses.push(home);\r\n // const checkup = this.processes.find(x => x.ProcessID == 145);\r\n // this.selectedProcesses.push(checkup);\r\n\r\n // const allUsers = this.processes.find(x => x.ProcessID == 14);\r\n // this.selectedProcesses.push(allUsers);\r\n\r\n // const timeentry = this.processes.find(x => x.ProcessID == 64);\r\n // this.selectedProcesses.push(timeentry);\r\n\r\n // // var contractsandfunding = this.processes.find(x => x.ProcessID == 13);\r\n // // this.selectedProcesses.push(contractsandfunding);\r\n\r\n // const auths = this.processes.find(x => x.ProcessID == 2);\r\n // this.selectedProcesses.push(auths);\r\n\r\n // if (this.processes.findIndex(x => x.ProcessID == 85) != -1) {\r\n // const timeapproval = this.processes.find(\r\n // x => x.ProcessID == 85\r\n // );\r\n // this.selectedProcesses.push(timeapproval);\r\n // }\r\n // } else if (\r\n // this.userRoles.findIndex(x => x.RoleGroupID == 12024) != -1 &&\r\n // this.user.userInfo.DefaultRoleGroupID == 12024\r\n // ) {\r\n // this.selectedProcesses.push(home);\r\n // const timeentry = this.processes.find(x => x.ProcessID == 64);\r\n // this.selectedProcesses.push(timeentry);\r\n\r\n // const timeapproval = this.processes.find(\r\n // x => x.ProcessID == 85\r\n // );\r\n // this.selectedProcesses.push(timeapproval);\r\n\r\n // if (this.processes.findIndex(x => x.ProcessID == 86) != -1) {\r\n // const expapproval = this.processes.find(\r\n // x => x.ProcessID == 86\r\n // );\r\n // this.selectedProcesses.push(expapproval);\r\n // }\r\n\r\n // if (this.processes.findIndex(x => x.ProcessID == 2) != -1) {\r\n // const auths = this.processes.find(x => x.ProcessID == 2);\r\n // this.selectedProcesses.push(auths);\r\n // }\r\n // } else if (\r\n // this.userRoles.findIndex(x => x.RoleGroupID == 12025) != -1 &&\r\n // this.user.userInfo.DefaultRoleGroupID == 12025\r\n // ) {\r\n // this.selectedProcesses.push(home);\r\n // const timeentry = this.processes.find(x => x.ProcessID == 64);\r\n // this.selectedProcesses.push(timeentry);\r\n\r\n // const timevalidate = this.processes.find(\r\n // x => x.ProcessID == 87\r\n // );\r\n // this.selectedProcesses.push(timevalidate);\r\n\r\n // if (this.processes.findIndex(x => x.ProcessID == 88) != -1) {\r\n // const expvalidate = this.processes.find(\r\n // x => x.ProcessID == 88\r\n // );\r\n // this.selectedProcesses.push(expvalidate);\r\n // }\r\n // } else {\r\n // this.selectedProcesses.push(home);\r\n // const timeentry = this.processes.find(x => x.ProcessID == 64);\r\n // this.selectedProcesses.push(timeentry);\r\n\r\n // if (this.processes.findIndex(x => x.ProcessID == 70) != -1) {\r\n // const expentry = this.processes.find(\r\n // x => x.ProcessID == 70\r\n // );\r\n // this.selectedProcesses.push(expentry);\r\n // }\r\n\r\n // if (this.processes.findIndex(x => x.ProcessID == 69) != -1) {\r\n // const leave = this.processes.find(x => x.ProcessID == 69);\r\n // this.selectedProcesses.push(leave);\r\n // }\r\n // }\r\n // }\r\n\r\n this.contractFormGroup.controls['toggle'].patchValue(false);\r\n this.supGraphFormGroup.controls['tasktoggle'].patchValue(false);\r\n\r\n this.chartTypes = [\r\n { label: 'Over 50%', value: '50' },\r\n { label: 'Over 75%', value: '75' }\r\n ];\r\n this.contractChartTypes = [\r\n { label: 'Any % Spent', value: '0' },\r\n { label: 'Over 50% Spent', value: '50' },\r\n { label: 'Over 75% Spent', value: '75' }\r\n ];\r\n this.supGraphFormGroup.controls['percent'].patchValue(\r\n this.chartTypes[1].value\r\n );\r\n // this.contractFormGroup.controls['percentSpent'].patchValue(\r\n // this.contractChartTypes[0].value\r\n // );\r\n\r\n // if (this.contracts) {\r\n // this.contractsSelectItem = this.contracts.map(x => ({\r\n // label: x.ContractDesc,\r\n // value: x.ContractListID\r\n // }));\r\n // const initialContractsForChart = [];\r\n // let numOfDefaultContracts;\r\n // if (this.contractsSelectItem.length > 10) {\r\n // numOfDefaultContracts = 10;\r\n // } else {\r\n // numOfDefaultContracts = this.contractsSelectItem.length;\r\n // }\r\n // for (let i = 0; i < numOfDefaultContracts; i++) {\r\n // initialContractsForChart.push(\r\n // this.contractsSelectItem[i].value\r\n // );\r\n // }\r\n // this.contractFormGroup.controls['MultiContract'].patchValue(\r\n // initialContractsForChart\r\n // );\r\n // }\r\n // this.colHeaders = [\r\n // {\r\n // label: 'Setting'\r\n // },\r\n // {\r\n // label: 'Value'\r\n // }\r\n // ];\r\n this.settingsData = [\r\n {\r\n Setting: 'Quick Access'\r\n }\r\n ];\r\n\r\n this.periodsSelectItem = [\r\n {\r\n label: 'Current',\r\n value: 0\r\n },\r\n {\r\n label: 'Previous',\r\n value: 1\r\n },\r\n {\r\n label: 'Past 90 days',\r\n value: 2\r\n }\r\n ];\r\n //this.shopifyBuyButtonInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n setupSubscriptions() {\r\n this.contractFormGroup.controls['MultiContract'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null && value.length > 0) {\r\n const LIMIT_NUMBER = 100;\r\n if (\r\n value.length > LIMIT_NUMBER &&\r\n this.selectedContracts.length != 100\r\n ) {\r\n value.splice(LIMIT_NUMBER, value.length - LIMIT_NUMBER);\r\n } else {\r\n if (this.selectedContracts.length == 100) {\r\n value.splice(0, value.length);\r\n }\r\n }\r\n let listIDString = value[0];\r\n value.forEach(c => {\r\n if (c != value[0]) {\r\n listIDString = `${listIDString},${c}`;\r\n }\r\n });\r\n this.contractFormGroup.controls['percentSpent'].reset();\r\n this.GetFunding.next(\r\n `?ContractListID=${listIDString}&FundingDetail=false&PercentSpent=0`\r\n );\r\n\r\n listIDString = null;\r\n } else {\r\n this.fundingData = null;\r\n }\r\n });\r\n this.contractFormGroup.controls['Contract'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(c => {\r\n if (c != null) {\r\n this.contractFormGroup.controls['percentSpent'].enable();\r\n this.GetFunding.next(\r\n `?ContractListID=${c}&FundingDetail=true`\r\n );\r\n }\r\n });\r\n this.contractFormGroup.controls['toggle'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (\r\n value == true &&\r\n this.contractFormGroup.controls['Contract'].value ==\r\n null\r\n ) {\r\n this.contractFormGroup.controls['percentSpent'].reset();\r\n this.contractFormGroup.controls[\r\n 'percentSpent'\r\n ].disable();\r\n }\r\n if (\r\n value == false &&\r\n this.contractFormGroup.controls['Contract'].value !=\r\n null\r\n ) {\r\n this.contractFormGroup.controls[\r\n 'MultiContract'\r\n ].patchValue([\r\n this.contractFormGroup.controls['Contract'].value\r\n ]);\r\n }\r\n if (\r\n value == true &&\r\n this.contractFormGroup.controls['MultiContract']\r\n .value != null\r\n ) {\r\n this.contractFormGroup.controls['Contract'].patchValue(\r\n this.contractFormGroup.controls['MultiContract']\r\n .value[0]\r\n );\r\n }\r\n }\r\n });\r\n this.contractFormGroup.controls['percentSpent'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.contractFormGroup.controls['MultiContract'].reset();\r\n if (\r\n this.processes.findIndex(x => x.ProcessID == 13) != -1\r\n ) {\r\n if (\r\n this.contractFormGroup.controls['toggle'].value ==\r\n true\r\n ) {\r\n this.GetFunding.next(\r\n `?ContractListID=${this.contractFormGroup.controls['Contract'].value}&FundingDetail=${this.contractFormGroup.controls['toggle'].value}&PercentSpent=${value}`\r\n );\r\n } else {\r\n if (\r\n this.contractFormGroup.controls['MultiContract']\r\n .value != null\r\n ) {\r\n this.GetFunding.next(\r\n `?ContractListID=${this.contractFormGroup.controls['MultiContract'].value}&FundingDetail=${this.contractFormGroup.controls['toggle'].value}&PercentSpent=${value}`\r\n );\r\n } else {\r\n this.GetFunding.next(\r\n `?FundingDetail=${this.contractFormGroup.controls['toggle'].value}&PercentSpent=${value}`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.supGraphFormGroup.controls['drOnly'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n this.GetDirectReports.next({\r\n user: this.user.userInfo,\r\n activeOnly: true,\r\n MyDRsOnly: value\r\n });\r\n this.supGraphFormGroup.controls['users'].reset();\r\n this.supGraphFormGroup.controls['user'].reset();\r\n });\r\n\r\n this.supGraphFormGroup.controls['percent'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (value == '75') {\r\n this.chartType = 75;\r\n } else {\r\n this.chartType = 50;\r\n }\r\n this.supGraphFormGroup.controls['users'].reset();\r\n if (\r\n this.userRoles.findIndex(x => x.RoleGroupID == 1) !=\r\n -1 ||\r\n this.userRoles.findIndex(x => x.RoleGroupID == 12024) !=\r\n -1\r\n ) {\r\n if (\r\n this.supGraphFormGroup.controls['user'].value !=\r\n null\r\n ) {\r\n this.GetDRStatus.next(\r\n `?EmployeeListID=${this.supGraphFormGroup.controls['user'].value}&PercentWorked=${this.chartType}&IncludeTasks=${this.supGraphFormGroup.controls['tasktoggle'].value}`\r\n );\r\n } else {\r\n this.GetDRStatus.next(\r\n `?EmployeeListID=&PercentWorked=${this.chartType}&IncludeTasks=${this.supGraphFormGroup.controls['tasktoggle'].value}`\r\n );\r\n }\r\n } else {\r\n this.GetDRStatus.next(\r\n `?EmployeeListID=${this.user.userInfo.EmployeeListID}&PercentWorked=${this.chartType}&IncludeTasks=true`\r\n );\r\n }\r\n }\r\n });\r\n this.supGraphFormGroup.controls['user'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(u => {\r\n if (u != null) {\r\n this.supGraphFormGroup.controls['percent'].reset();\r\n this.supGraphFormGroup.controls['percent'].enable();\r\n this.GetDRStatus.next(\r\n `?EmployeeListID=${u}&PercentWorked=0&IncludeTasks=true`\r\n );\r\n }\r\n });\r\n this.supGraphFormGroup.controls['users'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value != null && value.length > 0) {\r\n const LIMIT_NUMBER = 100;\r\n if (value.length > LIMIT_NUMBER) {\r\n value.splice(LIMIT_NUMBER, value.length - LIMIT_NUMBER);\r\n }\r\n let listIDString = value[0];\r\n value.forEach(c => {\r\n if (c != value[0]) {\r\n listIDString = `${listIDString},${c}`;\r\n }\r\n });\r\n\r\n this.GetDRStatus.next(\r\n `?EmployeeListID=${listIDString}&PercentWorked=0&IncludeTasks=${this.supGraphFormGroup.controls['tasktoggle'].value}`\r\n );\r\n listIDString = null;\r\n this.supGraphFormGroup.controls['percent'].reset();\r\n this.supGraphFormGroup.controls['percent'].enable();\r\n } else {\r\n this.usersData = null;\r\n }\r\n });\r\n this.supGraphFormGroup.controls['tasktoggle'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.supGraphFormGroup.controls['user'].reset();\r\n this.supGraphFormGroup.controls['percent'].reset();\r\n if (\r\n value == true &&\r\n this.supGraphFormGroup.controls['user'].value == null\r\n ) {\r\n this.supGraphFormGroup.controls['percent'].disable();\r\n }\r\n if (value == false) {\r\n this.supGraphFormGroup.controls['percent'].patchValue(\r\n '75'\r\n );\r\n }\r\n\r\n // if (\r\n // value == false &&\r\n // this.supGraphFormGroup.controls['user'].value != null\r\n // ) {\r\n // this.supGraphFormGroup.controls['users'].patchValue([\r\n // this.supGraphFormGroup.controls['user'].value\r\n // ]);\r\n // }\r\n if (\r\n value == true &&\r\n this.supGraphFormGroup.controls['users'].value != null\r\n ) {\r\n this.supGraphFormGroup.controls['user'].patchValue(\r\n this.supGraphFormGroup.controls['users'].value[0]\r\n );\r\n }\r\n if (value == false) {\r\n this.supGraphFormGroup.controls['percent'].enable();\r\n }\r\n }\r\n });\r\n }\r\n\r\n openDashboardSettings() {\r\n this.dashboardSettingsTableData =\r\n this.dashboardSettings != null ? this.dashboardSettings : [];\r\n this.showDashboardSettings = true;\r\n }\r\n\r\n openMessages() {\r\n this.showMessageBlock = true;\r\n }\r\n\r\n quickAccessChange($event) {\r\n this.log.verbose($event);\r\n }\r\n\r\n onChangeContracts($event) {\r\n this.selectedContracts = $event.value;\r\n }\r\n\r\n updateSettingCheckboxChecked($event, row) {\r\n const item = {\r\n DashboardItemID: row.DashboardItemID,\r\n IsVisible: $event.checked\r\n };\r\n this.UpdateDashboardSettings.next(item);\r\n }\r\n\r\n // updateDashboardDesc(row) {\r\n // var item = {\r\n // DashboardItemID: row.DashboardItemID,\r\n // DashboardItemDesc: row.DashboardItemDesc,\r\n // IsVisible: true\r\n // };\r\n // this.UpdateDashboardSettings.next(item);\r\n // }\r\n\r\n // shopifyBuyButtonInit() {\r\n // const client = ShopifyBuy.buildClient({\r\n // domain: 'efaacttest.myshopify.com',\r\n // storefrontAccessToken: '107cd7ce438e09df0d0dbda6d8fafb27',\r\n // });\r\n // const ui = ShopifyBuy.UI.init(client);\r\n\r\n // ui.createComponent('product', {\r\n // id: '7315301990578',\r\n // node: document.getElementById('product-component-1667495584882'),\r\n // options: {\r\n // \"product\": {\r\n // \"styles\": {\r\n\r\n // \"title\": {\r\n // \"font-size\": \"12px\"\r\n // }\r\n // }\r\n // }\r\n // }\r\n // });\r\n\r\n // ui.createComponent('product', {\r\n // id: '7329103347890',\r\n // node: document.getElementById('product-component-1667502701454'),\r\n // options: {\r\n // \"product\": {\r\n // \"styles\": {\r\n\r\n // \"title\": {\r\n // \"font-size\": \"12px\"\r\n // }\r\n // }\r\n // }\r\n // }\r\n // });\r\n // }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DashboardRoute } from './dashboard.route';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared';\r\nimport { entityName, RoleStatusDataService } from '../data-services/dashboard/status/role-status.data-service';\r\nimport { EntityDataService } from '@ngrx/data';\r\n\r\n@NgModule({\r\n // declarations: [],\r\n providers: [RoleStatusDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [DashboardRoute]\r\n })\r\n ]\r\n})\r\nexport class DashboardModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n roleStatusDataService: RoleStatusDataService\r\n ) {\r\n entityDataService.registerService(entityName, roleStatusDataService);\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { DashboardFeatureComponent } from './dashboard-feature/dashboard-feature.component';\r\n\r\nexport const DashboardRoute: Ng2StateDeclaration = {\r\n name: 'dashboard',\r\n url: '/dashboard',\r\n data: { requiresAuth: true },\r\n\r\n component: DashboardFeatureComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { AccrualPeriodModel } from './accrual-period.model';\r\n\r\nexport const entityName = 'AccrueLeavePeriod';\r\n@Injectable({ providedIn: 'root' })\r\nexport class AccrualPeriodDataService extends EfaactDataService {\r\n mapItems(item: AccrualPeriodModel): AccrualPeriodModel {\r\n return {\r\n ...item,\r\n id: item.AccrueLeavePeriodID\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface AccrualPeriodModel\r\n extends DataServiceEntity {\r\n AccrueLeavePeriodID: number;\r\n AccrueLeavePeriod: string;\r\n AccrueLeavePeriodDesc: string;\r\n}\r\n","export * from './accrual-period.data-service';\r\nexport * from './accrual-period.model';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { Address } from './address.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport * as data from './MOCK_DATA.json';\r\nimport { of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const entityName = 'Address';\r\n@Injectable({ providedIn: 'root' })\r\nexport class AddressDataService extends EfaactDataService
{\r\n mapItems(item: Address): Address {\r\n return { id: item.Addressid, ...item };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n // getAll() {\r\n // return of((data as any).default).pipe(\r\n // map(items => items.map(p => this.mapItems(p)))\r\n // );\r\n // }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface Address extends DataServiceEntity
{\r\n Addressid: number;\r\n Addr1: string;\r\n Addr2: string;\r\n Addr3: string;\r\n Addr4: string;\r\n AddressType: string;\r\n AltContact: string;\r\n City: string;\r\n Contact: string;\r\n AddressName: string;\r\n PostalCode: string;\r\n State: string;\r\n Row_Version: string;\r\n}\r\n","export * from './address.data-service';\r\nexport * from './address.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataService,\r\n HttpUrlGenerator,\r\n DefaultDataServiceConfig\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { BudgetCycle } from './budget-cycle.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nexport const entityName = 'BudgetCycle';\r\n\r\n@Injectable()\r\nexport class BudgetCycleDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n mapItems(item: BudgetCycle): BudgetCycle {\r\n return {\r\n ...item,\r\n id: item.Budgetcycleid\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface BudgetCycle extends DataServiceEntity {\r\n Budgetcycleid: number;\r\n Budgetcycle: string;\r\n}\r\n","export * from './budget-cycle.data-service';\r\nexport * from './budget-cycle.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataService,\r\n HttpUrlGenerator,\r\n DefaultDataServiceConfig\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { BudgetLevel } from './budget-level.model';\r\nimport * as fromShared from '../../shared';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nexport const entityName = 'BudgetLevel';\r\n\r\n@Injectable()\r\nexport class BudgetLevelDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: BudgetLevel): BudgetLevel {\r\n return {\r\n ...item,\r\n id: item.Budgetlevelid\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface BudgetLevel extends DataServiceEntity {\r\n Budgetlevelid: number;\r\n Budgetlevel: string;\r\n}\r\n","export * from './budget-level.data-service';\r\nexport * from './budget-level.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n DefaultDataServiceConfig,\r\n EntityActionFactory,\r\n EntityOp,\r\n EntitySelectors,\r\n EntitySelectorsFactory,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map, withLatestFrom } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { IGenericResponse, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDynamicDataService } from '../efaact.dynamic-data-service';\r\nimport { BurdenModel } from './burden.model';\r\n\r\nexport const entityName = 'Burden';\r\n@Injectable({ providedIn: 'root' })\r\nexport class BurdenDataService extends EfaactDynamicDataService {\r\n filterItems = ['Status', 'Row_Version', 'updates'];\r\n selectors: EntitySelectors;\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.selectors = new EntitySelectorsFactory().create(\r\n this.entityName\r\n );\r\n this.usePostForQuery = true;\r\n this.useJSONStringForPost = true;\r\n }\r\n protected save(update: Update): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(BurdenDataService):save`,\r\n update\r\n });\r\n const item = {\r\n ...update.changes\r\n } as BurdenModel;\r\n\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${this.entityName}List`]: [item]\r\n })\r\n .pipe(\r\n withLatestFrom(\r\n this.store.pipe(select(this.selectors.selectEntities))\r\n ),\r\n map(([resp, burdens]) => {\r\n //find the burden we're updating from the store\r\n const burden = burdens.find(x => x.id === update.id);\r\n //if we can't find it, return the update\r\n if (!burden) {\r\n return update.changes as BurdenModel;\r\n }\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(BurdenDataService):save:resp`,\r\n resp,\r\n update\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n //handle errors\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n (update.changes.original &&\r\n update.changes.original\r\n .id) ||\r\n update.changes.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n // need to do this b/c the change of a checkbox is immediate and there is no cancel to put it back\r\n // if something is wrong with the save\r\n const af = new EntityActionFactory();\r\n // if (update.changes.SyncPayrollItems === true) {\r\n const action = af.create(\r\n this.entityName,\r\n EntityOp.SAVE_UPDATE_ONE_SUCCESS,\r\n {\r\n id: update.changes.id,\r\n changed: true,\r\n changes: {\r\n ...resp.Items[0],\r\n id: update.changes.id\r\n }\r\n }\r\n );\r\n this.store.dispatch(action);\r\n throwError(\r\n new DataServiceError(\r\n resp.ErrorMessages.reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n throw new DataServiceError(\r\n resp.ErrorMessages.reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n );\r\n } else {\r\n // this sets the status to update icon and tooltip\r\n const ret = {\r\n ...burden,\r\n Status: {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Saved'\r\n }\r\n } as BurdenModel;\r\n const resUpd = resp.Items[0];\r\n // if no items in the resp.items, just return what was sent to be updated\r\n if (!resUpd) {\r\n return update.changes as BurdenModel;\r\n }\r\n //this updates part of the store model with the values retured from the save\r\n ret[resUpd.Calcdesc] = {\r\n ...ret[resUpd.Calcdesc],\r\n [resUpd.Loadingtype]: resUpd.LoadYesNo\r\n };\r\n\r\n // const rowId = `row-${ret.id}`;\r\n // const row = document.getElementById(rowId);\r\n // row.scrollIntoView({\r\n // behavior: 'smooth',\r\n // block: 'center',\r\n // inline: 'nearest'\r\n // });\r\n\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(BurdenDataService):save:return`,\r\n ret,\r\n update,\r\n resp: resp.Items\r\n });\r\n return ret;\r\n }\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface BurdenModel extends DataServiceEntity {\r\n ContractListID: string;\r\n ContractDesc: string;\r\n CNListID: string;\r\n ChargeNumber: string;\r\n ContractType: string;\r\n}\r\n","export * from './burden.model';\r\nexport * from './burden.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { ChargeNumber } from './chargenumber.model';\r\n\r\nexport const entityName = 'ChargeNumber';\r\n\r\n@Injectable()\r\nexport class ChargeNumberDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: ChargeNumber): ChargeNumber {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.CNListID\r\n };\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface ChargeNumber extends DataServiceEntity {\r\n CNListID: string;\r\n FullName: string;\r\n ContractListID: string;\r\n}\r\n","export * from './chargenumber.data-service';\r\nexport * from './chargenumber.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Guid } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { CompanyAccessModel } from './company-access.model';\r\n\r\nexport const entityName = 'AuthorizedCustomers';\r\n@Injectable({ providedIn: 'root' })\r\nexport class CompanyAccessDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n }\r\n mapItems(item: CompanyAccessModel): CompanyAccessModel {\r\n return {\r\n ...item,\r\n id: Guid.newGuid()\r\n };\r\n }\r\n mapGetResponse(resp) {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(CompanyAccessDataService):mapResponse:resp`,\r\n resp\r\n });\r\n const result = JSON.parse(resp) as CompanyAccessModel[];\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(CompanyAccessDataService):mapResponse:result`,\r\n result\r\n });\r\n if (Array.isArray(result)) {\r\n return result;\r\n } else {\r\n return [] as CompanyAccessModel[];\r\n }\r\n // return result;\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface CompanyAccessModel extends DataServiceEntity {\r\n id: string | number;\r\n CustomerID: number;\r\n contactemail: string;\r\n contactname: string;\r\n customername: string;\r\n Status: IStatusMessage;\r\n}\r\n","export * from './company-access.model';\r\nexport * from './company-access.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { CompanyCalendar } from './company-calendar.model';\r\n\r\nexport const entityName = 'CompanyDate';\r\n\r\n@Injectable()\r\nexport class CompanyCalendarDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: CompanyCalendar): CompanyCalendar {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.ScheduledDateID,\r\n ScheduledStartDate: moment(item.ScheduledStartDate).toDate(),\r\n ScheduledEndDate: moment(item.ScheduledEndDate).toDate()\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface CompanyCalendar extends DataServiceEntity {\r\n ScheduledDateID: string;\r\n ScheduledDateType: string;\r\n ScheduledDatePurpose: string;\r\n ScheduledStartDate: Date;\r\n ScheduledEndDate: Date;\r\n DateColor: string;\r\n}\r\n","export * from './company-calendar.data-service';\r\nexport * from './company-calendar.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { Contract } from './contract.model';\r\n\r\nexport const entityName = 'Contract';\r\n\r\n@Injectable()\r\nexport class ContractDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: Contract): Contract {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.ContractListID\r\n };\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface Contract extends DataServiceEntity {\r\n ContractDesc: string;\r\n ContractListID: string;\r\n ContractType: string;\r\n HasActivity?: boolean;\r\n IsActive: boolean;\r\n}\r\n","export * from './contract.data-service';\r\nexport * as Summary from './summary';\r\nexport * from './contract.model';\r\n// export * from './summary/contract-summary.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataService,\r\n DefaultDataServiceConfig,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport { IGenericResponse, ResponseStatus } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { ContractSummary } from './contract-summary.model';\r\n\r\nexport const entityName = 'ContractBudgetSummary';\r\n\r\n@Injectable()\r\nexport class ContractSummaryDataService extends DefaultDataService {\r\n private uri: string;\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n private log: LoggingService,\r\n private config: DefaultDataServiceConfig,\r\n private store: Store\r\n ) {\r\n super(entityName, http, httpUrlGenerator, config);\r\n log.verbose({ type: 'ContractSummaryDataService', msg: '::', config });\r\n // entityResource gives the singular version of the entity name (EmployeePayOvr in this case)\r\n this.entitiesUrl = httpUrlGenerator.entityResource(\r\n entityName,\r\n config.root as string,\r\n false\r\n );\r\n }\r\n getAll(): Observable {\r\n this.log.verbose({ type: 'ContractSummaryDataService:getAll' });\r\n return super.getAll().pipe(\r\n tap(contracts =>\r\n this.log.verbose({\r\n type: 'ContractSummaryDataService:getAll',\r\n contracts\r\n })\r\n ),\r\n map(Contracts => Contracts.map(p => this.mapContractSummary(p))),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n update(update: Update): Observable {\r\n this.log.verbose({ type: 'ContractSummaryDataService:update', update });\r\n // return super.update(update);\r\n return this.save(update);\r\n }\r\n upsert(entity: ContractSummary): Observable {\r\n this.log.verbose({ type: 'ContractSummaryDataService:upsert', entity });\r\n return this.save({ id: entity.id as any, changes: entity });\r\n // return super.upsert(entity);\r\n }\r\n private save(update: Update): Observable {\r\n this.log.verbose({ type: 'ContractSummaryDataService:save', update });\r\n const item = {\r\n ...update.changes\r\n } as any;\r\n delete item.authorization;\r\n delete item.original;\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${entityName}List`]: [item]\r\n })\r\n .pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: 'ContractSummaryDataService:save:resp',\r\n resp\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.map(x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID: update.changes.original\r\n ? update.changes.original.id\r\n : update.changes.id || update.id\r\n }\r\n }))\r\n })\r\n )\r\n );\r\n throwError(\r\n new Error(\r\n resp.ErrorMessages.reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n )\r\n )\r\n );\r\n return {\r\n // ...this.mapContractSummary(update.changes as ContractSummary),\r\n ...update.changes.original,\r\n Status: resp.Items[0].Status\r\n } as ContractSummary;\r\n }\r\n return {\r\n ...this.mapContractSummary(resp.Items[0]),\r\n Status: {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Saved'\r\n }\r\n } as ContractSummary;\r\n // resp.Items[0].id\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n\r\n private mapContractSummary(p: ContractSummary): ContractSummary {\r\n return {\r\n ...p,\r\n id: p.Contractlistid,\r\n BudgetEndDate: moment(p.BudgetEndDate).isValid()\r\n ? moment(p.BudgetEndDate).toDate()\r\n : null,\r\n Totalamountvariance: p.Totalamountbudget - p.Totalamountspent,\r\n Totalhoursvariance: p.Totalhoursbudget - p.Totalhoursspent\r\n };\r\n }\r\n}\r\n","import { IId, IStatusMessage } from '../../../shared';\r\nimport { Contract } from '../contract.model';\r\n\r\nexport interface ContractSummary extends Contract {\r\n id: IId;\r\n ActiveAuthCnt: number;\r\n Budgetcycle: string;\r\n Budgetcycleid: string;\r\n BudgetEndDate: Date;\r\n Budgetlevel: string;\r\n Budgetlevelid: number;\r\n BudgetLock: boolean;\r\n Contractdesc: string;\r\n Contractfunding: number;\r\n Contractlistid: string;\r\n Contractvalue: number;\r\n Totalamountbudget: number;\r\n Totalamountspent: number;\r\n Totalamountvariance: number;\r\n Totalhoursbudget: number;\r\n Totalhoursspent: number;\r\n Totalhoursvariance: number;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","export * from './contract-summary.data-service';\r\nexport * from './contract-summary.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator, QueryParams } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { CumulativeUpload } from './cumulative-upload.model';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { DisplayMessageMinimum } from '../../common';\r\nimport * as fromShared from '../../shared';\r\n\r\nexport const entityName = 'CumulativeUpload';\r\n\r\n@Injectable()\r\nexport class CumulativeUploadDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n getWithQuery(params: string | QueryParams): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):getWithQuery`,\r\n params\r\n });\r\n const result = this.getWithQueryPOST(params);\r\n return result.pipe(\r\n tap(items =>\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...items\r\n .filter(\r\n l =>\r\n l &&\r\n l.Status &&\r\n l.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(l => l.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n )\r\n )\r\n );\r\n }\r\n\r\n mapItems(item: CumulativeUpload): CumulativeUpload {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from \"../data-service.entity\";\r\n\r\nexport interface CumulativeUpload extends DataServiceEntity {\r\n Asofdate: string;\r\n}\r\n","export * from './cumulative-upload.data-service';\r\nexport * from './cumulative-upload.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDynamicDataService } from '../efaact.dynamic-data-service';\r\nimport { DashboardSettings } from './dashboard-settings.model';\r\n\r\n\r\nexport const entityName = 'DashboardSettings';\r\n\r\n@Injectable()\r\nexport class DashboardSettingsDataService extends EfaactDynamicDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(\r\n http,\r\n httpUrlGenerator,\r\n entityName,\r\n log,\r\n config,\r\n store\r\n );\r\n }\r\n\r\n mapItems(item: DashboardSettings): DashboardSettings {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.DashboardItemID\r\n };\r\n }\r\n}\r\n","import { Process } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface DashboardSettings extends DataServiceEntity {\r\n DashboardItemID: number;\r\n DashboardItem : string;\r\n DashboardItemDesc: string;\r\n IsVisible: boolean;\r\n}\r\n","export * from './dashboard-settings.data-service';\r\nexport * from './dashboard-settings.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDynamicDataService } from '../../efaact.dynamic-data-service';\r\nimport { Accrual } from './accrual.model';\r\n\r\nexport const entityName = 'empleavegraph';\r\n\r\n@Injectable()\r\nexport class AccrualDataService extends EfaactDynamicDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(\r\n http,\r\n httpUrlGenerator,\r\n entityName,\r\n log,\r\n { ...config, root: `${config.root}/dashboard` },\r\n store\r\n );\r\n }\r\n\r\n mapItems(item: Accrual): Accrual {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.PPE\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from \"../../data-service.entity\";\r\n\r\nexport interface Accrual extends DataServiceEntity {\r\n PPE: string;\r\n PPEAvailableVacHrs: number;\r\n PPEAvailable_PlannedVacHrs: number;\r\n PPAccruedVacHrs: number;\r\n PPUsedVacHrs: number;\r\n PPPlannedHrs: number;\r\n PPRequestedHrs: number;\r\n PPEAvailableSickHrs: number;\r\n PPAccruedSickHrs: number;\r\n PPUsedSickHrs: number;\r\n}\r\n","export * from './accrual.data-service';\r\nexport * from './accrual.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDynamicDataService } from '../../efaact.dynamic-data-service';\r\nimport { DRStatus } from './dr-status.model';\r\n\r\nexport const entityName = 'supervisorgraph';\r\n\r\n@Injectable()\r\nexport class DRStatusDataService extends EfaactDynamicDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(\r\n http,\r\n httpUrlGenerator,\r\n entityName,\r\n log,\r\n { ...config, root: `${config.root}/dashboard` },\r\n store\r\n );\r\n }\r\n\r\n mapItems(item: DRStatus): DRStatus {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.Name_Task\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from \"../../data-service.entity\";\r\n\r\nexport interface DRStatus extends DataServiceEntity {\r\n HrsWorked: number;\r\n HrsPlanned: number;\r\n Name_Task: number;\r\n PercentWorked: string;\r\n}\r\n","export * from './dr-status.data-service';\r\nexport * from './dr-status.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDynamicDataService } from '../../efaact.dynamic-data-service';\r\nimport { Funding } from './funding.model';\r\n\r\nexport const entityName = 'contractgraph';\r\n\r\n@Injectable()\r\nexport class FundingDataService extends EfaactDynamicDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(\r\n http,\r\n httpUrlGenerator,\r\n entityName,\r\n log,\r\n { ...config, root: `${config.root}/dashboard` },\r\n store\r\n );\r\n }\r\n\r\n mapItems(item: Funding): Funding {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: `${item.ContractListID}-${item.CNListID}`\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from \"../../data-service.entity\";\r\n\r\nexport interface Funding extends DataServiceEntity {\r\n ContractListID: string;\r\n ContractDesc: string;\r\n CNListID: string;\r\n ChargeNumber: string;\r\n ContractValue: number;\r\n Funded: number;\r\n Spent: number;\r\n MaxProcessDate: string;\r\n LastFundingModOverall: string;\r\n}\r\n","export * from './funding.data-service';\r\nexport * from './funding.model';\r\n","export * from './role-status.data-service';\r\nexport * from './role-status.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDynamicDataService } from '../../efaact.dynamic-data-service';\r\nimport { StatusData } from './role-status.model';\r\n\r\nexport const entityName = 'RoleStatus';\r\n\r\n@Injectable()\r\nexport class RoleStatusDataService extends EfaactDynamicDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(\r\n http,\r\n httpUrlGenerator,\r\n entityName,\r\n log,\r\n { ...config, root: `${config.root}/dashboard` },\r\n store\r\n );\r\n }\r\n\r\n mapItems(item: StatusData): StatusData {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: `${item.ProcessID}-${item.RoleID}-${item.RoleAction}`\r\n };\r\n }\r\n}\r\n","import { Process } from '../../../shared';\r\nimport { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface StatusData extends DataServiceEntity {\r\n RoleAction: string;\r\n RoleActionCount: number;\r\n RoleID: number;\r\n ProcessID: number;\r\n Process?: Process;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n DefaultDataServiceConfig,\r\n EntityDataModule,\r\n EntityDataService\r\n} from '@ngrx/data';\r\nimport * as fromDataServices from '.';\r\nimport { LoggingService } from '../shared/services/logging';\r\nimport {\r\n AccrualPeriodDataService,\r\n entityName as accrualPeriodDataServiceName\r\n} from './accrual-period/accrual-period.data-service';\r\nimport {\r\n BurdenDataService,\r\n entityName as burdenDataServiceName\r\n} from './burden/burden.data-service';\r\nimport { ChargeNumberDataService } from './chargenumber';\r\nimport {\r\n CompanyAccessDataService,\r\n entityName as companyAccessDataServiceName\r\n} from './company-access/company-access.data-service';\r\nimport { DeferBillingDataService } from './defer-billing';\r\nimport {\r\n EmailAuditDataService,\r\n entityName as emailAuditDataServiceName\r\n} from './email-audit/email-audit.data-service';\r\nimport { defaultDataServiceConfig, entityConfig } from './entity-metadata';\r\nimport { FeeOnGADataService } from './fee-level/fee-on-ga';\r\nimport {\r\n entityName as invoiceContractCycleDataServiceName,\r\n InvoiceContractCycleDataService\r\n} from './invoice-contract-cycle/invoice-contract-cycle.data-service';\r\nimport {\r\n entityName as invoiceRegisterDataServiceName,\r\n InvoiceRegisterDataService\r\n} from './invoice-register/invoice-register.data-service';\r\nimport {\r\n entityName as invoiceAddressTypeDataServiceName,\r\n InvoiceAddressTypeDataService\r\n} from './invoice/setup/invoice-address-type/invoice-address-type.data-service';\r\nimport {\r\n entityName as invoiceDetailOptionsDataServiceName,\r\n InvoiceDetailOptionsDataService\r\n} from './invoice/setup/invoice-detail-options/invoice-detail-options.data-service';\r\nimport {\r\n entityName as invoicePropertyDataServiceName,\r\n InvoicePropertyDataService\r\n} from './invoice/setup/invoice-property/invoice-property.data-service';\r\nimport {\r\n entityName as invoiceSessionTypeDataServiceName,\r\n InvoiceSessionTypeDataService\r\n} from './invoice/setup/invoice-session-type/invoice-session-type.data-service';\r\nimport {\r\n entityName as jobAuditDataServiceName,\r\n JobAuditDataService\r\n} from './job-audit/job-audit.data-service';\r\nimport {\r\n entityName as manageUsersDataServiceName,\r\n ManageUsersDataService\r\n} from './manage-users/manage-users.data-service';\r\nimport { PtoPolicyAssignmentDataService } from './pto-policy/assignment';\r\nimport { PtoPolicySetupDataService } from './pto-policy/setup';\r\nimport { RateCeilingDataService } from './rate-ceiling';\r\nimport { entityName as recalculateSchedulesDataServiceName } from './recalculate-transactions/recalculate-schedules/recalculate-schedules.data-service';\r\nimport { TimecardSequenceDataService } from './timecard-sequence';\r\nimport { JobTimerDataService } from './job-timer/job-timer.data-service';\r\nimport { entityName as jobTimerDataServiceName } from './job-timer/job-timer.data-service';\r\nimport { ToasterDataService } from './toaster/toaster.data-service';\r\nimport { entityName as toasterDataServiceName } from './toaster/toaster.data-service';\r\nimport { RoleStatusDataService } from './dashboard/status/role-status.data-service';\r\nimport { entityName as roleStatusDataServiceName } from './dashboard/status/role-status.data-service';\r\nimport { FundingDataService } from './dashboard/funding/funding.data-service';\r\nimport { entityName as fundingDataServiceName } from './dashboard/funding/funding.data-service';\r\nimport { DRStatusDataService } from './dashboard/dr-status/dr-status.data-service';\r\nimport { entityName as drStatusDataServiceName } from './dashboard/dr-status/dr-status.data-service';\r\nimport { AccrualDataService } from './dashboard/accrual/accrual.data-service';\r\nimport { entityName as accrualDataServiceName } from './dashboard/accrual/accrual.data-service';\r\nimport { EmployeePayrollItemDataService } from './employee-payroll-item/employee-payroll-item.data-service';\r\nimport { entityName as employeePayrollItemDataServiceName } from './employee-payroll-item/employee-payroll-item.data-service';\r\nimport { DashboardSettingsDataService } from './dashboard-settings/dashboard-settings.data-service';\r\nimport { entityName as dashboardSettingsDataServiceName } from './dashboard-settings/dashboard-settings.data-service';\r\nimport { RatePlanningDataService } from './rate-planning/rate-planning.data-service';\r\nimport { entityName as ratePlanningDataServiceName } from './rate-planning/rate-planning.data-service';\r\nimport { IndirectRateAdjustDataService } from './indirect-rate-adjust/indirect-rate-adjust.data-service';\r\nimport { entityName as indirectRateAdjustDataServiceName } from './indirect-rate-adjust/indirect-rate-adjust.data-service';\r\nimport { RegistrationDataService } from './registration/registration.data-service';\r\nimport { entityName as registrationDataServiceName } from './registration/registration.data-service';\r\nimport { VendorDataService } from './vendor/vendor.data-service';\r\nimport { entityName as vendorDataServiceName } from './vendor/vendor.data-service';\r\nimport { PayrollExportDataService } from './payroll/payroll-export/payroll-export.data-service';\r\nimport { entityName as payrollExportDataServiceName } from './payroll/payroll-export/payroll-export.data-service';\r\nimport { MergeDataService, entityName as mergeDataServiceName } from './merge/merge.data-service';\r\nimport { InvoiceDataService } from './invoice/invoice.data-service';\r\nimport { entityName as invoiceDataServiceName } from './invoice/invoice.data-service';\r\nimport { CumulativeUploadDataService, entityName as cumulativeUploadDataServiceName } from './cumulative-upload/cumulative-upload.data-service';\r\nimport { EmployeeValidationDataService } from './employee-validation/employee-validation.data-service';\r\nimport { entityName as employeeValidationDataServiceName} from './employee-validation/employee-validation.data-service';\r\nimport { PayrollValidationDataService } from './payroll-validation/payroll-validation.data-service';\r\nimport { entityName as payrollValidationDataServiceName} from './payroll-validation/payroll-validation.data-service';\r\n//import { TaskTimerDataService, entityName as taskTimerDataServiceName } from './task-timer/task-timer.data-service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, EntityDataModule.forRoot(entityConfig)],\r\n providers: [\r\n {\r\n provide: DefaultDataServiceConfig,\r\n useValue: defaultDataServiceConfig\r\n },\r\n fromDataServices.ProjectBudget.ProjectBudgetDataService,\r\n fromDataServices.Contract.Summary.ContractSummaryDataService,\r\n fromDataServices.Contract.ContractDataService,\r\n fromDataServices.PayrateOverride.PayrateOverrideDataService,\r\n fromDataServices.PremiumPay.PremiumPayDataService,\r\n fromDataServices.TimecardClass.TimecardClassDataService,\r\n fromDataServices.BudgetLevel.BudgetLevelDataService,\r\n fromDataServices.BudgetCycle.BudgetCycleDataService,\r\n fromDataServices.SignaturePolicy.SignaturePolicyDataService,\r\n fromDataServices.FeeHistory.FeeHistoryDataService,\r\n // fromDataServices.Reconciliation.Timecard.ReconciliationTimecardDataService,\r\n // fromDataServices.Reconciliation.PayperiodLabor.ReconciliationPayperiodLaborDataService,\r\n fromDataServices.Reconciliation.ReconciliationDataService,\r\n fromDataServices.Reconciliation.Fields.ReconciliationFieldDataService,\r\n fromDataServices.Reconciliation.Template\r\n .ReconciliationTemplateDataService,\r\n fromDataServices.ServiceItem.History.ServiceItemHistoryDataService,\r\n fromDataServices.Invoice.Setup.Invoice.InvoiceSetupDataService,\r\n fromDataServices.Invoice.Setup.Address.InvoiceAddressSetupDataService,\r\n fromDataServices.Invoice.Setup.Selections.InvoiceSelectionsDataService,\r\n fromDataServices.Invoice.Setup.Session.InvoiceSessionSetupDataService,\r\n fromDataServices.Address.AddressDataService,\r\n InvoiceSessionTypeDataService,\r\n InvoiceAddressTypeDataService,\r\n InvoicePropertyDataService,\r\n CompanyAccessDataService,\r\n fromDataServices.RecalculateSchedules.RecalculateSchedulesDataService,\r\n fromDataServices.RecalculateContracts.RecalculateContractsDataService,\r\n fromDataServices.RecalculateSettings.RecalculateSettingsDataService,\r\n fromDataServices.IndirectRateReview.IndirectRateReviewDataService,\r\n fromDataServices.DeferBilling.DeferBillingDataService,\r\n fromDataServices.PolicySetup.PtoPolicySetupDataService,\r\n fromDataServices.PolicyAssignment.PtoPolicyAssignmentDataService,\r\n ManageUsersDataService,\r\n FeeOnGADataService,\r\n AccrualPeriodDataService,\r\n EmailAuditDataService,\r\n BurdenDataService,\r\n JobAuditDataService,\r\n fromDataServices.IndirectRateHistory.IndirectRateHistoryDataService,\r\n TimecardSequenceDataService,\r\n InvoiceContractCycleDataService,\r\n InvoiceDetailOptionsDataService,\r\n ChargeNumberDataService,\r\n InvoiceRegisterDataService,\r\n JobTimerDataService,\r\n ToasterDataService,\r\n RoleStatusDataService,\r\n FundingDataService,\r\n DRStatusDataService,\r\n AccrualDataService,\r\n EmployeePayrollItemDataService,\r\n DashboardSettingsDataService,\r\n RatePlanningDataService,\r\n IndirectRateAdjustDataService,\r\n RegistrationDataService,\r\n VendorDataService,\r\n PayrollExportDataService,\r\n MergeDataService,\r\n InvoiceDataService,\r\n CumulativeUploadDataService,\r\n EmployeeValidationDataService,\r\n PayrollValidationDataService,\r\n //TaskTimerDataService\r\n ]\r\n})\r\nexport class DataServicesModule {\r\n constructor(\r\n private log: LoggingService,\r\n entityDataService: EntityDataService,\r\n projectBudgetdataService: fromDataServices.ProjectBudget.ProjectBudgetDataService,\r\n contractSummaryDataService: fromDataServices.Contract.Summary.ContractSummaryDataService,\r\n contractDataService: fromDataServices.Contract.ContractDataService,\r\n payrateOverrideDataService: fromDataServices.PayrateOverride.PayrateOverrideDataService,\r\n premiumPayService: fromDataServices.PremiumPay.PremiumPayDataService,\r\n timecardClassDataService: fromDataServices.TimecardClass.TimecardClassDataService,\r\n budgetLevelDataService: fromDataServices.BudgetLevel.BudgetLevelDataService,\r\n budgetCycleDataService: fromDataServices.BudgetCycle.BudgetCycleDataService,\r\n signaturePolicyDataService: fromDataServices.SignaturePolicy.SignaturePolicyDataService,\r\n feeHistoryDataService: fromDataServices.FeeHistory.FeeHistoryDataService,\r\n reconciliationDataService: fromDataServices.Reconciliation.ReconciliationDataService,\r\n reconciliationFieldsDataService: fromDataServices.Reconciliation.Fields.ReconciliationFieldDataService,\r\n reconciliationTemplateDataService: fromDataServices.Reconciliation.Template.ReconciliationTemplateDataService,\r\n serviceItemHistoryDataService: fromDataServices.ServiceItem.History.ServiceItemHistoryDataService,\r\n invoiceSetupDataService: fromDataServices.Invoice.Setup.Invoice.InvoiceSetupDataService,\r\n invoiceSelectionsSetupDataService: fromDataServices.Invoice.Setup.Selections.InvoiceSelectionsDataService,\r\n invoiceAddressSetupDataService: fromDataServices.Invoice.Setup.Address.InvoiceAddressSetupDataService,\r\n invoiceSessionSetupDataService: fromDataServices.Invoice.Setup.Session.InvoiceSessionSetupDataService,\r\n addressDataService: fromDataServices.Address.AddressDataService,\r\n invoiceSessionTypeDataService: InvoiceSessionTypeDataService,\r\n invoiceAddressTypeDataService: InvoiceAddressTypeDataService,\r\n invoicePropertyDataService: InvoicePropertyDataService,\r\n companyAccessDataService: CompanyAccessDataService,\r\n recalculateSchedulesDataService: fromDataServices.RecalculateSchedules.RecalculateSchedulesDataService,\r\n recalculateContractsDataService: fromDataServices.RecalculateContracts.RecalculateContractsDataService,\r\n recalculateSettingsDataService: fromDataServices.RecalculateSettings.RecalculateSettingsDataService,\r\n indirectRateReviewDataService: fromDataServices.IndirectRateReview.IndirectRateReviewDataService,\r\n deferBillingDataService: DeferBillingDataService,\r\n manageUsersDataService: ManageUsersDataService,\r\n feeOnGADataService: FeeOnGADataService,\r\n accrualPeriodDataService: AccrualPeriodDataService,\r\n policySetupDataService: PtoPolicySetupDataService,\r\n policyAssignmentDataService: PtoPolicyAssignmentDataService,\r\n emailAuditDataService: EmailAuditDataService,\r\n burdenDataService: BurdenDataService,\r\n jobAuditDataService: JobAuditDataService,\r\n rateCeilingDataService: RateCeilingDataService,\r\n indirectRateHistoryDataService: fromDataServices.IndirectRateHistory.IndirectRateHistoryDataService,\r\n timecardSequenceDataService: TimecardSequenceDataService,\r\n invoiceContractCycleDataService: InvoiceContractCycleDataService,\r\n invoiceDetailOptionsDataService: InvoiceDetailOptionsDataService,\r\n chargeNumberDataService: ChargeNumberDataService,\r\n invoiceRegisterDataService: InvoiceRegisterDataService,\r\n jobTimerDataService: JobTimerDataService,\r\n toasterDataService: ToasterDataService,\r\n roleStatusDataService: RoleStatusDataService,\r\n fundingDataService: FundingDataService,\r\n drStatusDataService: DRStatusDataService,\r\n accrualDataService: AccrualDataService,\r\n employeePayrollItemDataService: EmployeePayrollItemDataService,\r\n dashboardSettingsDataService: DashboardSettingsDataService,\r\n ratePlanningDataService: RatePlanningDataService,\r\n indirectRateAdjustDataService: IndirectRateAdjustDataService,\r\n registrationDataService: RegistrationDataService,\r\n vendorDataService: VendorDataService,\r\n payrollExportDataService: PayrollExportDataService,\r\n mergeDataService: MergeDataService,\r\n invoiceDataService: InvoiceDataService,\r\n cumulativeUploadDataService: CumulativeUploadDataService,\r\n employeeValidationDataService: EmployeeValidationDataService,\r\n payrollValidationDataService: PayrollValidationDataService\r\n //taskTimerDataService: TaskTimerDataService\r\n ) {\r\n this.log.verbose({ type: 'DataServicesModule::' });\r\n entityDataService.registerService(\r\n fromDataServices.FeeOnGA.entityName,\r\n feeOnGADataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.DeferBilling.entityName,\r\n deferBillingDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.RecalculateSchedules.entityName,\r\n recalculateSchedulesDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.RecalculateContracts.entityName,\r\n recalculateContractsDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.RecalculateSettings.entityName,\r\n recalculateSettingsDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.ProjectBudget.entityName,\r\n projectBudgetdataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Contract.Summary.entityName,\r\n contractSummaryDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Contract.entityName,\r\n contractDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.PayrateOverride.entityName,\r\n payrateOverrideDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.PremiumPay.entityName,\r\n premiumPayService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.TimecardClass.entityName,\r\n timecardClassDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.BudgetLevel.entityName,\r\n budgetLevelDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.BudgetCycle.entityName,\r\n budgetCycleDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.SignaturePolicy.entityName,\r\n signaturePolicyDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.FeeHistory.entityName,\r\n feeHistoryDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Reconciliation.entityName,\r\n reconciliationDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Reconciliation.Fields.entityName,\r\n reconciliationFieldsDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Reconciliation.Template.entityName,\r\n reconciliationTemplateDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.ServiceItem.History.entityName,\r\n serviceItemHistoryDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Invoice.Setup.Invoice.entityName,\r\n invoiceSetupDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Invoice.Setup.Selections.entityName,\r\n invoiceSelectionsSetupDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Invoice.Setup.Address.entityName,\r\n invoiceAddressSetupDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Invoice.Setup.Session.entityName,\r\n invoiceSessionSetupDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.Address.entityName,\r\n addressDataService\r\n );\r\n entityDataService.registerService(\r\n invoiceSessionTypeDataServiceName,\r\n invoiceSessionTypeDataService\r\n );\r\n entityDataService.registerService(\r\n invoiceAddressTypeDataServiceName,\r\n invoiceAddressTypeDataService\r\n );\r\n entityDataService.registerService(\r\n invoicePropertyDataServiceName,\r\n invoicePropertyDataService\r\n );\r\n entityDataService.registerService(\r\n companyAccessDataServiceName,\r\n companyAccessDataService\r\n );\r\n entityDataService.registerService(\r\n recalculateSchedulesDataServiceName,\r\n recalculateSchedulesDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.IndirectRateReview.entityName,\r\n indirectRateReviewDataService\r\n );\r\n entityDataService.registerService(\r\n manageUsersDataServiceName,\r\n manageUsersDataService\r\n );\r\n entityDataService.registerService(\r\n accrualPeriodDataServiceName,\r\n accrualPeriodDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.PolicySetup.entityName,\r\n policySetupDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.PolicyAssignment.entityName,\r\n policyAssignmentDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.RateCeiling.entityName,\r\n rateCeilingDataService\r\n );\r\n entityDataService.registerService(\r\n emailAuditDataServiceName,\r\n emailAuditDataService\r\n );\r\n entityDataService.registerService(\r\n burdenDataServiceName,\r\n burdenDataService\r\n );\r\n entityDataService.registerService(\r\n jobAuditDataServiceName,\r\n jobAuditDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.IndirectRateHistory.entityName,\r\n indirectRateHistoryDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.TimecardSequence.entityName,\r\n timecardSequenceDataService\r\n );\r\n entityDataService.registerService(\r\n invoiceContractCycleDataServiceName,\r\n invoiceContractCycleDataService\r\n );\r\n entityDataService.registerService(\r\n invoiceDetailOptionsDataServiceName,\r\n invoiceDetailOptionsDataService\r\n );\r\n entityDataService.registerService(\r\n fromDataServices.ChargeNumber.entityName,\r\n chargeNumberDataService\r\n );\r\n entityDataService.registerService(\r\n invoiceRegisterDataServiceName,\r\n invoiceRegisterDataService\r\n );\r\n entityDataService.registerService(\r\n jobTimerDataServiceName,\r\n jobTimerDataService\r\n );\r\n entityDataService.registerService(\r\n toasterDataServiceName,\r\n toasterDataService\r\n );\r\n entityDataService.registerService(\r\n roleStatusDataServiceName,\r\n roleStatusDataService\r\n );\r\n entityDataService.registerService(\r\n fundingDataServiceName,\r\n fundingDataService\r\n );\r\n entityDataService.registerService(\r\n drStatusDataServiceName,\r\n drStatusDataService\r\n );\r\n entityDataService.registerService(\r\n accrualDataServiceName,\r\n accrualDataService\r\n );\r\n entityDataService.registerService(\r\n employeePayrollItemDataServiceName,\r\n employeePayrollItemDataService\r\n );\r\n entityDataService.registerService(\r\n dashboardSettingsDataServiceName,\r\n dashboardSettingsDataService\r\n );\r\n entityDataService.registerService(\r\n ratePlanningDataServiceName,\r\n ratePlanningDataService\r\n );\r\n entityDataService.registerService(\r\n indirectRateAdjustDataServiceName,\r\n indirectRateAdjustDataService\r\n );\r\n entityDataService.registerService(\r\n registrationDataServiceName,\r\n registrationDataService\r\n );\r\n entityDataService.registerService(\r\n vendorDataServiceName,\r\n vendorDataService\r\n );\r\n entityDataService.registerService(\r\n payrollExportDataServiceName,\r\n payrollExportDataService\r\n );\r\n entityDataService.registerService(\r\n invoiceDataServiceName,\r\n invoiceDataService\r\n );\r\n entityDataService.registerService(\r\n mergeDataServiceName,\r\n mergeDataService\r\n );\r\n entityDataService.registerService(\r\n cumulativeUploadDataServiceName,\r\n cumulativeUploadDataService\r\n );\r\n // entityDataService.registerService(\r\n // taskTimerDataServiceName,\r\n // taskTimerDataService\r\n // );\r\n entityDataService.registerService(\r\n employeeValidationDataServiceName,\r\n employeeValidationDataService\r\n );\r\n entityDataService.registerService(\r\n payrollValidationDataServiceName,\r\n payrollValidationDataService\r\n );\r\n}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataServiceConfig,\r\n HttpUrlGenerator,\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as moment from 'moment';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { DeferBilling } from './defer-billing.model';\r\n\r\nexport const entityName = 'DeferBilling';\r\n\r\n@Injectable()\r\nexport class DeferBillingDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: DeferBilling): DeferBilling {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.Txnid,\r\n Billdate: moment(item.Billdate).isValid() ? moment(item.Billdate).toDate() : null\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface DeferBilling extends DataServiceEntity {\r\n Txnid: number;\r\n Sessionid: number;\r\n Tasklistid: string;\r\n Employeelistid: string;\r\n Silistid: string;\r\n Pilistid: string;\r\n Txndate: Date;\r\n Billdate: Date;\r\n Hoursworked: number;\r\n Invoiceamount: number;\r\n Invoiceburdened: number;\r\n Ohcost: number;\r\n Gacost: number;\r\n Mhcost: number;\r\n Feecost: number;\r\n Frcost: number;\r\n Costcenterid: number;\r\n Modifieddate: Date;\r\n Modifiedby: string;\r\n Createdate: Date;\r\n Contractlistid: string;\r\n Contractdesc: string;\r\n Adjustmentstatus: string;\r\n Billablestatus: string;\r\n Invoiceenddate: Date;\r\n Invoicenbr: number;\r\n Deferred: boolean;\r\n TxnNotes: string;\r\n Txntype: string;\r\n Task: string;\r\n ServiceItem: string;\r\n PayrollItem: string;\r\n Person: string;\r\n CostCenter: string;\r\n}\r\n","export * from './defer-billing.data-service';\r\nexport * from './defer-billing.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n DataServiceError,\r\n DefaultDataService,\r\n DefaultDataServiceConfig,\r\n HttpUrlGenerator,\r\n QueryParams\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IDeleteEntity,\r\n IGenericResponse,\r\n ResponseStatus\r\n} from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { DataServiceEntity } from './data-service.entity';\r\nexport abstract class EfaactDataService<\r\n T extends DataServiceEntity\r\n> extends DefaultDataService {\r\n // protected uri: string;\r\n protected usePostForQuery = false;\r\n protected useJSONStringForPost = false;\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n protected entityName: string,\r\n protected log: LoggingService,\r\n protected config: DefaultDataServiceConfig,\r\n protected store: Store\r\n ) {\r\n super(entityName, http, httpUrlGenerator, config);\r\n // this.entityUrl = httpUrlGenerator.entityResource(\r\n // entityName,\r\n // config.root,\r\n // this.trailingSlashEndpoints\r\n // );\r\n // this.entitiesUrl = httpUrlGenerator.collectionResource(\r\n // entityName,\r\n // config.root\r\n // );\r\n\r\n // this.uri = httpUrlGenerator.collectionResource(entityName, config.root);\r\n log.verbose({\r\n type: `${entityName}DataService(EfaactDataService)`,\r\n msg: '::',\r\n entityUrl: this.entityUrl,\r\n entitiesUrl: this.entitiesUrl\r\n });\r\n }\r\n abstract mapItems(item: T): T;\r\n getAll(): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):getAll`\r\n });\r\n return super.getAll().pipe(\r\n map(resp => this.mapGetResponse(resp)),\r\n map(items => items.map(p => this.mapItems(p))),\r\n tap(items =>\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...items\r\n .filter(\r\n l =>\r\n l &&\r\n l.Status &&\r\n l.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(l => l.Status)\r\n ].filter(\r\n fromShared.Errors.filterErrors\r\n ) as fromShared.IStatusMessage[]\r\n )\r\n )\r\n ),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n /**\r\n * Makes an API call with query parameters, if one parameter sent it uses a GET, otherwise uses POST\r\n * @param params {string | QueryParams} parameters to send to the API call\r\n */\r\n getWithQuery(params: string | QueryParams): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):getWithQuery`,\r\n params\r\n });\r\n let result: Observable;\r\n if (this.usePostForQuery) {\r\n result = this.getWithQueryPOST(params);\r\n } else {\r\n if (typeof params === 'string') {\r\n result = this.getWithQueryGET(params);\r\n } else {\r\n const keys = Object.keys(params);\r\n if (keys.length < 2) {\r\n result = this.getWithQueryGET(params);\r\n } else {\r\n result = this.getWithQueryPOST(params);\r\n }\r\n }\r\n }\r\n return result.pipe(\r\n tap(items =>\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...items\r\n .filter(\r\n l =>\r\n l &&\r\n l.Status &&\r\n l.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(l => l.Status)\r\n ].filter(\r\n fromShared.Errors.filterErrors\r\n ) as fromShared.IStatusMessage[]\r\n )\r\n )\r\n )\r\n );\r\n }\r\n /**\r\n * eFAACT API doesn't use this yet, if it starts to will need to override\r\n * @param id {string | number} id of item to retrieve\r\n */\r\n getById(id: string | number): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):getById`\r\n });\r\n return super.getById(id).pipe(\r\n map(\r\n item => this.mapItems(item),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n )\r\n );\r\n }\r\n /**\r\n * eFAACT API doesn't use this yet, if it starts to will need to override\r\n * @param entity {T} entity to add\r\n */\r\n public add(entity: T): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):add`\r\n });\r\n return super.add(entity).pipe(\r\n map(\r\n item => this.mapItems(item),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n )\r\n );\r\n }\r\n\r\n /*\r\n * this is geared around deleting ONE item at a time (to comply with REST standard DELETE requests)\r\n * delete is optimistic by default (meaning items are removed from the store cache BEFORE http response is received)\r\n * https://ngrx.io/api/data/EntityDispatcherDefaultOptions\r\n * need to change this to pessimistic in case of failures.\r\n */\r\n delete(key: number | string): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):delete`,\r\n key\r\n });\r\n const params = {\r\n EntityIDs: [key]\r\n };\r\n return this.http\r\n .request>(\r\n 'DELETE',\r\n this.entitiesUrl,\r\n {\r\n body: params\r\n }\r\n )\r\n .pipe(\r\n tap(resp =>\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):delete`,\r\n resp\r\n })\r\n ),\r\n map(resp => this.mapPutResponse(resp)),\r\n\r\n tap(resp =>\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):delete`,\r\n resp\r\n })\r\n ),\r\n map(resp => {\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'DELETE', url: this.entitiesUrl }\r\n )\r\n );\r\n } else {\r\n return (resp.Items[0] as any).EntityID;\r\n }\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n update(update: Update): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):update`,\r\n update\r\n });\r\n return this.save(update);\r\n }\r\n upsert(entity: T): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):upsert`,\r\n entity\r\n });\r\n return this.save({ id: entity.id, changes: entity } as Update);\r\n }\r\n protected save(update: Update): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save`,\r\n update\r\n });\r\n const item = {\r\n ...update.changes\r\n } as any;\r\n delete item.original;\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${this.entityName}List`]: [item]\r\n })\r\n .pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save:resp`,\r\n resp\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n update.changes.original &&\r\n update.changes.original.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n\r\n return {\r\n ...update.changes,\r\n ...update.changes.original,\r\n ...resp.Items[0],\r\n Status:\r\n resp.Items[0] && resp.Items[0].Status\r\n ? resp.Items[0].Status\r\n : {\r\n StatusCode: resp.StatusCode,\r\n Message: resp.StatusType\r\n }\r\n } as T;\r\n }\r\n if (\r\n resp.StatusCode === ResponseStatus.Warning &&\r\n resp.Items.some(x => !x.Status.MsgEntityID)\r\n ) {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save:ResponseStatus.Warning`,\r\n resp\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(\r\n x =>\r\n !!x &&\r\n x.Status &&\r\n !x.Status.MsgEntityID\r\n )\r\n })\r\n )\r\n );\r\n }\r\n const result = {\r\n ...this.mapItems({\r\n id:\r\n update && update.changes && update.changes.id\r\n ? update.changes.id\r\n : update.changes.original\r\n ? update.changes.original.id\r\n : null,\r\n ...resp.Items[0]\r\n }),\r\n Status: {\r\n StatusCode: resp.StatusCode,\r\n Message:\r\n resp.Items &&\r\n resp.Items[0] &&\r\n resp.Items[0].Status &&\r\n resp.Items[0].Status.Message\r\n ? resp.Items[0].Status.Message\r\n : resp.StatusType\r\n }\r\n } as T;\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):result`,\r\n result\r\n });\r\n return result;\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n protected getWithQueryGET(params: string | QueryParams): Observable {\r\n return super.getWithQuery(params).pipe(\r\n map(resp => this.mapGetResponse(resp)),\r\n map(items => items.map(item => this.mapItems(item))),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n protected getWithQueryPOST(params: string | QueryParams): Observable {\r\n let _params = params;\r\n if (this.useJSONStringForPost) {\r\n _params = JSON.parse(params as string);\r\n }\r\n return this.http.post(this.entitiesUrl, _params).pipe(\r\n tap(resp =>\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):getWithQueryPOST:resp`,\r\n resp\r\n })\r\n ),\r\n map(resp => this.mapGetResponse(resp)),\r\n map(items => items.map(item => this.mapItems(item))),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n protected mapPutResponse(resp: any): IGenericResponse {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):mapPutResponse:resp`,\r\n resp\r\n });\r\n return resp as IGenericResponse;\r\n }\r\n /**\r\n * Call this method to translate the response (i.e. from a JSON string to JSON) before mapping each item.\r\n * @param resp {any} raw response from the API call\r\n */\r\n protected mapGetResponse(resp: any): T[] {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):mapGetResponse:resp`,\r\n resp\r\n });\r\n return resp as T[];\r\n }\r\n}\r\n","import { Guid, ResponseStatus } from '../shared';\r\nimport { DataServiceEntity } from './data-service.entity';\r\nimport { EfaactDataService } from './efaact.data-service';\r\n\r\nexport abstract class EfaactDynamicDataService<\r\n T extends DataServiceEntity\r\n> extends EfaactDataService {\r\n /**\r\n * This is a little confusing as it maps values coming in that look like {\r\n \"20160131_TxnID\": 276494.00,\r\n \"20160131_Hours\": 50.00,\r\n \"20160131_Amount\": 0.00\r\n }\r\n into a object with the name before _, and properties of the name after the _, and values, so they end up looking like:\r\n '20160131': {\r\n TxnID: 276494,\r\n Hours: 50,\r\n Amount: 0\r\n },\r\n '20160229': {\r\n TxnID: null,\r\n Hours: null,\r\n Amount: null\r\n },\r\n '20160331': {\r\n TxnID: null,\r\n Hours: null,\r\n Amount: null\r\n },\r\n it leaves any properties without _ alone\r\n * @param item {T}\r\n */\r\n mapItems(item: T): T {\r\n const mapped = {\r\n ...item,\r\n id: Guid.newGuid()\r\n // any transformations here, i.e. Dates\r\n };\r\n\r\n const keys = Object.keys(item);\r\n const dispCols = keys\r\n .filter(x => x !== 'Row_Version')\r\n .filter(x => x.includes('_'));\r\n const dynCols = dispCols.reduce((a, c) => {\r\n const k = c.split('_')[0];\r\n const k1 = c.split('_')[1];\r\n const cur = a[k] || {};\r\n\r\n cur[k1] = item[c];\r\n return Object.assign(a, {\r\n ...a,\r\n [k]: cur\r\n });\r\n }, {});\r\n\r\n dispCols.map(x => delete mapped[x]);\r\n const ret = {\r\n ...mapped,\r\n ...dynCols,\r\n Status: { StatusCode: ResponseStatus.None, Message: '' }\r\n };\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDynamicDataService):mapItems`,\r\n item,\r\n ret\r\n });\r\n return ret;\r\n }\r\n mapGetResponse(resp) {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDynamicDataService):mapResponse:resp`,\r\n resp\r\n });\r\n if (typeof resp === 'string' || resp instanceof String) {\r\n return JSON.parse(resp as string) as T[];\r\n }\r\n return resp;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { EmailAuditModel } from './email-audit.model';\r\n\r\nexport const entityName = 'EmailAudit';\r\n@Injectable({ providedIn: 'root' })\r\nexport class EmailAuditDataService extends EfaactDataService {\r\n mapItems(item: any): EmailAuditModel {\r\n const x = { ...item, id: item.Id };\r\n delete x.Id;\r\n return x;\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IId } from '../../common';\r\n\r\nexport interface EmailAuditModel {\r\n id: IId;\r\n Message: string;\r\n MessageDate: Date;\r\n Recipient: string;\r\n ReplyAddress: string;\r\n Row_Version: string;\r\n Status: any; // string\r\n Subject: string;\r\n Type: string;\r\n}\r\n","export * from './email-audit.data-service';\r\nexport * from './email-audit.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { EmployeePayrollItemModel } from './employee-payroll-item.model';\r\n\r\nexport const entityName = 'EmployeePayrollItem';\r\n@Injectable({ providedIn: 'root' })\r\nexport class EmployeePayrollItemDataService extends EfaactDataService {\r\n mapItems(item: EmployeePayrollItemModel): EmployeePayrollItemModel {\r\n return {\r\n ...item,\r\n id: `${item.EmployeeListID}-${item.PIListID}`,\r\n Status: {\r\n StatusCode: ResponseStatus.None,\r\n Message: ''\r\n }\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface EmployeePayrollItemModel\r\n extends DataServiceEntity {\r\n id: string | number;\r\n EmployeeListID: string;\r\n Employeename: string;\r\n PIListID: string;\r\n Payrollitem: string;\r\n PayRate: number;\r\n IsActive: boolean;\r\n Status: IStatusMessage;\r\n}\r\n","export * from './employee-payroll-item.model';\r\nexport * from './employee-payroll-item.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EmployeeValidationModel } from './employee-validation.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\n\r\nexport const entityName = 'EmployeeValidation';\r\n@Injectable({ providedIn: 'root' })\r\nexport class EmployeeValidationDataService extends EfaactDataService {\r\n mapItems(item: EmployeeValidationModel): EmployeeValidationModel {\r\n return item;\r\n // return {\r\n // ...item,\r\n // id: item.RowNumber\r\n // };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface EmployeeValidationModel\r\n extends DataServiceEntity {\r\n id: string | number;\r\n RowNumber: number;\r\n Status: IStatusMessage;\r\n}\r\n","export * from './employee-validation.model';\r\nexport * from './employee-validation.data-service';\r\n","import { DefaultDataServiceConfig, EntityMetadataMap } from '@ngrx/data';\r\nimport { environment } from '../../environments/environment';\r\nimport { entityName as accrualPeriodName } from './accrual-period/accrual-period.data-service';\r\nimport { entityName as addressName } from './address/address.data-service';\r\nimport { entityName as budgetCycleClassName } from './budget-cycle/budget-cycle.data-service';\r\nimport { entityName as budgetLevelClassName } from './budget-level/budget-level.data-service';\r\nimport { entityName as burdenName } from './burden/burden.data-service';\r\nimport { entityName as companyAccessName } from './company-access/company-access.data-service';\r\nimport { entityName as companyCalendarName } from './company-calendar/company-calendar.data-service';\r\nimport { entityName as contractName } from './contract/contract.data-service';\r\nimport { entityName as contractSummaryName } from './contract/summary/contract-summary.data-service';\r\nimport { entityName as deferBillingName } from './defer-billing/defer-billing.data-service';\r\nimport { entityName as emailAuditName } from './email-audit/email-audit.data-service';\r\nimport { entityName as feeHistoryName } from './fee-history/fee-history.data-service';\r\nimport { entityName as feeLevelName } from './fee-level/fee-level.data-service';\r\nimport { entityName as feeonGAName } from './fee-level/fee-on-ga/fee-on-ga.data-service';\r\nimport { entityName as indirectRateHistoryName } from './indirect-rate-history/indirect-rate-history.data-service';\r\nimport { entityName as indirectRateReviewName } from './indirect-rate-review/indirect-rate-review.data-service';\r\nimport { entityName as invoiceContractCycleName } from './invoice-contract-cycle/invoice-contract-cycle.data-service';\r\nimport { entityName as invoiceAddressSetupName } from './invoice/setup/address/invoice-address-setup.data-service';\r\nimport { entityName as invoiceAddressTypeName } from './invoice/setup/invoice-address-type/invoice-address-type.data-service';\r\nimport { entityName as invoiceDetailOptionsName } from './invoice/setup/invoice-detail-options/invoice-detail-options.data-service';\r\nimport { entityName as invoicePropertyName } from './invoice/setup/invoice-property/invoice-property.data-service';\r\nimport { entityName as invoiceSessionTypeName } from './invoice/setup/invoice-session-type/invoice-session-type.data-service';\r\n// import { entityName as reconciliationTimecardName } from './reconciliation/reconciliation-timecard/reconciliation-timecard.data-service';\r\n// import { entityName as reconciliationPayperiodLaborName } from './reconciliation/reconciliation-pay-period-labor/reconciliation-pay-period-labor.data-service';\r\nimport { entityName as invoiceSetupName } from './invoice/setup/invoice/invoice-setup.data-service';\r\nimport { entityName as invoiceSelectionSetupName } from './invoice/setup/selections/invoice-selections.data-service';\r\nimport { entityName as invoiceSessionSetupName } from './invoice/setup/session/invoice-session-setup.data-service';\r\nimport { entityName as jobAuditName } from './job-audit/job-audit.data-service';\r\nimport { entityName as manageUsersName } from './manage-users/manage-users.data-service';\r\nimport { entityName as manualAdjustmentName } from './manual-adjustment/manual-adjustment.data-service';\r\nimport { entityName as payrateOverrideName } from './payrate-override/payrate-override.data-service';\r\n// import { entityName as reconciliationTimecardName } from './reconciliation/reconciliation-timecard/reconciliation-timecard.data-service';\r\n// import { entityName as reconciliationPayperiodLaborName } from './reconciliation/reconciliation-pay-period-labor/reconciliation-pay-period-labor.data-service';\r\nimport { entityName as premiumPayName } from './premium-pay/premium-pay.data-service';\r\nimport { entityName as projectBudgetName } from './project-budget/project-budget.data-service';\r\nimport { entityName as policyAssignmentName } from './pto-policy/assignment/pto-policy-assignment.data-service';\r\nimport { entityName as policySetupName } from './pto-policy/setup/pto-policy.data-service';\r\nimport { entityName as rateCeilingName } from './rate-ceiling/rate-ceiling.data-service';\r\nimport { entityName as recalculateContractsName } from './recalculate-transactions/recalculate-contracts/recalculate-contracts.data-service';\r\nimport { entityName as recalculateSchedulesName } from './recalculate-transactions/recalculate-schedules/recalculate-schedules.data-service';\r\nimport { entityName as recalculateSettingsName } from './recalculate-transactions/recalculate-settings/recalculate-settings.data-service';\r\nimport { entityName as reconciliationFieldName } from './reconciliation/reconciliation-fields/reconciliation-field.data-service';\r\nimport { entityName as reconciliationTemplateName } from './reconciliation/reconciliation-templates/reconciliation-template.data-service';\r\nimport { entityName as reconciliationName } from './reconciliation/reconciliation.data-service';\r\nimport { entityName as serviceItemHistoryName } from './service-item/history/service-item-history.data-service';\r\nimport { entityName as signaturePolicyName } from './signature-policy/signature-policy.data-service';\r\nimport { entityName as timecardClassName } from './timecard-class/timecard-class.data-service';\r\nimport { entityName as timecardSequenceName } from './timecard-sequence/timecard-sequence.data-service';\r\nimport { entityName as chargeNumberName } from './chargenumber/chargenumber.data-service';\r\nimport { entityName as invoiceRegisterName } from './invoice-register/invoice-register.data-service';\r\nimport { entityName as jobTimerName } from './job-timer/job-timer.data-service';\r\nimport { entityName as toasterName } from './toaster/toaster.data-service';\r\nimport { entityName as roleStatusName } from './dashboard/status/role-status.data-service';\r\nimport { entityName as fundingName } from './dashboard/funding/funding.data-service';\r\nimport { entityName as drStatusName } from './dashboard/dr-status/dr-status.data-service';\r\nimport { entityName as accrualName } from './dashboard/accrual/accrual.data-service';\r\nimport { entityName as employeePayrollItemName } from './employee-payroll-item/employee-payroll-item.data-service';\r\nimport { entityName as dashboardSettingsName } from './dashboard-settings/dashboard-settings.data-service';\r\nimport { entityName as ratePlanningName } from './rate-planning/rate-planning.data-service';\r\nimport { entityName as indirectRateAdjustName } from './indirect-rate-adjust/indirect-rate-adjust.data-service';\r\nimport { entityName as registrationName } from './registration/registration.data-service';\r\nimport { entityName as vendorName } from './vendor/vendor.data-service';\r\nimport { entityName as payrollExportName } from './payroll/payroll-export/payroll-export.data-service';\r\nimport { entityName as mergeName } from './merge/merge.data-service';\r\nimport { entityName as invoiceName } from './invoice/invoice.data-service';\r\nimport { entityName as cumulativeUploadName } from './cumulative-upload/cumulative-upload.data-service';\r\nimport { entityName as employeeValidationName } from './employee-validation/employee-validation.data-service';\r\nimport { entityName as payrollValidationName} from './payroll-validation/payroll-validation.data-service';\r\n//import { entityName as taskTimerName } from './task-timer/task-timer.data-service';\r\n// https://ngrx.io/api/data/EntityDispatcherDefaultOptions\r\nconst defaultDispatchOptions = {\r\n optimisticAdd: false,\r\n optimisticDelete: false,\r\n optimisticUpdate: false,\r\n optimisticUpsert: false,\r\n optimisticSaveEntities: false\r\n};\r\nconst entityMetadata: EntityMetadataMap = {\r\n // [reconciliationTimecardName]: {},\r\n // [reconciliationPayperiodLaborName]: {},\r\n [premiumPayName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [payrateOverrideName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [projectBudgetName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [contractName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [contractSummaryName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [timecardClassName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [budgetLevelClassName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [budgetCycleClassName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [feeLevelName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [feeHistoryName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [signaturePolicyName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [reconciliationName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [reconciliationFieldName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [reconciliationTemplateName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [companyCalendarName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [serviceItemHistoryName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [manualAdjustmentName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n // [reconciliationTimecardName]: {},\r\n // [reconciliationPayperiodLaborName]: {},\r\n [invoiceSetupName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [invoiceAddressSetupName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [invoiceSelectionSetupName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [invoiceSessionSetupName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [addressName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [invoiceSessionTypeName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [invoiceAddressTypeName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [invoicePropertyName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [companyAccessName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [recalculateSchedulesName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [recalculateContractsName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [recalculateSettingsName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [indirectRateReviewName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [deferBillingName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [manageUsersName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [feeonGAName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [accrualPeriodName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [policySetupName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [policyAssignmentName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [emailAuditName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [burdenName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [jobAuditName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [rateCeilingName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [indirectRateHistoryName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [timecardSequenceName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [invoiceContractCycleName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [invoiceDetailOptionsName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [chargeNumberName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [invoiceRegisterName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [jobTimerName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [toasterName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [roleStatusName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [fundingName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [drStatusName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [accrualName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [employeePayrollItemName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [dashboardSettingsName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [ratePlanningName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [indirectRateAdjustName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [registrationName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [vendorName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [payrollExportName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [mergeName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [invoiceName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [cumulativeUploadName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n //[taskTimerName]: { entityDispatcherOptions: defaultDispatchOptions },\r\n [employeeValidationName]: {\r\n entityDispatcherOptions: defaultDispatchOptions\r\n },\r\n [payrollValidationName]: { entityDispatcherOptions: defaultDispatchOptions }\r\n};\r\n\r\nconst collectionNames = {\r\n // [reconciliationTimecardName]: reconciliationTimecardName,\r\n // [reconciliationPayperiodLaborName]: reconciliationPayperiodLaborName,\r\n [premiumPayName]: premiumPayName,\r\n [payrateOverrideName]: payrateOverrideName,\r\n [projectBudgetName]: projectBudgetName,\r\n [contractName]: contractName,\r\n [contractSummaryName]: contractSummaryName,\r\n [timecardClassName]: timecardClassName,\r\n [budgetLevelClassName]: budgetLevelClassName,\r\n [budgetCycleClassName]: budgetCycleClassName,\r\n [feeLevelName]: feeLevelName,\r\n [feeHistoryName]: feeHistoryName,\r\n [signaturePolicyName]: signaturePolicyName,\r\n [reconciliationName]: reconciliationName,\r\n [reconciliationFieldName]: reconciliationFieldName,\r\n [reconciliationTemplateName]: reconciliationTemplateName,\r\n [companyCalendarName]: companyCalendarName,\r\n [serviceItemHistoryName]: serviceItemHistoryName,\r\n [manualAdjustmentName]: manualAdjustmentName,\r\n // [reconciliationTimecardName]: reconciliationTimecardName,\r\n // [reconciliationPayperiodLaborName]: reconciliationPayperiodLaborName,\r\n [invoiceSetupName]: invoiceSetupName,\r\n [invoiceAddressSetupName]: invoiceAddressSetupName,\r\n [invoiceSelectionSetupName]: invoiceSelectionSetupName,\r\n [invoiceSessionSetupName]: invoiceSessionSetupName,\r\n [addressName]: addressName,\r\n [invoiceSessionTypeName]: invoiceSessionTypeName,\r\n [invoiceAddressTypeName]: invoiceAddressTypeName,\r\n [invoicePropertyName]: invoicePropertyName,\r\n [companyAccessName]: companyAccessName,\r\n [recalculateSchedulesName]: recalculateSchedulesName,\r\n [recalculateContractsName]: recalculateContractsName,\r\n [recalculateSettingsName]: recalculateSettingsName,\r\n [indirectRateReviewName]: indirectRateReviewName,\r\n [deferBillingName]: deferBillingName,\r\n [manageUsersName]: manageUsersName,\r\n [feeonGAName]: feeonGAName,\r\n [accrualPeriodName]: accrualPeriodName,\r\n [policySetupName]: policySetupName,\r\n [policyAssignmentName]: policyAssignmentName,\r\n [emailAuditName]: emailAuditName,\r\n [burdenName]: burdenName,\r\n [jobAuditName]: jobAuditName,\r\n [rateCeilingName]: rateCeilingName,\r\n [indirectRateHistoryName]: indirectRateHistoryName,\r\n [timecardSequenceName]: timecardSequenceName,\r\n [invoiceContractCycleName]: invoiceContractCycleName,\r\n [invoiceDetailOptionsName]: invoiceDetailOptionsName,\r\n [chargeNumberName]: chargeNumberName,\r\n [invoiceRegisterName]: invoiceRegisterName,\r\n [jobTimerName]: jobTimerName,\r\n [toasterName]: toasterName,\r\n [roleStatusName]: roleStatusName,\r\n [fundingName]: fundingName,\r\n [drStatusName]: drStatusName,\r\n [accrualName]: accrualName,\r\n [employeePayrollItemName]: employeePayrollItemName,\r\n [dashboardSettingsName]: dashboardSettingsName,\r\n [ratePlanningName]: ratePlanningName,\r\n [indirectRateAdjustName]: indirectRateAdjustName,\r\n [registrationName]: registrationName,\r\n [vendorName]: vendorName,\r\n [payrollExportName]: payrollExportName,\r\n [mergeName]: mergeName,\r\n [invoiceName]: invoiceName,\r\n [cumulativeUploadName]: cumulativeUploadName,\r\n //[taskTimerName]: taskTimerName,\r\n [employeeValidationName]: employeeValidationName,\r\n [payrollValidationName]: payrollValidationName\r\n};\r\n\r\nexport const entityConfig = {\r\n entityMetadata,\r\n pluralNames: collectionNames\r\n};\r\nexport const defaultDataServiceConfig: DefaultDataServiceConfig = {\r\n root: environment.apiLocation\r\n // timeout: 3000, // request timeout\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataService,\r\n DefaultDataServiceConfig,\r\n EntityOp,\r\n HttpUrlGenerator,\r\n QueryParams\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as moment from 'moment';\r\nimport { FeeHistory } from './fee-history.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\n\r\nexport const entityName = 'FeeSetupHist';\r\n\r\n@Injectable()\r\nexport class FeeHistoryDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: FeeHistory): FeeHistory {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.FeeSetupID,\r\n FeeRetainPercentStartDate: moment(item.FeeRetainPercentStartDate).isValid() ? moment(item.FeeRetainPercentStartDate).toDate() : null\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface FeeHistory extends DataServiceEntity {\r\n StartDate: Date;\r\n EndDate: Date;\r\n PeriodStatus: string;\r\n FeeSetupID: number;\r\n ContractListID: string;\r\n CNListID: string;\r\n CostType: string;\r\n SIListID: string;\r\n ContractDesc: string;\r\n ChargeNumber: string;\r\n FeePercentage: number;\r\n FeeAmount: number;\r\n EstHours: number;\r\n FeeBilledCumulative: number;\r\n FeeRetainCumulative: number;\r\n FeeRetainFull_FeeAmount: number;\r\n FeeRetainPercent: number;\r\n FeeRetainPercentStartDate: Date;\r\n FeeRetainStop_FeeAmount: number;\r\n FeeRetainStop_RetainedAmount: number;\r\n ContractType: string;\r\n FeeonGA: string;\r\n ModifiedDate: Date;\r\n ModifiedBy: string;\r\n}\r\n","export * from './fee-history.data-service';\r\nexport * from './fee-history.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { FeeLevel } from './fee-level.model';\r\n\r\nexport const entityName = 'FeeSetup';\r\n\r\n@Injectable()\r\nexport class FeeLevelDataService extends EfaactDataService {\r\n // selectors: EntitySelectors;\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: FeeLevel): FeeLevel {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.FeeSetupID,\r\n FeeRetainPercentStartDate: moment(\r\n item.FeeRetainPercentStartDate\r\n ).isValid()\r\n ? moment(item.FeeRetainPercentStartDate).toDate()\r\n : null,\r\n EffectiveDate: moment(item.EffectiveDate).isValid()\r\n ? moment(item.EffectiveDate).toDate()\r\n : null\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface FeeLevel extends DataServiceEntity {\r\n EffectiveDate: Date;\r\n ContractType: string;\r\n FeeSetupID: number;\r\n ContractListID: string;\r\n CNListID: string;\r\n CostType: string;\r\n SIListID: string;\r\n ContractDesc: string;\r\n ChargeNumber: string;\r\n FeePercentage: number;\r\n FeeAmount: number;\r\n EstHours: number;\r\n FeeBilledCumulative: number;\r\n FeeRetainCumulative: number;\r\n FeeRetainFull_FeeAmount: Date;\r\n FeeRetainPercent: number;\r\n FeeRetainPercentStartDate: Date;\r\n FeeRetainStop_FeeAmount: number;\r\n FeeRetainStop_RetainAmount: number;\r\n FeeonGA: string;\r\n ModifiedDate: Date;\r\n ModifiedBy: string;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { FeeOnGA } from './fee-on-ga.model';\r\n\r\nexport const entityName = 'FeeonGAtype';\r\n\r\n@Injectable()\r\nexport class FeeOnGADataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: FeeOnGA): FeeOnGA {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.FeeonGAtypeid\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface FeeOnGA extends DataServiceEntity {\r\n FeeonGAtypeid: number;\r\n FeeonGAtype: string;\r\n FeeonGAdescription: string;\r\n}\r\n","export * from './fee-on-ga.data-service';\r\nexport * from './fee-on-ga.model';\r\n","export * from './fee-level.data-service';\r\nexport * from './fee-level.model';\r\n","export * as AccrualPeriod from './accrual-period';\r\nexport * as Address from './address';\r\nexport * as BudgetCycle from './budget-cycle';\r\nexport * as BudgetLevel from './budget-level';\r\nexport * as Burden from './burden';\r\nexport * as CompanyAccess from './company-access';\r\nexport * as CompanyCalendar from './company-calendar';\r\nexport * as Contract from './contract';\r\nexport * as DeferBilling from './defer-billing';\r\nexport * as EmailAudit from './email-audit';\r\nexport * as FeeHistory from './fee-history';\r\nexport * as FeeLevel from './fee-level';\r\nexport * as FeeOnGA from './fee-level/fee-on-ga';\r\nexport * as IndirectRateHistory from './indirect-rate-history';\r\nexport * as IndirectRateReview from './indirect-rate-review';\r\nexport * as Invoice from './invoice';\r\nexport * as InvoiceContractCycle from './invoice-contract-cycle';\r\nexport * as JobAudit from './job-audit';\r\nexport * as ManageUsers from './manage-users';\r\nexport * as ManualAdjustment from './manual-adjustment';\r\nexport * as PayrateOverride from './payrate-override';\r\nexport * as PremiumPay from './premium-pay';\r\nexport * as ProjectBudget from './project-budget';\r\nexport * as PolicyAssignment from './pto-policy/assignment';\r\nexport * as PolicySetup from './pto-policy/setup';\r\nexport * as RateCeiling from './rate-ceiling';\r\nexport * as RecalculateContracts from './recalculate-transactions/recalculate-contracts';\r\nexport * as RecalculateSchedules from './recalculate-transactions/recalculate-schedules';\r\nexport * as RecalculateSettings from './recalculate-transactions/recalculate-settings';\r\nexport * as Reconciliation from './reconciliation';\r\nexport * as ServiceItem from './service-item';\r\nexport * as SignaturePolicy from './signature-policy';\r\nexport * as TimecardClass from './timecard-class';\r\nexport * as TimecardSequence from './timecard-sequence';\r\nexport * as ChargeNumber from './chargenumber';\r\nexport * as InvoiceRegister from './invoice-register';\r\nexport * as JobTimer from './job-timer';\r\nexport * as Toaster from './toaster';\r\nexport * as RoleStatus from './dashboard/status';\r\nexport * as Funding from './dashboard/funding';\r\nexport * as DRStatus from './dashboard/dr-status';\r\nexport * as Accrual from './dashboard/accrual';\r\nexport * as EmployeePayrollItem from './employee-payroll-item';\r\nexport * as DashboardSettings from './dashboard-settings';\r\nexport * as RatePlanning from './rate-planning';\r\nexport * as IndirectRateAdjust from './indirect-rate-adjust';\r\nexport * as Registration from './registration';\r\nexport * as Vendor from './vendor';\r\nexport * as PayrollExport from './payroll/payroll-export';\r\nexport * as Merge from './merge';\r\nexport * as CumulativeUpload from './cumulative-upload';\r\nexport * as EmployeeValidation from './employee-validation';\r\nexport * as PayrollValidation from './payroll-validation';\r\n//export * as TaskTimer from './task-timer';\r\n","export * from './indirect-rate-adjust.model';\r\nexport * from './indirect-rate-adjust.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataServiceConfig,\r\n EntityCollectionService,\r\n EntityServices,\r\n HttpUrlGenerator,\r\n QueryParams\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { Guid } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { IndirectRateAdjust } from './indirect-rate-adjust.model';\r\nimport { entityName as jobTimerEntityName, JobTimerModel } from '../job-timer';\r\nexport const entityName = 'IndirectRateAdjust';\r\n@Injectable({ providedIn: 'root' })\r\nexport class IndirectRateAdjustDataService extends EfaactDataService {\r\n private jobTimerDataService: EntityCollectionService;\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store,\r\n private entityServices: EntityServices\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n this.jobTimerDataService =\r\n entityServices.getEntityCollectionService(\r\n jobTimerEntityName\r\n );\r\n }\r\n mapItems(item: IndirectRateAdjust): IndirectRateAdjust {\r\n return { ...item, id: Guid.newGuid() };\r\n }\r\n\r\n getWithQuery(\r\n params: string | QueryParams\r\n ): Observable { \r\n return super.getWithQuery(params);\r\n }\r\n getAll(): Observable {\r\n return super.getAll();\r\n }\r\n\r\n mapGetResponse(resp) {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(IndirectRateAdjustDataService):mapResponse:resp`,\r\n resp\r\n });\r\n const result = JSON.parse(resp) as IndirectRateAdjust[];\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(IndirectRateAdjustDataService):mapResponse:result`,\r\n result\r\n });\r\n setTimeout(() => {\r\n this.jobTimerDataService.getWithQuery({\r\n Jobdesc: sessionStorage.getItem('jobTimerName')\r\n });\r\n }, 0);\r\n if (Array.isArray(result)) {\r\n return result;\r\n } else {\r\n return [] as IndirectRateAdjust[];\r\n }\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface IndirectRateAdjust\r\n extends DataServiceEntity {\r\n 'Before Fee': number;\r\n 'Burdened Amount': number;\r\n 'Contract Type': string;\r\n 'Cost Center': string;\r\n 'Expense Type': string;\r\n 'Fee Burden': number;\r\n 'FR Burden': number;\r\n 'GA Burden': number;\r\n 'Handling Burden': number;\r\n 'OH Burden': number;\r\n 'Service Item': string;\r\n Amount: number;\r\n Contract: string;\r\n Hours: number;\r\n PeriodEnd: Date;\r\n PeriodStart: Date;\r\n Task: string;\r\n TaskListID: string;\r\n}\r\n","export * from './indirect-rate-history.model';\r\nexport * from './indirect-rate-history.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDynamicDataService } from '../efaact.dynamic-data-service';\r\nimport { IndirectRateHistoryModel } from './indirect-rate-history.model';\r\n\r\nexport const entityName = 'IndirectRateHistory';\r\n@Injectable({ providedIn: 'root' })\r\nexport class IndirectRateHistoryDataService extends EfaactDynamicDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface IndirectRateHistoryModel\r\n extends DataServiceEntity {\r\n periodstart: Date;\r\n periodend: Date;\r\n periodstatus: string;\r\n}\r\n","export * from './indirect-rate-review.model';\r\nexport * from './indirect-rate-review.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataServiceConfig,\r\n EntityCollectionService,\r\n EntityServices,\r\n HttpUrlGenerator,\r\n QueryParams\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { Guid } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { entityName as jobTimerEntityName, JobTimerModel } from '../job-timer';\r\nimport { IndirectRateReviewModel } from './indirect-rate-review.model';\r\nexport const entityName = 'IndirectRateAdjustApply';\r\n@Injectable({ providedIn: 'root' })\r\nexport class IndirectRateReviewDataService extends EfaactDataService {\r\n private jobName = 'ef_indirectratesadjust_apply';\r\n private jobTimerDataService: EntityCollectionService;\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store,\r\n private entityServices: EntityServices\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n this.jobTimerDataService =\r\n entityServices.getEntityCollectionService(\r\n jobTimerEntityName\r\n );\r\n }\r\n mapItems(item: IndirectRateReviewModel): IndirectRateReviewModel {\r\n return { ...item, id: Guid.newGuid() };\r\n }\r\n getWithQuery(\r\n params: string | QueryParams\r\n ): Observable {\r\n // setTimeout(() => {\r\n // this.jobTimerDataService.getWithQuery({\r\n // Jobdesc: this.jobName\r\n // });\r\n // }, 0);\r\n return super.getWithQuery(params);\r\n }\r\n getAll(): Observable {\r\n return super.getAll();\r\n }\r\n\r\n mapGetResponse(resp) {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(IndirectRateReviewDataService):mapResponse:resp`,\r\n resp\r\n });\r\n const result = JSON.parse(resp) as IndirectRateReviewModel[];\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(IndirectRateReviewDataService):mapResponse:result`,\r\n result\r\n });\r\n setTimeout(() => {\r\n this.jobTimerDataService.getWithQuery({\r\n Jobdesc: sessionStorage.getItem('jobTimerName')//this.jobName\r\n });\r\n }, 0);\r\n if (Array.isArray(result)) {\r\n return result;\r\n } else {\r\n return [] as IndirectRateReviewModel[];\r\n }\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface IndirectRateReviewModel\r\n extends DataServiceEntity {\r\n 'Before Fee': number;\r\n 'Burdened Amount': number;\r\n 'Contract Type': string;\r\n 'Cost Center': string;\r\n 'Expense Type': string;\r\n 'Fee Burden': number;\r\n 'FR Burden': number;\r\n 'GA Burden': number;\r\n 'Handling Burden': number;\r\n 'OH Burden': number;\r\n 'Service Item': string;\r\n Amount: number;\r\n Contract: string;\r\n Hours: number;\r\n PeriodEnd: Date;\r\n PeriodStart: Date;\r\n Task: string;\r\n TaskListID: string;\r\n}\r\n","export * from './invoice-contract-cycle.model';\r\nexport * from './invoice-contract-cycle.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n DefaultDataServiceConfig,\r\n EntityActionFactory,\r\n EntityOp,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { IGenericResponse, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { InvoiceContractCycleModel } from './invoice-contract-cycle.model';\r\n\r\nexport const entityName = 'InvoiceContractCycle';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceContractCycleDataService extends EfaactDataService {\r\n mapItems(item: InvoiceContractCycleModel): InvoiceContractCycleModel {\r\n return {\r\n ...item,\r\n id: item.ContractInvoiceCycleID\r\n };\r\n }\r\n protected save(\r\n update: Update\r\n ): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(InvoiceContractCycleDataService):save`,\r\n update\r\n });\r\n const item = {\r\n ...update.changes\r\n } as InvoiceContractCycleModel;\r\n\r\n return this.http\r\n .put>(\r\n this.entitiesUrl,\r\n {\r\n [`${this.entityName}List`]: [item]\r\n }\r\n )\r\n .pipe(\r\n // withLatestFrom(\r\n // this.store.pipe(select(this.selectors.selectEntities))\r\n // ),\r\n map(\r\n resp =>\r\n ({\r\n ...resp,\r\n Items: resp.Items.map(item => ({\r\n ...this.mapItems(item),\r\n Status:\r\n item.Status.StatusCode === 0\r\n ? {\r\n Message: 'Updated',\r\n MsgEntityID:\r\n item.ContractInvoiceCycleID,\r\n StatusCode: ResponseStatus.Success\r\n }\r\n : item.Status\r\n }))\r\n } as IGenericResponse)\r\n ),\r\n map(resp => {\r\n // const InvoiceContractCycle = InvoiceContractCycles.find(x => x.id === update.id);\r\n // if (!InvoiceContractCycle) {\r\n // return update.changes as InvoiceContractCycleModel;\r\n // }\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(InvoiceContractCycleDataService):save:resp`,\r\n resp,\r\n update\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n (update.changes.original &&\r\n update.changes.original\r\n .id) ||\r\n update.changes.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n // need to do this b/c the change of a checkbox is immediate and there is no cancel to put it back\r\n // if something is wrong with the save\r\n const af = new EntityActionFactory();\r\n // if (update.changes.SyncPayrollItems === true) {\r\n const action = af.create(\r\n this.entityName,\r\n EntityOp.SAVE_UPDATE_ONE_SUCCESS,\r\n {\r\n id: update.changes.id,\r\n changed: true,\r\n changes: {\r\n ...resp.Items[0],\r\n id: update.changes.id\r\n }\r\n }\r\n );\r\n this.store.dispatch(action);\r\n throwError(\r\n new DataServiceError(\r\n resp.ErrorMessages.reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n throw new DataServiceError(\r\n resp.ErrorMessages.reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n );\r\n } else {\r\n // invoice cycle can generate new items, with new Ids, so need to remove the old and add the new\r\n if (update.changes.id !== resp.Items[0].id) {\r\n const af = new EntityActionFactory();\r\n const action = af.create(\r\n this.entityName,\r\n EntityOp.REMOVE_ONE,\r\n update.changes.id\r\n );\r\n this.store.dispatch(action);\r\n }\r\n return resp.Items[0];\r\n\r\n // const ret = {\r\n // ...InvoiceContractCycle,\r\n // Status: {\r\n // StatusCode: ResponseStatus.Success,\r\n // Message: 'Saved'\r\n // }\r\n // } as InvoiceContractCycleModel;\r\n // const resUpd = resp.Items[0];\r\n // if (!resUpd) {\r\n // return update.changes as InvoiceContractCycleModel;\r\n // }\r\n // ret[resUpd.Calcdesc] = {\r\n // ...ret[resUpd.Calcdesc],\r\n // [resUpd.Loadingtype]: resUpd.LoadYesNo\r\n // };\r\n // this.log.verbose({\r\n // type: `${this.entityName}DataService(InvoiceContractCycleDataService):save:return`,\r\n // ret,\r\n // update,\r\n // resp: resp.Items\r\n // });\r\n // return ret;\r\n }\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n }\r\n}\r\n","import { IId } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface InvoiceContractCycleModel\r\n extends DataServiceEntity {\r\n ContractDesc: string;\r\n ContractStartDate: Date;\r\n ContractEndDate: Date;\r\n ContractInvoiceCycleID: IId;\r\n ContractListID: string;\r\n CycleEffectiveDate: Date;\r\n InvoiceCycle: string;\r\n InvoiceCycleDay: string;\r\n InvoiceCycleDay2: string;\r\n IsActive: boolean;\r\n ModifiedDate: Date;\r\n}\r\n","export * from './invoice-register.model';\r\nexport * from './invoice-register.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDynamicDataService } from '../efaact.dynamic-data-service';\r\nimport { InvoiceRegisterModel } from './invoice-register.model';\r\n\r\nexport const entityName = 'InvoiceRegister';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceRegisterDataService extends EfaactDynamicDataService {\r\n mapItems(item: InvoiceRegisterModel): InvoiceRegisterModel {\r\n // item = super.mapItems(item);\r\n return {\r\n ...item,\r\n id: `${item.IBO_ID}-${item.InvoiceNbr}-${item.CalcType}`\r\n // LoadedAmt:\r\n // item.InvoiceAmount +\r\n // item.FRCost +\r\n // item.OHCost +\r\n // item.GACost +\r\n // item.MHCost,\r\n // Total:\r\n // item.InvoiceAmount +\r\n // item.FRCost +\r\n // item.OHCost +\r\n // item.GACost +\r\n // item.MHCost +\r\n // item.FeeCost\r\n } as any;\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface InvoiceRegisterModel\r\n extends DataServiceEntity {\r\n // unique id is IBO_ID + InvoiceNbr + CalcType\r\n ActualHours: number;\r\n ActualHoursCTD: number;\r\n CalcType: string;\r\n CTDTotal: number;\r\n FeeCost: number;\r\n FeeCostCTD: number;\r\n FRCost: number;\r\n FRCostCTD: number;\r\n FullName: string;\r\n GACost: number;\r\n GACostCTD: number;\r\n groupIndex: string;\r\n IBO_ID: number;\r\n InvoiceAmount: number;\r\n InvoiceAmountCTD: number;\r\n InvoiceEnd: Date;\r\n InvoiceNbr: number;\r\n InvoiceNotes: string;\r\n InvoicePrefix: string;\r\n InvoiceStart: Date;\r\n listid: string;\r\n LoadedAmt: number;\r\n MHCost: number;\r\n MHCostCTD: number;\r\n OHCost: number;\r\n OHCostCTD: number;\r\n PeriodTotal: number;\r\n}\r\n","export * as Setup from './setup';\r\nexport * from './invoice.model';\r\nexport * from './invoice.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { InvoiceModel } from './invoice.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\n\r\nexport const entityName = 'Invoice';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceDataService extends EfaactDataService {\r\n mapItems(item: InvoiceModel): InvoiceModel {\r\n return {\r\n ...item,\r\n id: `${item.listid}-${item.InvoiceNbr}`\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface InvoiceModel extends DataServiceEntity {\r\n id: string | number;\r\n Status: IStatusMessage;\r\n FullName: string;\r\n InvoiceStart: Date;\r\n InvoiceEnd: Date;\r\n InvoiceTotal: number;\r\n InvoiceNbr: string;\r\n InvoiceSentToQB: boolean;\r\n listid: string;\r\n ARAccountListID: string;\r\n}\r\n","export * from './invoice-address-setup.model';\r\nexport * from './invoice-address-setup.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport * as data from './MOCK_DATA.json';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\nimport { InvoiceAddressSetup } from './invoice-address-setup.model';\r\n\r\nexport const entityName = 'InvoiceAddress';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceAddressSetupDataService extends EfaactDataService {\r\n mapItems(item: InvoiceAddressSetup): InvoiceAddressSetup {\r\n return item;\r\n }\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n getAll() {\r\n return of((data as any).default).pipe(\r\n map(items => items.map(p => this.mapItems(p)))\r\n );\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceAddressSetup extends DataServiceEntity {\r\n type: string;\r\n name: string;\r\n line1: string;\r\n line2: string;\r\n line3: string;\r\n line4: string;\r\n city: string;\r\n state: string;\r\n zip: string;\r\n contact: string;\r\n}\r\n","export * as Address from './address';\r\nexport * as Invoice from './invoice';\r\nexport * as AddressType from './invoice-address-type';\r\nexport * as InvoiceDetailOption from './invoice-detail-options';\r\nexport * as InvoiceProperty from './invoice-property';\r\nexport * as SessionType from './invoice-session-type';\r\nexport * as Selections from './selections';\r\nexport * as Session from './session';\r\n","export * from './invoice-address-type.model';\r\nexport * from './invoice-address-type.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { InvoiceAddressType } from './invoice-address-type.model';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\n\r\nexport const entityName = 'AddressType';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceAddressTypeDataService extends EfaactDataService {\r\n mapItems(item: InvoiceAddressType): InvoiceAddressType {\r\n return {\r\n id: item.Addresstype,\r\n ...item\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../../../shared';\r\nimport { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceAddressType extends DataServiceEntity {\r\n id: string | number;\r\n Addressdesc: string;\r\n Addresstype: string;\r\n Status: IStatusMessage;\r\n}\r\n","export * from './invoice-detail-options.model';\r\nexport * from './invoice-detail-options.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\nimport { InvoiceDetailOptionsModel } from './invoice-detail-options.model';\r\n\r\nexport const entityName = 'InvoiceDetailOption';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceDetailOptionsDataService extends EfaactDataService {\r\n mapItems(item: InvoiceDetailOptionsModel): InvoiceDetailOptionsModel {\r\n return { ...item, id: item.Invoiceviewoptionid };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IId } from '../../../../shared';\r\nimport { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceDetailOptionsModel\r\n extends DataServiceEntity {\r\n id: IId;\r\n Invoiceviewoptionid: IId;\r\n Invoiceviewoption: string;\r\n Viewname: string;\r\n}\r\n","export * from './invoice-property.model';\r\nexport * from './invoice-property.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { InvoiceProperty } from './invoice-property.model';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\n\r\nexport const entityName = 'InvoiceProperty';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoicePropertyDataService extends EfaactDataService {\r\n mapItems(item: InvoiceProperty): InvoiceProperty {\r\n return {\r\n id: item.Invoicepropertyid,\r\n ...item\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../../../shared';\r\nimport { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceProperty extends DataServiceEntity {\r\n Invoicepropertyid: number;\r\n Propertyname: string;\r\n}\r\n","export * from './invoice-session-type.model';\r\nexport * from './invoice-session-type.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\nimport { InvoiceSessionType } from './invoice-session-type.model';\r\n\r\nexport const entityName = 'InvoiceSessionType';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceSessionTypeDataService extends EfaactDataService {\r\n mapItems(item: InvoiceSessionType): InvoiceSessionType {\r\n return item;\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../../../shared';\r\nimport { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceSessionType extends DataServiceEntity {\r\n id: string | number;\r\n Status: IStatusMessage;\r\n}\r\n","export * from './invoice-setup.data-service';\r\nexport * from './invoice-setup.interceptor';\r\nexport * from './invoice-setup.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { ResponseStatus } from '../../../../shared';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\nimport { InvoiceSetup } from './invoice-setup.model';\r\n\r\nexport const entityName = 'InvoiceBaseOption';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceSetupDataService extends EfaactDataService {\r\n mapItems(item: InvoiceSetup): InvoiceSetup {\r\n return {\r\n ...item,\r\n id: item.Ibo_id,\r\n Status: {\r\n StatusCode: ResponseStatus.None,\r\n Message: ''\r\n }\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n }\r\n}\r\n","import {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ResponseStatus } from '../../../../common';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { entityName } from './invoice-setup.data-service';\r\n@Injectable()\r\nexport class InvoiceSetupInterceptor implements HttpInterceptor {\r\n /**\r\n *\r\n */\r\n constructor(private log: LoggingService) {}\r\n\r\n public intercept(\r\n req: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n // Pass the cloned request instead of the original request to the next handle\r\n // return next.handle(clonedRequest)\r\n // return next.handle(req);\r\n return next.handle(req).pipe(\r\n // filter(resp => resp instanceof HttpResponse),\r\n // map(event => event as HttpResponse>),\r\n map((event: any) => {\r\n if (event.url?.endsWith(`${entityName}s`)) {\r\n event.body.changes = event.body?.changes.map(change => ({\r\n ...change,\r\n entities:\r\n //INFO: this is needed by InvoiceSetupContainer when saving multiple entities to map the id property for ngrx-data\r\n change.entities.map(item => ({\r\n ...item,\r\n id: item.Ibo_id,\r\n Status: {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Saved'\r\n }\r\n })) ?? event\r\n })) as any;\r\n this.log.verbose({\r\n type: 'InvoiceSetupInterceptor:response:mapped',\r\n event\r\n });\r\n }\r\n return event;\r\n })\r\n );\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceSetup extends DataServiceEntity {\r\n Accountclass: number;\r\n Billaddrid: number;\r\n Chargenumber: string;\r\n Cnlistid: string;\r\n Contractdesc: string;\r\n Contractlistid: string;\r\n Contracttype: string;\r\n Createdate: string;\r\n Disclaimerid: number;\r\n Ibo_id: number;\r\n Inuse: boolean;\r\n Invoicelevel: string;\r\n Invoiceviewoptionid: string;\r\n Invprefix: string;\r\n Levelspent: string;\r\n Levelcontractspent: string;\r\n Levelfundingspent: string;\r\n Remitaddrid: number;\r\n Showburdens: boolean;\r\n Showcontractbalance: boolean;\r\n Showcosttypesummaryburden: boolean;\r\n Showcosttypesummary: boolean;\r\n Showcurrentactivityonly: boolean;\r\n ShowEIN: boolean;\r\n Showfundingbalance: boolean;\r\n Showindirectrates: boolean;\r\n Showlaborrates: boolean;\r\n Siglineid: number;\r\n}\r\n","export * from './invoice-selections.model';\r\nexport * from './invoice-selections.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataServiceConfig,\r\n EntityCollectionServiceBase,\r\n EntityCollectionServiceElementsFactory,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\nimport { InvoiceSelections } from './invoice-selections.model';\r\nexport const entityName = 'InvoicePropertyShared';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceSelectionsDataService extends EfaactDataService {\r\n mapItems(item: InvoiceSelections): InvoiceSelections {\r\n return {\r\n id: item.Invoicepropertysharedid,\r\n ...item,\r\n Status: item.Status || { StatusCode: 0, Message: '' }\r\n };\r\n }\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n // getAll() {\r\n // return of((data as any).default).pipe(\r\n // map(items => items.map(p => this.mapItems(p)))\r\n // );\r\n // }\r\n}\r\n","import { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceSelections extends DataServiceEntity {\r\n // item: string;\r\n // name: string;\r\n // text: string;\r\n Invoicepropertyid: number;\r\n Invoicepropertysharedid: number;\r\n Paymenttermsid: number;\r\n Propertylabel: string;\r\n Propertytext: string;\r\n Row_Version: string;\r\n}\r\n","export * from './invoice-session-setup.model';\r\nexport * from './invoice-session-setup.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { ResponseStatus } from '../../../../common';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport { EfaactDataService } from '../../../efaact.data-service';\r\nimport { InvoiceSessionSetup } from './invoice-session-setup.model';\r\n\r\nexport const entityName = 'VoucherSetup';\r\n@Injectable({ providedIn: 'root' })\r\nexport class InvoiceSessionSetupDataService extends EfaactDataService {\r\n mapItems(item: InvoiceSessionSetup): InvoiceSessionSetup {\r\n return {\r\n ...item,\r\n id: item.Contractlistid,\r\n Status: {\r\n StatusCode: ResponseStatus.None,\r\n Message: null\r\n }\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../../data-service.entity';\r\n\r\nexport interface InvoiceSessionSetup\r\n extends DataServiceEntity {\r\n Contractdesc: string;\r\n Contractlistid: string;\r\n Contracttype: string;\r\n Feeseparate: boolean;\r\n Remitaddrid: number;\r\n ShowCN: boolean;\r\n Voucheraddrid: number;\r\n Vouchercontractdesc: string;\r\n}\r\n","export * from './job-audit.model';\r\nexport * from './job-audit.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { Guid } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { JobAuditModel } from './job-audit.model';\r\nexport const entityName = 'JobHistory';\r\n@Injectable({ providedIn: 'root' })\r\nexport class JobAuditDataService extends EfaactDataService {\r\n mapItems(item: any): JobAuditModel {\r\n return {\r\n id: Guid.newGuid(),\r\n ...item,\r\n EndTime: moment(item.EndTime).toDate(),\r\n StartTime: moment(item.StartTime).toDate()\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface JobAuditModel extends DataServiceEntity {\r\n EndTime: Date;\r\n Result: string;\r\n StartTime: Date;\r\n}\r\n","export * from './job-timer.model';\r\nexport * from './job-timer.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { JobTimerModel } from './job-timer.model';\r\n\r\nexport const entityName = 'JobTimer';\r\n@Injectable({ providedIn: 'root' })\r\nexport class JobTimerDataService extends EfaactDataService {\r\n mapItems(item: JobTimerModel): JobTimerModel {\r\n return {\r\n ...item,\r\n id: item.Jobdesc\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface JobTimerModel extends DataServiceEntity {\r\n id: string | number;\r\n Jobdesc: string;\r\n Timer: boolean;\r\n Status: IStatusMessage;\r\n}\r\n","export * from './login.model';\r\nexport * from './manage-users.data-service';\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface LoginModel extends DataServiceEntity {\r\n AccountNumber?: string;\r\n AdjustedServiceDate?: Date;\r\n AuthorizedHolidays?: boolean;\r\n CCAccountListID?: string | string[];\r\n CostCenterID?: number;\r\n EmailAddr?: string;\r\n EmployeeListID?: string;\r\n EmployeeName?: string;\r\n EmpTimeZone?: string;\r\n EPassword?: string;\r\n EUserID?: string;\r\n Expectedhrsperday?: number;\r\n Expectedhrsperweek?: number;\r\n ExpenseAllowed?: boolean;\r\n FirstDayofWeekID?: number;\r\n HireDate?: Date;\r\n IsActive?: boolean;\r\n IsConsultant?: number;\r\n IsPartTime?: boolean;\r\n LeaveCarryover?: number;\r\n LockDate?: Date;\r\n MobileNumber?: string;\r\n Mobilewithprovider?: string;\r\n OriginalHireDate?: Date;\r\n PayrollFrequency?: string;\r\n PIListID?: string;\r\n PIListIDforLeaveRequest?: string;\r\n PTOGroupID?: number;\r\n QBAccrualPeriod?: string;\r\n QBAnnualAccrualDate?: Date;\r\n QBAnnualSickAccrualDate?: Date;\r\n QBEmplHoursAccrued?: number;\r\n QBEmplHoursAvailable?: number;\r\n QBEmplHoursMax?: number;\r\n QBEmplHoursUsed?: number;\r\n QBEmplSickHoursAccrued?: number;\r\n QBEmplSickHoursAvailable?: number;\r\n QBEmplSickHoursMax?: number;\r\n QBEmplSickHoursUsed?: number;\r\n QBSickAccrualPeriod?: string;\r\n ReleaseDate?: Date;\r\n ReminderdeliveryID?: number;\r\n Resetpswd?: boolean;\r\n selected?: boolean;\r\n Sickaccrualperiod?: string;\r\n Sickaccrualperiodvalue?: string;\r\n SIListID?: string;\r\n SIListIDforLeaveRequest?: string;\r\n SupervisorListID?: string;\r\n TimeCardSplitDayID?: number;\r\n Tz_abbreviation?: string;\r\n Tz_offsetfromutc_minutes?: number;\r\n UserIDFormat?: number;\r\n Usertype?: string;\r\n Vacationaccrualperiod?: string;\r\n Vacationaccrualperiodvalue?: string;\r\n VendorListID?: string;\r\n WorkShiftSpansDays?: boolean;\r\n //Feilds for download\r\n TypeDesc?: string;\r\n SupervisorName?: string;\r\n WeekStartName?: string;\r\n DefaultServiceItemName?: string;\r\n DefaultPayrollItemName?: string;\r\n MobileProviderDesc?: string;\r\n SplitDayName?: string;\r\n CreditCardName?: string;\r\n TimeZoneDesc?: string;\r\n ReminderDeliveryName?: string;\r\n CostCenterName?: string;\r\n UniquePayCycleDesc?: string;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataServiceConfig,\r\n EntitySelectorsFactory,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { createSelector, Store } from '@ngrx/store';\r\nimport moment from 'moment';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { LoginModel } from './login.model';\r\n\r\nexport const entityName = 'User';\r\n@Injectable({ providedIn: 'root' })\r\nexport class ManageUsersDataService extends EfaactDataService {\r\n mapItems(item: LoginModel): LoginModel {\r\n return {\r\n ...item,\r\n CCAccountListID: (item.CCAccountListID as string)?.split(','),\r\n id: item.EmployeeListID as string,\r\n LockDate: item.LockDate\r\n ? moment(item.LockDate).isValid()\r\n ? moment(item.LockDate).toDate()\r\n : undefined\r\n : undefined\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n\r\nexport const selectors = new EntitySelectorsFactory().create(\r\n entityName\r\n);\r\n\r\nexport const getActiveUsers = createSelector(selectors.selectEntities, users =>\r\n users.filter(user => user.IsActive === true)\r\n);\r\n","export * from './manual-adjustment.data-service';\r\nexport * from './manual-adjustment.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n DefaultDataServiceConfig,\r\n EntitySelectors,\r\n EntitySelectorsFactory,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, flatMap, map, take } from 'rxjs/operators';\r\nimport { IDeleteEntity, IGenericResponse } from '../../common';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { ManualAdjustment } from './manual-adjustment.model';\r\n\r\nexport const entityName = 'ManualTxn';\r\n\r\n@Injectable()\r\nexport class ManualAdjustmentDataService extends EfaactDataService {\r\n selectors: EntitySelectors;\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.selectors = new EntitySelectorsFactory().create(\r\n this.entityName\r\n );\r\n }\r\n delete(key: number | string): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ManualAdjustmentDataService):delete`,\r\n key\r\n });\r\n return this.store.pipe(\r\n select(this.selectors.selectEntities),\r\n take(1),\r\n map(items => items.find(item => item.id === key)),\r\n flatMap(item => {\r\n const params = {\r\n EntityIDs: [key],\r\n directtype: item.Txntype\r\n };\r\n return this.http\r\n .request>(\r\n 'DELETE',\r\n this.entitiesUrl,\r\n {\r\n body: params\r\n }\r\n )\r\n .pipe(\r\n map(resp => this.mapPutResponse(resp)),\r\n map(resp => {\r\n if (\r\n !fromShared.Errors.IsSuccessStatus(\r\n resp.StatusCode\r\n )\r\n ) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(\r\n resp\r\n )\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) =>\r\n i === 0 ? c : `${a}\\n${c}`,\r\n ''\r\n ),\r\n {\r\n method: 'DELETE',\r\n url: this.entitiesUrl\r\n }\r\n )\r\n );\r\n }\r\n return (resp.Items[0] as any).EntityID as\r\n | string\r\n | number;\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(\r\n this.store,\r\n e,\r\n c\r\n )\r\n )\r\n );\r\n })\r\n );\r\n // .subscribe(entity => );\r\n // const keys = (key as string).split(',');\r\n }\r\n\r\n mapItems(item: ManualAdjustment): ManualAdjustment {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.Txnid\r\n // FeeRetainPercentStartDate: moment(item.FeeRetainPercentStartDate).isValid() ? moment(item.FeeRetainPercentStartDate).toDate() : null\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface ManualAdjustment extends DataServiceEntity {\r\n Txnid: number;\r\n Sessionid: number;\r\n\r\n Billablestatus: string;\r\n\r\n Txntype: string;\r\n TxnTypeName: string;\r\n\r\n Txndate: Date;\r\n Modifieddate: Date;\r\n Createdate: Date;\r\n\r\n Adjustmentstatus: string;\r\n\r\n Contractlistid: string;\r\n Contractdesc: string;\r\n Tasklistid: string;\r\n TaskName: string;\r\n Employeelistid: string;\r\n EmployeeName: string;\r\n Pilistid: string;\r\n PayrollItem: string;\r\n Silistid: string;\r\n ServiceItem: string;\r\n Costcenterid: number;\r\n CostCenter: string;\r\n\r\n Hoursworked: number;\r\n Invoiceamount: number;\r\n InvoiceLabor: number;\r\n Gacost: number; // InvoiceGA: number;\r\n Mhcost: number; // InvoiceMH: number;\r\n Ohcost: number; // InvoiceOH: number;\r\n Frcost: number; // InvoiceFR: number;\r\n Feecost: number; // InvoiceFee: number;\r\n Actualamount: number; // IncurredAmt: number;\r\n IncurredLabor: number;\r\n Gacostebr: number; // IncurredGA: number;\r\n Mhcostebr: number; // IncurredMH: number;\r\n Ohcostebr: number; // IncurredOH: number;\r\n Frcostebr: number; // IncurredFR: number;\r\n Feecostebr: number; // IncurredFee: number;\r\n\r\n Autocalculate: boolean;\r\n Autoburden: boolean;\r\n TxnNotes: string;\r\n}\r\n","export * from './merge.data-service';\r\nexport * from './merge.model';","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DataServiceError, DefaultDataServiceConfig, EntityActionFactory, EntityOp, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { Merge } from './merge.model';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { IGenericResponse } from '../../common';\r\nimport { Update } from '@ngrx/entity';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromLookups from '../../lookups';\r\n\r\nexport const entityName = 'Merge';\r\n\r\n@Injectable()\r\nexport class MergeDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n protected save(update: Update): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save`,\r\n update\r\n });\r\n const item = {\r\n ...update.changes\r\n } as any;\r\n delete item.original;\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${this.entityName}List`]: [item]\r\n })\r\n .pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save:resp`,\r\n resp\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n update.changes.original &&\r\n update.changes.original.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n return {\r\n ...update.changes,\r\n ...update.changes.original,\r\n ...resp.Items[0],\r\n Status:\r\n resp.Items[0] && resp.Items[0].Status\r\n ? resp.Items[0].Status\r\n : {\r\n StatusCode: resp.StatusCode,\r\n Message: resp.StatusType\r\n }\r\n } as Merge;\r\n }\r\n if (\r\n resp.StatusCode === fromShared.ResponseStatus.Warning &&\r\n resp.Items.some(x => !x.Status.MsgEntityID)\r\n ) {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save:ResponseStatus.Warning`,\r\n resp\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(\r\n x =>\r\n !!x &&\r\n x.Status &&\r\n !x.Status.MsgEntityID\r\n )\r\n })\r\n )\r\n );\r\n }\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n this.store.dispatch(new fromLookups.LoadServiceItems(false));\r\n const result = {\r\n ...this.mapItems({\r\n id:\r\n update && update.changes && update.changes.id\r\n ? update.changes.id\r\n : update.changes.original\r\n ? update.changes.original.id\r\n : null,\r\n ...resp.Items[0]\r\n }),\r\n Status: {\r\n StatusCode: resp.StatusCode,\r\n Message:\r\n resp.Items &&\r\n resp.Items[0] &&\r\n resp.Items[0].Status &&\r\n resp.Items[0].Status.Message\r\n ? resp.Items[0].Status.Message\r\n : resp.StatusType\r\n }\r\n } as Merge;\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):result`,\r\n result\r\n });\r\n return result;\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n\r\n mapItems(item: Merge): Merge {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: `${item.Fromlistid}-${item.Finallistid}`\r\n };\r\n }\r\n}\r\n","import { IStatusMessage } from '../../common';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface Merge extends DataServiceEntity {\r\n Mergetype: string;\r\n Fromlistid: string;\r\n Finallistid: string;\r\n}","export * from './payrate-override.data-service';\r\nexport * from './payrate-override.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n DefaultDataServiceConfig,\r\n EntityActionFactory,\r\n EntityOp,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { IGenericResponse } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { PayrateOverride } from './payrate-override.model';\r\n\r\nexport const entityName = 'EmployeePayOvr';\r\n\r\n@Injectable()\r\nexport class PayrateOverrideDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n protected save(\r\n update: Update\r\n ): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(PayrateOverrideDataService):save`,\r\n update\r\n });\r\n const item = {\r\n ...update.changes\r\n } as any;\r\n delete item.original;\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${this.entityName}List`]: [item]\r\n })\r\n .pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(PayrateOverrideDataService):save:resp`,\r\n resp\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n update.changes.original &&\r\n update.changes.original.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n return {\r\n ...update.changes.original,\r\n Status:\r\n resp.Items[0] && resp.Items[0].Status\r\n ? resp.Items[0].Status\r\n : {\r\n StatusCode: resp.StatusCode,\r\n Message: resp.StatusType\r\n }\r\n } as PayrateOverride;\r\n }\r\n const af = new EntityActionFactory();\r\n this.store.dispatch(\r\n af.create(\r\n this.entityName,\r\n EntityOp.SAVE_UPSERT_MANY_SUCCESS,\r\n resp.Items.map(x => ({\r\n ...this.mapItems(x)\r\n }))\r\n )\r\n );\r\n return {\r\n ...this.mapItems(resp.Items[0])\r\n } as PayrateOverride;\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n mapItems(item: PayrateOverride): PayrateOverride {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.Ovrid,\r\n EndDate: moment(item.EndDate).isValid()\r\n ? moment(item.EndDate).toDate()\r\n : null,\r\n MaintDate: moment(item.MaintDate).isValid()\r\n ? moment(item.MaintDate).toDate()\r\n : null,\r\n StartDate: moment(item.StartDate).isValid()\r\n ? moment(item.StartDate).toDate()\r\n : null\r\n };\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface PayrateOverride extends DataServiceEntity {\r\n EmployeeListID: string;\r\n EmployeeName?: string;\r\n EndDate: Date;\r\n FromEndDate?: Date;\r\n FromStartDate?: Date;\r\n MaintDate?: Date;\r\n ModifiedBy?: string;\r\n Ovrid: number;\r\n PayRate: number;\r\n PayrollItem?: string;\r\n PayrollItemType?: string;\r\n PIListID: string;\r\n StartDate: Date;\r\n SyncPayrollItems: boolean;\r\n UserDirectReports?: {\r\n EmployeeListID: string;\r\n EmployeeName: string;\r\n IsActive: boolean;\r\n }[];\r\n}\r\n","export * from './payroll-validation.model';\r\nexport * from './payroll-validation.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { PayrollValidationModel } from './payroll-validation.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\n\r\nexport const entityName = 'PayrollValidation';\r\n@Injectable({ providedIn: 'root' })\r\nexport class PayrollValidationDataService extends EfaactDataService {\r\n mapItems(item: PayrollValidationModel): PayrollValidationModel {\r\n return item;\r\n // return {\r\n // ...item,\r\n // id: item.RowNumber\r\n // };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface PayrollValidationModel\r\n extends DataServiceEntity {\r\n id: string | number;\r\n RowNumber: number;\r\n Status: IStatusMessage;\r\n}\r\n","export * from './payroll-export.model';\r\nexport * from './payroll-export.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n DefaultDataService,\r\n DefaultDataServiceConfig,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport {\r\n PayrollExportCompletedSuccessStatuses,\r\n PayrollExportModel,\r\n PayrollExportStatus\r\n} from './payroll-export.model';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport * as moment from 'moment';\r\nimport { ResponseStatus } from '../../../common';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\n\r\nexport const entityName = 'PayrollExport';\r\n@Injectable({ providedIn: 'root' })\r\nexport class PayrollExportDataService extends EfaactDataService {\r\n getAll(): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService:getAll`\r\n });\r\n //TODO: ugh there must be a better way\r\n return DefaultDataService.prototype.getAll.call(this).pipe(\r\n map(resp => this.mapGetResponse(resp)),\r\n map((items: PayrollExportModel[]) =>\r\n items.map(p => this.mapItems(p))\r\n ),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n mapItems(item: PayrollExportModel): PayrollExportModel {\r\n const resp = item\r\n ? {\r\n ...item,\r\n id: this.getPayrollExportId(item),\r\n Status: {\r\n StatusCode: (Object as any)\r\n .values(PayrollExportCompletedSuccessStatuses)\r\n .includes(item.ExportStatus)\r\n ? ResponseStatus.Success\r\n : ResponseStatus.Warning,\r\n Message: item.ExportStatus\r\n }\r\n }\r\n : ({} as any);\r\n this.log.verbose({\r\n type: `${this.entityName}DataService:mapItems`,\r\n item,\r\n resp\r\n });\r\n return resp;\r\n }\r\n\r\n getPayrollExportId(item: PayrollExportModel): string | number {\r\n return item?.id\r\n ? item.id\r\n : moment(item.PayPeriodEndDate).format('YYYY-MM-DD');\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../../shared';\r\nimport { DataServiceEntity } from '../../data-service.entity';\r\nexport interface ValidationMessageModel {\r\n dataColumnIndex: number;\r\n dataReference: string;\r\n dataRowIndex: number;\r\n messageText: string;\r\n severity: string;\r\n}\r\nexport interface PayrollExportModel\r\n extends DataServiceEntity {\r\n id: string | number;\r\n PayPeriodEndDate: Date;\r\n SentDate?: Date;\r\n SentBy?: string;\r\n ExportStatus: string;\r\n ValidationMessages: ValidationMessageModel[];\r\n Status: IStatusMessage;\r\n}\r\nexport enum PayrollExportStatus {\r\n Parsing = 'Parsing',\r\n ParsingComplete = 'ParsingComplete',\r\n ParsingCompleteWithErrors = 'ParsingCompleteWithErrors',\r\n Importing = 'Importing',\r\n ImportingComplete = 'ImportingComplete',\r\n Refreshing = 'Refreshing'\r\n}\r\nexport enum PayrollExportErrorStatuses {\r\n ParsingCompleteWithErrors = 'ParsingCompleteWithErrors'\r\n}\r\n// This should be a subset of the above enum\r\nexport enum PayrollExportCompletedStatuses {\r\n // ParsingComplete = 'ParsingComplete',\r\n ParsingCompleteWithErrors = 'ParsingCompleteWithErrors',\r\n ImportingComplete = 'ImportingComplete'\r\n}\r\nexport enum PayrollExportCompletedSuccessStatuses {\r\n ImportingComplete = 'ImportingComplete'\r\n}\r\n\r\nexport enum PayrollExportInProgressStatuses {\r\n Parsing = 'Parsing',\r\n Importing = 'Importing',\r\n Refreshing = 'Refreshing'\r\n}\r\n","export * from './premium-pay.data-service';\r\nexport * from './premium-pay.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataServiceConfig,\r\n HttpUrlGenerator,\r\n QueryParams\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { PremiumPay } from './premium-pay.model';\r\n\r\nexport const entityName = 'PremiumPay';\r\n\r\n@Injectable()\r\nexport class PremiumPayDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n log.verbose({\r\n type: `${entityName}DataService`,\r\n msg: '::'\r\n });\r\n }\r\n /***\r\n * PremiumPay always uses POST\r\n */\r\n getWithQuery(params: string | QueryParams): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(PremiumPayDataService):getWithQuery`,\r\n params\r\n });\r\n return this.http.post(this.entitiesUrl, params).pipe(\r\n map(items => items.map(item => this.mapItems(item))),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n\r\n mapItems(item: PremiumPay): PremiumPay {\r\n return {\r\n ...item,\r\n StartDate: new Date(item.StartDate),\r\n EndDate: new Date(item.EndDate),\r\n CreatedDate: new Date(item.CreatedDate),\r\n ModifiedDate: new Date(item.ModifiedDate),\r\n id: item.Id\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface PremiumPay extends DataServiceEntity {\r\n CalcType: string;\r\n ClassName: string;\r\n CreatedBy: string;\r\n CreatedDate: Date;\r\n EmpAuthID: number;\r\n EmpAuthStartDate: Date;\r\n EmpAuthEndDate: Date;\r\n EmployeeName: string;\r\n EndDate: Date;\r\n Id: number;\r\n ModifiedBy: string;\r\n ModifiedDate: Date;\r\n PayrollItem: string;\r\n PlannedAmount: number;\r\n PremiumPay: number;\r\n PremiumPayIndicator: boolean;\r\n PremiumPercent: number;\r\n PremiumTaskListID: string;\r\n Row_Version: string;\r\n ServiceItem: string;\r\n StartDate: Date;\r\n TaskLongName: string;\r\n}\r\n","export * from './project-budget.data-service';\r\nexport * from './project-budget.model';\r\nexport * from './project-budget-update.model';\r\n","export interface ProjectBudgetUpdate {\r\n BudgetTxnID: number;\r\n CostType: string;\r\n BudgetHours: number;\r\n BudgetAmount: number;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n DefaultDataServiceConfig,\r\n EntitySelectors,\r\n EntitySelectorsFactory,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map, tap, withLatestFrom } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n getDynamicColumns,\r\n Guid,\r\n IDeleteEntity,\r\n IGenericResponse,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDynamicDataService } from '../efaact.dynamic-data-service';\r\nimport { ProjectBudget } from './project-budget.model';\r\nexport const entityName = 'ProjectBudget';\r\n\r\n@Injectable()\r\nexport class ProjectBudgetDataService extends EfaactDynamicDataService {\r\n projectBudgetSelectors: EntitySelectors;\r\n filterItems = ['Status', 'AutoCalculateAmount', 'Row_Version', 'updates'];\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.projectBudgetSelectors =\r\n new EntitySelectorsFactory().create(this.entityName);\r\n log.verbose({\r\n type: `${entityName}DataService`,\r\n msg: '::'\r\n });\r\n }\r\n\r\n public add(entity: ProjectBudget): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):add`,\r\n entity\r\n });\r\n return this.save({ id: Guid.newGuid(), changes: entity }).pipe(\r\n map(() => ({ ...entity }))\r\n );\r\n }\r\n protected save(update: Update): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):save`,\r\n update\r\n });\r\n let newBudget = false;\r\n const item = {\r\n ...update.changes,\r\n JumpStart: (update.changes as any).JumpStart || false,\r\n updates: []\r\n } as any;\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):save-1`,\r\n item\r\n });\r\n const cols = getDynamicColumns(item, this.filterItems);\r\n cols.forEach(c => {\r\n const keys = Object.keys(item[c]);\r\n if (item[c].TxnID) {\r\n // have to remove the spaces from the property names\r\n const updateItem = {};\r\n keys.forEach(k => {\r\n updateItem[k.replace(' ', '')] = item[c][k];\r\n });\r\n item.updates.push({\r\n ...updateItem,\r\n CostType: update.changes.CostType\r\n });\r\n }\r\n // keys.forEach(k => {\r\n // item[`${c}_${k}`] = item[c][k];\r\n // });\r\n delete item[c];\r\n });\r\n if (item.updates && !item.updates.length) {\r\n delete item.updates;\r\n }\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):save-2`,\r\n item,\r\n cols\r\n });\r\n let req = {} as any;\r\n if (item.updates && item.updates.length) {\r\n req = item.updates;\r\n req[0] = {\r\n ...req[0],\r\n ...item\r\n };\r\n delete req[0].updates;\r\n } else {\r\n newBudget = true;\r\n req = [item];\r\n }\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):save-3`,\r\n req\r\n });\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${this.entityName}List`]: req\r\n })\r\n .pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):save:resp`,\r\n resp\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n update.changes.original &&\r\n update.changes.original.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n throw new DataServiceError(\r\n fromShared.Errors.getResponseErrors(resp).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n );\r\n } else {\r\n const ret = {\r\n // ...update.changes,\r\n Status: {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Saved'\r\n }\r\n } as ProjectBudget;\r\n if (!newBudget) {\r\n cols.forEach(c => {\r\n const resUpd = resp.Items.find(\r\n x => x.TxnID === update.changes[c].TxnID\r\n );\r\n const updCols = Object.keys(update.changes[c]);\r\n updCols.forEach(u => {\r\n // ret[c][u] = resUpd[c][u];\r\n ret[c] = {\r\n ...(ret[c] || {}),\r\n [u]: resUpd[u.replace(' ', '')]\r\n };\r\n });\r\n delete ret[c].AutoCalculateAmount;\r\n });\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):save:return`,\r\n ret,\r\n cols,\r\n update,\r\n resp: resp.Items\r\n });\r\n } else {\r\n cols.forEach(c => {\r\n const resUpd = resp.Items.find(\r\n x => x.TxnID === update.changes[c].TxnID\r\n );\r\n ret[c] = {\r\n ...ret[c],\r\n ...(resUpd || {})\r\n };\r\n delete ret[c].AutoCalculateAmount;\r\n });\r\n }\r\n return ret;\r\n }\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n delete(key: number | string): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):delete`,\r\n key\r\n });\r\n // const keys = (key as string).split(',');\r\n const params = {\r\n EntityIDs: [key]\r\n };\r\n return this.http\r\n .request>(\r\n 'DELETE',\r\n this.entitiesUrl,\r\n {\r\n body: params\r\n }\r\n )\r\n .pipe(\r\n tap(resp =>\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):delete`,\r\n resp\r\n })\r\n ),\r\n withLatestFrom(\r\n this.store.pipe(\r\n select(this.projectBudgetSelectors.selectEntities)\r\n )\r\n ),\r\n map(([resp, budgets]) => {\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'DELETE', url: this.entitiesUrl }\r\n )\r\n );\r\n } else {\r\n const txnId = resp.Items[0].EntityID;\r\n const cols = getDynamicColumns(\r\n budgets[0],\r\n this.filterItems\r\n );\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ProjectBudgetDataService):delete`,\r\n txnId,\r\n cols,\r\n budgets\r\n });\r\n return budgets.find(b =>\r\n cols.find(c => b[c].TxnID === txnId)\r\n ).id;\r\n }\r\n // return resp.Items[0].EntityID;\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface ProjectBudget extends DataServiceEntity {\r\n AutoCalculateAmount: boolean;\r\n BudgetEndDate: Date;\r\n BudgetStartDate: Date;\r\n Contractlistid: string;\r\n ContractDesc: string;\r\n ContractType: string;\r\n CostCenterDesc: string;\r\n CostCenterID: number;\r\n CostType: string;\r\n DirectType: string;\r\n DisburseAmount: number;\r\n DisburseHours: number;\r\n PayrollItem: string;\r\n PersonListID: string;\r\n PersonName: string;\r\n PIListID: string;\r\n ServiceItem: string;\r\n SIListID: string;\r\n TaskListID: string;\r\n TaskLongName: string;\r\n YearlyBudgetAmount: number;\r\n YearlyBudgetHours: number;\r\n}\r\n","export * from './pto-policy-assignment.data-service';\r\nexport * from './pto-policy-assignment.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { PtoPolicyAssignment } from './pto-policy-assignment.model';\r\n\r\nexport const entityName = 'PTOPolicyEmp';\r\n\r\n@Injectable()\r\nexport class PtoPolicyAssignmentDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n // getById(id: string | number): Observable {\r\n // this.log.verbose({\r\n // type: `${entityName}DataService(PolicyAssignmentDataService):getById`,\r\n // id\r\n // });\r\n // return this.http\r\n // .post(this.entitiesUrl, { Policyid: id })\r\n // .pipe(\r\n // map(item => this.mapItems(item)),\r\n // catchError((e, c) =>\r\n // fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n // )\r\n // );\r\n // }\r\n\r\n mapItems(item: PtoPolicyAssignment): PtoPolicyAssignment {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.EmployeeListID,\r\n // FeeRetainPercentStartDate: moment(item.FeeRetainPercentStartDate).isValid() ? moment(item.FeeRetainPercentStartDate).toDate() : null,\r\n EffectiveDate: moment(item.EffectiveDate).isValid()\r\n ? moment(item.EffectiveDate).toDate()\r\n : null,\r\n AdjustedServiceDate: moment(item.AdjustedServiceDate).isValid()\r\n ? moment(item.AdjustedServiceDate).toDate()\r\n : null\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface PtoPolicyAssignment\r\n extends DataServiceEntity {\r\n Policyid: number;\r\n PolicyTitle: string;\r\n GroupName: string;\r\n Groupid: number;\r\n EmployeeListID: string;\r\n EmployeeName: string;\r\n HireDate: Date;\r\n YearsOfService: number;\r\n AccrualPeriod: string;\r\n HoursAccrued: number;\r\n EffectiveDate: Date;\r\n AdjustedServiceDate: Date;\r\n EffectiveDateModified: Date;\r\n EffectiveDateModifiedBy: string;\r\n OverrideMsg: string;\r\n vacationaccrualmax: number;\r\n}\r\n","export * from './pto-policy.data-service';\r\nexport * from './pto-policy.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n DefaultDataServiceConfig,\r\n EntityActionFactory,\r\n EntityOp,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport { IGenericResponse } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { PtoPolicySetup } from './pto-policy.model';\r\n\r\nexport const entityName = 'PTOPolicy';\r\n\r\n@Injectable()\r\nexport class PtoPolicySetupDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n protected save(update: Update): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(PtoPolicySetupDataService):save`,\r\n update\r\n });\r\n const item = {\r\n ...update.changes\r\n } as any;\r\n delete item.original;\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${this.entityName}List`]: [item]\r\n })\r\n .pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(PtoPolicySetupDataService):save:resp`,\r\n resp\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n update.changes.original &&\r\n update.changes.original.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n return {\r\n ...update.changes.original,\r\n Status:\r\n resp.Items[0] && resp.Items[0].Status\r\n ? resp.Items[0].Status\r\n : {\r\n StatusCode: resp.StatusCode,\r\n Message: resp.StatusType\r\n }\r\n } as PtoPolicySetup;\r\n }\r\n const af = new EntityActionFactory();\r\n this.store.dispatch(\r\n af.create(\r\n this.entityName,\r\n EntityOp.SAVE_UPSERT_MANY_SUCCESS,\r\n resp.Items.map(x => ({\r\n ...this.mapItems(x)\r\n }))\r\n )\r\n );\r\n // }\r\n return {\r\n ...this.mapItems(resp.Items[0])\r\n } as PtoPolicySetup;\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n\r\n mapItems(item: PtoPolicySetup): PtoPolicySetup {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.Policyid\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface PtoPolicySetup extends DataServiceEntity {\r\n Policyid: number;\r\n PolicyTitle: string;\r\n Groupid: number;\r\n YearsOfServiceStart: number;\r\n YearsOfServiceCeiling: number;\r\n AccrualPeriod: string;\r\n AccrualPeriodID: number;\r\n HoursAccrued: number;\r\n PolicyCriteriaEmpCnt: number;\r\n vacationaccrualmax: number;\r\n}\r\n","export * from './rate-ceiling.data-service';\r\nexport * from './rate-ceiling.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { RateCeiling } from './rate-ceiling.model';\r\n\r\nexport const entityName = 'ContractRateCeiling';\r\n\r\n@Injectable()\r\nexport class RateCeilingDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: RateCeiling): RateCeiling {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.Rateceilingid,\r\n Startdate: moment(item.Startdate).isValid() ? moment(item.Startdate).toDate() : null,\r\n Enddate: moment(item.Enddate).isValid() ? moment(item.Enddate).toDate() : null\r\n };\r\n }\r\n}\r\n","import { IStatusMessage } from '../../common';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface RateCeiling extends DataServiceEntity {\r\n Rateceilingid: number;\r\n CNListid: string;\r\n Chargenumber: string;\r\n Contractdesc: string;\r\n Contractlistid: string;\r\n Costcenterdesc: string;\r\n Costcenterid: string;\r\n Startdate: Date;\r\n Enddate: Date;\r\n FRR: number;\r\n GAR: number;\r\n M2R: number;\r\n MHR: number;\r\n OHR: number;\r\n}\r\n","export * from './rate-planning.data-service';\r\nexport * from './rate-planning.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n DefaultDataServiceConfig,\r\n EntitySelectors,\r\n EntitySelectorsFactory,\r\n HttpUrlGenerator\r\n} from '@ngrx/data';\r\nimport { Update } from '@ngrx/entity';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map, withLatestFrom } from 'rxjs/operators';\r\nimport { IGenericResponse, ResponseStatus } from '../../common';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDynamicDataService } from '../efaact.dynamic-data-service';\r\nimport { BudgetWorksheet } from './rate-planning.model';\r\nimport * as fromShared from '../../shared';\r\n\r\nexport const entityName = 'IndirectRatePlanning';\r\n\r\n@Injectable()\r\nexport class RatePlanningDataService extends EfaactDynamicDataService {\r\n\r\n selectors: EntitySelectors;\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.selectors = new EntitySelectorsFactory().create(\r\n this.entityName\r\n );\r\n }\r\n\r\n protected save(update: Update): Observable {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save`,\r\n update\r\n });\r\n const item = {\r\n ...update.changes\r\n } as any;\r\n delete item.original;\r\n return this.http\r\n .put>(this.entitiesUrl, {\r\n [`${this.entityName}List`]: [item]\r\n })\r\n .pipe(\r\n withLatestFrom(\r\n this.store.pipe(select(this.selectors.selectEntities))\r\n ),\r\n map(([resp, items]) => {\r\n const wksht = items.find(\r\n x => x.CostType == resp.Items[0].CostType\r\n );\r\n let line = wksht.Line.find(\r\n x => x.Month == resp.Items[0].Month\r\n );\r\n line = {\r\n ...line,\r\n Budget: resp.Items[0].Budget,\r\n Forecast: resp.Items[0].Forecast\r\n };\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save:resp`,\r\n resp\r\n });\r\n if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(x => !!x).map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n ...x.Status,\r\n MsgEntityID:\r\n update.changes.original &&\r\n update.changes.original.id\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n throwError(\r\n new DataServiceError(\r\n fromShared.Errors.getResponseErrors(\r\n resp\r\n ).reduce(\r\n (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n ''\r\n ),\r\n { method: 'PUT', url: this.entitiesUrl }\r\n )\r\n );\r\n\r\n return {\r\n ...update.changes,\r\n ...update.changes.original,\r\n ...resp.Items[0],\r\n Status:\r\n resp.Items[0] && resp.Items[0].Status\r\n ? resp.Items[0].Status\r\n : {\r\n StatusCode: resp.StatusCode,\r\n Message: resp.StatusType\r\n }\r\n } as BudgetWorksheet;\r\n }\r\n if (\r\n resp.StatusCode === ResponseStatus.Warning &&\r\n resp.Items.some(x => !x.Status.MsgEntityID)\r\n ) {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(EfaactDataService):save:ResponseStatus.Warning`,\r\n resp\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n Items: resp.Items.filter(\r\n x =>\r\n !!x &&\r\n x.Status &&\r\n !x.Status.MsgEntityID\r\n )\r\n })\r\n )\r\n );\r\n }\r\n const index = wksht.Line.findIndex(x => x.Month == resp.Items[0].Month);\r\n const wkshtLines = wksht.Line.map(line => ({\r\n Month: line.Month,\r\n Budget: line.Budget,\r\n Forecast: line.Forecast\r\n }));\r\n wkshtLines.splice(index, 1);\r\n wkshtLines.splice(index, 0, line);\r\n const ret = {\r\n ...wksht,\r\n Line: wkshtLines,\r\n Status: {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Saved'\r\n }\r\n } as BudgetWorksheet;\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(RatePlanningDataService):save:return`,\r\n ret,\r\n update,\r\n resp: resp.Items\r\n });\r\n return ret;\r\n }),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n\r\n mapItems(item: BudgetWorksheet): BudgetWorksheet {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: `${item.CostType}-${item.CCID}-${item.Line == null ? '' : item.Line[0].CalcType}`\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from \"../data-service.entity\";\r\n\r\nexport interface BudgetWorksheet extends DataServiceEntity {\r\n BudgetYearEnd: string;\r\n CCDesc: string;\r\n CostType: string;\r\n CostTypeGroup: string;\r\n CCID: number;\r\n Line: WorksheetLine[];\r\n}\r\n\r\nexport interface WorksheetLine {\r\n Month: string;\r\n Budget: number;\r\n Forecast: number;\r\n CalcType: string;\r\n}\r\n","export * from './recalculate-contracts.data-service';\r\nexport * from './recalculate-contracts.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { RecalculateContract } from './recalculate-contracts.model';\r\n\r\nexport const entityName = 'InvoiceSchedule';\r\n\r\n@Injectable()\r\nexport class RecalculateContractsDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: RecalculateContract): RecalculateContract {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.ContractDesc,\r\n PeriodStartDate: moment(item.PeriodStartDate).isValid()\r\n ? moment(item.PeriodStartDate).toDate()\r\n : null,\r\n PeriodEndDate: moment(item.PeriodEndDate).isValid()\r\n ? moment(item.PeriodEndDate).toDate()\r\n : null\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface RecalculateContract extends DataServiceEntity {\r\n ProcessScheduleID: number;\r\n PeriodStartDate: Date;\r\n PeriodEndDate: Date;\r\n PeriodStatus: string;\r\n ContractDesc: string;\r\n ContractSelected: boolean;\r\n ContractListID: string;\r\n CNListID: string;\r\n FPInvoiceAmount: number;\r\n Contractscheduled: boolean;\r\n Contractinvoiced: boolean;\r\n}\r\n","export * from './recalculate-schedules.data-service';\r\nexport * from './recalculate-schedules.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { RecalculateSchedule } from './recalculate-schedules.model';\r\n\r\nexport const entityName = 'ProcessingSchedule';\r\n\r\n@Injectable()\r\nexport class RecalculateSchedulesDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n }\r\n\r\n mapItems(item: RecalculateSchedule): RecalculateSchedule {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.ProcessScheduleID,\r\n PeriodStartDate: moment(item.PeriodStartDate).isValid()\r\n ? moment(item.PeriodStartDate).toDate()\r\n : null,\r\n PeriodEndDate: moment(item.PeriodEndDate).isValid()\r\n ? moment(item.PeriodEndDate).toDate()\r\n : null,\r\n QBImportDate: moment(item.QBImportDate).isValid()\r\n ? moment(item.QBImportDate).toDate()\r\n : null,\r\n EFCommitDate: moment(item.EFCommitDate).isValid()\r\n ? moment(item.EFCommitDate).toDate()\r\n : null\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface RecalculateSchedule extends DataServiceEntity {\r\n ProcessScheduleID: number;\r\n PeriodStartDate: Date;\r\n PeriodEndDate: Date;\r\n PeriodStatus: string;\r\n QBImportDate: Date;\r\n EFCommitDate: Date;\r\n GLSyncDate: Date;\r\n selected: boolean;\r\n Timer: boolean;\r\n Userlogdetail: string;\r\n}\r\n","export * from './recalculate-settings.model';\r\nexport * from './recalculate-settings.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { RecalculateSetting } from './recalculate-settings.model';\r\n\r\nexport const entityName = 'CompanySetting';\r\n\r\n@Injectable()\r\nexport class RecalculateSettingsDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.usePostForQuery = true;\r\n }\r\n mapItems(item: RecalculateSetting): RecalculateSetting {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.SettingType\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface RecalculateSetting extends DataServiceEntity {\r\n CatID: number;\r\n CatDescription: string;\r\n SettingType: string;\r\n SettingTypeLabel: string;\r\n SettingValue: any;\r\n CtrlType: string;\r\n Validation: string;\r\n Isconfirmrequired: boolean;\r\n Isreadonly: boolean;\r\n}\r\n","export * from './reconciliation.data-service';\r\nexport * from './reconciliation.model';\r\nexport * as Fields from './reconciliation-fields';\r\nexport * as Template from './reconciliation-templates';\r\n// export * as Timecard from './reconciliation-timecard';\r\n// export * as PayperiodLabor from './reconciliation-pay-period-labor';\r\n","export * from './reconciliation-field.data-service';\r\nexport * from './reconciliation-field.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpUrlGenerator, DefaultDataServiceConfig } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { ReconciliationFieldModel } from './reconciliation-field.model';\r\nimport * as data from './MOCK_DATA.json';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const entityName = 'eFTemplate';\r\n@Injectable()\r\nexport class ReconciliationFieldDataService extends EfaactDataService {\r\n constructor (\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationFieldDataService)::`\r\n });\r\n }\r\n protected mapGetResponse(resp: any): any[] {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationFieldDataService):mapGetResponse:resp`,\r\n resp\r\n });\r\n return JSON.parse(resp) as any[];\r\n }\r\n mapItems(item: ReconciliationFieldModel): ReconciliationFieldModel {\r\n const result = {\r\n ...item,\r\n id: item.id || `${item.ProcessID}-${item.PropertyID}`\r\n };\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationFieldDataService):mapItems`,\r\n item,\r\n result\r\n });\r\n return result;\r\n }\r\n getAll(): Observable {\r\n throw new Error('ReconciliationFieldDataService requires parameters');\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface ReconciliationFieldModel\r\n extends DataServiceEntity {\r\n InUse: boolean;\r\n PersonListID: string;\r\n ProcessID: number;\r\n PropertyDesc: string;\r\n PropertyID: number;\r\n PropertyName: string;\r\n PropertyType: string;\r\n UserDirectReports: string[];\r\n}\r\n","export * from './reconciliation-template.data-service';\r\nexport * from './reconciliation-template.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpUrlGenerator, DefaultDataServiceConfig } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { ReconciliationTemplateModel } from './reconciliation-template.model';\r\nimport * as data from './MOCK_DATA.json';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const entityName = 'ReconciliationTemplate';\r\n@Injectable()\r\nexport class ReconciliationTemplateDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationTemplateDataService)::`\r\n });\r\n }\r\n\r\n mapItems(item: any): ReconciliationTemplateModel {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationTemplateDataService):mapItems`,\r\n item\r\n });\r\n return { Name: item.TemplateName, id: item.TemplateName } as any;\r\n // return item;\r\n // this.log.verbose({\r\n // type: `${this.entityName}DataService(ReconciliationTemplateDataService):mapItems`,\r\n // item\r\n // });\r\n // return { ...item, id: item.Fieldname };\r\n }\r\n getAll(): Observable {\r\n // return of([]);\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationTemplateDataService):getAll`,\r\n data: (data as any).default\r\n });\r\n return of((data as any).default).pipe(\r\n map(items => items.map(p => this.mapItems(p)))\r\n );\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface ReconciliationTemplateModel\r\n extends DataServiceEntity {\r\n Name: string;\r\n }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpUrlGenerator, DefaultDataServiceConfig } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { ReconciliationModel } from './reconciliation.model';\r\nimport { Guid } from '../../shared';\r\n\r\nexport const entityName = 'Reconciliation';\r\n@Injectable()\r\nexport class ReconciliationDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationDataService)::`\r\n });\r\n }\r\n\r\n protected mapGetResponse(resp: any): any[] {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationDataService):mapGetResponse:resp`,\r\n resp\r\n });\r\n return JSON.parse(resp) as any[];\r\n }\r\n mapItems(item: ReconciliationModel): ReconciliationModel {\r\n this.log.verbose({\r\n type: `${this.entityName}DataService(ReconciliationDataService):mapItems`,\r\n item\r\n });\r\n return { ...item, id: Guid.newGuid() };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface ReconciliationModel\r\n extends DataServiceEntity {\r\n Fieldname: string;\r\n Isstandard: boolean;\r\n }\r\n","export * from './registration.model';\r\nexport * from './registration.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { RegistrationModel } from './registration.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { isDateSelectionValid } from '@fullcalendar/core/validation';\r\n\r\nexport const entityName = 'Registration';\r\n@Injectable({ providedIn: 'root' })\r\nexport class RegistrationDataService extends EfaactDataService {\r\n mapItems(item: RegistrationModel): RegistrationModel {\r\n return { ...item, id: item.CustomerId };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface RegistrationModel\r\n extends DataServiceEntity {\r\n id: string | number;\r\n Status: IStatusMessage;\r\n ProductCode: string;\r\n CustomerId: string;\r\n EIN: string;\r\n NeedsRegistration: boolean;\r\n}\r\n","export * from './service-item-history.model';\r\nexport * from './service-item-history.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../../efaact.data-service';\r\nimport { ServiceItemHistory } from './service-item-history.model';\r\n\r\nexport const entityName = 'ServiceItemSettingHist';\r\n@Injectable()\r\nexport class ServiceItemHistoryDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n log.verbose({\r\n type: `${entityName}DataService`,\r\n msg: '::'\r\n });\r\n this.usePostForQuery = true;\r\n }\r\n mapItems(item: ServiceItemHistory): ServiceItemHistory {\r\n return {\r\n ...item,\r\n id: `${\r\n item.SIListID\r\n }-${item.SessionStart.valueOf()}-${item.SessionEnd.valueOf()}`\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../../data-service.entity';\r\n\r\nexport interface ServiceItemHistory\r\n extends DataServiceEntity {\r\n SIListID: string;\r\n Modifiedby: string;\r\n Modifieddate: Date;\r\n SessionStart: Date;\r\n SessionEnd: Date;\r\n ServiceItemCost: number;\r\n ServiceItemPrice: number;\r\n}\r\n","export * as History from './history';\r\n","export * from './signature-policy.data-service';\r\nexport * from './signature-policy.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { SignaturePolicy } from './signature-policy.model';\r\n\r\nexport const entityName = 'UserValidate';\r\n\r\n@Injectable()\r\nexport class SignaturePolicyDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n log.verbose({\r\n type: `${entityName}DataService(SignaturePolicyDataService)`,\r\n msg: '::'\r\n });\r\n }\r\n\r\n getById(id: string | number): Observable {\r\n this.log.verbose({\r\n type: `${entityName}DataService(SignaturePolicyDataService):getById`,\r\n id\r\n });\r\n return this.http\r\n .post(this.entitiesUrl, { validationcode: id })\r\n .pipe(\r\n map(item => this.mapItems(item)),\r\n catchError((e, c) =>\r\n fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n )\r\n );\r\n }\r\n\r\n mapItems(item: SignaturePolicy): SignaturePolicy {\r\n this.log.verbose({\r\n type: `${entityName}DataService(SignaturePolicyDataService):mapItems`,\r\n item\r\n });\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: 1\r\n };\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface SignaturePolicy extends DataServiceEntity {\r\n Validationcode: string;\r\n Validated: boolean;\r\n}\r\n","export * from './timecard-class.model';\r\nexport * from './timecard-class.data-service';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n DefaultDataService,\r\n DefaultDataServiceConfig,\r\n HttpUrlGenerator,\r\n QueryParams\r\n} from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { TimecardClass } from './timecard-class.model';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromErrors from '../../shared';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\n\r\nexport const entityName = 'TimecardClass';\r\n\r\n@Injectable()\r\nexport class TimecardClassDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n mapItems(item: TimecardClass): TimecardClass {\r\n return {\r\n ...item,\r\n id: `${item.ClassListID}-${item.EmpAuthID}`\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\nimport { TimecardClassDataService } from './timecard-class.data-service';\r\n\r\nexport interface TimecardClass extends DataServiceEntity {\r\n EmpAuthID: string;\r\n ClassListID: string;\r\n ClassName: string;\r\n}\r\n","export * from './timecard-sequence.data-service';\r\nexport * from './timecard-sequence.model';\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { TimecardSequence } from './timecard-sequence.model';\r\n\r\nexport const entityName = 'TimecardSequence';\r\n\r\n@Injectable()\r\nexport class TimecardSequenceDataService extends EfaactDataService {\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n\r\n // protected save(\r\n // update: Update\r\n // ): Observable {\r\n // this.log.verbose({\r\n // type: `${this.entityName}DataService(TimecardSequenceDataService):save`,\r\n // update\r\n // });\r\n // const item = {\r\n // ...update.changes\r\n // } as any;\r\n // delete item.original;\r\n // return this.http\r\n // .put>(this.entitiesUrl, {\r\n // [`${this.entityName}List`]: [item]\r\n // })\r\n // .pipe(\r\n // map(resp => {\r\n // this.log.verbose({\r\n // type: `${this.entityName}DataService(TimecardSequenceDataService):save:resp`,\r\n // resp\r\n // });\r\n // if (!fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n // this.store.dispatch(\r\n // new fromShared.Errors.SetErrors(\r\n // fromShared.Errors.MapErrorsToStatus({\r\n // ...resp,\r\n // Items: resp.Items.filter(x => !!x).map(\r\n // x => ({\r\n // ...x,\r\n // Status: {\r\n // ...x.Status,\r\n // MsgEntityID:\r\n // update.changes.original &&\r\n // update.changes.original.id\r\n // }\r\n // })\r\n // )\r\n // })\r\n // )\r\n // );\r\n // throwError(\r\n // new DataServiceError(\r\n // fromShared.Errors.getResponseErrors(\r\n // resp\r\n // ).reduce(\r\n // (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n // ''\r\n // ),\r\n // { method: 'PUT', url: this.entitiesUrl }\r\n // )\r\n // );\r\n // // throw new Error(\r\n // // resp.ErrorMessages.reduce(\r\n // // (a, c, i) => (i === 0 ? c : `${a}\\n${c}`),\r\n // // ''\r\n // // )\r\n // // );\r\n // return {\r\n // // ...this.mapT(update.changes as T),\r\n // ...update.changes.original,\r\n // Status:\r\n // resp.Items[0] && resp.Items[0].Status\r\n // ? resp.Items[0].Status\r\n // : {\r\n // StatusCode: resp.StatusCode,\r\n // Message: resp.StatusType\r\n // }\r\n // } as TimecardSequence;\r\n // }\r\n // const af = new EntityActionFactory();\r\n // // if (update.changes.SyncPayrollItems === true) {\r\n // this.store.dispatch(\r\n // af.create(\r\n // this.entityName,\r\n // EntityOp.SAVE_UPSERT_MANY_SUCCESS,\r\n // resp.Items.map(x => ({\r\n // ...this.mapItems(x)\r\n // }))\r\n // )\r\n // );\r\n // // }\r\n // return {\r\n // ...this.mapItems(resp.Items[0])\r\n // // Status: {\r\n // // StatusCode: ResponseStatus.Success,\r\n // // Message: 'Saved'\r\n // // }\r\n // } as TimecardSequence;\r\n // }),\r\n // catchError((e, c) =>\r\n // fromShared.Errors.handleDataServiceError(this.store, e, c)\r\n // )\r\n // );\r\n // }\r\n\r\n mapItems(item: TimecardSequence): TimecardSequence {\r\n if (!item) {\r\n return;\r\n }\r\n return {\r\n ...item,\r\n id: item.Empauthid,\r\n Tasksortorder: item.Tasksortorder\r\n };\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface TimecardSequence extends DataServiceEntity {\r\n Empauthid: number;\r\n Employeelistid: string;\r\n Tasklongname: string;\r\n Tasksortorder: number;\r\n}\r\n","export * from './toast.model';\r\nexport * from './toaster.data-service';\r\n","import { DataServiceEntity } from '../data-service.entity';\r\n\r\nexport interface Toast extends DataServiceEntity {\r\n type: ToastType;\r\n title?: string;\r\n body?: any;\r\n toastId?: string;\r\n toastContainerId?: string;\r\n onShowCallback?: OnActionCallback;\r\n onHideCallback?: OnActionCallback;\r\n onClickCallback?: OnActionCallback;\r\n timeout?: number;\r\n sticky?: boolean;\r\n bodyOutputType?: BodyOutputType;\r\n showCloseButton?: boolean;\r\n closeHtml?: string;\r\n data?: any;\r\n tapToDismiss?: boolean;\r\n progressBar?: boolean;\r\n progressBarDirection?: ProgressBarDirection;\r\n}\r\nexport declare enum BodyOutputType {\r\n Default = 0,\r\n TrustedHtml = 1,\r\n Component = 2\r\n}\r\n\r\nexport declare type ToastType =\r\n | 'success'\r\n | 'info'\r\n | 'warning'\r\n | 'wait'\r\n | 'error';\r\nexport declare type OnActionCallback = (toast: Toast) => void;\r\nexport declare type ProgressBarDirection = 'decreasing' | 'increasing';\r\nexport interface IClearWrapper {\r\n toastId?: string;\r\n toastContainerId?: number;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\nimport { Toast } from './toast.model';\r\n\r\nexport const entityName = 'Toaster';\r\n@Injectable({ providedIn: 'root' })\r\nexport class ToasterDataService extends EfaactDataService {\r\n mapItems(item: Toast): Toast {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","export * from './vendor.model';\r\nexport * from './vendor.data-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DefaultDataServiceConfig, HttpUrlGenerator } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { VendorModel } from './vendor.model';\r\nimport { EfaactDataService } from '../efaact.data-service';\r\n\r\nexport const entityName = 'Vendor';\r\n@Injectable({ providedIn: 'root' })\r\nexport class VendorDataService extends EfaactDataService {\r\n mapItems(item: VendorModel): VendorModel {\r\n return {\r\n ...item,\r\n id: item.VendorListID\r\n };\r\n }\r\n\r\n constructor(\r\n http: HttpClient,\r\n httpUrlGenerator: HttpUrlGenerator,\r\n log: LoggingService,\r\n config: DefaultDataServiceConfig,\r\n store: Store\r\n ) {\r\n super(http, httpUrlGenerator, entityName, log, config, store);\r\n }\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../data-service.entity';\r\n\r\n//TODO: is vendor a form of employee or user?\r\nexport interface VendorModel extends DataServiceEntity {\r\n id: string;\r\n VendorListID: string;\r\n VendorName: string;\r\n Is1099: boolean;\r\n IsConsultant: boolean;\r\n ConTime: boolean;\r\n ConExp: boolean;\r\n EmployeeListID: string;\r\n EmployeeName: string;\r\n Status: IStatusMessage;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport * as fromCumsActions from '../../contract-cumulative/store/contract-cumulative.actions';\r\nimport * as fromCumsReducer from '../../contract-cumulative/store/contract-cumulative.reducer';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { DeferBilling } from '../../data-services/defer-billing';\r\nimport { ExpenseItem } from '../../expense-item/store/expense-item.model';\r\nimport * as fromEIReducer from '../../expense-item/store/expense-item.reducer';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IDirectReport, LoadServiceItems } from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { uniqBy } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport * as fromUser from '../../user-info';\r\nimport { IUserInfo } from '../../user-info';\r\nimport { Item } from '../defer-billing-presenter/defer-billing-presenter.component';\r\n@Component({\r\n selector: 'ef-defer-billing-feature',\r\n templateUrl: './defer-billing-feature.component.html',\r\n styleUrls: ['./defer-billing-feature.component.scss']\r\n})\r\nexport class DeferBillingFeatureComponent implements OnInit {\r\n process$: Observable;\r\n\r\n public billing$: Observable;\r\n public serviceitems$: Observable;\r\n public directreports$: Observable;\r\n public tasks$: Observable;\r\n public userGroups$: Observable;\r\n public contracts$: Observable;\r\n public chargenumbers$: Observable<\r\n fromDataServices.ChargeNumber.ChargeNumber[]\r\n >;\r\n public txntypes$: Observable;\r\n public payrollitems$: Observable;\r\n public userInfo$: Observable;\r\n public expenseitems$: Observable;\r\n public items$: Observable;\r\n public userInfo: IUserInfo;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n\r\n active = true;\r\n IsLoading: boolean;\r\n billingDataService: EntityCollectionService;\r\n contractDataService: EntityCollectionService;\r\n chargeNumberDataService: EntityCollectionService;\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.billingDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.DeferBilling.entityName\r\n );\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n this.chargeNumberDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ChargeNumber.entityName\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n // this.billingDataService.getWithQuery({\r\n // StartDate: moment(new Date()).format('MM/DD/YYYY'),\r\n // EndDate: moment(new Date()).format('MM/DD/YYYY'),\r\n // Contracts: []\r\n // });\r\n this.contractDataService.getAll();\r\n // this.chargeNumberDataService.getAll();\r\n // this.store.dispatch(fromEIActions.getExpenseItems());\r\n // this.store.dispatch(fromStore.getPayrollItems());\r\n this.store.dispatch(fromCumsActions.getTxnTypes());\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n this.store.dispatch(new LoadServiceItems(false, true, true));\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.billingDataService.clearCache();\r\n this.billing$ = null;\r\n }\r\n\r\n setupObservables() {\r\n // this.companysettings$ = this.recalculateSettingsDataService.entities$.pipe(\r\n // map(x => clone(x))\r\n // );\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.expenseitems$ = this.store.pipe(\r\n select(fromEIReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n\r\n this.billing$ = this.billingDataService.entities$.pipe(\r\n map(c => clone(c))\r\n );\r\n\r\n this.userGroups$ = this.store.pipe(\r\n select(fromLookups.getUserGroupsLookup)\r\n );\r\n\r\n this.payrollitems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(x => clone(x) as PayrollItem[]),\r\n map(payrollItems =>\r\n payrollItems\r\n .filter(x => x.IsActive === true)\r\n .sort((a, b) => a.PayrollItem.localeCompare(b.PayrollItem))\r\n ),\r\n map(items => uniqBy(items, x => x.PIListID) as PayrollItem[])\r\n );\r\n\r\n this.directreports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n map(x => clone(x)),\r\n map(users => users.filter(x => x.IsActive == true)),\r\n map(x =>\r\n x.sort((a, b) => a.EmployeeName.localeCompare(b.EmployeeName))\r\n )\r\n );\r\n\r\n this.serviceitems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ServiceItem.localeCompare(b.ServiceItem))\r\n )\r\n );\r\n\r\n this.tasks$ = this.store.pipe(\r\n select(fromLookups.getTasksLookup),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.TaskLongName.localeCompare(b.TaskLongName))\r\n )\r\n );\r\n\r\n this.txntypes$ = this.store.pipe(\r\n select(fromCumsReducer.selectTxnTypes),\r\n map(x => clone(x)),\r\n map(x => x.sort((a, b) => a.CalcDesc.localeCompare(b.CalcDesc)))\r\n );\r\n\r\n this.contracts$ = this.contractDataService.entities$.pipe(\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n )\r\n );\r\n\r\n this.chargenumbers$ = this.chargeNumberDataService.entities$.pipe(\r\n map(x => clone(x)),\r\n map(x => x.sort((a, b) => a.FullName.localeCompare(b.FullName)))\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.billing$.pipe(takeWhile(() => this.active)).subscribe(billing => {\r\n // billing = billing.filter(items => !!items);\r\n if (billing.length > 0) {\r\n this.IsLoading = false;\r\n } else {\r\n this.IsLoading = true;\r\n }\r\n });\r\n\r\n this.userInfo$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(userInfo => {\r\n this.userInfo = userInfo;\r\n this.store.dispatch(new fromLookups.LoadDirectReports({user: userInfo, activeOnly: false }));\r\n });\r\n // combineLatest([this.serviceitems$, this.expenseitems$])\r\n // .pipe(takeWhile(() => this.active))\r\n // .subscribe(([si, ei]) => {\r\n // let siarr: any[] = si;\r\n // siarr = siarr.map(x => ({\r\n // IListID: x.SIListID,\r\n // Item: x.ServiceItem,\r\n // IsActive: x.IsActive\r\n // }));\r\n // let eiarr: any[] = ei;\r\n // eiarr = eiarr.map(x => ({\r\n // IListID: x.EIListID,\r\n // Item: x.ExpenseItem,\r\n // IsActive: x.IsActive\r\n // }));\r\n // const items: Item[] = siarr.concat(eiarr);\r\n // this.items$ = of(items);\r\n // });\r\n }\r\n\r\n onLoadBilling($event) {\r\n this.log.verbose({\r\n type: 'DeferBillingFeatureComponent:onLoadBilling',\r\n $event\r\n });\r\n this.billingDataService.clearCache();\r\n if ($event != null) {\r\n this.billingDataService.getWithQuery($event);\r\n } else {\r\n this.billingDataService.getWithQuery(null);\r\n }\r\n this.IsLoading = true;\r\n }\r\n\r\n onSaveBilling($event) {\r\n this.log.verbose({\r\n type: 'DeferBillingFeatureComponent:onSaveBilling'\r\n });\r\n this.billingDataService.upsert($event);\r\n }\r\n\r\n onDeleteBilling($event) {\r\n this.billingDataService.delete($event);\r\n }\r\n\r\n onLoadChargeNumbers($event) {\r\n this.chargeNumberDataService.clearCache();\r\n this.chargeNumberDataService.getWithQuery($event);\r\n }\r\n}\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { CostCenter } from '../../contract-cumulative/CostCenter';\r\nimport { Users } from '../../contract-cumulative/store/users.model';\r\nimport { ChargeNumber, Contract } from '../../data-services';\r\nimport { DeferBilling } from '../../data-services/defer-billing';\r\nimport { RecalculateSetting } from '../../data-services/recalculate-transactions/recalculate-settings/recalculate-settings.model';\r\nimport * as fromLookups from '../../lookups';\r\nimport { CalcType, IServiceItem, ITask, IUserGroup } from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item';\r\nimport { IStatusMessage, Process, SelectItem, Table } from '../../shared';\r\nimport { columnResize } from '../../shared/columnResize';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-defer-billing-presenter',\r\n templateUrl: './defer-billing-presenter.component.html',\r\n styleUrls: ['./defer-billing-presenter.component.scss']\r\n})\r\nexport class DeferBillingPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, OnChanges, OnDestroy\r\n{\r\n SelectedErrorSubject = new ReplaySubject(1);\r\n startDate: any;\r\n endDate: any;\r\n companyFYNotice: any[];\r\n\r\n elements: HTMLCollection;\r\n\r\n private BillingSubject = new ReplaySubject>(1);\r\n private _billing: Array;\r\n filteredBilling: DeferBilling[];\r\n\r\n @Input() set billing(value: Array) {\r\n // this.log.verbose(this.IsLoading);\r\n if (value != null) {\r\n this._billing = value.map(x => ({\r\n Txnid: x.Txnid,\r\n Sessionid: x.Sessionid,\r\n Billdate: x.Billdate,\r\n Billablestatus: x.Billablestatus,\r\n Txntype: x.Txntype,\r\n //TxnTypeName: this.findTxnType(x.Txntype),\r\n Txndate: x.Txndate,\r\n Modifieddate: x.Modifieddate,\r\n Modifiedby: x.Modifiedby,\r\n Createdate: x.Createdate,\r\n Adjustmentstatus: x.Adjustmentstatus,\r\n // Contractlistid: x.Contractlistid,\r\n Contractdesc: x.Contractdesc,\r\n Tasklistid: x.Tasklistid,\r\n Task: x.Task,\r\n Employeelistid: x.Employeelistid,\r\n Person: x.Person,\r\n Pilistid: x.Pilistid,\r\n PayrollItem: x.PayrollItem,\r\n Silistid: x.Silistid,\r\n ServiceItem: x.ServiceItem,\r\n Costcenterid: x.Costcenterid,\r\n CostCenter: x.CostCenter,\r\n Hoursworked: x.Hoursworked,\r\n Invoiceamount: x.Invoiceamount,\r\n Invoiceburdened: x.Invoiceburdened,\r\n Gacost: x.Gacost,\r\n Mhcost: x.Mhcost,\r\n Ohcost: x.Ohcost,\r\n Frcost: x.Frcost,\r\n Feecost: x.Feecost,\r\n Invoiceenddate: x.Invoiceenddate,\r\n Invoicenbr: x.Invoicenbr,\r\n TxnNotes: x.TxnNotes,\r\n Deferred: x.Deferred,\r\n Status: x.Status,\r\n id: x.id,\r\n original: x.original,\r\n Row_Version: x.Row_Version\r\n }));\r\n this.filteredBilling = this._billing;\r\n this.BillingSubject.next(this._billing);\r\n\r\n this.txnTypesFilterSelectItem = value.map(x => ({\r\n value: this.findTxnType(x.Txntype),\r\n label: this.findTxnType(x.Txntype)\r\n }));\r\n this.txnTypesFilterSelectItem =\r\n this.txnTypesFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.userGroupsFilterSelectItem = value.map(x => ({\r\n value: x.Costcenterid,\r\n label: this.findCostCenterName(x.Costcenterid)\r\n }));\r\n this.userGroupsFilterSelectItem =\r\n this.userGroupsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.tasksFilterSelectItem = value.map(x => ({\r\n value: x.Tasklistid,\r\n label: this.findTask(x)\r\n }));\r\n this.tasksFilterSelectItem = this.tasksFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.contractsFilterSelectItem = value.map(x => ({\r\n value: x.Contractlistid,\r\n label: x.Contractdesc\r\n }));\r\n this.contractsFilterSelectItem =\r\n this.contractsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.directReportsFilterSelectItem = value.map(x => ({\r\n value: x.Employeelistid,\r\n label: this.findEmployee(x)\r\n }));\r\n this.directReportsFilterSelectItem =\r\n this.directReportsFilterSelectItem.filter(x => x.value != null);\r\n this.directReportsFilterSelectItem =\r\n this.directReportsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.serviceItemsFilterSelectItem = value.map(x => ({\r\n value: x.Silistid,\r\n label: this.findServiceItem(x)\r\n }));\r\n this.serviceItemsFilterSelectItem =\r\n this.serviceItemsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.payrollItemsFilterSelectItem = value.map(x => ({\r\n value: x.Pilistid,\r\n label: this.findPayrollItem(x)\r\n }));\r\n this.payrollItemsFilterSelectItem =\r\n this.payrollItemsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n // this.IsLoading = false;\r\n }\r\n get billing(): Array {\r\n return this._billing;\r\n }\r\n\r\n private TasksSubject = new ReplaySubject>(1);\r\n private _tasks: Array;\r\n @Input() set tasks(value: Array) {\r\n if (value) {\r\n this._tasks = value;\r\n const filteredTasks = this._tasks.filter(\r\n x => x.ContractType != 'LOC'\r\n );\r\n this.TasksSubject.next(value);\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n }\r\n get tasks(): Array {\r\n return this._tasks;\r\n }\r\n\r\n private DirectReportsSubject = new ReplaySubject>>(1);\r\n private _directreports: Array>;\r\n @Input() set directreports(value: Array>) {\r\n if (value) {\r\n value.splice(0, 0, {\r\n EmployeeListID: 'SYS000000000000000000000000000000000',\r\n EmployeeName: 'Not applicable'\r\n });\r\n this._directreports = value;\r\n this.DirectReportsSubject.next(value);\r\n this.directReportsSelectItem = this._directreports.map(x => ({\r\n value: x.EmployeeListID,\r\n label: x.EmployeeName\r\n }));\r\n }\r\n }\r\n get directreports(): Array> {\r\n return this._directreports;\r\n }\r\n\r\n private ServiceItemsSubject = new ReplaySubject>(1);\r\n private _serviceitems: Array;\r\n @Input() set serviceitems(value: Array) {\r\n if (value) {\r\n this._serviceitems = value;\r\n this.ServiceItemsSubject.next(value);\r\n this.serviceItemsSelectItem = this._serviceitems.map(x => ({\r\n value: x.SIListID,\r\n label: x.ServiceItem\r\n }));\r\n this.log.verbose('si count = ' + this._serviceitems.length);\r\n }\r\n }\r\n get serviceitems(): Array {\r\n return this._serviceitems;\r\n }\r\n\r\n private PayrollItemsSubject = new ReplaySubject>(1);\r\n private _payrollitems: Array;\r\n @Input() set payrollitems(value: Array) {\r\n if (value) {\r\n this._payrollitems = value;\r\n this.PayrollItemsSubject.next(value);\r\n this.payrollItemsSelectItem = this._payrollitems.map(x => ({\r\n value: x.PIListID,\r\n label: x.PayrollItem\r\n }));\r\n this.log.verbose('pi count = ' + this._payrollitems.length);\r\n }\r\n }\r\n get payrollitems(): Array {\r\n return this._payrollitems;\r\n }\r\n\r\n // private SEItemsSubject = new ReplaySubject>(1);\r\n // private _seitems: Array;\r\n // @Input() set seitems(value: Array) {\r\n // if (value) {\r\n // this._seitems = value;\r\n // this.SEItemsSubject.next(this._seitems);\r\n // // this.serviceItemsSelectItem = this._seitems.map(x => ({\r\n // // value: x.IListID,\r\n // // label: x.Item\r\n // // }));\r\n // this.log.verbose('i count = ' + this._seitems.length);\r\n // }\r\n // }\r\n // get seitems(): Array {\r\n // return this._seitems;\r\n // }\r\n\r\n private ContractsSubject = new ReplaySubject>(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n if (value) {\r\n this._contracts = value;\r\n const filteredContracts = this._contracts.filter(\r\n x => x.ContractType != 'LOC' && x.IsActive == true\r\n );\r\n this.ContractsSubject.next(value);\r\n this.contractsSelectItem = filteredContracts.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n }\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n // filteredChargeNumbers: Array;\r\n private ChargeNumbersSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _chargenumbers: Array;\r\n @Input() set chargenumbers(value: Array) {\r\n if (value) {\r\n this._chargenumbers = value;\r\n // this.filteredChargeNumbers = value;\r\n this.ChargeNumbersSubject.next(value);\r\n this.chargeNumbersSelectItem = value.map(x => ({\r\n value: x.CNListID,\r\n label: x.FullName\r\n }));\r\n }\r\n }\r\n get chargenumbers(): Array {\r\n return this._chargenumbers;\r\n }\r\n\r\n private TxnTypesSubject = new ReplaySubject>(1);\r\n private _txntypes: Array;\r\n @Input() set txntypes(value: Array) {\r\n if (value) {\r\n this._txntypes = value;\r\n const filteredTxnTypes = this._txntypes.filter(\r\n x => x.CostType == this.doi\r\n );\r\n this.TxnTypesSubject.next(value);\r\n this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n this.txnTypesInTableSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n }\r\n get txntypes(): Array {\r\n return this._txntypes;\r\n }\r\n\r\n // TODO: is this used? if not remove it\r\n private _companysettings: Array;\r\n @Input() set companysettings(value: Array) {\r\n if (value) {\r\n this._companysettings = value;\r\n const fyyear = moment(this._companysettings[0].SettingValue).year();\r\n this.CSFYStart = moment(\r\n this._companysettings[0].SettingValue\r\n ).toDate();\r\n this.CSFYEnd = moment(`12/31/${fyyear}`).toDate();\r\n this.companyFYNotice = [\r\n {\r\n severity: 'info',\r\n summary: '',\r\n detail: `Company Fiscal Year set to ${moment(\r\n this.CSFYStart\r\n ).format('MM/DD/YYYY')} - ${moment(this.CSFYEnd).format(\r\n 'MM/DD/YYYY'\r\n )}`\r\n }\r\n ];\r\n }\r\n }\r\n get companysettings(): Array {\r\n return this._companysettings;\r\n }\r\n\r\n @Input() public userGroups: Array;\r\n\r\n @Input() public process: Process;\r\n\r\n @Input() public userInfo: IUserInfo;\r\n\r\n @Output() SaveBilling = new ReplaySubject(1);\r\n @Output() LoadBilling = new ReplaySubject(1);\r\n @Output() DeleteBilling = new ReplaySubject(1);\r\n @Output() LoadChargeNumbers = new ReplaySubject(1);\r\n public editing?: DeferBilling = {} as DeferBilling;\r\n clonedBilling: { [i: string]: DeferBilling } = {};\r\n active = true;\r\n public moment: any;\r\n tableScrollHeight = '50em';\r\n ccFormGroup: FormGroup;\r\n taskFormGroup: FormGroup;\r\n siFormGroup: FormGroup;\r\n piFormGroup: FormGroup;\r\n contractFormGroup: FormGroup;\r\n empFormGroup: FormGroup;\r\n filterFormGroup: FormGroup;\r\n typeFormGroup: FormGroup;\r\n doi = 'Direct';\r\n txnTypesSelectItem: SelectItem[] = [];\r\n txnTypesInTableSelectItem: SelectItem[] = [];\r\n userGroupsSelectItem: SelectItem[] = [];\r\n userGroupsInTableSelectItem: SelectItem[] = [];\r\n tasksSelectItem: SelectItem[] = [];\r\n tasksInTableSelectItem: SelectItem[] = [];\r\n contractsSelectItem: SelectItem[] = [];\r\n chargeNumbersSelectItem: SelectItem[] = [];\r\n directReportsSelectItem: SelectItem[] = [];\r\n directReportsInTableSelectItem: SelectItem[] = [];\r\n serviceItemsSelectItem: SelectItem[] = [];\r\n payrollItemsSelectItem: SelectItem[] = [];\r\n sessionDatesSelectItem: SelectItem[] = [];\r\n\r\n txnTypesFilterSelectItem: SelectItem[] = [];\r\n userGroupsFilterSelectItem: SelectItem[] = [];\r\n tasksFilterSelectItem: SelectItem[] = [];\r\n contractsFilterSelectItem: SelectItem[] = [];\r\n directReportsFilterSelectItem: SelectItem[] = [];\r\n serviceItemsFilterSelectItem: SelectItem[] = [];\r\n payrollItemsFilterSelectItem: SelectItem[] = [];\r\n\r\n siHidden = false;\r\n siColumnHidden = false;\r\n empHidden = false;\r\n empColumnHidden = false;\r\n selectedDirectReports: Users[] = [];\r\n selectedServiceItems: any[] = [];\r\n selectedPayrollItems: PayrollItem[] = [];\r\n selectedcontracts: Contract.Contract[] = [];\r\n selectedChargeNumbers: ChargeNumber.ChargeNumber[] = [];\r\n selectedTasks: ITask[] = [];\r\n selectedCCs: IUserGroup[] = [];\r\n costCenters: CostCenter[] = [];\r\n\r\n @Input() public IsLoading: boolean;\r\n\r\n IsBurdenHidden = true;\r\n IsIndirectFilter = false;\r\n\r\n selectedContract: Contract.Contract;\r\n\r\n asOfDateValid = false;\r\n contractValid = false;\r\n directReportValid = false;\r\n serviceItemValid = false;\r\n txnTypeValid = false;\r\n taskValid = false;\r\n ccValid = false;\r\n\r\n asOfDateIsRequired = false;\r\n contractIsRequired = false;\r\n directReportIsRequired = false;\r\n serviceItemIsRequired = false;\r\n txnTypeIsRequired = false;\r\n taskIsRequired = false;\r\n ccIsRequired = false;\r\n\r\n currentPayPeriodStart: any;\r\n currentPayPeriodEnd: any;\r\n prevPayPeriodStart: any;\r\n prevPayPeriodEnd: any;\r\n\r\n SIColumnHidden = false;\r\n PIColumnHidden = false;\r\n EmpColumnHidden = false;\r\n BillableColumnHidden = false;\r\n CCColumnHidden = false;\r\n\r\n length: number;\r\n header: string;\r\n\r\n @ViewChild(Table, { static: true })\r\n dbTable: Table;\r\n\r\n colsCanBeHidden: any[];\r\n cols: any[];\r\n CSFYStart: Date;\r\n CSFYEnd: Date;\r\n\r\n billDateForMultiUpdate: Date;\r\n noteForMultiUpdate: string;\r\n\r\n dbTableSelection: DeferBilling[] = [];\r\n\r\n IsMultiUpdate = false;\r\n\r\n ccColumnVisible = true;\r\n\r\n deferredOnly = false;\r\n\r\n _selectedColumns: any[];\r\n @Input() get selectedColumns(): any[] {\r\n return this._selectedColumns;\r\n }\r\n\r\n set selectedColumns(val: any[]) {\r\n // restore original order\r\n this._selectedColumns = this.colsCanBeHidden.filter(col =>\r\n val.includes(col)\r\n );\r\n }\r\n\r\n minDate: Date;\r\n billDate: Date;\r\n\r\n updateBtnLabel = 'Update';\r\n\r\n public currencyFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n });\r\n\r\n constructor(@Inject(LoggingService) private log: LoggingService) {\r\n super();\r\n this.moment = moment;\r\n\r\n this.filterFormGroup = new FormGroup({\r\n Range: new FormControl(null),\r\n Contracts: new FormControl(null),\r\n SI: new FormControl(null),\r\n CN: new FormControl(null)\r\n });\r\n\r\n this.ccFormGroup = new FormGroup({\r\n CC: new FormControl(null)\r\n });\r\n\r\n this.taskFormGroup = new FormGroup({\r\n Task: new FormControl(null)\r\n });\r\n\r\n this.siFormGroup = new FormGroup({\r\n SI: new FormControl(null)\r\n });\r\n\r\n this.empFormGroup = new FormGroup({\r\n Emp: new FormControl(null)\r\n });\r\n\r\n this.typeFormGroup = new FormGroup({\r\n Type: new FormControl(null)\r\n });\r\n\r\n this.piFormGroup = new FormGroup({\r\n pi: new FormControl(null)\r\n });\r\n\r\n this.contractFormGroup = new FormGroup({\r\n Contracts: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.cols = [\r\n { field: 'Adjustmentstatus', header: 'Status' },\r\n { field: 'Txndate', header: 'Txn Date' },\r\n { field: 'Txntype', header: 'Txn Type' },\r\n { field: 'Task', header: 'Task' },\r\n { field: 'Person', header: 'Person' },\r\n { field: 'ServiceItem', header: 'Item' },\r\n { field: 'PayrollItem', header: 'Payroll Item' },\r\n { field: 'CostCenter', header: 'Cost Center' },\r\n { field: 'Billablestatus', header: 'Billable Status' },\r\n { field: 'Hoursworked', header: 'Hours' },\r\n { field: 'Invoiceamount', header: 'Invoiced Amount' },\r\n { field: 'Gacost', header: 'G&A Invoiced' },\r\n { field: 'Mhcost', header: 'MH Invoiced' },\r\n { field: 'Ohcost', header: 'OH Invoiced' },\r\n { field: 'Frcost', header: 'FR Invoiced' },\r\n { field: 'Feecost', header: 'Fee Invoiced' },\r\n { field: 'Actualamount', header: 'Incurred Amount' },\r\n { field: 'Gacostebr', header: 'G&A Incurred' },\r\n { field: 'Mhcostebr', header: 'MH Incurred' },\r\n { field: 'Ohcostebr', header: 'OH Incurred' },\r\n { field: 'Frcostebr', header: 'FR Incurred' },\r\n { field: 'Feecostebr', header: 'Fee Incurred' }\r\n ];\r\n\r\n this.colsCanBeHidden = [\r\n { field: 'Person', header: 'Person' },\r\n { field: 'ServiceItem', header: 'Item' },\r\n { field: 'PayrollItem', header: 'Payroll Item' },\r\n { field: 'CostCenter', header: 'Cost Center' }\r\n // { field: 'Billablestatus', header: 'Billable Status' },\r\n ];\r\n\r\n this._selectedColumns = this.colsCanBeHidden;\r\n\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n\r\n setTimeout(() => {\r\n this.elements = document.getElementsByClassName('p-header-cell');\r\n }, 0);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes.userInfo && changes.userInfo.currentValue) {\r\n // set of property is done before ngOnChanges\r\n this.startDate = this.userInfo.PrevPayPeriodStart;\r\n this.endDate = this.userInfo.PrevPayPeriodEnd;\r\n this.currentPayPeriodStart = this.userInfo.CurrentPayPeriodStart;\r\n this.currentPayPeriodEnd = this.userInfo.CurrentPayPeriodEnd;\r\n this.prevPayPeriodStart = this.userInfo.PrevPayPeriodStart;\r\n this.prevPayPeriodEnd = this.userInfo.PrevPayPeriodEnd;\r\n this.filterFormGroup.controls['Range'].patchValue([\r\n this.prevPayPeriodStart,\r\n this.prevPayPeriodEnd\r\n ]);\r\n }\r\n if (\r\n changes.userGroups &&\r\n changes.userGroups.currentValue &&\r\n changes.userGroups.currentValue.length > 0\r\n ) {\r\n // set of property is done before ngOnChanges, no need for this\r\n // this.userGroups = changes.userGroups.currentValue;\r\n this.userGroups = this.userGroups.filter(x =>\r\n x.PrefixedGroupID.includes('C')\r\n );\r\n this.userGroupsSelectItem = this.userGroups.map(x => ({\r\n label: x.GroupName,\r\n value: x.GroupID\r\n }));\r\n this.userGroupsInTableSelectItem = this.userGroups.map(x => ({\r\n label: x.GroupName,\r\n value: x.GroupID\r\n }));\r\n if (this.userGroups.length == 1) {\r\n this.ccColumnVisible = false;\r\n }\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.dbTable.clear();\r\n this.active = false;\r\n }\r\n\r\n onColumnResize($event) {\r\n var table = document.querySelector('table');\r\n columnResize($event, 7, table);\r\n }\r\n\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'DeferBillingPresenterComponent:setupObservables'\r\n });\r\n }\r\n\r\n deferredOnlyToggle($event) {\r\n if ($event.checked == true) {\r\n this.filteredBilling = this.billing.filter(\r\n x => x.Deferred == $event.checked\r\n );\r\n } else {\r\n this.filteredBilling = this.billing;\r\n }\r\n }\r\n\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'DeferBillingPresenterComponent:setupSubscriptions'\r\n });\r\n\r\n this.filterFormGroup.controls['Range'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (value[0] && value[1]) {\r\n this.startDate = value[0];\r\n this.endDate = value[1];\r\n // if (this.selectedServiceItems.length > 0 && this.selectedChargeNumbers.length > 0\r\n // && this.selectedcontracts.length > 0 && moment(this.startDate).isValid() && moment(this.endDate).isValid()) {\r\n // // this.IsLoading = true;\r\n // const POSTData: any = {\r\n // Contracts: this.selectedcontracts,\r\n // ChargeNumbers: this.selectedChargeNumbers,\r\n // ServiceItems: this.selectedServiceItems,\r\n // StartDate: moment(value[0]).format('MM/DD/YYYY'),\r\n // EndDate: moment(value[1]).format('MM/DD/YYYY')\r\n // };\r\n // this.LoadBilling.next(POSTData);\r\n // }\r\n }\r\n }\r\n });\r\n this.filterFormGroup.controls['Contracts'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (value) {\r\n this.selectedChargeNumbers = [];\r\n this.filterFormGroup.controls['CN'].reset();\r\n this.selectedcontracts = [];\r\n // value.forEach(val => {\r\n // this.selectedcontracts.push(\r\n // this.contracts.find(\r\n // x => x.ContractListID == val\r\n // ) as Contract.Contract\r\n // );\r\n // });\r\n this.selectedcontracts.push(this.contracts.find(x => x.ContractListID == value));\r\n if (this.selectedcontracts.length > 0) {\r\n const CNPOSTData = {\r\n ContractList: this.selectedcontracts,\r\n Activeonly: true\r\n };\r\n this.LoadChargeNumbers.next(CNPOSTData);\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.filterFormGroup.controls['CN'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (value) {\r\n const chargenumberids = [];\r\n this.selectedChargeNumbers = [];\r\n value.forEach(val => {\r\n this.selectedChargeNumbers.push(\r\n this.chargenumbers.find(\r\n x => x.CNListID == val\r\n ) as ChargeNumber.ChargeNumber\r\n );\r\n // chargenumberids.push(\r\n // this.chargenumbers.find(x => x.CNListID == val)\r\n // .FullName\r\n // );\r\n });\r\n // this.dbTable.filter(chargenumberids, 'CNListID', 'in');\r\n // if (this.selectedServiceItems.length > 0 && this.selectedChargeNumbers.length > 0\r\n // && this.selectedcontracts.length > 0 && moment(this.startDate).isValid() && moment(this.endDate).isValid()) {\r\n // // this.IsLoading = true;\r\n // const POSTData: any = {\r\n // Contracts: this.selectedcontracts,\r\n // ChargeNumbers: this.selectedChargeNumbers,\r\n // ServiceItems: this.selectedServiceItems,\r\n // StartDate: moment(this.startDate).format(\r\n // 'MM/DD/YYYY'\r\n // ),\r\n // EndDate: moment(this.endDate).format('MM/DD/YYYY')\r\n // };\r\n // this.LoadBilling.next(POSTData);\r\n // } else {\r\n // this.billing = [];\r\n // this.BillingSubject.next(this.billing);\r\n // }\r\n }\r\n }\r\n });\r\n\r\n this.filterFormGroup.controls['SI'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n const siids = [];\r\n this.selectedServiceItems = [];\r\n if (value != null) {\r\n if (value) {\r\n value.forEach(val => {\r\n this.selectedServiceItems.push(\r\n this.serviceitems.find(\r\n x => x.SIListID == val\r\n ) as fromLookups.IServiceItem\r\n );\r\n // siids.push(\r\n // this.serviceitems.find(x => x.SIListID == val)\r\n // .ServiceItem\r\n // );\r\n\r\n // if (this.selectedServiceItems.length > 0) {\r\n // this.selectedServiceItems.forEach(item => {\r\n // if (item == null) {\r\n // let index = this.selectedServiceItems.findIndex(x => x == item);\r\n // let alteredItem = this.seitems.find(x => x.IListID == val);\r\n // alteredItem = alteredItem = {\r\n // SIListID: alteredItem.IListID,\r\n // ServiceItem: alteredItem.Item,\r\n // IsActive: alteredItem.IsActive,\r\n // DisplaySI: null,\r\n // DisplaySIRate: null,\r\n // ExpenseType: null,\r\n // Postingtype: null,\r\n // ServiceItemCost: null,\r\n // ServiceItemDesc: null,\r\n // ServiceItemPrice: null,\r\n // ServiceItemType: null\r\n // };\r\n // item = alteredItem;\r\n // this.selectedServiceItems.splice(index, 1, item);\r\n // }\r\n // });\r\n // }\r\n });\r\n this.log.verbose(this.selectedServiceItems);\r\n // this.dbTable.filter(siids, 'SIListID', 'in');\r\n // if (this.selectedServiceItems.length > 0 && this.selectedChargeNumbers.length > 0\r\n // && this.selectedcontracts.length > 0 && moment(this.startDate).isValid() && moment(this.endDate).isValid()) {\r\n // // this.IsLoading = true;\r\n // const POSTData: any = {\r\n // Contracts: this.selectedcontracts,\r\n // ChargeNumbers: this.selectedChargeNumbers,\r\n // ServiceItems: this.selectedServiceItems,\r\n // StartDate: moment(this.startDate).format(\r\n // 'MM/DD/YYYY'\r\n // ),\r\n // EndDate: moment(this.endDate).format('MM/DD/YYYY')\r\n // };\r\n // this.LoadBilling.next(POSTData);\r\n // } else {\r\n // this.billing = [];\r\n // this.BillingSubject.next(this.billing);\r\n // }\r\n }\r\n }\r\n });\r\n }\r\n\r\n findCostCenterName(Costcenterid: number): string | undefined {\r\n if (Costcenterid != null) {\r\n if (this.userGroups && this.userGroups.length > 0) {\r\n if (Costcenterid === 0) {\r\n return '';\r\n } else {\r\n const cc = this.userGroups.find(\r\n x => x.GroupID === Costcenterid\r\n );\r\n return cc?.GroupName;\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n findTask(rowData: DeferBilling): string | undefined {\r\n if (rowData.Tasklistid != null) {\r\n if (this.tasks && this.tasks.length > 0) {\r\n const index = this.tasks.findIndex(\r\n x => x.TaskListID === rowData.Tasklistid\r\n );\r\n if (index !== -1) {\r\n const task = this.tasks[index];\r\n return task.TaskLongName;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findEmployee(rowData: DeferBilling): string | undefined {\r\n if (rowData.Employeelistid != null) {\r\n if (this.directreports && this.directreports.length > 0) {\r\n const index = this.directreports.findIndex(\r\n x => x.EmployeeListID === rowData.Employeelistid\r\n );\r\n if (index !== -1) {\r\n const directreport = this.directreports[index];\r\n return directreport.EmployeeName;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findServiceItem(rowData: DeferBilling): string | undefined {\r\n if (rowData.Silistid != null) {\r\n if (this.serviceitems && this.serviceitems.length > 0) {\r\n const index = this.serviceitems.findIndex(\r\n x => x.SIListID === rowData.Silistid\r\n );\r\n if (index !== -1) {\r\n const serviceitem = this.serviceitems[index];\r\n return serviceitem.ServiceItem;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findPayrollItem(rowData: DeferBilling): string | undefined {\r\n if (rowData.Pilistid != null) {\r\n if (this.payrollitems && this.payrollitems.length > 0) {\r\n const index = this.payrollitems.findIndex(\r\n x => x.PIListID === rowData.Pilistid\r\n );\r\n if (index !== -1) {\r\n const payrollitem = this.payrollitems[index];\r\n return payrollitem.PayrollItem;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findTxnType(rowData: any): string | undefined {\r\n if (rowData != null) {\r\n if (this.txntypes && this.txntypes.length > 0) {\r\n const index = this.txntypes.findIndex(\r\n x => x.CalcType === rowData\r\n );\r\n if (index !== -1) {\r\n const txntype = this.txntypes[index];\r\n return txntype.CalcDesc;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n filterTable($event, filterType) {\r\n // use this for all table filters\r\n if (filterType == 'si') {\r\n this.dbTable.filter($event.value, 'ServiceItem', 'in');\r\n } else if (filterType == 'pi') {\r\n this.dbTable.filter($event.value, 'PayrollItem', 'in');\r\n } else if (filterType == 'task') {\r\n this.dbTable.filter($event.value, 'Task', 'in');\r\n } else if (filterType == 'type') {\r\n this.dbTable.filter($event.value, 'Txntype', 'in');\r\n } else if (filterType == 'employee') {\r\n this.dbTable.filter($event.value, 'Person', 'in');\r\n } else if (filterType == 'cc') {\r\n this.dbTable.filter($event.value, 'CostCenter', 'in');\r\n } else if (filterType == 'contract') {\r\n this.dbTable.filter($event.value, 'Contractdesc', 'in');\r\n }\r\n }\r\n\r\n onRowSelect($event) {\r\n if (this.dbTableSelection.length > 0) {\r\n this.IsMultiUpdate = true;\r\n this.updateBtnLabel = `Update ${this.dbTableSelection.length} row(s)`;\r\n } else {\r\n this.IsMultiUpdate = false;\r\n this.updateBtnLabel = `Update`;\r\n }\r\n }\r\n\r\n onRowUnselect($event) {\r\n if (this.dbTableSelection.length > 0) {\r\n this.IsMultiUpdate = true;\r\n this.updateBtnLabel = `Update ${this.dbTableSelection.length} row(s)`;\r\n } else {\r\n this.IsMultiUpdate = false;\r\n this.updateBtnLabel = `Update`;\r\n }\r\n }\r\n\r\n onHeaderCheckboxToggle($event) {\r\n if (this.dbTableSelection.length > 0) {\r\n this.IsMultiUpdate = true;\r\n this.updateBtnLabel = `Update ${this.dbTableSelection.length} row(s)`;\r\n } else {\r\n this.IsMultiUpdate = false;\r\n this.updateBtnLabel = `Update`;\r\n }\r\n }\r\n\r\n multiUpdate() {\r\n if (this.dbTableSelection.length > 0) {\r\n this.dbTableSelection.forEach(ele => {\r\n if (this.billDateForMultiUpdate != null) {\r\n ele.Billdate = this.billDateForMultiUpdate;\r\n }\r\n if (this.noteForMultiUpdate != null) {\r\n ele.TxnNotes = this.noteForMultiUpdate;\r\n }\r\n this.SaveBilling.next(ele);\r\n });\r\n }\r\n this.noteForMultiUpdate = '';\r\n this.dbTableSelection = [];\r\n }\r\n\r\n onEditInit($event: { data: DeferBilling }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: DeferBilling) {\r\n this.clonedBilling[rowData.Txnid] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n this.minDate = new Date(rowData.Txndate);\r\n if (moment(rowData.Billdate).isValid() == false) {\r\n this.billDate = new Date();\r\n } else {\r\n this.billDate = rowData.Billdate;\r\n }\r\n }\r\n\r\n onRowEditSave(rowData: DeferBilling) {\r\n this.log.verbose(this.billDate);\r\n rowData = {\r\n ...rowData,\r\n Billdate: this.billDate\r\n };\r\n this.SaveBilling.next(rowData);\r\n delete this.clonedBilling[rowData.Txnid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: DeferBilling) {\r\n delete this.clonedBilling[item.Txnid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n onDBDelete(db) {\r\n this.DeleteBilling.next(db);\r\n }\r\n\r\n burdensVisibility() {\r\n this.IsBurdenHidden = !this.IsBurdenHidden;\r\n }\r\n\r\n onSelectedColumnsChange($event) {\r\n if ($event.value) {\r\n if ($event.itemValue) {\r\n if ($event.itemValue.header) {\r\n if ($event.itemValue.header == 'Item') {\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Person') {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Payroll Item') {\r\n if (this.PIColumnHidden == true) {\r\n this.PIColumnHidden = false;\r\n } else {\r\n this.PIColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Cost Center') {\r\n if (this.CCColumnHidden == true) {\r\n this.CCColumnHidden = false;\r\n } else {\r\n this.CCColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Billable Status') {\r\n if (this.BillableColumnHidden == true) {\r\n this.BillableColumnHidden = false;\r\n } else {\r\n this.BillableColumnHidden = true;\r\n }\r\n }\r\n this.header = $event.itemValue.header;\r\n }\r\n this.length = $event.value.length;\r\n } else {\r\n this.length = $event.value.length;\r\n if (this.length > 0) {\r\n this.EmpColumnHidden = false;\r\n this.SIColumnHidden = false;\r\n this.PIColumnHidden = false;\r\n this.CCColumnHidden = false;\r\n this.BillableColumnHidden = false;\r\n } else {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n if (this.PIColumnHidden == true) {\r\n this.PIColumnHidden = false;\r\n } else {\r\n this.PIColumnHidden = true;\r\n }\r\n if (this.CCColumnHidden == true) {\r\n this.CCColumnHidden = false;\r\n } else {\r\n this.CCColumnHidden = true;\r\n }\r\n if (this.BillableColumnHidden == true) {\r\n this.BillableColumnHidden = false;\r\n } else {\r\n this.BillableColumnHidden = true;\r\n }\r\n this.length = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n applyCriteria() {\r\n if (\r\n // this.selectedcontracts.length > 0 &&\r\n moment(this.startDate).isValid() &&\r\n moment(this.startDate).isValid()\r\n ) {\r\n const POSTData: any = {\r\n Contracts: this.selectedcontracts,\r\n ChargeNumbers: this.selectedChargeNumbers,\r\n ServiceItems: this.selectedServiceItems,\r\n StartDate: moment(this.startDate).format('MM/DD/YYYY'),\r\n EndDate: moment(this.endDate).format('MM/DD/YYYY')\r\n // Deferredonly: this.deferredOnly\r\n };\r\n this.LoadBilling.next(POSTData);\r\n }\r\n }\r\n\r\n clearCriteria() {\r\n this.filterFormGroup.controls['Contracts'].reset();\r\n this.filterFormGroup.controls['CN'].reset();\r\n this.filterFormGroup.controls['SI'].reset();\r\n this.filterFormGroup.controls['Range'].reset();\r\n this.filterFormGroup.controls['deferredonly'].reset();\r\n }\r\n}\r\n\r\nexport interface Item {\r\n IListID: string;\r\n Item: string;\r\n IsActive: boolean;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport { entityName, DeferBillingDataService } from '../data-services/defer-billing';\r\nimport { DeferBillingRoute } from './defer-billing.route';\r\n\r\n\r\n\r\n@NgModule({\r\n // declarations: [],\r\n providers: [DeferBillingDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [DeferBillingRoute]\r\n })\r\n ]\r\n})\r\nexport class DeferBillingModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n deferBillingService: DeferBillingDataService\r\n ) {\r\n entityDataService.registerService(entityName, deferBillingService);\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { DeferBillingFeatureComponent } from './defer-billing-feature/defer-billing-feature.component';\r\n\r\nexport const DeferBillingRoute: Ng2StateDeclaration = {\r\n name: 'deferbilling',\r\n url: '/deferbilling',\r\n data: { requiresAuth: true },\r\n\r\n component: DeferBillingFeatureComponent\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: []\r\n})\r\nexport class EfaactConfigurationModule {\r\n constructor() {}\r\n}\r\n\r\nexport enum LoginRequestStatus {\r\n Undefined = -1,\r\n LoginSuccessful = 0,\r\n SubmitUsernamePasswordAndPIN = 1,\r\n InvalidPIN = 2,\r\n InvalidUsernameOrPassword = 3,\r\n NoAccessCodeMethodsAvailable = 4,\r\n SelectAccessCodeMethod = 5,\r\n AccessCodeSent = 6,\r\n InvalidAccessCode = 7,\r\n NoSecurityQuestionAvailable = 8,\r\n AnswerSecurityQuestion = 9,\r\n InvalidSecurityAnswer = 10,\r\n MaxFailedAttemptsReached = 11\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n // TODO: remove Mat stuff\r\n MatListModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatToolbarModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatCardModule,\r\n MatDatepickerModule,\r\n MatGridListModule,\r\n MatDividerModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatSortModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatNativeDateModule,\r\n MatTreeModule,\r\n MatExpansionModule,\r\n MatAutocompleteModule,\r\n MatSidenavModule,\r\n MatSlideToggleModule,\r\n MatStepperModule,\r\n MatCheckboxModule\r\n ],\r\n exports: [\r\n CommonModule,\r\n // TODO: remove Mat stuff\r\n MatListModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatToolbarModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatCardModule,\r\n MatDatepickerModule,\r\n MatGridListModule,\r\n MatDividerModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatSortModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatNativeDateModule,\r\n MatTreeModule,\r\n MatExpansionModule,\r\n MatAutocompleteModule,\r\n MatSidenavModule,\r\n MatSlideToggleModule,\r\n MatStepperModule,\r\n MatCheckboxModule\r\n ]\r\n})\r\nexport class EfaactMaterialModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from './process-resolver';\r\nimport { ClassFeatureComponent } from '../class/feature/class-feature.component';\r\n\r\n\r\nconst log = new LoggingService();\r\nexport const ContractClassRoute: Ng2StateDeclaration = {\r\n name: 'contractclass',\r\n url: '/contractclass',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: ClassFeatureComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from './process-resolver';\r\nimport { ContractCumulativeFeatureComponent } from '../contract-cumulative/feature/contract-cumulative-feature.component';\r\n\r\nconst log = new LoggingService();\r\nexport const ContractCumulativeRoute: Ng2StateDeclaration = {\r\n name: 'contractcum',\r\n url: '/contractcum',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: ContractCumulativeFeatureComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { ContractManagementService } from '../contract-management/contract-management.service';\r\nimport { ContractManagementFeaturesComponent } from '../contract-management/features/contract-management-features.component';\r\nimport { processResolver } from './process-resolver';\r\n\r\nconst log = new LoggingService();\r\nexport const ContractMgmtRoute: Ng2StateDeclaration = {\r\n name: 'contractmgmt',\r\n url: '/contractmgmt',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: ContractManagementFeaturesComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { ContractStructureFeaturesComponent } from '../contract-structure/features/contract-structure-features.component';\r\nimport { processResolver } from './process-resolver';\r\n\r\nconst log = new LoggingService();\r\nexport const ContractStructureRoute: Ng2StateDeclaration = {\r\n name: 'contractstructure',\r\n url: '/contractstructure',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: ContractStructureFeaturesComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from './process-resolver';\r\nimport { ExpenseItemFeatureComponent } from '../expense-item/feature/expense-item-feature.component';\r\n\r\n\r\nconst log = new LoggingService();\r\nexport const ExpenseItemRoute: Ng2StateDeclaration = {\r\n name: 'expenseitems',\r\n url: '/expenseitems',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: ExpenseItemFeatureComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromExpense from '../expenses';\r\n\r\nconst log = new LoggingService();\r\nexport const ViewExpenseReceiptRoute: Ng2StateDeclaration = {\r\n name: 'receipt',\r\n url: '/receipt/:receiptId',\r\n data: { requiresAuth: true },\r\n params: { receipt: 0 },\r\n resolve: [\r\n {\r\n token: 'receiptId',\r\n deps: [Transition],\r\n resolveFn: resolveReceiptId\r\n },\r\n {\r\n token: 'expenseNumber',\r\n deps: [Transition],\r\n resolveFn: resolveExpenseNumber\r\n }\r\n ],\r\n component: fromExpense.ExpenseReceiptViewFeatureComponent\r\n};\r\n\r\nexport function resolveReceiptId(t: Transition) {\r\n const receiptId = t.params().receiptId;\r\n log.debug({\r\n type: 'ViewExpenseReceiptRoute:receipt:resolve',\r\n t,\r\n receiptId\r\n });\r\n return receiptId;\r\n}\r\n\r\nexport function resolveExpenseNumber(t: Transition) {\r\n const expenseNumber = t.params().ExpenseReportNumber;\r\n log.debug({\r\n type: 'ViewExpenseReceiptRoute:receipt:resolve',\r\n t,\r\n expenseNumber\r\n });\r\n return expenseNumber;\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { FixedPriceShellComponent } from '../fixed-price/containers/fixed-price-shell/fixed-price-shell.component';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from './process-resolver';\r\n\r\nconst log = new LoggingService();\r\nexport const FixedPriceRoute: Ng2StateDeclaration = {\r\n name: 'manualtxnexpense',\r\n url: '/manualtxnexpense',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: FixedPriceShellComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from './process-resolver';\r\nimport { LogoFeatureComponent } from '../logo/feature/logo-feature.component';\r\n\r\nconst log = new LoggingService();\r\nexport const LogoRoute: Ng2StateDeclaration = {\r\n name: 'weblogo',\r\n url: '/weblogo',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: LogoFeatureComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from './process-resolver';\r\nimport { OversignTimeFeatureComponent } from '../oversign-time/oversign-time-feature/oversign-time-feature.component';\r\n\r\nconst log = new LoggingService();\r\nexport const OversignTimeRoute: Ng2StateDeclaration = {\r\n name: 'timecardoversign',\r\n url: '/timecardoversign',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: OversignTimeFeatureComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { UserEntryDatesService } from '../userentrydates/userentrydates.service';\r\nimport { UserentrydatesFeaturesComponent } from '../userentrydates/features/userentrydates-features.component';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from './process-resolver';\r\n\r\nconst log = new LoggingService();\r\nexport const UserEntryDatesRoute: Ng2StateDeclaration = {\r\n name: 'userentrydates',\r\n url: '/userentrydates',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: UserentrydatesFeaturesComponent\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n Ng2StateDeclaration,\r\n Transition,\r\n UIRouterModule\r\n} from '@uirouter/angular';\r\nimport { CheckupRouteModule } from '../checkup/CheckupRoute';\r\nimport { CompanySettingRoute } from '../company-setting/CompanySettingRoute';\r\nimport { ExpensesRoutingModule } from '../expenses/expense-routing.module';\r\nimport { IndirectJobsRoute } from '../indirect-jobs/IndirectJobsRoute';\r\nimport { LoginComponent } from '../login/login.component';\r\nimport { MainComponent } from '../main/main.component';\r\nimport { routerConfigFn } from '../router.config';\r\nimport { ProcessDetailComponent, ProcessListComponent } from '../shared';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { CategoryDetailComponent } from '../shared/category/category-detail/category-detail.component';\r\nimport { CategoryListComponent } from '../shared/category/category-list/category-list.component';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { ContractClassRoute } from './ContractClassRoute';\r\nimport { ContractCumulativeRoute } from './ContractCumulativeRoute';\r\nimport { ContractMgmtRoute } from './ContractMgmtRoute';\r\nimport { ContractStructureRoute } from './ContractStructureRoute';\r\nimport { ExpenseItemRoute } from './ExpenseItemRoute';\r\nimport { ViewExpenseReceiptRoute } from './ExpensesRoute';\r\nimport { FixedPriceRoute } from './FixedPriceRoute';\r\nimport { LogoRoute } from './LogoRoute';\r\nimport { OversignTimeRoute } from './OversignTimeRoute';\r\nimport { RolesGroupsRoutingModule } from './roles-groups-routing.module';\r\nimport { TimeCardRoutingModule } from './time-card-routing.module';\r\nimport { UserEntryDatesRoute } from './UserEntryDatesRoute';\r\n\r\n// TODO: split these into areas\r\n\r\nconst log = new LoggingService();\r\n\r\nconst main: Ng2StateDeclaration = {\r\n name: 'main',\r\n data: { requiresAuth: true },\r\n url: '',\r\n component: MainComponent\r\n};\r\n\r\nconst categoryList: Ng2StateDeclaration = {\r\n name: 'category',\r\n data: { requiresAuth: true },\r\n url: '/category',\r\n component: CategoryListComponent\r\n};\r\n\r\nconst categoryDetail: Ng2StateDeclaration = {\r\n name: 'category.detail',\r\n data: { requiresAuth: true },\r\n url: '/:catId',\r\n component: CategoryDetailComponent,\r\n resolve: [\r\n {\r\n token: 'category',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: categoryResolveFn\r\n }\r\n ]\r\n};\r\nexport function categoryResolveFn(t, svc) {\r\n log.debug({\r\n type: 'category state resolveFn',\r\n catId: t.params().catId\r\n });\r\n return svc.getCategory(t.params().catId);\r\n}\r\n\r\nconst processList: Ng2StateDeclaration = {\r\n name: 'category.detail.process',\r\n data: { requiresAuth: true },\r\n url: '/process',\r\n component: ProcessListComponent\r\n};\r\n\r\nconst processDetail: Ng2StateDeclaration = {\r\n name: 'category.detail.process.detail',\r\n data: { requiresAuth: true },\r\n url: '/:procId',\r\n component: ProcessDetailComponent,\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolveFn\r\n }\r\n ]\r\n};\r\nexport function processResolveFn(t, svc) {\r\n log.debug({\r\n type: 'process state resolveFn',\r\n catId: t.params().catId,\r\n procId: t.params().procId\r\n });\r\n return svc.getProcess(t.params().catId, t.params().procId);\r\n}\r\nconst login: Ng2StateDeclaration = {\r\n name: 'login',\r\n url: '/login',\r\n component: LoginComponent\r\n};\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n TimeCardRoutingModule,\r\n ExpensesRoutingModule,\r\n RolesGroupsRoutingModule,\r\n CheckupRouteModule,\r\n UIRouterModule.forRoot({\r\n // TODO: will having all these here mess with lazy loading of modules?\r\n // https://ui-router.github.io/guide/lazyloading\r\n states: [\r\n categoryList,\r\n categoryDetail,\r\n processList,\r\n processDetail,\r\n ExpenseItemRoute,\r\n ContractClassRoute,\r\n ViewExpenseReceiptRoute,\r\n FixedPriceRoute,\r\n UserEntryDatesRoute,\r\n ContractStructureRoute,\r\n ContractMgmtRoute,\r\n ContractCumulativeRoute,\r\n IndirectJobsRoute,\r\n CompanySettingRoute,\r\n LogoRoute,\r\n OversignTimeRoute,\r\n login,\r\n main\r\n ],\r\n useHash: false,\r\n config: routerConfigFn\r\n })\r\n ]\r\n})\r\nexport class EfaactRoutingModule {}\r\n","import { Transition } from '@uirouter/core';\r\nimport * as fromShared from '../shared';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport function processResolver(t: Transition, svc: CategoriesService) {\r\n let process = t.params().process;\r\n log.verbose({ type: 'processResolver', process, t });\r\n if (process && process.ProcessID) {\r\n log.verbose({ type: 'processResolver', process });\r\n return process;\r\n } else {\r\n // if they navigate by entering the url, or refresh the page, we got no process to work with, have to look it up by route\r\n const processes: fromShared.Process[] = svc\r\n .getCategories()\r\n .reduce(\r\n (a, c) => a.concat(c.UserProcesses as fromShared.Process[]),\r\n [] as fromShared.Process[]\r\n );\r\n process = processes.find(p => {\r\n if (p.RouteName) {\r\n return (\r\n p.RouteName.toLocaleLowerCase().replace('/', '.') ===\r\n t.targetState().name().toLocaleLowerCase()\r\n );\r\n }\r\n });\r\n if (process) {\r\n log.verbose({ type: 'processResolver', process });\r\n svc.updateStoreProcess(process);\r\n return process;\r\n } else {\r\n log.verbose({ type: 'processResolver:no process found' });\r\n // if (environment.production) {\r\n t.router.stateService.go('main');\r\n return {\r\n ProcessID: 0,\r\n ProcessDesc: 'Unknown',\r\n RouteName: '/'\r\n };\r\n // }\r\n }\r\n }\r\n}\r\n","import {\r\n Ng2StateDeclaration,\r\n Transition,\r\n UIRouterModule\r\n} from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { FixedPriceComponent } from '../fixed-price/components/fixed-price-tab/fixed-price.component';\r\nimport { GroupsService } from '../groups/groups.service';\r\nimport { GroupsFeatureComponent } from '../groups/feature/groups-feature.component';\r\nimport { GroupsPresentersComponent } from '../groups/presenters/groups-presenters.component';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TimeCardModule } from '../timecard/time-card.module';\r\nimport { GroupsModule } from '../groups/groups.module';\r\nimport { processResolver } from './process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const GroupsRoute: Ng2StateDeclaration = {\r\n name: 'groups',\r\n url: '/groups',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: GroupsFeatureComponent\r\n};\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n GroupsModule,\r\n UIRouterModule.forChild({\r\n states: [\r\n {\r\n name: 'roles',\r\n url: '/roles',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: GroupsFeatureComponent\r\n },\r\n {\r\n name: 'roles.administrator',\r\n url: '/administrator',\r\n component: GroupsFeatureComponent\r\n },\r\n {\r\n name: 'roles.supervisor',\r\n url: '/supervisor',\r\n component: GroupsFeatureComponent\r\n },\r\n {\r\n name: 'roles.taskmanager',\r\n url: '/taskmanager',\r\n component: GroupsFeatureComponent\r\n },\r\n {\r\n name: 'roles.reportadmin',\r\n url: '/reportadmin',\r\n component: GroupsFeatureComponent\r\n },\r\n {\r\n name: 'roles.subcontractor',\r\n url: '/subcontractor',\r\n component: GroupsFeatureComponent\r\n },\r\n GroupsRoute\r\n ]\r\n })\r\n ]\r\n})\r\nexport class RolesGroupsRoutingModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { Transition, UIRouterModule } from '@uirouter/angular';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromTimecard from '../timecard';\r\nimport { TimeCardModule } from '../timecard/time-card.module';\r\nimport { processResolver } from './process-resolver';\r\nconst log = new LoggingService();\r\n\r\n// TODO: split these into areas\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n TimeCardModule,\r\n UIRouterModule.forChild({\r\n // TODO: will having all these here mess with lazy loading of modules?\r\n // https://ui-router.github.io/guide/lazyloading\r\n states: [\r\n {\r\n name: 'timecard',\r\n url: '/timecard',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromTimecard.TimeCardFeatureComponent\r\n },\r\n {\r\n name: 'timecard.entry',\r\n url: '/entry',\r\n component: fromTimecard.TimeCardFeatureComponent\r\n },\r\n {\r\n name: 'timecard.super',\r\n url: '/super',\r\n component: fromTimecard.TimeCardFeatureComponent\r\n },\r\n {\r\n name: 'timecard.validate',\r\n url: '/validate',\r\n component: fromTimecard.TimeCardFeatureComponent\r\n },\r\n {\r\n name: 'timecard.approval',\r\n url: '/approve',\r\n component: fromTimecard.TimeCardFeatureComponent\r\n },\r\n {\r\n name: 'timecarddoc',\r\n url: '/timecarddoc',\r\n component:\r\n fromTimecard.TimeCardDocumentationFeatureComponent\r\n },\r\n {\r\n name: 'timecard.doc',\r\n url: '/doc',\r\n component:\r\n fromTimecard.TimeCardDocumentationFeatureComponent\r\n }\r\n ]\r\n })\r\n ]\r\n})\r\nexport class TimeCardRoutingModule {}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\n@Component({\r\n selector: 'ef-email-audit-container',\r\n templateUrl: './email-audit-container.component.html',\r\n styleUrls: ['./email-audit-container.component.scss']\r\n})\r\nexport class EmailAuditContainerComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n EmailAuditModelDS: EntityCollectionService;\r\n EmailAuditModel$: Observable;\r\n active = true;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'EmailAuditContainerComponent::' });\r\n this.EmailAuditModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.EmailAudit.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.EmailAuditModelDS.clearCache();\r\n //this.EmailAuditModel$ = this.EmailAuditModelDS.entities$;\r\n this.setupObservables();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n onDateFiltersChanged($event: { startDate: Date; endDate: Date }) {\r\n this.log.verbose({\r\n type: 'EmailAuditContainerComponent:onDateFiltersChanged',\r\n $event\r\n });\r\n this.EmailAuditModelDS.clearCache();\r\n this.EmailAuditModelDS.getWithQuery({\r\n EndDate: moment(moment($event.endDate).format('L'))\r\n .add(1, 'day')\r\n .format('L'),\r\n StartDate: moment($event.startDate).format('L')\r\n });\r\n }\r\n setupObservables() {\r\n this.EmailAuditModel$ = this.EmailAuditModelDS.entities$.pipe(\r\n map(x => x.sort((a, b) => new Date(b.MessageDate).getTime() - new Date(a.MessageDate).getTime()))\r\n );\r\n }\r\n}\r\n","export * from './email-audit-container.component';\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { combineLatest } from 'rxjs';\r\nimport { startWith, takeWhile } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\nimport { SelectItem, uniqBy } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-email-audit-presenter',\r\n templateUrl: './email-audit-presenter.component.html',\r\n styleUrls: ['./email-audit-presenter.component.scss']\r\n})\r\nexport class EmailAuditPresenter\r\n extends fromShared.EditGrid\r\n implements OnInit, OnDestroy, OnChanges {\r\n public filterFormGroup: FormGroup;\r\n private active = true; \r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n messageTypes: SelectItem[] = [];\r\n numCols = 7;\r\n moment;\r\n cols: { field: string; header: string }[] = [\r\n { field: 'Type', header: 'Type' },\r\n { field: 'MessageDate', header: 'MessageDate' },\r\n { field: 'Subject', header: 'Subject' },\r\n { field: 'Message', header: 'Message' },\r\n { field: 'Recipient', header: 'Recipient' },\r\n { field: 'ReplyAddress', header: 'ReplyAddress' },\r\n { field: 'Status', header: 'Status' }\r\n ];\r\n @Output() DateFiltersChanged = new EventEmitter<{\r\n startDate: Date;\r\n endDate: Date;\r\n }>();\r\n constructor(private log: LoggingService, private cdRef: ChangeDetectorRef) {\r\n super();\r\n this.moment = moment;\r\n this.filterFormGroup = new FormGroup({\r\n endDate: new FormControl(new Date()),\r\n startDate: new FormControl(moment().add(-1, 'months').toDate())\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n combineLatest([\r\n this.filterFormGroup.controls['startDate'].valueChanges.pipe(\r\n startWith(this.filterFormGroup.controls['startDate'].value)\r\n ),\r\n this.filterFormGroup.controls['endDate'].valueChanges.pipe(\r\n startWith(this.filterFormGroup.controls['endDate'].value)\r\n )\r\n ])\r\n .pipe(\r\n takeWhile(_ => this.active)\r\n // debounceTime(500)\r\n )\r\n .subscribe(([startDate, endDate]) => {\r\n this.DateFiltersChanged.emit({\r\n startDate,\r\n endDate\r\n // : moment(x[1]).add(1, 'days').toDate() // add 1 day to end date to include the end date\r\n });\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (\r\n changes.items &&\r\n changes.items.currentValue &&\r\n changes.items.currentValue.length > 0\r\n ) {\r\n this.log.verbose({\r\n type: 'EmailAuditPresenter: ngOnChanges',\r\n changes\r\n });\r\n this.messageTypes = uniqBy(this.items, i => i.Type).map(i => ({\r\n label: i.Type,\r\n value: i.Type\r\n }));\r\n this.dataTable.multiSortMeta = [\r\n //{ field: 'Type', order: 1 },\r\n //{ field: 'MessageDate', order: 1 }\r\n ];\r\n this.dataTable.sortMultiple();\r\n this.cdRef.detectChanges();\r\n }\r\n }\r\n}\r\n","export * from './email-audit-presenter.component';\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { EmailAuditContainerComponent } from './email-audit-container';\r\nimport { EmailAuditPresenter } from './email-audit-presenter';\r\nimport { EmailAuditRoute } from './email-audit.route';\r\n\r\n@NgModule({\r\n declarations: [EmailAuditContainerComponent, EmailAuditPresenter],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [EmailAuditRoute]\r\n })\r\n ]\r\n})\r\nexport class EmailAuditModule {}\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport * as fromEmailAudit from './';\r\n\r\nexport const EmailAuditRoute: Ng2StateDeclaration = {\r\n // name: 'emailaudit.**'\r\n name: 'emailaudit',\r\n url: '/emailaudit',\r\n // , loadChildren: () => import('./manage-users.module').then(r => r.ManageUsersModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n component: fromEmailAudit.EmailAuditContainerComponent\r\n};\r\n","export * from './email-audit-container';\r\nexport * from './email-audit-presenter';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { combineLatest, merge, Observable, of } from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n mapTo,\r\n take,\r\n takeWhile,\r\n tap\r\n} from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromCompanySettings from '../../company-setting';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromUser from '../../user-info';\r\nimport { ActionsSubject, select, Store } from '@ngrx/store';\r\nimport { mapObj, StateService } from '@uirouter/core';\r\nimport { ImportService } from '../../import/import.service';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport moment from 'moment';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-employee-validation-container',\r\n templateUrl: './employee-validation-container.component.html',\r\n styleUrls: ['./employee-validation-container.component.scss']\r\n})\r\nexport class EmployeeValidationContainerComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n public nameOrder$: Observable;\r\n public userInfo$: Observable;\r\n public lastSyncLists$: Observable;\r\n public lastValidation$: Observable;\r\n public validationCompleteDate$: Observable;\r\n EmployeeValidationModelDS: EntityCollectionService;\r\n EmployeeValidationModel$: Observable<\r\n fromDataServices.EmployeeValidation.EmployeeValidationModel[]\r\n >;\r\n PayrollValidationModelDS: EntityCollectionService;\r\n PayrollValidationModel$: Observable<\r\n fromDataServices.PayrollValidation.PayrollValidationModel[]\r\n >;\r\n // loading$: Observable;\r\n observables$: Observable;\r\n IsLoading = true;\r\n active = true;\r\n constructor(\r\n private log: LoggingService,\r\n private confirmservice: UnsavedChangesService,\r\n public entityServices: EntityServices,\r\n private importService: ImportService,\r\n private ss: StateService,\r\n private dispatcher: ActionsSubject,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'EmployeeValidationContainerComponent::' });\r\n this.EmployeeValidationModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.EmployeeValidation.entityName\r\n );\r\n this.PayrollValidationModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.PayrollValidation.entityName\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.lastSyncLists$ = this.store.pipe(\r\n select(fromCompanySettings.getSettingDateValue('LastQBLists'))\r\n );\r\n this.nameOrder$ = this.store.pipe(\r\n select(fromCompanySettings.getSettingValue('EmployeeNameOrder'))\r\n );\r\n this.lastValidation$ = this.store.pipe(\r\n select(\r\n fromCompanySettings.getSettingDateValue(\r\n 'ExternalEmployeeValidationLastRun'\r\n )\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'EmployeeValidationContainerComponent',\r\n ExternalEmployeeValidationLastRun: x\r\n })\r\n ),\r\n map(x => x ?? new Date(0)),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'EmployeeValidationContainerComponent',\r\n ExternalEmployeeValidationLastRun: x\r\n })\r\n )\r\n );\r\n this.validationCompleteDate$ = this.store.pipe(\r\n select(\r\n fromCompanySettings.getSettingDateValue(\r\n 'ExternalEmployeeValidationComplete'\r\n )\r\n ),\r\n distinctUntilChanged((x, y) => moment(x).isSame(y)),\r\n tap(x => {\r\n this.log.verbose({\r\n type: 'EmployeeValidationContainerComponent',\r\n ExternalEmployeeValidationComplete: x\r\n });\r\n if (x) {\r\n this.store.dispatch(new fromUser.LoadUserPermissions());\r\n }\r\n }),\r\n map(x => x || new Date(0))\r\n );\r\n\r\n this.dispatcher\r\n .pipe(\r\n takeWhile(() => this.active),\r\n ofType(fromUser.UserActionTypes.SetUserPermissions)\r\n )\r\n .subscribe(() => {\r\n this.ss.go('main');\r\n });\r\n\r\n this.updateData();\r\n\r\n combineLatest([\r\n this.process$.pipe(filter(x => !!x)),\r\n this.EmployeeValidationModel$.pipe(filter(x => !!x)),\r\n this.PayrollValidationModel$.pipe(filter(x => !!x)),\r\n this.lastSyncLists$.pipe(filter(x => !!x)),\r\n this.lastValidation$.pipe(filter(x => !!x)),\r\n this.validationCompleteDate$.pipe(filter(x => !!x)),\r\n this.nameOrder$.pipe(filter(x => !!x))\r\n ])\r\n .pipe(\r\n take(1),\r\n tap(() => (this.IsLoading = false))\r\n )\r\n .subscribe();\r\n }\r\n\r\n updateData() {\r\n this.EmployeeValidationModelDS.clearCache();\r\n this.PayrollValidationModelDS.clearCache();\r\n this.EmployeeValidationModelDS.getAll();\r\n this.PayrollValidationModelDS.getAll();\r\n this.EmployeeValidationModel$ =\r\n this.EmployeeValidationModelDS.entities$.pipe(\r\n map(items => [...clone(items)])\r\n );\r\n\r\n this.PayrollValidationModel$ =\r\n this.PayrollValidationModelDS.entities$.pipe(\r\n map(items => [...clone(items)])\r\n );\r\n\r\n combineLatest([\r\n this.EmployeeValidationModelDS.loading$,\r\n this.PayrollValidationModelDS.loading$\r\n ])\r\n .pipe(map(([a, b]) => a || b))\r\n .subscribe(x => (this.IsLoading = x));\r\n\r\n this.store.dispatch(\r\n fromCompanySettings.getCompanySetting({\r\n SettingType: 'EmployeeNameOrder'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromCompanySettings.getCompanySetting({\r\n SettingType: 'LastQBLists'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromCompanySettings.getCompanySetting({\r\n SettingType: 'ExternalEmployeeValidationLastRun'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromCompanySettings.getCompanySetting({\r\n SettingType: 'ExternalEmployeeValidationComplete'\r\n })\r\n );\r\n }\r\n\r\n onValidate() {\r\n this.log.verbose({\r\n type: 'EmployeeValidationContainerComponent:onValidate'\r\n });\r\n this.doImport();\r\n }\r\n onComplete() {\r\n this.log.verbose({\r\n type: 'EmployeeValidationContainerComponent:onComplete'\r\n });\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure? This action will enable the eFAACTGovConPay Interface.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n this.store.dispatch(\r\n fromCompanySettings.putCompanySettings({\r\n settings: [\r\n {\r\n SettingType:\r\n fromCompanySettings.CompanySettingEnum\r\n .ExternalEmployeeValidationComplete,\r\n SettingValue: moment().format('YYYY-MM-DD')\r\n },\r\n {\r\n SettingType:\r\n fromCompanySettings.CompanySettingEnum\r\n .ExternalEmployeeSource,\r\n SettingValue: 1\r\n }\r\n ]\r\n })\r\n );\r\n });\r\n }\r\n\r\n doImport(): void {\r\n const includeInactive = true;\r\n //log\r\n this.log.verbose({\r\n type: 'EmployeeValidationContainerComponent',\r\n message: 'onStartImport',\r\n includeInactive\r\n });\r\n // call the import API\r\n this.IsLoading = true;\r\n // this.message = 'Importing...';\r\n // this.messages = [\r\n // {\r\n // severity: 'info',\r\n // summary: 'Importing...'\r\n // }\r\n // ];\r\n this.importService\r\n .LoadData(includeInactive)\r\n .then(() => {\r\n this.updateData();\r\n // this.message = 'Import Complete';\r\n // this.messages = [\r\n // {\r\n // severity: 'success',\r\n // summary: 'Import Complete'\r\n // }\r\n // ];\r\n // this.store.dispatch(\r\n // fromSettings.putCompanySettings({\r\n // settings: [\r\n // {\r\n // SettingType: 'GovConPayImportInactiveEmployees',\r\n // SettingValue: false\r\n // }\r\n // ]\r\n // })\r\n // );\r\n })\r\n .catch(reason => {\r\n this.log.error({\r\n type: 'EmployeeValidationContainerComponent',\r\n reason\r\n });\r\n // this.message = 'Import Failed';\r\n // this.messages = [\r\n // {\r\n // severity: 'error',\r\n // summary: 'Import Failed'\r\n // }\r\n // ];\r\n })\r\n .finally(() => (this.IsLoading = false));\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as moment from 'moment';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-employee-validation-presenter',\r\n templateUrl: './employee-validation-presenter.component.html',\r\n styleUrls: ['./employee-validation-presenter.component.scss']\r\n})\r\nexport class EmployeeValidationPresenter extends fromShared.EditGrid {\r\n @Input()\r\n employees: fromDataServices.EmployeeValidation.EmployeeValidationModel[];\r\n @Input()\r\n paycodes: fromDataServices.PayrollValidation.PayrollValidationModel[];\r\n @Input()\r\n lastSyncLists: Date;\r\n public get validSyncLists() {\r\n return this.lastSyncLists > new Date(1970, 1, 1);\r\n }\r\n @Input()\r\n lastValidationRun: Date;\r\n public get validLastValidation() {\r\n return this.lastValidationRun > new Date(1970, 1, 1);\r\n }\r\n @Input()\r\n validationCompleteDate: Date;\r\n public get IsValidationComplete() {\r\n return this.validationCompleteDate > new Date(0);\r\n }\r\n @Input()\r\n nameOrder: string;\r\n @Input()\r\n loading: boolean;\r\n @Input()\r\n disabled: boolean;\r\n @Input()\r\n userInfo: IUserInfo;\r\n @Output()\r\n Validate: EventEmitter = new EventEmitter();\r\n @Output()\r\n Complete: EventEmitter = new EventEmitter();\r\n numCols = 9;\r\n public moment;\r\n employeecols = [\r\n { field: 'EmployeeName', header: 'EmployeeName' },\r\n { field: 'FirstName', header: 'First Name' },\r\n { field: 'MiddleName', header: 'Middle Name' },\r\n { field: 'LastName', header: 'Last Name' },\r\n { field: 'source', header: 'Source' }\r\n ];\r\n payrollcols = [\r\n { field: 'Title', header: 'Title' },\r\n { field: 'Type', header: 'Type' },\r\n { field: 'PayCode', header: 'PayCode' },\r\n { field: 'source', header: 'Source' }\r\n ];\r\n constructor() {\r\n super();\r\n this.moment = moment;\r\n }\r\n public IsAdmin(): boolean {\r\n return this.userInfo?.EUserID?.toLocaleLowerCase() === 'admin';\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { EmployeeValidationContainerComponent } from './employee-validation-container/employee-validation-container.component';\r\nimport { EmployeeValidationPresenter } from './employee-validation-presenter/employee-validation-presenter.component';\r\nimport { EmployeeValidationRoute } from './employee-validation.route';\r\n\r\n@NgModule({\r\n declarations: [\r\n EmployeeValidationContainerComponent,\r\n EmployeeValidationPresenter\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [EmployeeValidationRoute]\r\n })\r\n ]\r\n})\r\nexport class EmployeeValidationModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { EmployeeValidationContainerComponent } from './employee-validation-container/employee-validation-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const EmployeeValidationRoute: Ng2StateDeclaration = {\r\n // name: 'EmployeeValidation.**'\r\n name: 'employeevalidation',\r\n url: '/employeevalidation',\r\n // , loadChildren: () => import('./employee-validation.module').then(r => r.EmployeeValidationModule)\r\n data: { requiresAuth: true },\r\n\r\n component: EmployeeValidationContainerComponent\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { ExpenseItemEffects } from './store/expense-item.effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as reducer from './store/expense-item.reducer';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(reducer.expenseItemsFeatureKey, reducer.reducer),\r\n EffectsModule.forFeature([ExpenseItemEffects])\r\n ]\r\n})\r\nexport class ExpenseItemModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { ExpenseItem } from './store/expense-item.model';\r\nimport { environment } from '../../environments/environment';\r\n// import { IServiceItem, ITask, IUserGroup } from '../lookups';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExpenseItemService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private uri = `${environment.apiLocation}/ExpenseItem`;\r\n\r\n public getExpenseItems(): Observable> {\r\n this.log.verbose({\r\n type: 'ExpenseItemService:getExpenseItems',\r\n uri: this.uri\r\n });\r\n return this.http.get>(this.uri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ExpenseItemService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public postExpenseItems(): Observable> {\r\n this.log.verbose({\r\n type: 'ExpenseItemService:postExpenseItems',\r\n uri: this.uri\r\n });\r\n return this.http.post>(this.uri, {}).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ExpenseItemService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putExpenseItems(\r\n expenseItems: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.uri, {\r\n ExpenseItemList: expenseItems\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'ExpenseItemService:putExpenseItems',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ExpenseItemPresenterComponent } from '../presenter/expense-item-presenter.component';\r\nimport * as fromActions from '../store/expense-item.actions';\r\nimport { ExpenseItem } from '../store/expense-item.model';\r\nimport * as fromReducer from '../store/expense-item.reducer';\r\n@Component({\r\n selector: 'ef-expense-item-feature',\r\n templateUrl: './expense-item-feature.component.html',\r\n styleUrls: ['./expense-item-feature.component.scss']\r\n})\r\nexport class ExpenseItemFeatureComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n\r\n @ViewChild(ExpenseItemPresenterComponent, { static: true })\r\n presenter: ExpenseItemPresenterComponent;\r\n\r\n public expenseitems$: Observable;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n\r\n active = true;\r\n ShowError = new ReplaySubject(1);\r\n\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(fromActions.getExpenseItems());\r\n this.setupObservables();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.store.dispatch(fromActions.clearExpenseItems());\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.expenseitems$ = this.store.pipe(\r\n select(fromReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n\r\n onLoadExpenseItems($event) {\r\n this.log.verbose({\r\n type: 'ExpenseItemFeatureComponent:onLoadExpenseItems'\r\n });\r\n }\r\n\r\n onSaveExpenseItems($event) {\r\n this.log.verbose({\r\n type: 'ExpenseItemFeatureComponent:onSaveExpenseItems'\r\n });\r\n this.store.dispatch(\r\n fromActions.putExpenseItems({ expenseItems: $event })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IStatusMessage, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Process } from '../../shared';\r\nimport { ExpenseItem } from '../store/expense-item.model';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-expense-item-presenter',\r\n templateUrl: './expense-item-presenter.component.html',\r\n styleUrls: ['./expense-item-presenter.component.scss']\r\n})\r\nexport class ExpenseItemPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, OnDestroy {\r\n SelectedErrorSubject = new ReplaySubject(1);\r\n private ExpenseItemSubject = new ReplaySubject>(1);\r\n private _expenseitems: Array;\r\n @Input() set expenseItems(value: Array) {\r\n if (value) {\r\n this._expenseitems = value;\r\n this.ExpenseItemSubject.next(value);\r\n }\r\n }\r\n get expenseItems(): Array {\r\n return this._expenseitems;\r\n }\r\n\r\n @Input() public process: Process;\r\n\r\n active = true;\r\n\r\n @Output() LoadExpenseItems = new ReplaySubject(1);\r\n @Output() SaveExpenseItems = new ReplaySubject(1);\r\n\r\n constructor(@Inject(LoggingService) private log: LoggingService) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'ExpenseItemPresenterComponent:setupSubscriptions'\r\n });\r\n }\r\n\r\n IsExpenseEntryChecked($event, rowData) {\r\n this.SaveExpenseItems.next([\r\n {\r\n EIListID: rowData.EIListID,\r\n IsExpenseEntry: rowData.IsExpenseEntry\r\n }\r\n ]);\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { ExpenseItem } from './expense-item.model';\r\n\r\nexport const getExpenseItems = createAction(\r\n '[ExpenseItem/API] GET ExpenseItems',\r\n);\r\n\r\n// export const postExpenseItems = createAction(\r\n// '[ExpenseItem/API] POST ExpenseItems',\r\n// props<{ }>()\r\n// );\r\n\r\nexport const putExpenseItems = createAction(\r\n '[ExpenseItem/API] PUT ExpenseItems',\r\n props<{ expenseItems: Array}>()\r\n);\r\n\r\nexport const loadExpenseItems = createAction(\r\n '[ExpenseItem/API] Load ExpenseItems',\r\n props<{ expenseItems: ExpenseItem[] }>()\r\n);\r\n\r\nexport const addExpenseItem = createAction(\r\n '[ExpenseItem/API] Add ExpenseItem',\r\n props<{ expenseItem: ExpenseItem }>()\r\n);\r\n\r\nexport const upsertExpenseItem = createAction(\r\n '[ExpenseItem/API] Upsert ExpenseItem',\r\n props<{ expenseItem: ExpenseItem }>()\r\n);\r\n\r\nexport const addExpenseItems = createAction(\r\n '[ExpenseItem/API] Add ExpenseItems',\r\n props<{ expenseItems: ExpenseItem[] }>()\r\n);\r\n\r\nexport const upsertExpenseItems = createAction(\r\n '[ExpenseItem/API] Upsert ExpenseItems',\r\n props<{ expenseItems: ExpenseItem[] }>()\r\n);\r\n\r\nexport const updateExpenseItem = createAction(\r\n '[ExpenseItem/API] Update ExpenseItem',\r\n props<{ expenseItem: Update }>()\r\n);\r\n\r\nexport const updateExpenseItems = createAction(\r\n '[ExpenseItem/API] Update ExpenseItems',\r\n props<{ expenseItems: Update[] }>()\r\n);\r\n\r\nexport const deleteExpenseItem = createAction(\r\n '[ExpenseItem/API] Delete ExpenseItem',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteExpenseItems = createAction(\r\n '[ExpenseItem/API] Delete ExpenseItems',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearExpenseItems = createAction(\r\n '[ExpenseItem/API] Clear ExpenseItems'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as ExpItemActions from './expense-item.actions';\r\nimport * as fromErrors from '../../shared';\r\nimport {\r\n ResponseStatus,\r\n IStatusMessage,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { ExpenseItemService } from '../expense-item.service';\r\n\r\n@Injectable()\r\nexport class ExpenseItemEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ExpenseItemService\r\n ) {}\r\n\r\n getExpenseItems$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ExpItemActions.getExpenseItems),\r\n switchMap(a =>\r\n this.service.getExpenseItems().pipe(\r\n flatMap(resp => [\r\n ExpItemActions.loadExpenseItems({\r\n expenseItems: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.EIListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n // postContractCums$ = createEffect(() => {\r\n // return this.actions$.pipe(\r\n // ofType(ExpItemActions.post),\r\n // switchMap(a =>\r\n // this.service.postContractCums(a.DirectOrIndirect, a.Todayonly, a.Asofdate, a.Tasks, a.ServiceItems, a.DirectReports, a.Txntype, a.CostCenters).pipe(\r\n // flatMap(resp => [\r\n // ExpItemActions.loadContractCumulatives({\r\n // contractCumulatives: resp\r\n // }),\r\n // new fromShared.Errors.RemoveErrors(\r\n // resp\r\n // .filter(\r\n // x =>\r\n // x.Status.StatusCode ===\r\n // ResponseStatus.Success\r\n // )\r\n // .map(x => x.Txnid.toString())\r\n // ),\r\n // new fromShared.Errors.SetErrors(\r\n // [\r\n // ...resp\r\n // .filter(\r\n // a =>\r\n // a.Status.StatusCode >=\r\n // DisplayMessageMinimum\r\n // )\r\n // .map(a => a.Status)\r\n // ].filter(shared.Errors.filterErrors)\r\n // )\r\n // ]),\r\n // catchError(fromShared.Errors.handleServiceError)\r\n // )\r\n // )\r\n // );\r\n // });\r\n\r\n putExpenseItems$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ExpItemActions.putExpenseItems),\r\n switchMap(a =>\r\n this.service.putExpenseItems(a.expenseItems).pipe(\r\n flatMap(c => [\r\n ExpItemActions.updateExpenseItems({\r\n expenseItems: [\r\n {\r\n id: a.expenseItems\r\n .map(x => x.EIListID)\r\n .toString(),\r\n changes: c.Items[0]\r\n }\r\n ]\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.EIListID)\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createReducer, createSelector, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { ExpenseItem } from './expense-item.model';\r\nimport * as ExpenseItemActions from './expense-item.actions';\r\n\r\nexport const expenseItemsFeatureKey = 'expenseItems';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({selectId: (model: ExpenseItem) => model.EIListID});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\n\r\nexport const expenseItemReducer = createReducer(\r\n initialState,\r\n on(ExpenseItemActions.addExpenseItem,\r\n (state, action) => adapter.addOne(action.expenseItem, state)\r\n ),\r\n on(ExpenseItemActions.upsertExpenseItem,\r\n (state, action) => adapter.upsertOne(action.expenseItem, state)\r\n ),\r\n on(ExpenseItemActions.addExpenseItems,\r\n (state, action) => adapter.addMany(action.expenseItems, state)\r\n ),\r\n on(ExpenseItemActions.upsertExpenseItems,\r\n (state, action) => adapter.upsertMany(action.expenseItems, state)\r\n ),\r\n on(ExpenseItemActions.updateExpenseItem,\r\n (state, action) => adapter.updateOne(action.expenseItem, state)\r\n ),\r\n on(ExpenseItemActions.updateExpenseItems,\r\n (state, action) => adapter.updateMany(action.expenseItems, state)\r\n ),\r\n on(ExpenseItemActions.deleteExpenseItem,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(ExpenseItemActions.deleteExpenseItems,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(ExpenseItemActions.loadExpenseItems,\r\n (state, action) => adapter.setAll(action.expenseItems, state)\r\n ),\r\n on(ExpenseItemActions.clearExpenseItems,\r\n state => adapter.removeAll(state)\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return expenseItemReducer(state, action);\r\n}\r\n\r\nexport const selectExpenseItemState = createFeatureSelector(\r\n expenseItemsFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors(selectExpenseItemState);\r\n","export enum ExpenseSection {\r\n Summary\r\n , Detail\r\n , Receipt\r\n}\r\n","import { IStatusMessage, IGenericResponse } from '../shared';\r\nimport { IExpenseSummary } from './IExpenseSummary';\r\nimport { TravelTypeEnum } from './expense-enums';\r\nimport { IExpenseReceipt } from './IExpenseReceipt';\r\n\r\nexport interface IExpenseLine {\r\n ExpReportNbr?: number;\r\n RptTask?: string;\r\n ExpenseGroupId?: number;\r\n ExpenseID?: number;\r\n EmpAuthID?: number;\r\n Country_Area?: string;\r\n Destination_Location?: string;\r\n WorkDate?: Date;\r\n EIListID?: string;\r\n ExpenseItem?: string;\r\n Amount?: number;\r\n Line_ReceiptTax?: number;\r\n Line_ReceiptTotal?: number;\r\n Line_Unallowable?: number;\r\n TravelTypeID?: TravelTypeEnum;\r\n TripLegTypeID?: number;\r\n PerDiemTypeID?: number;\r\n City1?: string;\r\n State1?: string;\r\n City2?: string;\r\n State2?: string;\r\n Mileage?: number;\r\n Mileage_Rate?: number;\r\n Rate?: number;\r\n Rate_Meals?: number;\r\n Rate_Lodging?: number;\r\n RateTypeID?: number;\r\n Downloaded?: boolean;\r\n Deleted?: boolean;\r\n AppDate?: Date;\r\n AppUser?: number;\r\n SignDate?: Date;\r\n ExpenseReportStatus?: number;\r\n ExpenseReportStatusText?: string;\r\n DateLastModified?: Date;\r\n Exported?: boolean;\r\n DateLastExport?: Date;\r\n TxnId?: number;\r\n TravelStartDate?: Date;\r\n TravelEndDate?: Date;\r\n TravelDesc?: string;\r\n LocaleID?: number;\r\n ModeofTravel?: string;\r\n Purpose?: string;\r\n SequenceId?: number;\r\n Zipcode1?: string;\r\n Zipcode2?: string;\r\n SuperUser?: boolean;\r\n SuperUserListID?: string;\r\n ValidateDate?: Date;\r\n ValidateUser?: boolean;\r\n CreateDate?: Date;\r\n ReceiptCount?: number;\r\n tzId?: number;\r\n tzOffset?: number;\r\n sign_tzid?: number;\r\n sign_tzOffset?: number;\r\n app_tzid?: number;\r\n app_tzOffset?: number;\r\n validate_tzid?: number;\r\n validate_tzOffset?: number;\r\n ExportedForJE?: boolean;\r\n ExpPPE?: string;\r\n disapprovedate?: Date;\r\n disapprovedby?: string;\r\n Status?: IStatusMessage;\r\n Row_Version?: string;\r\n Receipts?: Array;\r\n CurrentTMTask?: boolean;\r\n Location?: any;\r\n PDBOstatus?: string;\r\n}\r\n\r\nexport type IExpenseDetail = IExpenseSummary | IExpenseLine;\r\n\r\nexport type IExpenseLineResponse = IGenericResponse;\r\nexport type IExpenseDetailResponse = IGenericResponse;\r\n","import { IStatusMessage, IGenericResponse } from '../shared';\r\n\r\nexport interface IExpenseReceipt {\r\n ExpenseRptNbr?: number;\r\n Sequenceid?: number;\r\n EmpAuthID?: number;\r\n RptTask?: string;\r\n ExpenseID?: number;\r\n ExpenseItem?: any;\r\n StatusText?: string;\r\n ExpenseReportStatus?: number;\r\n Unique_Id?: string;\r\n File_unique_id?: string;\r\n ReceiptTax?: number;\r\n ReceiptTotal?: number;\r\n ReceiptDescription?: string;\r\n Creditaccountlistid?: string;\r\n PaymentMethod?: string;\r\n DeleteFlag?: number;\r\n FileName?: string;\r\n FileSize?: string;\r\n FileMimeType?: string;\r\n Status?: IStatusMessage;\r\n Row_Version?: string;\r\n Line_rowversion?: string; // used to update the row version for the line this receipt belongs to.\r\n}\r\n\r\nexport interface IExpenseReceiptResponse extends IGenericResponse {}\r\n","import { IStatusMessage, IGenericResponse, IDeleteEntity } from '../shared';\r\nimport { ExpenseRequestTypeEnum, ExpenseStatus } from './expense-enums';\r\n\r\nexport interface IExpenseSummary {\r\n ExpReportNbr?: number;\r\n ReportDate?: Date | string;\r\n ReportTotal?: number;\r\n ReportTax?: number;\r\n ReportUnallowable?: number;\r\n ExpenseReportStatus?: ExpenseStatus;\r\n Exported?: string;\r\n RequiresOversign?: boolean;\r\n Status?: IStatusMessage;\r\n Row_Version?: string;\r\n selected?: boolean;\r\n HasReceipt?: boolean;\r\n IncludesTravel?: boolean;\r\n ERTypeID?: ExpenseRequestTypeEnum;\r\n EmployeeListID?: string;\r\n}\r\n\r\nexport type IExpenseSummaryResponse = IGenericResponse;\r\n\r\nexport type IDeleteDetailResponse = IGenericResponse;\r\nexport type IDeleteSummaryResponse = IGenericResponse;\r\nexport type IDeleteReceiptResponse = IGenericResponse;\r\n","export interface IExpenseTask {\r\n EIListID: string;\r\n EmpAuthEndDate: Date;\r\n EmpAuthID: string;\r\n ExpenseItem: string;\r\n ExpenseItemDesc: string;\r\n IsActive_ExpenseITem: boolean;\r\n IsActive_Task: boolean;\r\n TaskListID: string;\r\n TaskLongName: string;\r\n}\r\n","export interface IPaymentMethod {\r\n EmployeeListID: string;\r\n PaymentMethod: string;\r\n}\r\n","export interface ITravelMode {\r\n RateTypeID: number;\r\n RateDesc: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable, of } from 'rxjs';\r\nimport * as fromCity from './store/city';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { tap, map, filter } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CityService {\r\n private cityUri = `${environment.apiLocation}/CityStateZip`;\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n get(State?: string, ZipCode?: string): Observable> {\r\n if (!(State || ZipCode)) {\r\n return of([]);\r\n }\r\n this.log.verbose({\r\n type: 'CityService:get',\r\n State,\r\n ZipCode\r\n });\r\n return this.http\r\n .post>(this.cityUri, {\r\n State,\r\n ZipCode\r\n })\r\n .pipe(\r\n map(x => x && x.map(y => ({ ...y, id: `${y.City}` }))),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'CityService:get:reponse:mapped',\r\n data\r\n })\r\n ),\r\n // filter(x => !!x),\r\n map(x => (!x ? [] : x)),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'CityService:get:reponse:filtered',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","export enum LocaleEnum {\r\n Domestic = 1,\r\n Foreign = 2,\r\n OCONUS = 3\r\n}\r\n\r\nexport enum ExpenseStatus {\r\n SuperUser = -1,\r\n Saved = 0.0,\r\n Signed = 1.0,\r\n Validated = 1.5,\r\n Approved = 2.0,\r\n Disapproved = 3.0\r\n}\r\n\r\nexport enum PerDiemTypeEnum {\r\n Lodging = 1,\r\n MIE = 2,\r\n LocalMealRate = 4,\r\n ProportionalMealRate = 5,\r\n LocalIncidental = 6,\r\n BothLodgingandMIE = 7\r\n}\r\n\r\nexport enum MileageTypeEnum {\r\n Airplane = 1,\r\n POV = 2,\r\n GOV = 3,\r\n Motorcycle = 4\r\n}\r\n\r\nexport enum TravelTypeEnum {\r\n Unknown = -1,\r\n PerDiem = 2,\r\n Mileage = 3,\r\n Receipt = 4\r\n}\r\nexport enum ExpenseRequestTypeEnum {\r\n Expense = 1,\r\n Travel = 2\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\nimport * as fromExpense from '.';\r\nimport { ExpensesModule } from '.';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\nconst log = new LoggingService();\r\n\r\n// TODO: split these into areas\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ExpensesModule,\r\n UIRouterModule.forChild({\r\n // TODO: will having all these here mess with lazy loading of modules?\r\n // https://ui-router.github.io/guide/lazyloading\r\n states: [\r\n {\r\n name: 'expensereport',\r\n url: '/expensereport',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromExpense.ExpenseListFeatureComponent\r\n },\r\n {\r\n name: 'expensereport.entry',\r\n url: '/entry',\r\n component: fromExpense.ExpenseListFeatureComponent\r\n },\r\n {\r\n name: 'expensereport.super',\r\n url: '/super',\r\n component: fromExpense.ExpenseListFeatureComponent\r\n },\r\n {\r\n name: 'expensereport.validate',\r\n url: '/validate',\r\n component: fromExpense.ExpenseListFeatureComponent\r\n },\r\n {\r\n name: 'expensereport.approval',\r\n url: '/approve',\r\n component: fromExpense.ExpenseListFeatureComponent\r\n },\r\n {\r\n name: 'expensereport.travelrequest',\r\n url: '/travel',\r\n component: fromExpense.ExpenseListFeatureComponent\r\n },\r\n {\r\n name: 'expensereport.travelrequestapproval',\r\n url: '/approvetravel',\r\n component: fromExpense.ExpenseListFeatureComponent\r\n },\r\n {\r\n name: 'expenserequest',\r\n url: '/expenserequest',\r\n redirectTo: 'expensereport.travelrequest'\r\n }\r\n ]\r\n })\r\n ]\r\n})\r\nexport class ExpensesRoutingModule {}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport {\r\n IExpenseSummary,\r\n IExpenseSummaryResponse,\r\n IDeleteSummaryResponse,\r\n IDeleteDetailResponse,\r\n IDeleteReceiptResponse\r\n} from './IExpenseSummary';\r\nimport { Observable, from, of } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { ITask } from '../lookups/ITask';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { tap, map, find } from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport * as moment from 'moment';\r\nimport { IExpenseLine, IExpenseLineResponse } from './IExpenseLine';\r\nimport { IExpenseReceipt, IExpenseReceiptResponse } from './IExpenseReceipt';\r\nimport { IPaymentMethod } from './IPaymentMethod';\r\nimport { ITravelMode } from './ITravelMode';\r\nimport { IExpenseTask } from './IExpenseTask';\r\nimport { IExpenseItem, IDirectReport } from '../lookups';\r\nimport { ITravelRate } from './ITravelRate';\r\nimport { ITripLegType } from './ITripLegType';\r\nimport { ExpenseStatus, ExpenseRequestTypeEnum } from './expense-enums';\r\nimport { UserRoleEnum } from '../user-info';\r\nimport { LoadingService } from '../shared/loading';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromRoot from '../store/core';\r\nimport { UserPaymentMethod } from './UserPaymentMethod';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExpenseService extends LoadingService {\r\n private managementUri = `${environment.apiLocation}/ExpenseReportManagementAction`;\r\n private summaryUri = `${environment.apiLocation}/ExpenseReport`;\r\n private detailUri = `${environment.apiLocation}/ExpenseReportLine`;\r\n private receiptUri = `${environment.apiLocation}/ExpenseReportReceipt`;\r\n private paymentUri = `${environment.apiLocation}/PaymentMethod`;\r\n private userPaymentUri = `${environment.apiLocation}/UserPaymentMethod`;\r\n private travelModeUri = `${environment.apiLocation}/MileageRateType`;\r\n private expenseTaskUri = `${environment.apiLocation}/ExpenseItemTask`;\r\n private travelRateUri = `${environment.apiLocation}/TravelRates`;\r\n private tripLegTypeUri = `${environment.apiLocation}/TripLegType`;\r\n private expenseDirectReportUri = `${environment.apiLocation}/DirectReportforExpenseReport`;\r\n private lookupDirectReportUri = `${environment.apiLocation}/DirectReport`;\r\n private pdobUri = `${environment.apiLocation}/ExpenseLinePdbo`;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n deleteExpense(summary: IExpenseSummary): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:deleteExpense',\r\n summary,\r\n uri: this.summaryUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .request('DELETE', this.summaryUri, {\r\n body: { EntityIDs: [summary.ExpReportNbr] }\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:deleteExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n }),\r\n map(res =>\r\n res.Items\r\n ? res.Items[0].EntityID === summary.ExpReportNbr\r\n ? summary\r\n : null\r\n : null\r\n )\r\n );\r\n }\r\n deleteExpenseDetail(detail: IExpenseLine): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:deleteExpenseDetail',\r\n detail,\r\n uri: this.detailUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .request('DELETE', this.detailUri, {\r\n body: { EntityIDs: [detail.ExpenseID] }\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:deleteExpenseDetail:reponse',\r\n data\r\n });\r\n super.Stop();\r\n }),\r\n map(res =>\r\n res.Items\r\n ? res.Items[0].EntityID === detail.ExpenseID\r\n ? detail\r\n : null\r\n : null\r\n )\r\n );\r\n }\r\n deleteExpenseReceipt(\r\n receipt: IExpenseReceipt\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:deleteExpenseReceipt',\r\n receipt,\r\n uri: this.receiptUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .request('DELETE', this.receiptUri, {\r\n body: { EntityIDs: [receipt.Unique_Id] }\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:deleteExpenseReceipt:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n oversignExpense(\r\n summary: IExpenseSummary\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:oversignExpense',\r\n summary,\r\n uri: this.summaryUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .put(this.summaryUri, {\r\n ExpenseReports: [{ ...summary, RequiresOversign: true }]\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:oversignExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n approveExpense(\r\n summaries: Array,\r\n roleId: number\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:approveExpense',\r\n summary: summaries,\r\n uri: this.managementUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .put(this.managementUri, {\r\n ExpenseReportManagementActions: summaries.map(s => ({\r\n ...s,\r\n UserGroupId: roleId,\r\n ExpenseReportStatus: ExpenseStatus.Approved\r\n }))\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:approveExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n unapproveExpense(\r\n summaries: Array,\r\n roleId: number\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:unapproveExpense',\r\n summary: summaries,\r\n uri: this.managementUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .put(this.managementUri, {\r\n ExpenseReportManagementActions: summaries.map(s => ({\r\n ...s,\r\n UserGroupId: roleId,\r\n ExpenseReportStatus: ExpenseStatus.Signed\r\n }))\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:unapproveExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n disapproveExpense(\r\n summaries: Array,\r\n roleId: number\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:disapproveExpense',\r\n summary: summaries,\r\n uri: this.managementUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .put(this.managementUri, {\r\n ExpenseReportManagementActions: summaries.map(s => ({\r\n ...s,\r\n UserGroupId: roleId,\r\n ExpenseReportStatus: ExpenseStatus.Disapproved\r\n }))\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:disapproveExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n convertExpense(\r\n summary: IExpenseSummary,\r\n roleId: number\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:convertExpense',\r\n summaries: summary,\r\n uri: this.managementUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .put(this.summaryUri, {\r\n ExpenseReports: [\r\n {\r\n ...summary,\r\n UserGroupId: roleId,\r\n ERTypeID: ExpenseRequestTypeEnum.Expense\r\n }\r\n ]\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:convertExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n validateExpense(\r\n summaries: Array,\r\n roleId: number\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:validateExpense',\r\n summaries,\r\n uri: this.managementUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .put(this.managementUri, {\r\n ExpenseReportManagementActions: summaries.map(s => ({\r\n ...s,\r\n UserGroupId: roleId,\r\n ExpenseReportStatus: ExpenseStatus.Validated\r\n }))\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:validateExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n unvalidateExpense(\r\n summaries: Array,\r\n roleId: number\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:unvalidateExpense',\r\n summary: summaries,\r\n uri: this.managementUri\r\n });\r\n\r\n super.Load();\r\n return this.http\r\n .put(this.managementUri, {\r\n ExpenseReportManagementActions: summaries.map(s => ({\r\n ...s,\r\n UserGroupId: roleId,\r\n ExpenseReportStatus: ExpenseStatus.Signed\r\n }))\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:unvalidateExpense:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getExpenseSummary(\r\n reportNumber: number,\r\n EmployeeListID: string\r\n ): Observable {\r\n super.Load();\r\n const params: any = {\r\n ExpReportNbr: reportNumber\r\n };\r\n if (EmployeeListID) {\r\n params.EmployeeListID = EmployeeListID;\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseService:getExpenseSummary',\r\n reportNumber,\r\n EmployeeListID,\r\n params\r\n });\r\n return this.http\r\n .post>(this.summaryUri, params)\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getExpenseSummary:response',\r\n data\r\n });\r\n super.Stop();\r\n }),\r\n map(x => x[0])\r\n );\r\n }\r\n getExpenseSummaries(params: {\r\n startDate?: Date;\r\n endDate?: Date;\r\n tasks?: Array;\r\n expenseItems?: Array;\r\n employeeListID?: string;\r\n expenseType?: ExpenseRequestTypeEnum;\r\n }): Observable> {\r\n super.Load();\r\n this.log.debug({\r\n type: 'ExpenseService:getExpenseSummaries',\r\n params,\r\n uri: this.summaryUri\r\n });\r\n const today = new Date();\r\n const request = {\r\n StartDate:\r\n (params && params.startDate) ||\r\n moment(today).add(-1, 'years').format('M/D/YYYY'),\r\n EndDate:\r\n (params && params.endDate) ||\r\n moment(today).add(1, 'years').format('M/D/YYYY'),\r\n Tasks: (params && params.tasks) || [],\r\n EmployeeListID: params && params.employeeListID,\r\n ERTypeID:\r\n (params && params.expenseType) || ExpenseRequestTypeEnum.Expense\r\n };\r\n\r\n this.log.debug({ type: 'ExpenseService:getExpenseSummaries', request });\r\n return this.http\r\n .post>(this.summaryUri, request)\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getExpenseSummaries:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getExpenseLines(ExpReportNbr: number): Observable> {\r\n this.log.debug({\r\n type: 'ExpenseService:getExpenseLines',\r\n ExpReportNbr,\r\n uri: this.detailUri\r\n });\r\n super.Load();\r\n return this.http\r\n .post>(this.detailUri, {\r\n ExpenseGroupId: ExpReportNbr\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getExpenseLines:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getExpenseReceipts(\r\n ExpReportNbr: number\r\n ): Observable> {\r\n this.log.debug({\r\n type: 'ExpenseService:getExpenseReceipts',\r\n uri: this.receiptUri\r\n });\r\n super.Load();\r\n return this.http\r\n .post>(this.receiptUri, {\r\n ExpenseGroupId: ExpReportNbr\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getExpenseReceipts:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getExpenseReceipt(\r\n ExpenseReport: number,\r\n receiptId: string\r\n ): Observable {\r\n super.Load();\r\n this.log.debug({\r\n type: 'ExpenseService:getExpenseReceipt',\r\n receiptId,\r\n uri: this.receiptUri\r\n });\r\n return this.getExpenseReceipts(ExpenseReport).pipe(\r\n tap(() => super.Stop()),\r\n map(x => x.find(y => y.Unique_Id === receiptId))\r\n );\r\n }\r\n saveExpenseSummary(\r\n summary: IExpenseSummary\r\n ): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:saveExpenseSummary',\r\n summary,\r\n uri: this.summaryUri\r\n });\r\n super.Load();\r\n return this.http\r\n .put(this.summaryUri, {\r\n ExpenseReports: [summary]\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:saveExpenseSummary:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n saveExpenseDetail(line: IExpenseLine): Observable {\r\n this.log.debug({\r\n type: 'ExpenseService:saveExpenseDetail',\r\n details: line,\r\n uri: this.detailUri\r\n });\r\n super.Load();\r\n return this.http\r\n .put(this.detailUri, {\r\n ExpenseReportLines: [line]\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:saveExpenseDetail:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n saveExpenseReceipt(\r\n receipts: Array\r\n ): Observable {\r\n super.Load();\r\n this.log.debug({\r\n type: 'ExpenseService:saveExpenseReceipt',\r\n receipts,\r\n uri: this.receiptUri\r\n });\r\n try {\r\n if (receipts && receipts.length) {\r\n return this.http\r\n .put(this.receiptUri, {\r\n ExpenseReportReceipts: receipts\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:saveExpenseReceipt:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n // } else {\r\n // return of({StatusCode: 0, StatusType: null, ErrorMessages: [], WarningMessages: [], Items: []});\r\n }\r\n } catch (e) {\r\n this.log.error(e);\r\n super.Stop();\r\n }\r\n }\r\n getPaymentMethods(\r\n employeeListID: string\r\n ): Observable> {\r\n super.Load();\r\n return this.http\r\n .get>(\r\n [this.paymentUri, employeeListID].join('/')\r\n )\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getPaymentMethods:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getUserPaymentMethods(\r\n employeeListID: string\r\n ): Observable> {\r\n super.Load();\r\n return this.http\r\n .get>(\r\n `${this.userPaymentUri}/?Employeelistid=${employeeListID}`\r\n )\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getUserPaymentMethods:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getTravelModes(): Observable> {\r\n super.Load();\r\n return this.http.get>(this.travelModeUri).pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getTravelModes:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getExpenseTasks(EmployeeListID: string) {\r\n super.Load();\r\n return this.http\r\n .get>(\r\n [this.expenseTaskUri, EmployeeListID].join('/')\r\n )\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService.getExpenseTasks',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getTravelRates(req: ITravelRate) {\r\n this.log.verbose({\r\n type: 'ExpenseService:getTravelRates:request',\r\n req\r\n });\r\n super.Load();\r\n return this.http\r\n .post>(this.travelRateUri, {\r\n ...req,\r\n Destination: req.Destination || ''\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getTravelRates:reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getTripLegTypes() {\r\n super.Load();\r\n return this.http.get>(this.tripLegTypeUri).pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService.getTripLegTypes',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n getDirectReports(\r\n role: UserRoleEnum,\r\n activeOnly: boolean,\r\n startDate: Date,\r\n endDate: Date\r\n ) {\r\n super.Load();\r\n return this.http\r\n .post>(this.expenseDirectReportUri, {\r\n UserRole: role,\r\n ActiveOnly: activeOnly,\r\n StartDate: moment(startDate).isValid()\r\n ? moment(startDate).format('MM-DD-YYYY')\r\n : null,\r\n EndDate: moment(endDate).isValid()\r\n ? moment(endDate).format('MM-DD-YYYY')\r\n : null\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getDirectReports(post):reponse',\r\n data\r\n });\r\n super.Stop();\r\n })\r\n );\r\n }\r\n putExpensePdbo(pdbo: any) {\r\n super.Load();\r\n try {\r\n this.log.verbose({ type: 'ExpenseService:putExpensePdbo', pdbo });\r\n return this.http\r\n .put(this.pdobUri, {\r\n JsonString: JSON.stringify(pdbo)\r\n })\r\n .pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:putExpensePdbo(put):reponse',\r\n data\r\n });\r\n })\r\n );\r\n } finally {\r\n super.Stop();\r\n }\r\n }\r\n getExpensePdbo(id: number) {\r\n super.Load();\r\n try {\r\n this.log.verbose({ type: 'ExpenseService:getExpensePdbo', id });\r\n return this.http.get(`${this.pdobUri}/${id}`).pipe(\r\n tap(data => {\r\n this.log.verbose({\r\n type: 'ExpenseService:getExpensePdbo(get):reponse',\r\n data\r\n });\r\n })\r\n );\r\n } finally {\r\n super.Stop();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport {\r\n DialogService,\r\n FileUploadModule\r\n} from '../shared/efaact-primeng.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UserSelectorModule } from '../user-selector/user-selector.module';\r\nimport * as features from './features';\r\nimport * as presenters from './presenters';\r\nimport {\r\n ExpenseDetailCityStateZipComponent,\r\n ExpenseDetailCityStateZipContainerComponent\r\n} from './presenters/expense-add/expense-detail-add/expense-detail-city-state-zip';\r\nimport * as fromExpense from './store';\r\nimport * as fromCity from './store/city';\r\nimport * as expenseEffects from './store/effects';\r\nimport { ExpensePdboFeatureComponent } from './features/expense-pdbo-feature/expense-pdbo-feature.component';\r\nimport { ExpensePdboComponent } from './presenters/expense-pdbo/expense-pdbo.component';\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('expenses', fromExpense.reducer),\r\n StoreModule.forFeature(fromCity.citiesFeatureKey, fromCity.reducer),\r\n EffectsModule.forFeature([\r\n expenseEffects.ExpenseEffects,\r\n fromCity.CityEffects\r\n ]),\r\n EfaactMaterialModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UserSelectorModule,\r\n MatRadioModule,\r\n SharedModule,\r\n FileUploadModule\r\n ],\r\n declarations: [\r\n features.ExpenseListFeatureComponent,\r\n presenters.ExpenseSummaryListComponent,\r\n presenters.ExpenseAddComponent,\r\n presenters.ExpenseSummaryAddComponent,\r\n presenters.ExpenseDetailAddComponent,\r\n presenters.ExpenseDetailPerDiemComponent,\r\n presenters.ExpenseDetailMileageComponent,\r\n presenters.ExpenseDetailReceiptComponent,\r\n presenters.ExpenseListComponent,\r\n presenters.ExpenseDetailListComponent,\r\n presenters.ExpenseReceiptListComponent,\r\n features.ExpenseAddFeatureComponent,\r\n presenters.ExpenseDetailSelectorComponent,\r\n presenters.ExpenseReceiptSelectorComponent,\r\n features.ExpenseReceiptViewFeatureComponent,\r\n presenters.ExpenseReceiptViewPresenterComponent,\r\n ExpenseDetailCityStateZipComponent,\r\n ExpenseDetailCityStateZipContainerComponent,\r\n ExpensePdboFeatureComponent,\r\n ExpensePdboComponent\r\n ],\r\n providers: [DialogService]\r\n})\r\nexport class ExpensesModule {}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Inject,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ActionsSubject, select, Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport {\r\n combineLatest,\r\n merge,\r\n Observable,\r\n of,\r\n ReplaySubject,\r\n Subject\r\n} from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n delay,\r\n distinctUntilChanged,\r\n distinctUntilKeyChanged,\r\n filter,\r\n map,\r\n pairwise,\r\n startWith,\r\n takeWhile,\r\n tap\r\n} from 'rxjs/operators';\r\nimport * as fromLookup from '../../../lookups';\r\nimport {\r\n IDirectReport,\r\n ILocale,\r\n IPerDiemLocale,\r\n ITask,\r\n ITravelType\r\n} from '../../../lookups';\r\nimport * as fromShared from '../../../shared';\r\nimport { IAttachment, Process, ResponseStatus } from '../../../shared';\r\nimport {\r\n DialogService,\r\n DynamicDialogConfig,\r\n DynamicDialogRef,\r\n SelectItem\r\n} from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../../user-info';\r\nimport { IUserInfo } from '../../../user-info';\r\nimport {\r\n ExpenseRequestTypeEnum,\r\n LocaleEnum,\r\n MileageTypeEnum,\r\n TravelTypeEnum\r\n} from '../../expense-enums';\r\nimport { IExpenseLine } from '../../IExpenseLine';\r\nimport { IExpenseReceipt } from '../../IExpenseReceipt';\r\nimport { IExpenseSummary } from '../../IExpenseSummary';\r\nimport { IExpenseTask } from '../../IExpenseTask';\r\nimport { ITravelMode } from '../../ITravelMode';\r\nimport { ITravelRate } from '../../ITravelRate';\r\nimport { ITripLegType } from '../../ITripLegType';\r\nimport * as fromCity from '../../store/city';\r\nimport * as fromExpense from '../../store/index';\r\n@Component({\r\n selector: 'ef-expense-add-feature',\r\n templateUrl: './expense-add-feature.component.html',\r\n styleUrls: ['./expense-add-feature.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [DialogService]\r\n})\r\nexport class ExpenseAddFeatureComponent implements AfterViewInit, OnDestroy {\r\n private componentActive = true;\r\n public expenseTasks: Array;\r\n private SelectDetailSubject = new Subject();\r\n private SetPostalCodeSubject = new Subject();\r\n private SetPostalCode2Subject = new Subject();\r\n private SelectTaskSubject = new Subject();\r\n private ReportDateChangeSubject = new Subject();\r\n public process: Process;\r\n public userInfo$: Observable;\r\n public tasks$: Observable>;\r\n public expenseDetails$: Observable>;\r\n public expenseReceipts$: Observable>;\r\n public expenseItems$: Observable>;\r\n public locales$: Observable>;\r\n public perDiemTypes$: Observable>;\r\n public travelTypes$: Observable>;\r\n public paymentMethods$: Observable>;\r\n public userPaymentMethods$: Observable>;\r\n public travelModes$: Observable>;\r\n public travelRates$: Observable>;\r\n public selectedRate$: Observable;\r\n public countries$: Observable>;\r\n public areas$: Observable>;\r\n public states$: Observable>;\r\n public locations$: Observable>;\r\n public cities$: Observable>;\r\n public tripLegTypes$: Observable>;\r\n // public minDate$: Observable;\r\n // public maxDate$: Observable;\r\n public successMessages$: Observable;\r\n public failureMessages$: Observable;\r\n public editingExpense$: Observable;\r\n public editingExpenseDetail$: Observable;\r\n public editingExpenseReceipt$: Observable;\r\n public editingExpenseReceiptAttachment$: Observable>;\r\n public summary: IExpenseSummary;\r\n public detail: IExpenseLine;\r\n public expenseAddFeatureFormGroup: FormGroup;\r\n private SetStateSubject = new ReplaySubject(1);\r\n private SetCitySubject = new ReplaySubject(1);\r\n private SetFromStateSubject = new ReplaySubject(1);\r\n private SetFromCitySubject = new ReplaySubject(1);\r\n private SetToStateSubject = new ReplaySubject(1);\r\n private SetToCitySubject = new ReplaySubject(1);\r\n private SetTravelStartSubject = new ReplaySubject(1);\r\n private SetTravelEndSubject = new ReplaySubject(1);\r\n private SetPerDiemTypeSubject = new ReplaySubject(1);\r\n private SetLocaleSubject = new ReplaySubject(1);\r\n private SetTripLegTypeSubject = new ReplaySubject(1);\r\n private SetDestinationSubject = new ReplaySubject(1);\r\n private SetTravelTypeSubject = new ReplaySubject(1);\r\n private SetMileageTypeSubject = new ReplaySubject(1);\r\n private SetMileageSubject = new ReplaySubject(1);\r\n public saveSubject = new Subject();\r\n UploadReceiptAttachmentSubject = new ReplaySubject(1);\r\n SelectAttachmentSubject = new ReplaySubject(1);\r\n private superUser: boolean;\r\n directReport: IDirectReport;\r\n private userInfo: IUserInfo;\r\n private closeDialog(result?: any): void {}\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n // public dialogRef: MatDialogRef,\r\n // @Inject(MAT_DIALOG_DATA) data: any,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private store: Store,\r\n private expenseStore: Store,\r\n private dispatcher: ActionsSubject\r\n ) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:constructor',\r\n config\r\n });\r\n this.process = config.data.process;\r\n this.superUser = config.data.superUser;\r\n this.userInfo = config.data.userInfo;\r\n this.directReport = {\r\n ...config.data.directReport,\r\n MaxWorkDate: moment(config.data.directReport.MaxWorkDate).toDate(),\r\n MinWorkDate: moment(config.data.directReport.MinWorkDate).toDate()\r\n };\r\n this.store.dispatch(new fromExpense.ClearMessages());\r\n this.expenseAddFeatureFormGroup = new FormGroup({\r\n expenseAddParent: new FormControl()\r\n });\r\n\r\n this.setupObservables();\r\n // this.closeDialog = this.dialogRef.close;\r\n // this.dialogRef.close = this.closeDialogInterceptor;\r\n }\r\n\r\n private closeDialogInterceptor(result: any): void {\r\n this.closeDialog(result);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.store.dispatch(new fromExpense.SetTravelRates([]));\r\n\r\n this.setupSubscriptions();\r\n\r\n this.setupFormSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onDestroy'\r\n });\r\n this.componentActive = false;\r\n }\r\n setupFormSubscriptions() {\r\n this.successMessages$ = this.store.pipe(\r\n select(fromExpense.getSuccessMessages),\r\n tap(() => this.expenseAddFeatureFormGroup.markAsUntouched())\r\n );\r\n\r\n this.successMessages$\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(x => !!x && x.length > 0),\r\n delay(5000)\r\n )\r\n .subscribe(x =>\r\n this.store.dispatch(new fromExpense.ClearMessages())\r\n );\r\n }\r\n setupObservables() {\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.areas$ = this.store.pipe(select(fromLookup.getAreas));\r\n this.countries$ = this.store.pipe(select(fromLookup.getCountries));\r\n this.states$ = this.store.pipe(select(fromLookup.getStates));\r\n this.locations$ = this.store.pipe(select(fromLookup.getLocations));\r\n this.cities$ = this.store.pipe(select(fromCity.selectAll));\r\n\r\n this.editingExpense$ = this.store.pipe(\r\n select(fromExpense.getEditingExpenseSummary),\r\n tap(e => (this.summary = e)),\r\n tap(e =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:editingExpense$1',\r\n e\r\n })\r\n ),\r\n map(e =>\r\n e.ExpReportNbr <= 0\r\n ? {\r\n ...e,\r\n ReportDate: new Date(\r\n Math.min(\r\n Number(e.ReportDate),\r\n Number(this.directReport.MaxWorkDate)\r\n )\r\n )\r\n }\r\n : e\r\n )\r\n );\r\n this.failureMessages$ = this.store.pipe(\r\n select(fromExpense.getFailureMessages)\r\n );\r\n this.expenseDetails$ = this.expenseStore.pipe(\r\n select(fromExpense.getExpenseLines),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'tap:ExpenseAddFeatureComponent:expenseDetails$',\r\n x\r\n })\r\n ),\r\n map(x => [...x].sort((a, b) => a.SequenceId - b.SequenceId))\r\n );\r\n this.editingExpenseDetail$ = combineLatest([\r\n this.store.pipe(select(fromExpense.getEditingExpenseDetail)),\r\n this.expenseDetails$\r\n ]).pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:editingExpenseDetail$',\r\n x\r\n })\r\n ),\r\n map(([detail, details]) => {\r\n if (detail) {\r\n const found = details.find(\r\n x => x.ExpenseID === detail.ExpenseID\r\n );\r\n return found ? found : detail;\r\n }\r\n return detail;\r\n }),\r\n tap(detail => (this.detail = detail)),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:editingExpenseDetail$',\r\n x\r\n })\r\n )\r\n );\r\n this.expenseReceipts$ = combineLatest([\r\n this.expenseStore.pipe(\r\n select(fromExpense.getExpenseReceipts),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'tap:ExpenseAddFeatureComponent:expenseReceipts$',\r\n x\r\n })\r\n )\r\n ),\r\n this.editingExpenseDetail$.pipe(filter(x => x !== null))\r\n ]).pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'tap:ExpenseAddFeatureComponent:expenseReceipts$:combineLatest(editingExpenseDetail$)',\r\n x\r\n })\r\n ),\r\n map(([receipts, line]) =>\r\n [...receipts]\r\n .filter(x => x.Sequenceid === line.SequenceId)\r\n .sort(\r\n (a, b) =>\r\n a.ExpenseRptNbr * 1000 +\r\n a.Sequenceid -\r\n (b.ExpenseRptNbr * 1000 + b.Sequenceid)\r\n )\r\n )\r\n );\r\n this.editingExpenseReceipt$ = combineLatest([\r\n this.store.pipe(select(fromExpense.getEditingExpenseReceipt)),\r\n this.expenseReceipts$\r\n ]).pipe(\r\n map(([receipt, receipts]) => {\r\n const found = receipts.find(\r\n x => x.Unique_Id === receipt.Unique_Id\r\n );\r\n return found ? found : receipt;\r\n }),\r\n tap(x => (this.detail = x)),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:editingExpenseReceipt$',\r\n x\r\n })\r\n )\r\n );\r\n\r\n this.locales$ = this.store.pipe(select(fromLookup.getLocalesLookup));\r\n\r\n this.perDiemTypes$ = this.store.pipe(\r\n select(fromLookup.getPerDiemTypesLookup)\r\n );\r\n this.travelTypes$ = this.store.pipe(\r\n select(fromLookup.getTravelTypesLookup)\r\n );\r\n this.paymentMethods$ = this.store.pipe(\r\n select(fromExpense.getExpensePaymentMethods),\r\n map(x =>\r\n x.map(y => ({ label: y.PaymentMethod, value: y.PaymentMethod }))\r\n )\r\n );\r\n this.userPaymentMethods$ = this.store.pipe(\r\n select(fromExpense.getUserPaymentMethods),\r\n map(x =>\r\n x.map(y => ({\r\n label: y.Paymentmethod,\r\n value: y.Creditaccountlistid\r\n }))\r\n )\r\n );\r\n this.travelModes$ = this.store.pipe(\r\n select(fromExpense.getExpenseTravelModes)\r\n );\r\n this.tripLegTypes$ = this.store.pipe(\r\n select(fromExpense.getTripLegTypes)\r\n );\r\n this.editingExpenseReceiptAttachment$ = this.expenseStore.pipe(\r\n select(fromExpense.getReceiptAttachment),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:editingExpenseReceiptAttachment$:tap',\r\n x\r\n })\r\n )\r\n );\r\n this.travelRates$ = this.store.pipe(select(fromExpense.getTravelRates));\r\n this.selectedRate$ = this.store.pipe(\r\n select(fromExpense.getSelectedRate)\r\n );\r\n this.tasks$ = combineLatest([\r\n this.expenseStore.pipe(select(fromExpense.getExpenseTasks)),\r\n this.ReportDateChangeSubject.pipe(startWith(new Date()))\r\n ]).pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent::ngOnInit:getExpenseTasks, getTasksLookup',\r\n x\r\n })\r\n ),\r\n takeWhile(() => this.componentActive),\r\n select(([et, reportdate]) => {\r\n this.expenseTasks = et;\r\n let expenseFilter = et.filter(x =>\r\n moment(x.EmpAuthEndDate).isAfter(reportdate)\r\n );\r\n expenseFilter = expenseFilter.filter(x => x.IsActive_Task);\r\n const tasksWithExpenses = expenseFilter.map(\r\n x =>\r\n ({\r\n TaskListID: x.TaskListID,\r\n TaskLongName: x.TaskLongName,\r\n IsActive: x.IsActive_Task\r\n } as ITask)\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent::ngOnInit:getExpenseTasks, getTasksLookup',\r\n tasksWithExpenses\r\n });\r\n return fromShared.uniqBy(tasksWithExpenses, x => x.TaskListID);\r\n })\r\n );\r\n this.expenseItems$ = combineLatest([\r\n this.SelectTaskSubject.pipe(filter(x => !!x)),\r\n this.expenseStore.pipe(select(fromExpense.getExpenseTasks)),\r\n this.expenseStore.pipe(select(fromLookup.getExpenseItems))\r\n ]).pipe(\r\n takeWhile(() => this.componentActive),\r\n select(([task, et, items]) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent::SelectTaskSubject:items',\r\n items\r\n });\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent::SelectTaskSubject:et',\r\n et\r\n });\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent::SelectTaskSubject:task',\r\n task\r\n });\r\n const filteredExpenseItems = items.filter(x =>\r\n et\r\n .filter(y => y.TaskListID === task.TaskListID)\r\n .map(y => y.EIListID)\r\n .includes(x.EIListID)\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent::SelectTaskSubject, getExpenseTasks, getExpenseItems',\r\n filteredExpenseItems\r\n });\r\n return filteredExpenseItems;\r\n })\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.dispatcher\r\n .pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseReceiptsSuccess\r\n ),\r\n takeWhile(() => this.componentActive)\r\n // , map(resp => resp.payload.Items[0])\r\n )\r\n .subscribe(resp => {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:AddExpenseReceiptsSuccess',\r\n resp\r\n });\r\n // this kicks off save of any attachments\r\n resp.payload.Items.forEach(receipt => {\r\n this.saveSubject.next(receipt);\r\n });\r\n });\r\n\r\n merge([\r\n this.SetStateSubject,\r\n this.SetFromStateSubject,\r\n this.SetToStateSubject\r\n ])\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n pairwise()\r\n )\r\n .subscribe(([prev, next]) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:States$:tap',\r\n prev,\r\n next\r\n });\r\n });\r\n combineLatest([\r\n this.SetLocaleSubject.pipe(\r\n startWith({ LocaleID: 1 }),\r\n distinctUntilKeyChanged('LocaleID'),\r\n tap(locale =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:SetLocaleSubject:tap',\r\n locale\r\n })\r\n )\r\n ),\r\n merge(\r\n this.SetPostalCodeSubject.pipe(filter(x => !!x)),\r\n this.SetPostalCode2Subject.pipe(filter(x => !!x))\r\n ).pipe(\r\n distinctUntilChanged(),\r\n tap(zip =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:SetPostalCodeSubject:tap',\r\n zip\r\n })\r\n )\r\n ),\r\n merge(\r\n this.SetStateSubject.pipe(filter(x => !!x)),\r\n this.SetFromStateSubject.pipe(filter(x => !!x)),\r\n this.SetToStateSubject.pipe(filter(x => !!x))\r\n ).pipe(\r\n distinctUntilChanged(),\r\n pairwise(),\r\n tap(([prev, next]) =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:SetStateSubject:tap',\r\n prev,\r\n next\r\n })\r\n ),\r\n map(([prev, next]) => next)\r\n )\r\n ])\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(([locale, zip, state]) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:StateZip$:tap',\r\n locale,\r\n zip,\r\n state\r\n });\r\n switch (locale.LocaleID) {\r\n case LocaleEnum.Domestic:\r\n if (zip) {\r\n this.store.dispatch(\r\n fromCity.getCitys({ ZipCode: zip })\r\n );\r\n } else {\r\n this.store.dispatch(\r\n fromCity.getCitys({ State: state })\r\n );\r\n }\r\n break;\r\n default:\r\n if (locale && state) {\r\n this.log.debug({\r\n type: 'LoadLocations:combineLatest:LoadLocations',\r\n locale,\r\n state\r\n });\r\n this.store.dispatch(\r\n new fromLookup.LoadLocations({\r\n locale: locale.LocaleID,\r\n countryArea: state\r\n })\r\n );\r\n }\r\n break;\r\n }\r\n });\r\n\r\n const cityStateZip$ = merge(\r\n this.SetPostalCodeSubject.pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:cityStateZip$:merge:SetPostalCodeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetStateSubject.pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:cityStateZip$:merge:SetStateSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetCitySubject.pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:cityStateZip$:merge:SetCitySubject',\r\n x\r\n })\r\n )\r\n )\r\n ).pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:cityStateZip$:tap',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n );\r\n\r\n const getPerDiemTravelRates$ = combineLatest([\r\n this.SetTravelTypeSubject.pipe(\r\n startWith(null as unknown as ITravelType),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetTravelTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTravelStartSubject.pipe(\r\n filter(x => !(x === undefined || x === null)),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetTravelStartSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTravelEndSubject.pipe(\r\n filter(x => !(x === undefined || x === null)),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetTravelEndSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetLocaleSubject.pipe(\r\n startWith(null as any),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetLocaleSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTripLegTypeSubject.pipe(\r\n // startWith({ TripLegTypeID: 4 }),\r\n filter(x => !!x),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetTripLegTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetPerDiemTypeSubject.pipe(\r\n startWith(null as any),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetPerDiemTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n cityStateZip$.pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:cityStateZip$',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetPostalCodeSubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetPostalCodeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetStateSubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetStateSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetCitySubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetCitySubject',\r\n x\r\n })\r\n )\r\n ),\r\n of('').pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:country',\r\n x\r\n })\r\n )\r\n ), // country [10]\r\n this.SetMileageTypeSubject.pipe(\r\n startWith(null as any),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetMileageTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetMileageSubject.pipe(\r\n startWith(null as number),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates:combineLatest:SetMileageSubject',\r\n x\r\n })\r\n )\r\n )\r\n ]);\r\n // .pipe(\r\n // takeWhile(() => this.componentActive),\r\n // debounceTime(500)\r\n // );\r\n getPerDiemTravelRates$\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n debounceTime(500),\r\n filter(([travelType]) => travelType === TravelTypeEnum.PerDiem),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates$:PerDiem:tap',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(\r\n ([\r\n travelType,\r\n startDate,\r\n endDate,\r\n locale,\r\n tripLeg,\r\n perDiemType,\r\n citystatezip,\r\n zipCode,\r\n state,\r\n city,\r\n country,\r\n mileageType,\r\n mileage\r\n ]) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates$:PerDiem:subscribe',\r\n travelType,\r\n startDate,\r\n endDate,\r\n locale,\r\n tripLeg,\r\n perDiemType,\r\n citystatezip,\r\n zipCode,\r\n state,\r\n city,\r\n country,\r\n mileageType,\r\n mileage\r\n });\r\n try {\r\n const perDiemRate = {\r\n TravelStart: startDate,\r\n TravelEnd: endDate,\r\n LocaleID: locale && locale.LocaleID,\r\n TripLegTypeID: tripLeg && tripLeg.TripLegTypeID,\r\n PerDiemTypeID: perDiemType, // && x[5].PerDiemTypeID,\r\n ZipCode: zipCode || '',\r\n State: state || '',\r\n City: city || '',\r\n Country_Area: country || '',\r\n MileageTypeID: 0,\r\n Mileage: 0,\r\n Destination: ''\r\n };\r\n if (perDiemRate.ZipCode) {\r\n perDiemRate.State = '';\r\n perDiemRate.City = '';\r\n }\r\n if (perDiemRate.LocaleID === LocaleEnum.Foreign) {\r\n perDiemRate.Country_Area = perDiemRate.State;\r\n perDiemRate.Destination = perDiemRate.City;\r\n perDiemRate.State = '';\r\n perDiemRate.City = '';\r\n }\r\n if (perDiemRate.LocaleID === LocaleEnum.OCONUS) {\r\n perDiemRate.Country_Area = perDiemRate.State;\r\n perDiemRate.Destination = perDiemRate.City;\r\n perDiemRate.State = '';\r\n perDiemRate.City = '';\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates$:PerDiem:subscribe',\r\n perDiemRate\r\n });\r\n if (\r\n ((perDiemRate.LocaleID === LocaleEnum.Domestic &&\r\n (perDiemRate.State || perDiemRate.ZipCode)) ||\r\n ((perDiemRate.LocaleID === LocaleEnum.Foreign ||\r\n perDiemRate.LocaleID ===\r\n LocaleEnum.OCONUS) &&\r\n perDiemRate.Country_Area &&\r\n perDiemRate.Destination)) &&\r\n perDiemRate.LocaleID &&\r\n perDiemRate.PerDiemTypeID\r\n ) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getPerDiemTravelRates$:PerDiem:subscribe:getting rates',\r\n perDiemRate\r\n });\r\n this.store.dispatch(\r\n new fromExpense.SetTravelRates(null)\r\n ); // TODO: handle this in effect instead\r\n this.store.dispatch(\r\n new fromExpense.SelectTravelRate(null)\r\n ); // TODO: handle this in effect instead\r\n this.store.dispatch(\r\n new fromExpense.LoadTravelRates(perDiemRate)\r\n );\r\n }\r\n } catch (e) {\r\n this.log.error(e);\r\n }\r\n }\r\n );\r\n\r\n const getMileageTravelToRates$ = combineLatest([\r\n this.SetTravelTypeSubject.pipe(\r\n startWith(null as any),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetTravelTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTravelStartSubject.pipe(\r\n filter(x => !(x === undefined || x === null)),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetTravelStartSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTravelEndSubject.pipe(\r\n filter(x => !(x === undefined || x === null)),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetTravelEndSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetLocaleSubject.pipe(\r\n startWith(null),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetLocaleSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTripLegTypeSubject.pipe(\r\n startWith({ TripLegTypeID: 4 }),\r\n // filter(x => !!x),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetTripLegTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetPerDiemTypeSubject.pipe(\r\n startWith(null),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetPerDiemTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetPostalCodeSubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetPostalCodeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetToStateSubject.pipe(startWith({ State: undefined })).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetStateSubject',\r\n x\r\n })\r\n )\r\n // filter(state => !!state && !!state.State)\r\n ),\r\n this.SetToCitySubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetCitySubject',\r\n x\r\n })\r\n )\r\n ),\r\n of('').pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:country',\r\n x\r\n })\r\n )\r\n ), // country [10]\r\n this.SetMileageTypeSubject.pipe(\r\n startWith(null),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetMileageTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetMileageSubject.pipe(\r\n startWith(null),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates:combineLatest:SetMileageSubject',\r\n x\r\n })\r\n )\r\n )\r\n ]).pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates$:Mileage:tap',\r\n x\r\n })\r\n ),\r\n debounceTime(500)\r\n );\r\n getMileageTravelToRates$\r\n .pipe(\r\n filter(x => x[0] === TravelTypeEnum.Mileage),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates$:Mileage:filter:tap',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(\r\n ([\r\n travelType,\r\n startDate,\r\n endDate,\r\n locale,\r\n tripLeg,\r\n perDiemType,\r\n zipCode,\r\n state,\r\n city,\r\n country,\r\n mileageType,\r\n mileage\r\n ]) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates$:Mileage:subscribe',\r\n travelType,\r\n startDate,\r\n endDate,\r\n locale,\r\n tripLeg,\r\n perDiemType,\r\n zipCode,\r\n state,\r\n city,\r\n country,\r\n mileageType,\r\n mileage\r\n });\r\n const mileageRate = {\r\n TravelStart: startDate,\r\n TravelEnd: endDate,\r\n LocaleID: 1,\r\n TripLegTypeID: 0,\r\n PerDiemTypeID: 0,\r\n ZipCode: zipCode || '',\r\n State: zipCode ? '' : state || '',\r\n City: '',\r\n Country_Area: '',\r\n MileageTypeID: mileageType && mileageType.RateTypeID,\r\n Mileage: mileage,\r\n Destination: ''\r\n };\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates$:Mileage:subscribe',\r\n mileageRate\r\n });\r\n if (\r\n (mileageRate.State || mileageRate.ZipCode) &&\r\n mileageRate.MileageTypeID &&\r\n mileageRate.Mileage\r\n ) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelToRates$:Mileage:subscribe:getting rates',\r\n mileageRate\r\n });\r\n this.store.dispatch(\r\n new fromExpense.LoadTravelRates(mileageRate)\r\n );\r\n }\r\n }\r\n );\r\n const getMileageTravelFromRates$ = combineLatest([\r\n this.SetTravelTypeSubject.pipe(\r\n startWith(null as any),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetTravelTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTravelStartSubject.pipe(\r\n filter(x => !(x === undefined || x === null)),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetTravelStartSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTravelEndSubject.pipe(\r\n filter(x => !(x === undefined || x === null)),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetTravelEndSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetLocaleSubject.pipe(\r\n startWith(null as ILocale),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetLocaleSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetTripLegTypeSubject.pipe(\r\n startWith({ TripLegTypeID: 4 } as ITripLegType),\r\n // filter(x => !!x),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetTripLegTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetPerDiemTypeSubject.pipe(\r\n startWith(null as IPerDiemLocale),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetPerDiemTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetPostalCodeSubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetPostalCodeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetFromStateSubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetStateSubject',\r\n x\r\n })\r\n )\r\n // filter(state => !!state)\r\n ),\r\n this.SetFromCitySubject.pipe(startWith('')).pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetCitySubject',\r\n x\r\n })\r\n )\r\n ),\r\n of('').pipe(\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:country',\r\n x\r\n })\r\n )\r\n ), // country [10]\r\n this.SetMileageTypeSubject.pipe(\r\n startWith(null as MileageTypeEnum),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetMileageTypeSubject',\r\n x\r\n })\r\n )\r\n ),\r\n this.SetMileageSubject.pipe(\r\n startWith(null as number),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates:combineLatest:SetMileageSubject',\r\n x\r\n })\r\n )\r\n )\r\n ]).pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates$:Mileage:tap',\r\n x\r\n })\r\n ),\r\n debounceTime(500)\r\n );\r\n getMileageTravelFromRates$\r\n .pipe(\r\n // filter(x => x[0] === TravelTypeEnum.Mileage),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates$:Mileage:filter:tap',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(\r\n ([\r\n travelType,\r\n startDate,\r\n endDate,\r\n locale,\r\n tripLeg,\r\n perDiemType,\r\n zipCode,\r\n state,\r\n city,\r\n country,\r\n mileageType,\r\n mileage\r\n ]) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates$:Mileage:subscribe',\r\n travelType,\r\n startDate,\r\n endDate,\r\n locale,\r\n tripLeg,\r\n perDiemType,\r\n zipCode,\r\n fromState: state,\r\n fromCity: city,\r\n country,\r\n mileageType,\r\n mileage\r\n });\r\n const mileageRate = {\r\n TravelStart: startDate,\r\n TravelEnd: endDate,\r\n LocaleID: 1,\r\n TripLegTypeID: 0,\r\n PerDiemTypeID: 0,\r\n ZipCode: zipCode || '',\r\n State: zipCode ? '' : state || '',\r\n City: '',\r\n Country_Area: '',\r\n MileageTypeID: mileageType && mileageType.RateTypeID,\r\n Mileage: mileage,\r\n Destination: ''\r\n };\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates$:Mileage:subscribe',\r\n mileageRate\r\n });\r\n if (\r\n (mileageRate.State || mileageRate.ZipCode) &&\r\n mileageRate.MileageTypeID &&\r\n mileageRate.Mileage\r\n ) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:getMileageTravelFromRates$:Mileage:subscribe:getting rates',\r\n mileageRate\r\n });\r\n this.store.dispatch(\r\n new fromExpense.SetTravelRates(null)\r\n ); // TODO: handle this in effect instead\r\n this.store.dispatch(\r\n new fromExpense.SelectTravelRate(null)\r\n ); // TODO: handle this in effect instead\r\n this.store.dispatch(\r\n new fromExpense.LoadTravelRates(mileageRate)\r\n );\r\n }\r\n }\r\n );\r\n\r\n this.SetDestinationSubject.pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:SetDestinationSubject:tap',\r\n x\r\n })\r\n )\r\n ).subscribe(x =>\r\n this.store.dispatch(new fromExpense.SelectTravelRate(x))\r\n );\r\n\r\n combineLatest([this.SelectDetailSubject, this.expenseReceipts$])\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(([line, receipts]) => {\r\n this.store.dispatch(\r\n new fromExpense.EditExpenseReceipt(receipts[0])\r\n );\r\n });\r\n\r\n this.UploadReceiptAttachmentSubject.pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:UploadReceiptAttachmentSubject:tap',\r\n x\r\n })\r\n )\r\n ).subscribe(x => {\r\n this.store.dispatch(\r\n new fromExpense.AddExpenseAttachment(\r\n x.expenseNumber,\r\n x.uniqueId,\r\n x.meta,\r\n x.file\r\n )\r\n );\r\n });\r\n this.expenseItems$\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose(\r\n { type: 'ExpenseAddFeatureComponent:expenseItems$' },\r\n x\r\n )\r\n )\r\n )\r\n .subscribe();\r\n }\r\n onCancel() {\r\n this.log.verbose({ type: 'ExpenseAddFeatureComponent:onCancel' });\r\n this.dialogRef.close();\r\n }\r\n Summary($event) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSaveSummary',\r\n $event\r\n });\r\n }\r\n onSaveDetail($event) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSaveDetail',\r\n $event\r\n });\r\n const detail = {\r\n ...$event,\r\n ...$event.mileageParent,\r\n ...$event.perDiemParent,\r\n Receipts: []\r\n };\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSaveDetail',\r\n detail\r\n });\r\n const receipt = { ...$event.receiptParent };\r\n detail.Receipts.push(receipt);\r\n if (this.superUser) {\r\n detail.SuperUser = this.superUser;\r\n detail.SuperUserListID = this.userInfo.EmployeeListID;\r\n }\r\n\r\n // receipt won't have these\r\n if (detail.RateTypeID) {\r\n detail.RateTypeID = detail.RateTypeID.RateTypeID;\r\n }\r\n if (detail.TripLegTypeID) {\r\n detail.TripLegTypeID = detail.TripLegTypeID.TripLegTypeID;\r\n }\r\n if (detail.LocaleID) {\r\n detail.LocaleID = detail.LocaleID.LocaleID;\r\n }\r\n if (detail.State1) {\r\n detail.State1 = detail.State1.State;\r\n }\r\n if (detail.State2) {\r\n detail.State2 = detail.State2.State;\r\n }\r\n if (detail.City1) {\r\n if (detail.City1.City) {\r\n detail.City1 = detail.City1.City || detail.City1;\r\n } else {\r\n detail.City1 = null;\r\n }\r\n } else {\r\n detail.City1 = null;\r\n }\r\n if (detail.City2) {\r\n if (detail.City2.City) {\r\n detail.City2 = detail.City2.City || detail.City2;\r\n } else {\r\n detail.City2 = null;\r\n }\r\n } else {\r\n detail.City2 = null;\r\n }\r\n\r\n switch (detail.LocaleID) {\r\n case LocaleEnum.Domestic:\r\n // detail.Destination = detail.Destination_Location.Destination;\r\n // detail.Country_Area = detail.Destination.Country_Area;\r\n // detail.Zipcode1 = detail.Destination.ZipCode;\r\n detail.Destination_Location = detail.Destination.Destination;\r\n delete detail.Country_Area;\r\n break;\r\n case LocaleEnum.Foreign:\r\n case LocaleEnum.OCONUS:\r\n if (detail.Location) {\r\n detail.Country_Area = detail.Location.CountryArea;\r\n detail.Destination_Location = detail.Location.Destination;\r\n delete detail.City1;\r\n delete detail.City2;\r\n }\r\n break;\r\n default:\r\n detail.LocaleID = LocaleEnum.Domestic;\r\n break;\r\n }\r\n delete detail.Destination;\r\n delete detail.Location;\r\n\r\n // if (!detail.EmpAuthID) {\r\n const task = this.expenseTasks.find(\r\n x =>\r\n x.EIListID === detail.EIListID &&\r\n x.TaskListID === detail.RptTask\r\n );\r\n if (!task) {\r\n this.log.error(`No task found for ${detail.EIListID}`);\r\n return;\r\n }\r\n detail.EmpAuthID = task.EmpAuthID;\r\n // }\r\n\r\n delete detail.mileageParent;\r\n delete detail.perDiemParent;\r\n delete detail.receiptParent;\r\n\r\n const details: Array = [detail];\r\n const payload = {\r\n summary: {\r\n EmployeeListID: this.directReport\r\n ? this.directReport.EmployeeListID\r\n : null,\r\n ExpReportNbr: this.summary.ExpReportNbr,\r\n ReportDate: moment(\r\n moment($event.ReportDate).format('YYYY-MM-DD')\r\n ).toDate(),\r\n Row_Version: this.summary.Row_Version,\r\n ERTypeID:\r\n this.process.ProcessID === 147\r\n ? ExpenseRequestTypeEnum.Travel\r\n : ExpenseRequestTypeEnum.Expense\r\n },\r\n details\r\n };\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSaveDetail',\r\n $event,\r\n details,\r\n payload\r\n });\r\n this.store.dispatch(new fromExpense.AddExpenseDetails(payload));\r\n }\r\n onSelectReceipt(receipt: IExpenseReceipt) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSelectReceipt',\r\n receipt\r\n });\r\n this.store.dispatch(new fromExpense.EditExpenseReceipt(receipt));\r\n }\r\n onSelectTask(task: ITask) {\r\n this.SelectTaskSubject.next(task);\r\n }\r\n onSetPostalCode(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetPostalCode',\r\n value\r\n });\r\n this.SetPostalCodeSubject.next(value);\r\n }\r\n onSetPostalCode2(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetPostalCode2',\r\n value\r\n });\r\n // this.SetPostalCode2Subject.next(value);\r\n this.SetPostalCode2Subject.next(value);\r\n }\r\n onSetState(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetState',\r\n value\r\n });\r\n this.SetStateSubject.next(value);\r\n }\r\n onSetCity(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetCity',\r\n value\r\n });\r\n this.SetCitySubject.next(value);\r\n }\r\n onSetFromState(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetFromState',\r\n value\r\n });\r\n this.SetFromStateSubject.next(value);\r\n }\r\n onSetFromCity(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetFromCity',\r\n value\r\n });\r\n this.SetFromCitySubject.next(value);\r\n }\r\n onSetToState(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetToState',\r\n value\r\n });\r\n this.SetToStateSubject.next(value);\r\n }\r\n onSetToCity(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetToCity',\r\n value\r\n });\r\n this.SetToCitySubject.next(value);\r\n }\r\n onSetTravelStart(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetTravelStart',\r\n value\r\n });\r\n this.SetTravelStartSubject.next(value);\r\n }\r\n onSetTravelEnd(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetTravelEnd',\r\n value\r\n });\r\n this.SetTravelEndSubject.next(value);\r\n }\r\n onSetPerDiemType(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetPerDiemType',\r\n value\r\n });\r\n this.SetPerDiemTypeSubject.next(value);\r\n }\r\n onSetLocale(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetLocale',\r\n value\r\n });\r\n this.SetLocaleSubject.next(value);\r\n }\r\n onSetTripLegType(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetTripLegType',\r\n value\r\n });\r\n this.SetTripLegTypeSubject.next(value);\r\n }\r\n onSetDestination(value) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetDestination',\r\n value\r\n });\r\n this.SetDestinationSubject.next(value);\r\n }\r\n onSelectDetail(detail) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSelectDetail',\r\n detail\r\n });\r\n this.SelectDetailSubject.next(detail);\r\n this.store.dispatch(new fromExpense.EditExpenseDetail(detail));\r\n }\r\n onSetTravelType(travelType) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetTravelType',\r\n travelType\r\n });\r\n this.SetTravelTypeSubject.next(travelType);\r\n }\r\n onSetMileageType(mt: MileageTypeEnum) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetMileageType',\r\n mt\r\n });\r\n this.SetMileageTypeSubject.next(mt);\r\n }\r\n onSetMileage(mileage: number) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSetMileage',\r\n mileage\r\n });\r\n this.SetMileageSubject.next(mileage);\r\n }\r\n onUploadReceiptAttachment(attachment) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onUploadReceiptAttachment',\r\n attachment\r\n });\r\n this.UploadReceiptAttachmentSubject.next(attachment);\r\n }\r\n onSelectAttachment(attachment) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onSelectAttachment',\r\n attachment\r\n });\r\n this.SelectAttachmentSubject.next(attachment);\r\n }\r\n\r\n onReportDateChange(reportDate) {\r\n this.ReportDateChangeSubject.next(reportDate);\r\n }\r\n onAttachmentError($event) {\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:onAttachmentError',\r\n $event\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors([\r\n { StatusCode: ResponseStatus.Failed, Message: $event }\r\n ])\r\n );\r\n this.store.dispatch(\r\n new fromExpense.AddExpenseReceiptsFailure({\r\n StatusCode: ResponseStatus.Failed,\r\n ErrorMessages: [$event],\r\n WarningMessages: [],\r\n Items: [],\r\n StatusType: $event\r\n })\r\n );\r\n }\r\n}\r\n","export * from './expense-add-feature.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ActionsSubject, select, Store } from '@ngrx/store';\r\nimport { Transition, UiOnExit } from '@uirouter/angular';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport {\r\n combineLatest,\r\n merge,\r\n Observable,\r\n of,\r\n ReplaySubject,\r\n Subject\r\n} from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n distinctUntilKeyChanged,\r\n filter,\r\n map,\r\n share,\r\n skip,\r\n startWith,\r\n switchMap,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromSettings from '../../../company-setting';\r\nimport * as fromLookups from '../../../lookups';\r\nimport { IDirectReport } from '../../../lookups';\r\nimport * as fromShared from '../../../shared';\r\nimport { Process } from '../../../shared';\r\nimport { DialogService } from '../../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../../user-info';\r\nimport { IUserColor, UserRoleEnum } from '../../../user-info';\r\nimport { IUserInfo } from '../../../user-info/IUserInfo';\r\nimport {\r\n ExpenseRequestTypeEnum,\r\n ExpenseStatus,\r\n TravelTypeEnum\r\n} from '../../expense-enums';\r\nimport { IExpenseLine } from '../../IExpenseLine';\r\nimport { IExpenseReceipt } from '../../IExpenseReceipt';\r\nimport { IExpenseSummary } from '../../IExpenseSummary';\r\nimport { IPaymentMethod } from '../../IPaymentMethod';\r\nimport * as fromExpense from '../../store';\r\nimport { UserPaymentMethod } from '../../UserPaymentMethod';\r\nimport { ExpenseAddFeatureComponent } from '../expense-add';\r\nimport { ExpensePdboFeatureComponent } from '../expense-pdbo-feature';\r\n@Component({\r\n selector: 'ef-expense-list-feature',\r\n templateUrl: './expense-list-feature.component.html',\r\n styleUrls: ['./expense-list-feature.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [DialogService]\r\n})\r\nexport class ExpenseListFeatureComponent\r\n implements OnInit, OnDestroy, AfterViewInit, UiOnExit\r\n{\r\n // TODO: convert to use process$\r\n private ProcessSubject = new ReplaySubject(1);\r\n private ExpensePopupSubject = new ReplaySubject(1);\r\n private _process: Process;\r\n @Input() public set process(value: Process) {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:process:set',\r\n value\r\n });\r\n this._process = value;\r\n this.ProcessSubject.next(this._process);\r\n }\r\n public get process(): Process {\r\n return this._process;\r\n }\r\n process$: Observable;\r\n public userInfo$: Observable;\r\n public userInfo: IUserInfo;\r\n public currentUserSubject = new ReplaySubject(1);\r\n public userWebColors$: Observable>;\r\n public expenses$: Observable>;\r\n public expenseLines$: Observable>;\r\n public expenseReceipts$: Observable>;\r\n public expenseReports$: Observable>;\r\n public directReports$: Observable>;\r\n public perDiemTypes$: Observable>;\r\n public travelTypes$: Observable>;\r\n public tasks$: Observable>;\r\n public expenseItems$: Observable>;\r\n public paymentMethods$: Observable>;\r\n public userPaymentMethods$: Observable>;\r\n public expenseSummary$: Observable;\r\n public selectedDetail$: Observable;\r\n public selectedUser$: Observable;\r\n public superUser: boolean;\r\n public superUserSubject = new ReplaySubject(1);\r\n public selectedDetailSubject = new Subject();\r\n private active = true;\r\n private currentUser: IUserInfo;\r\n private dateFilterSubject = new Subject<{\r\n startDate: Date;\r\n endDate: Date;\r\n }>();\r\n private taskFilterSubject = new Subject>();\r\n private expenseItemSubject = new Subject>();\r\n public directReportsSubject = new Subject();\r\n private editExpenseSummarySubject = new Subject();\r\n private addExpenseSummarySubject = new Subject();\r\n private selectedExpenseSummarySubject = new ReplaySubject(\r\n 1\r\n );\r\n private editDetailSubject = new Subject();\r\n private editReceiptSubject = new Subject();\r\n private selectedReceiptSubject = new Subject();\r\n private deleteExpenseSubject = new Subject();\r\n private deleteDetailSubject = new Subject();\r\n private deleteReceiptSubject = new Subject();\r\n private oversignExpenseSubject = new Subject();\r\n private ConvertExpenseSubject = new Subject();\r\n private ValidateExpenseSubject = new Subject>();\r\n private ApproveExpenseSubject = new Subject>();\r\n private UnvalidateExpenseSubject = new Subject>();\r\n private UnapproveExpenseSubject = new Subject>();\r\n private DisapproveExpenseSubject = new Subject>();\r\n private editing = false;\r\n public validating = false;\r\n public approving = false;\r\n private canClose = true;\r\n private dialogRef: fromShared.DynamicDialogRef;\r\n constructor(\r\n private store: Store,\r\n private dispatcher: ActionsSubject,\r\n private log: LoggingService,\r\n private confirmservice: UnsavedChangesService,\r\n public dialogService: DialogService\r\n ) {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent::'\r\n });\r\n this.store.dispatch(new fromExpense.ResetSelectedExpense());\r\n this.store.dispatch(new fromUser.LoadUserInfo());\r\n this.setupObservables();\r\n this.loadLookups();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnInit() {}\r\n ngAfterViewInit(): void {\r\n this.superUserSubject.next(this.process.IsSuperUserProcess);\r\n if (this.process.ProcessID === 88) {\r\n this.validating = true;\r\n }\r\n if (this.process.ProcessID === 86 || this.process.ProcessID === 152) {\r\n this.approving = true;\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:ngAfterViewInit',\r\n process: this.process\r\n });\r\n }\r\n ngOnDestroy() {\r\n // this is for any observable subscriptions so we don't leak memory\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:ngOnDestroy'\r\n });\r\n this.active = false;\r\n if (this.dialogRef) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n uiCanExit(transition: Transition) {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:uiCanExit',\r\n transition,\r\n canClose: this.canClose\r\n });\r\n return this.canClose\r\n ? this.canClose\r\n : this.confirmservice.confirmPromise();\r\n }\r\n selectExpense(summary: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:selectExpense',\r\n summary\r\n });\r\n this.store.dispatch(new fromExpense.ResetSelectedExpense());\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseLines(summary.ExpReportNbr)\r\n );\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseReceipts(summary.ExpReportNbr)\r\n );\r\n }\r\n loadExpensePopup(summary, detail, receipt, directReport) {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:loadExpensePopup',\r\n summary,\r\n detail,\r\n receipt,\r\n editing: this.editing\r\n });\r\n this.store.dispatch(new fromExpense.SetTravelRates(null));\r\n this.store.dispatch(new fromExpense.SelectTravelRate(null));\r\n if (!this.editing) {\r\n if (\r\n summary.ExpenseReportStatus !== ExpenseStatus.Approved &&\r\n detail\r\n ) {\r\n // this.addExpensePopup(directReport);\r\n this.ExpensePopupSubject.next();\r\n }\r\n }\r\n this.store.dispatch(new fromExpense.EditExpenseSummary(summary));\r\n this.store.dispatch(new fromExpense.EditExpenseDetail(detail));\r\n this.store.dispatch(new fromExpense.EditExpenseReceipt(receipt || {}));\r\n }\r\n setupObservables() {\r\n // init observables\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(\r\n select(fromUser.getUserInfo),\r\n tap(x => (this.userInfo = x))\r\n );\r\n this.directReports$ = this.store.pipe(\r\n select(fromExpense.getExpenseReports),\r\n takeWhile(() => this.active)\r\n );\r\n combineLatest([\r\n this.superUserSubject, // .pipe(distinctUntilChanged()),\r\n this.process$, // .pipe(distinctUntilKeyChanged('ProcessID')),\r\n this.userInfo$ // .pipe(distinctUntilKeyChanged('EmployeeListID'))\r\n ])\r\n .pipe(\r\n // startWith(false),\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n tap(([isSuperUser, process, userInfo]) =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent.superUserSubject',\r\n isSuperUser,\r\n process,\r\n userInfo\r\n })\r\n )\r\n )\r\n .subscribe(([isSuperUser, process, userInfo]) => {\r\n this.superUser = isSuperUser;\r\n if (isSuperUser) {\r\n setTimeout(() => {\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: true,\r\n processId: process.ProcessID\r\n })\r\n );\r\n }, 0);\r\n\r\n this.directReports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n filter(drs => Array.isArray(drs) && drs.length > 0),\r\n map(drs => clone(drs)),\r\n map(drs =>\r\n drs\r\n .filter(x => x.IsActive)\r\n .filter(x => x.IsValidUser)\r\n .sort((a, b) =>\r\n a.EmployeeName.localeCompare(b.EmployeeName)\r\n )\r\n ),\r\n takeWhile(() => this.active)\r\n );\r\n } else {\r\n this.directReports$ = this.store.pipe(\r\n select(fromExpense.getExpenseReports),\r\n filter(drs => Array.isArray(drs) && drs.length > 0),\r\n map(drs => clone(drs)),\r\n map(drs =>\r\n drs.sort((a, b) =>\r\n a.EmployeeName.localeCompare(b.EmployeeName)\r\n )\r\n ),\r\n takeWhile(() => this.active)\r\n );\r\n }\r\n });\r\n this.expenseLines$ = this.store.pipe(\r\n select(fromExpense.getExpenseLines)\r\n );\r\n this.expenseReceipts$ = this.store.pipe(\r\n select(fromExpense.getExpenseReceipts)\r\n );\r\n this.expenseReports$ = this.store.pipe(\r\n select(fromExpense.getExpenseReports),\r\n map(x => x.map(y => ({ ...y }))),\r\n map(x =>\r\n x.sort((a, b) =>\r\n a.EmployeeName.toLocaleLowerCase().localeCompare(\r\n b.EmployeeName.toLocaleLowerCase()\r\n )\r\n )\r\n ),\r\n tap(expenseReports =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent.expenseReports$',\r\n expenseReports\r\n })\r\n )\r\n );\r\n\r\n this.perDiemTypes$ = this.store.pipe(\r\n select(fromLookups.getPerDiemTypesLookup)\r\n );\r\n this.travelTypes$ = this.store.pipe(\r\n select(fromLookups.getTravelTypesLookup)\r\n );\r\n this.tasks$ = this.store.pipe(select(fromLookups.getTasksLookup));\r\n this.paymentMethods$ = this.store.pipe(\r\n select(fromExpense.getExpensePaymentMethods)\r\n );\r\n this.userPaymentMethods$ = this.store.pipe(\r\n select(fromExpense.getUserPaymentMethods)\r\n );\r\n this.expenseItems$ = this.store.pipe(\r\n select(fromLookups.getExpenseItems)\r\n );\r\n this.expenseSummary$ =\r\n this.selectedExpenseSummarySubject.asObservable();\r\n this.selectedUser$ = this.store.pipe(\r\n select(fromExpense.getSelectedUser),\r\n tap(selectedUser =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent.selectedUser$',\r\n selectedUser\r\n })\r\n )\r\n );\r\n merge(\r\n this.userInfo$.pipe(filter(x => !!(x && x.EmployeeListID))),\r\n this.selectedUser$.pipe(filter(x => !!(x && x.EmployeeListID)))\r\n )\r\n .pipe(\r\n withLatestFrom(this.directReports$),\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent.userInfo$,selectedUser$,directReports$',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([userInfo, directReports]) => {\r\n const next = {\r\n id: userInfo && userInfo.EmployeeListID,\r\n EmployeeListID: userInfo && userInfo.EmployeeListID,\r\n EmployeeName: userInfo && userInfo.EmployeeName,\r\n MinWorkDate: null,\r\n MaxWorkDate: null\r\n };\r\n const user = userInfo as IUserInfo;\r\n const dr = userInfo as IDirectReport;\r\n if (user && user.UserEntryStartDate) {\r\n next.MinWorkDate = user.UserEntryStartDate;\r\n next.MaxWorkDate = user.UserEntryEndDate;\r\n this.onUserSelected(next);\r\n }\r\n if (!next.MinWorkDate && dr && dr.MinWorkDate) {\r\n next.MinWorkDate = dr.MinWorkDate;\r\n next.MaxWorkDate = dr.MaxWorkDate;\r\n this.onUserSelected(next);\r\n }\r\n if (!next.MinWorkDate) {\r\n const founddr = directReports.find(\r\n x => x.EmployeeListID === dr.EmployeeListID\r\n );\r\n if (founddr) {\r\n next.MinWorkDate = founddr.MinWorkDate;\r\n next.MaxWorkDate = founddr.MaxWorkDate;\r\n this.onUserSelected(next);\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent.userInfo$,selectedUser$',\r\n next\r\n });\r\n\r\n this.currentUserSubject.next(next);\r\n });\r\n this.userWebColors$ = this.store.pipe(\r\n select(fromUser.getUserColorsSorted)\r\n );\r\n this.selectedDetail$ = this.store.pipe(\r\n select(fromExpense.getEditingExpenseDetail)\r\n );\r\n }\r\n showExpensePopup(directReport, process) {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:showExpensePopup',\r\n directReport\r\n });\r\n if (this.editing) {\r\n return;\r\n }\r\n\r\n this.editing = true;\r\n\r\n this.dialogRef = this.dialogService.open(ExpenseAddFeatureComponent, {\r\n header: 'Expense Entry',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: false,\r\n modal: true,\r\n autoZIndex: true,\r\n data: {\r\n process: process,\r\n superUser: this.superUser,\r\n userInfo: this.userInfo,\r\n directReport: directReport\r\n }\r\n });\r\n this.dialogRef.onClose.pipe(take(1)).subscribe(value => {\r\n this.editing = false;\r\n this.log.verbose({\r\n type: 'ExpenseAddFeatureComponent:afterClosed',\r\n value\r\n });\r\n });\r\n }\r\n loadLookups() {\r\n this.store.dispatch(new fromLookups.LoadPerDiemTypes());\r\n this.store.dispatch(new fromLookups.LoadLocales());\r\n this.store.dispatch(new fromLookups.LoadTravelTypes());\r\n this.store.dispatch(new fromLookups.LoadExpenseItems());\r\n this.store.dispatch(new fromLookups.LoadCountries());\r\n this.store.dispatch(new fromLookups.LoadAreas());\r\n this.store.dispatch(new fromExpense.LoadTravelMode());\r\n this.store.dispatch(new fromExpense.LoadTripLegTypes());\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'PurposeRequired' })\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.superUserSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n startWith(false),\r\n withLatestFrom(this.userInfo$)\r\n )\r\n .subscribe(([isSuperUser, userInfo]) => {\r\n this.superUser = isSuperUser;\r\n if (!isSuperUser) {\r\n this.directReportsSubject.next(\r\n userInfo as unknown as IDirectReport\r\n );\r\n }\r\n });\r\n this.ProcessSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n process => {\r\n if (process.ProcessID === 147 || process.ProcessID === 152) {\r\n this.expenses$ = this.store.pipe(\r\n select(fromExpense.getTravelRequestSummaries),\r\n distinctUntilChanged(),\r\n debounceTime(500),\r\n share(),\r\n tap(expenses =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent.expenses$(travel)',\r\n expenses\r\n })\r\n )\r\n );\r\n } else {\r\n this.expenses$ = this.store.pipe(\r\n select(fromExpense.getExpenseSummaries),\r\n // distinctUntilChanged(),\r\n // debounceTime(500),\r\n share(),\r\n tap(expenses =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent.expenses$(expense)-1',\r\n expenses\r\n })\r\n )\r\n // map(expenses =>\r\n // expenses.map(expense => ({\r\n // ...expense,\r\n // ExpenseReportStatus: expense.RequiresOversign\r\n // ? ExpenseStatus.SuperUser\r\n // : expense.ExpenseReportStatus\r\n // }))\r\n // ),\r\n // tap(expenses =>\r\n // this.log.verbose({\r\n // type: 'ExpenseListFeatureComponent.expenses$(expense)-2',\r\n // expenses\r\n // })\r\n // )\r\n );\r\n }\r\n\r\n // this.loading$ = merge(\r\n // of(false),\r\n // timer(1000).pipe(takeUntil(this.expenses$), mapTo(true)),\r\n // combineLatest([this.expenses$, timer(1000)]).pipe(mapTo(false))\r\n // );\r\n }\r\n );\r\n\r\n const getNewExpenses$ = combineLatest([\r\n this.userInfo$.pipe(\r\n filter(ui => !!ui.EmployeeListID),\r\n tap(ui =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:userinfo',\r\n ui\r\n })\r\n ),\r\n map(x =>\r\n x.IsSuperUser ? { ...x, EmployeeListID: '' } : { ...x }\r\n ),\r\n distinctUntilKeyChanged('EmployeeListID')\r\n ),\r\n this.dateFilterSubject.pipe(\r\n tap(({ startDate, endDate }) =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:dateFilterSubject',\r\n startDate,\r\n endDate\r\n })\r\n ),\r\n distinctUntilChanged((a, b) => {\r\n const result =\r\n moment(a.startDate).isSame(b.startDate, 'day') &&\r\n moment(a.startDate).isSame(b.startDate, 'day');\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:dateFilterSubject:distinctUntilChanged',\r\n a,\r\n b,\r\n result\r\n });\r\n return result;\r\n })\r\n ),\r\n this.directReportsSubject.pipe(\r\n tap(dr =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:directReportsSubject',\r\n dr\r\n })\r\n ),\r\n startWith({ EmployeeListID: '' } as IDirectReport),\r\n distinctUntilKeyChanged('EmployeeListID')\r\n ),\r\n this.process$.pipe(\r\n tap(process =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:process$',\r\n process\r\n })\r\n )\r\n )\r\n // these 2 not currently used\r\n // this.taskFilterSubject.pipe(startWith(null)),\r\n // this.expenseItemSubject.pipe(startWith(null))\r\n ]);\r\n\r\n getNewExpenses$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n // distinctUntilChanged(),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:tap',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(\r\n ([\r\n userInfo,\r\n { startDate, endDate },\r\n directReport,\r\n process\r\n // tasks,\r\n // expenseItems\r\n ]) => {\r\n this.getNewExpenses(\r\n userInfo,\r\n startDate,\r\n endDate,\r\n directReport,\r\n null,\r\n null,\r\n process.ProcessID === 147 || process.ProcessID === 152\r\n ? ExpenseRequestTypeEnum.Travel\r\n : ExpenseRequestTypeEnum.Expense\r\n // tasks,\r\n // expenseItems\r\n );\r\n }\r\n );\r\n combineLatest([\r\n this.process$.pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:process$:take(1)',\r\n x\r\n })\r\n )\r\n ),\r\n getNewExpenses$.pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:take(1)',\r\n x\r\n })\r\n )\r\n ),\r\n this.dispatcher.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.SetExpenseSummaries\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:SetExpenseSummaries:take(1)',\r\n x\r\n })\r\n )\r\n )\r\n ])\r\n .pipe(\r\n filter(([process, ,]) => !!process),\r\n filter(\r\n ([process, newexpenses, setSummaries]) =>\r\n process.ProcessID === 88 ||\r\n process.ProcessID === 86 ||\r\n process.ProcessID === 152 ||\r\n process.IsSuperUserProcess\r\n ),\r\n take(1),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses$:setExpenseSummaries:take(1)',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(() => {\r\n this.directReportsSubject.next({\r\n EmployeeListID: '00000000-0000000000'\r\n } as IDirectReport);\r\n this.store.dispatch(new fromExpense.SetExpenseSummaries([]));\r\n });\r\n\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x.EmployeeListID)\r\n )\r\n .subscribe(userInfo => {\r\n this.dateFilterSubject.next({\r\n startDate: userInfo.UserEntryStartDate,\r\n endDate: userInfo.UserEntryEndDate\r\n });\r\n });\r\n\r\n combineLatest([\r\n this.userInfo$.pipe(filter(x => !!x.EmployeeListID)),\r\n this.dateFilterSubject,\r\n this.directReportsSubject\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([userInfo, dateFilters, dr]) => {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:userInfo$,dateFilters',\r\n userInfo,\r\n dateFilters\r\n });\r\n this.currentUser = userInfo;\r\n this.store.dispatch(\r\n new fromExpense.LoadUserPaymentMethods(\r\n dr.EmployeeListID || userInfo.EmployeeListID\r\n )\r\n );\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseReports(\r\n this.getProcessRole(this.process.ProcessID, userInfo),\r\n true,\r\n dateFilters.startDate,\r\n dateFilters.endDate\r\n )\r\n );\r\n });\r\n\r\n // add new expense\r\n this.addExpenseSummarySubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(summary => {\r\n this.store.dispatch(new fromExpense.ResetSelectedExpense());\r\n this.store.dispatch(new fromLookups.SetLocations([]));\r\n this.store.dispatch(\r\n new fromExpense.EditExpenseSummary(summary)\r\n );\r\n this.store.dispatch(\r\n new fromExpense.EditExpenseDetail({\r\n ExpReportNbr: summary.ExpReportNbr\r\n })\r\n );\r\n this.store.dispatch(\r\n new fromExpense.EditExpenseReceipt({\r\n ExpenseRptNbr: summary.ExpReportNbr\r\n })\r\n );\r\n this.store.dispatch(\r\n new fromExpense.EditExpenseReceiptAttachment(null)\r\n );\r\n this.store.dispatch(new fromExpense.SetTravelRates(null));\r\n this.store.dispatch(new fromExpense.SelectTravelRate(null));\r\n this.ExpensePopupSubject.next();\r\n });\r\n\r\n // selecting summary\r\n this.selectedExpenseSummarySubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x),\r\n distinctUntilChanged(),\r\n debounceTime(500),\r\n withLatestFrom(this.directReportsSubject),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:selectedExpenseSummarySubject',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([summary, dr]) => {\r\n this.selectExpense(summary);\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseSummary({\r\n expenseNbr: summary.ExpReportNbr,\r\n EmployeeListID: dr.EmployeeListID\r\n })\r\n );\r\n });\r\n\r\n this.store\r\n .pipe(\r\n select(fromExpense.getEditingExpenseReceipt),\r\n takeWhile(() => this.active)\r\n )\r\n .subscribe(receipt => {\r\n if (receipt) {\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseReceiptAttachment(receipt)\r\n );\r\n }\r\n });\r\n\r\n // edit summary\r\n this.editExpenseSummarySubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editExpenseSummarySubject(outer)',\r\n x\r\n })\r\n ),\r\n switchMap(summary =>\r\n combineLatest([\r\n of(summary),\r\n this.expenseLines$.pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editExpenseSummarySubject:expenseDetails$',\r\n x,\r\n test: !!(x && x.length)\r\n })\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editExpenseSummarySubject:expenseDetails$',\r\n x,\r\n test: x.every(\r\n y =>\r\n y.ExpReportNbr ===\r\n summary.ExpReportNbr\r\n )\r\n })\r\n ),\r\n filter(x => !!(x && x.length)),\r\n filter(details =>\r\n details.every(\r\n x => x.ExpReportNbr === summary.ExpReportNbr\r\n )\r\n )\r\n ),\r\n this.expenseReceipts$\r\n ]).pipe(take(1))\r\n ),\r\n withLatestFrom(this.directReportsSubject),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editExpenseSummarySubject(inner)',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([[summary, details, receipts], directReport]) => {\r\n const detail = details\r\n .map(x => ({ ...x }))\r\n .sort((a, b) => a.SequenceId - b.SequenceId)[0];\r\n let receipt;\r\n if (detail) {\r\n receipt =\r\n receipts &&\r\n receipts\r\n .filter(x => x.Sequenceid === detail.SequenceId)\r\n .map(x => ({ ...x }))\r\n .sort((a, b) => a.Sequenceid - b.Sequenceid)[0];\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editExpenseSummarySubject:subscribe',\r\n summary,\r\n details,\r\n detail,\r\n receipts,\r\n receipt,\r\n directReport\r\n });\r\n this.loadExpensePopup(summary, detail, receipt, directReport);\r\n });\r\n\r\n // edit detail\r\n this.editDetailSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editDetailSubject(outer)',\r\n x\r\n })\r\n ),\r\n withLatestFrom(\r\n this.expenseReceipts$,\r\n this.selectedExpenseSummarySubject, // .pipe(filter(x => x.ExpReportNbr === detail.ExpReportNbr))\r\n this.directReportsSubject\r\n )\r\n )\r\n .subscribe(([detail, receipts, summary, directReport]) => {\r\n // this.selectExpense(summary);\r\n const receipt = receipts\r\n .filter(x => x.Sequenceid === detail.SequenceId)\r\n .map(x => ({ ...x }))\r\n .sort((a, b) => a.Sequenceid - b.Sequenceid)[0];\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editDetailSubject:subscribe',\r\n receipt,\r\n detail,\r\n summary,\r\n directReport\r\n });\r\n this.loadExpensePopup(summary, detail, receipt, directReport);\r\n });\r\n\r\n // edit receipt\r\n this.editReceiptSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editReceiptSubject',\r\n x\r\n })\r\n ),\r\n withLatestFrom(\r\n this.selectedExpenseSummarySubject,\r\n this.expenseLines$,\r\n this.directReportsSubject\r\n )\r\n )\r\n .subscribe(([receipt, summary, details, directReport]) => {\r\n this.selectExpense(summary);\r\n const detail = details.find(\r\n x => x.ExpenseID === receipt.ExpenseID\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:editReceiptSubject:subscribe',\r\n receipt,\r\n details,\r\n detail,\r\n summary,\r\n directReport\r\n });\r\n this.loadExpensePopup(summary, detail, receipt, directReport);\r\n });\r\n\r\n this.deleteExpenseSubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(x => {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:deleteExpenseSubject:subscribe:tap',\r\n x\r\n });\r\n this.store.dispatch(new fromExpense.DeleteExpenseSummary(x));\r\n });\r\n this.deleteDetailSubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(x => {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:deleteDetailSubject:subscribe:tap',\r\n x\r\n });\r\n this.store.dispatch(new fromExpense.DeleteExpenseDetail(x));\r\n });\r\n this.deleteReceiptSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.selectedDetail$)\r\n )\r\n .subscribe(([receipt, detail]) => {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:deleteReceiptSubject:subscribe:tap',\r\n receipt,\r\n detail\r\n });\r\n // TODO: can this logic be moved to the effects?\r\n this.store.dispatch(\r\n new fromExpense.DeleteExpenseReceipt(receipt)\r\n );\r\n if (\r\n detail &&\r\n detail.TravelTypeID === TravelTypeEnum.Receipt &&\r\n detail.ReceiptCount === 1\r\n ) {\r\n this.store.dispatch(\r\n new fromExpense.RemoveExpenseDetail(detail)\r\n );\r\n }\r\n });\r\n this.oversignExpenseSubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(x => {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:oversignExpenseSubject:subscribe:tap',\r\n x\r\n });\r\n this.store.dispatch(new fromExpense.OversignExpenseSummary(x));\r\n });\r\n this.ConvertExpenseSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:ConvertExpenseSubject',\r\n x\r\n })\r\n )\r\n ).subscribe(([summaries, userInfo]) => {\r\n this.store.dispatch(\r\n new fromExpense.ConvertExpense({\r\n summary: summaries,\r\n roleId: this.getProcessRole(\r\n this.process.ProcessID,\r\n userInfo\r\n )\r\n })\r\n );\r\n });\r\n this.ValidateExpenseSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:ValidateExpenseSubject',\r\n x\r\n })\r\n )\r\n ).subscribe(([summaries, userInfo]) => {\r\n this.store.dispatch(\r\n new fromExpense.ValidateExpense({\r\n summaries,\r\n roleId: this.getProcessRole(\r\n this.process.ProcessID,\r\n userInfo\r\n )\r\n })\r\n );\r\n });\r\n this.ApproveExpenseSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:ApproveExpenseSubject',\r\n x\r\n })\r\n )\r\n ).subscribe(([summaries, userInfo]) => {\r\n this.store.dispatch(\r\n new fromExpense.ApproveExpense({\r\n summaries,\r\n roleId: this.getProcessRole(\r\n this.process.ProcessID,\r\n userInfo\r\n )\r\n })\r\n );\r\n });\r\n this.UnvalidateExpenseSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:UnvalidateExpenseSubject',\r\n x\r\n })\r\n )\r\n ).subscribe(([summaries, userInfo]) => {\r\n this.store.dispatch(\r\n new fromExpense.UnvalidateExpense({\r\n summaries,\r\n roleId: this.getProcessRole(\r\n this.process.ProcessID,\r\n userInfo\r\n )\r\n })\r\n );\r\n });\r\n this.UnapproveExpenseSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:UnapproveExpenseSubject',\r\n x\r\n })\r\n )\r\n ).subscribe(([summaries, userInfo]) => {\r\n this.store.dispatch(\r\n new fromExpense.UnapproveExpense({\r\n summaries,\r\n roleId: this.getProcessRole(\r\n this.process.ProcessID,\r\n userInfo\r\n )\r\n })\r\n );\r\n });\r\n this.DisapproveExpenseSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:DisapproveExpenseSubject',\r\n x\r\n })\r\n )\r\n ).subscribe(([summaries, userInfo]) => {\r\n this.store.dispatch(\r\n new fromExpense.DisapproveExpense({\r\n summaries,\r\n roleId: this.getProcessRole(\r\n this.process.ProcessID,\r\n userInfo\r\n )\r\n })\r\n );\r\n });\r\n this.ExpensePopupSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.currentUserSubject),\r\n withLatestFrom(this.process$)\r\n ).subscribe(([[, cu], process]) => {\r\n this.showExpensePopup(cu, process);\r\n });\r\n }\r\n public getProcessRole(processID: number, user: IUserInfo): UserRoleEnum {\r\n if (!(processID && user)) {\r\n return 0;\r\n }\r\n let roleId;\r\n switch (processID) {\r\n case 88:\r\n roleId = UserRoleEnum.TaskManager;\r\n break;\r\n case 86:\r\n case 152:\r\n roleId = UserRoleEnum.Supervisor;\r\n break;\r\n default:\r\n roleId = user.DefaultRoleGroupID;\r\n break;\r\n }\r\n return roleId;\r\n }\r\n private getNewExpenses(\r\n user: IUserInfo,\r\n startDate: Date,\r\n endDate: Date,\r\n directReport: fromLookups.IDirectReport,\r\n tasks: Array,\r\n expenseItems: Array,\r\n expenseType: ExpenseRequestTypeEnum\r\n ) {\r\n this.log.verbose({\r\n type: 'ExpenseListFeatureComponent:getNewExpenses',\r\n user,\r\n startDate,\r\n endDate,\r\n directReport,\r\n tasks,\r\n expenseItems,\r\n expenseType\r\n });\r\n this.store.dispatch(new fromExpense.SelectDirectReport(directReport));\r\n this.store.dispatch(new fromExpense.ResetSelectedExpense());\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseSummaries({\r\n startDate,\r\n endDate,\r\n tasks,\r\n expenseItems,\r\n employeeListID: directReport && directReport.EmployeeListID,\r\n expenseType\r\n })\r\n );\r\n }\r\n // Event handlers\r\n public onEditExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onEditExpense',\r\n event: $event\r\n });\r\n this.editExpenseSummarySubject.next($event);\r\n }\r\n public onAddExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onAddExpense',\r\n event: $event\r\n });\r\n this.addExpenseSummarySubject.next($event);\r\n }\r\n public onShowExpenseDetail($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onShowExpenseDetail',\r\n event: $event\r\n });\r\n this.selectedExpenseSummarySubject.next($event);\r\n }\r\n public onDeleteExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onDeleteExpense',\r\n event: $event\r\n });\r\n this.deleteExpenseSubject.next($event);\r\n }\r\n public onDeleteDetail($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onDeleteDetail',\r\n event: $event\r\n });\r\n this.deleteDetailSubject.next($event);\r\n }\r\n public onDeleteReceipt($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onDeleteReceipt',\r\n event: $event\r\n });\r\n this.deleteReceiptSubject.next($event);\r\n }\r\n public onOversignExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onOversignExpense',\r\n event: $event\r\n });\r\n this.oversignExpenseSubject.next($event);\r\n }\r\n public onConvertExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onConvertExpense',\r\n event: $event\r\n });\r\n this.ConvertExpenseSubject.next($event);\r\n }\r\n public onValidateExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onValidateExpense',\r\n event: $event\r\n });\r\n this.ValidateExpenseSubject.next($event);\r\n }\r\n public onApproveExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onApproveExpense',\r\n event: $event\r\n });\r\n this.ApproveExpenseSubject.next($event);\r\n }\r\n public onUnvalidateExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onUnvalidateExpense',\r\n event: $event\r\n });\r\n this.UnvalidateExpenseSubject.next($event);\r\n }\r\n public onUnapproveExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onUnapproveExpense',\r\n event: $event\r\n });\r\n this.UnapproveExpenseSubject.next($event);\r\n }\r\n public onDisapproveExpense($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onDisapproveExpense',\r\n event: $event\r\n });\r\n this.DisapproveExpenseSubject.next($event);\r\n }\r\n public onEditDetail($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onEditDetail',\r\n event: $event\r\n });\r\n this.editDetailSubject.next($event);\r\n }\r\n public onSelectDetail($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onSelectDetail',\r\n event: $event\r\n });\r\n this.selectedDetailSubject.next($event);\r\n }\r\n public onEditReceipt($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onEditReceipt',\r\n event: $event\r\n });\r\n this.editReceiptSubject.next($event);\r\n }\r\n public onSelectReceipt($event) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onSelectReceipt',\r\n event: $event\r\n });\r\n this.selectedReceiptSubject.next($event);\r\n }\r\n public onDateFiltersChanged($event: { startDate: Date; endDate: Date }) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onDateFiltersChanged',\r\n event: $event\r\n });\r\n this.dateFilterSubject.next($event);\r\n }\r\n public onTaskFilterChanged($event: Array) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onTaskFilterChanged',\r\n event: $event\r\n });\r\n this.taskFilterSubject.next($event);\r\n }\r\n public onExpenseItemFilterChanged($event: Array) {\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onExpenseItemFilterChanged',\r\n event: $event\r\n });\r\n this.expenseItemSubject.next($event);\r\n }\r\n public onUserSelected($event: fromLookups.IDirectReport) {\r\n if (!$event) {\r\n return;\r\n }\r\n this.log.debug({\r\n type: 'ExpenseListFeatureComponent:onUserSelected',\r\n event: $event\r\n });\r\n // this.expenseStore.dispatch(\r\n // new fromExpense.LoadUserPaymentMethods(\r\n // ($event && $event.EmployeeListID) ||\r\n // this.currentUser.EmployeeListID\r\n // )\r\n // );\r\n this.directReportsSubject.next(\r\n $event || {\r\n id: this.currentUser.EmployeeListID,\r\n EmployeeListID: this.currentUser.EmployeeListID,\r\n EmployeeName: this.currentUser.EmployeeName,\r\n IsActive: true\r\n }\r\n );\r\n }\r\n public onCanClose($event: boolean) {\r\n this.canClose = $event;\r\n }\r\n onAddSelectedExpense($event) {\r\n this.store.dispatch(new fromExpense.AddSelectedExpense($event));\r\n }\r\n onRemoveSelectedExpense($event) {\r\n this.store.dispatch(new fromExpense.RemoveSelectedExpense($event));\r\n }\r\n onClearSelectedExpenses($event) {\r\n this.store.dispatch(new fromExpense.ClearSelectedExpenses());\r\n }\r\n onShowPdbo($event: IExpenseLine) {\r\n this.dialogRef = this.dialogService.open(ExpensePdboFeatureComponent, {\r\n header: 'Expense Entry',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: false,\r\n modal: true,\r\n autoZIndex: true,\r\n data: {\r\n expenseLineId: $event.ExpenseID\r\n }\r\n });\r\n this.dialogRef.onClose\r\n .pipe(\r\n take(1)\r\n // withLatestFrom(of(1))\r\n // withLatestFrom(\r\n // this.store.pipe(\r\n // select(\r\n // fromExpense.selectSummaryById($event.ExpReportNbr)\r\n // )\r\n // )\r\n // )\r\n // select(fromExpense.selectSummaryById($event.ExpReportNbr))\r\n )\r\n .subscribe(value => {\r\n this.log.verbose({\r\n type: 'ExpensePdboFeatureComponent:afterClosed',\r\n value\r\n });\r\n if (value) {\r\n this.store.dispatch(\r\n new fromExpense.UpdateExpenseLinePDBO(value)\r\n );\r\n //would be nice to just load the one\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseSummary({\r\n expenseNbr: $event.ExpReportNbr,\r\n EmployeeListID: this.userInfo.EmployeeListID\r\n })\r\n );\r\n // this.store.dispatch(new fromExpense.LoadExpenseSummaries());\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseLines($event.ExpReportNbr)\r\n );\r\n this.store\r\n .pipe(\r\n select(\r\n fromExpense.selectSummaryById(\r\n $event.ExpReportNbr\r\n )\r\n ),\r\n skip(1),\r\n take(1)\r\n )\r\n .subscribe(summary => {\r\n this.log.verbose({\r\n type: 'ExpensePdboFeatureComponent:reselect summary',\r\n summary\r\n });\r\n this.selectedExpenseSummarySubject.next(summary);\r\n });\r\n //TODO: set expenseSummary$\r\n }\r\n });\r\n }\r\n}\r\n","export * from './expense-list-feature.component';\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { Observable, of } from 'rxjs';\r\nimport * as fromExpense from '../../store';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { map } from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\n\r\n@Component({\r\n selector: 'ef-expense-pdbo-feature',\r\n templateUrl: './expense-pdbo-feature.component.html',\r\n styleUrls: ['./expense-pdbo-feature.component.scss']\r\n})\r\nexport class ExpensePdboFeatureComponent implements OnInit {\r\n pdboData$: Observable;\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.store.dispatch(\r\n new fromExpense.LoadExpenseLinePDBO(this.config.data.expenseLineId)\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n // const data = [\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-05T00:00:00',\r\n // pdbo_type: '1B',\r\n // pdbo_typedesc: 'Breakfast',\r\n // inuse: true,\r\n // pdbo_amount: 9.74,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-05T00:00:00',\r\n // pdbo_type: '2L',\r\n // pdbo_typedesc: 'Lunch',\r\n // inuse: true,\r\n // pdbo_amount: 11.06,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-05T00:00:00',\r\n // pdbo_type: '3D',\r\n // pdbo_typedesc: 'Dinner',\r\n // inuse: true,\r\n // pdbo_amount: 19.47,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-05T00:00:00',\r\n // pdbo_type: '4IE',\r\n // pdbo_typedesc: 'Incidental Expenses',\r\n // inuse: true,\r\n // pdbo_amount: 3.98,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-06T00:00:00',\r\n // pdbo_type: '1B',\r\n // pdbo_typedesc: 'Breakfast',\r\n // inuse: true,\r\n // pdbo_amount: 12.98,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-06T00:00:00',\r\n // pdbo_type: '2L',\r\n // pdbo_typedesc: 'Lunch',\r\n // inuse: true,\r\n // pdbo_amount: 14.75,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-06T00:00:00',\r\n // pdbo_type: '3D',\r\n // pdbo_typedesc: 'Dinner',\r\n // inuse: true,\r\n // pdbo_amount: 25.96,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-06T00:00:00',\r\n // pdbo_type: '4IE',\r\n // pdbo_typedesc: 'Incidental Expenses',\r\n // inuse: true,\r\n // pdbo_amount: 5.31,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-07T00:00:00',\r\n // pdbo_type: '1B',\r\n // pdbo_typedesc: 'Breakfast',\r\n // inuse: true,\r\n // pdbo_amount: 12.98,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-07T00:00:00',\r\n // pdbo_type: '2L',\r\n // pdbo_typedesc: 'Lunch',\r\n // inuse: true,\r\n // pdbo_amount: 14.75,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-07T00:00:00',\r\n // pdbo_type: '3D',\r\n // pdbo_typedesc: 'Dinner',\r\n // inuse: true,\r\n // pdbo_amount: 25.96,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-07T00:00:00',\r\n // pdbo_type: '4IE',\r\n // pdbo_typedesc: 'Incidental Expenses',\r\n // inuse: true,\r\n // pdbo_amount: 5.31,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-08T00:00:00',\r\n // pdbo_type: '1B',\r\n // pdbo_typedesc: 'Breakfast',\r\n // inuse: true,\r\n // pdbo_amount: 12.98,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-08T00:00:00',\r\n // pdbo_type: '2L',\r\n // pdbo_typedesc: 'Lunch',\r\n // inuse: true,\r\n // pdbo_amount: 14.75,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-08T00:00:00',\r\n // pdbo_type: '3D',\r\n // pdbo_typedesc: 'Dinner',\r\n // inuse: true,\r\n // pdbo_amount: 25.96,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-08T00:00:00',\r\n // pdbo_type: '4IE',\r\n // pdbo_typedesc: 'Incidental Expenses',\r\n // inuse: true,\r\n // pdbo_amount: 5.31,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-09T00:00:00',\r\n // pdbo_type: '1B',\r\n // pdbo_typedesc: 'Breakfast',\r\n // inuse: true,\r\n // pdbo_amount: 12.98,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-09T00:00:00',\r\n // pdbo_type: '2L',\r\n // pdbo_typedesc: 'Lunch',\r\n // inuse: true,\r\n // pdbo_amount: 14.75,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-09T00:00:00',\r\n // pdbo_type: '3D',\r\n // pdbo_typedesc: 'Dinner',\r\n // inuse: true,\r\n // pdbo_amount: 25.96,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-09T00:00:00',\r\n // pdbo_type: '4IE',\r\n // pdbo_typedesc: 'Incidental Expenses',\r\n // inuse: true,\r\n // pdbo_amount: 5.31,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-10T00:00:00',\r\n // pdbo_type: '1B',\r\n // pdbo_typedesc: 'Breakfast',\r\n // inuse: true,\r\n // pdbo_amount: 12.98,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-10T00:00:00',\r\n // pdbo_type: '2L',\r\n // pdbo_typedesc: 'Lunch',\r\n // inuse: true,\r\n // pdbo_amount: 14.75,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-10T00:00:00',\r\n // pdbo_type: '3D',\r\n // pdbo_typedesc: 'Dinner',\r\n // inuse: true,\r\n // pdbo_amount: 25.96,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-10T00:00:00',\r\n // pdbo_type: '4IE',\r\n // pdbo_typedesc: 'Incidental Expenses',\r\n // inuse: true,\r\n // pdbo_amount: 5.31,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-11T00:00:00',\r\n // pdbo_type: '1B',\r\n // pdbo_typedesc: 'Breakfast',\r\n // inuse: true,\r\n // pdbo_amount: 9.74,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-11T00:00:00',\r\n // pdbo_type: '2L',\r\n // pdbo_typedesc: 'Lunch',\r\n // inuse: true,\r\n // pdbo_amount: 11.06,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-11T00:00:00',\r\n // pdbo_type: '3D',\r\n // pdbo_typedesc: 'Dinner',\r\n // inuse: true,\r\n // pdbo_amount: 19.47,\r\n // dailyperdiemamount: 59.0\r\n // },\r\n // {\r\n // expenseID: 8295,\r\n // pdbo_date: '2024-05-11T00:00:00',\r\n // pdbo_type: '4IE',\r\n // pdbo_typedesc: 'Incidental Expenses',\r\n // inuse: true,\r\n // pdbo_amount: 3.98,\r\n // dailyperdiemamount: 59.0\r\n // }\r\n // ];\r\n // this.pdboData$ = of(data);\r\n this.pdboData$ = this.store.pipe(\r\n select(fromExpense.getExpenseLinePdbo),\r\n map(x => clone(x))\r\n );\r\n }\r\n onSave($event: any) {\r\n this.log.verbose({\r\n type: 'ExpensePdboFeatureComponent:onSave',\r\n $event\r\n });\r\n this.dialogRef.close($event);\r\n }\r\n onCancel() {\r\n this.log.verbose({\r\n type: 'ExpensePdboFeatureComponent:onCancel'\r\n });\r\n this.dialogRef.close();\r\n }\r\n}\r\n","export * from './expense-pdbo-feature.component';\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { AttachmentService } from '../../../attachment-view-feature/attachment.service';\r\nimport { IAttachment } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IExpenseReceipt } from '../../IExpenseReceipt';\r\nimport * as fromExpense from '../../store/index';\r\n\r\n@Component({\r\n selector: 'ef-expense-receipt-view-feature',\r\n templateUrl: './expense-receipt-view-feature.component.html',\r\n styleUrls: ['./expense-receipt-view-feature.component.scss']\r\n})\r\nexport class ExpenseReceiptViewFeatureComponent implements OnInit, OnDestroy {\r\n public attachment$: Observable>;\r\n public receipt$: Observable;\r\n @Input() public receiptId: string;\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n protected svc: AttachmentService,\r\n private expenseStore: Store\r\n ) {\r\n this.log.verbose({ type: 'ExpenseReceiptViewFeatureComponent::' });\r\n }\r\n\r\n ngOnInit() {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptViewFeatureComponent.ngOnInit',\r\n receiptId: this.receiptId\r\n });\r\n if (this.receiptId) {\r\n this.expenseStore.dispatch(\r\n new fromExpense.LoadExpenseReceiptAttachment({\r\n File_unique_id: this.receiptId\r\n })\r\n );\r\n }\r\n this.attachment$ = this.expenseStore.pipe(\r\n select(fromExpense.getReceiptAttachment),\r\n tap(r =>\r\n this.log.verbose({\r\n type: 'ExpenseReceiptViewFeatureComponent.attachment$',\r\n receipt: r\r\n })\r\n ),\r\n map(r => ({ ...r }))\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","export * from './expense-receipt-view-feature.component';\r\n","export * from './expense-list';\r\nexport * from './expense-add';\r\nexport * from './expense-receipt-view-feature';\r\nexport * from './expense-pdbo-feature';\r\n","export * from './expenses.module';\r\nexport * from './IExpenseSummary';\r\nexport * from './IExpenseLine';\r\nexport * from './IExpenseReceipt';\r\nexport * from './features';\r\nexport * from './presenters';\r\nexport * from './store';\r\nexport * from './ExpenseSection';\r\nexport * from './IExpenseTask';\r\nexport * from './ITravelMode';\r\nexport * from './IPaymentMethod';\r\nexport * from './expense-enums';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR\r\n} from '@angular/forms';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { Action, ActionsSubject } from '@ngrx/store';\r\nimport {\r\n BehaviorSubject,\r\n fromEvent,\r\n Observable,\r\n ReplaySubject,\r\n Subject\r\n} from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n pairwise,\r\n startWith,\r\n switchMap,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport {\r\n IExpenseItem,\r\n ILocale,\r\n ILocation,\r\n IPerDiemLocale,\r\n IState,\r\n ITask,\r\n ITravelType\r\n} from '../../../lookups';\r\nimport {\r\n AbstractFormGroupComponent,\r\n IAttachment,\r\n Process\r\n} from '../../../shared';\r\nimport { MenuItem, SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../../user-info';\r\nimport { IExpenseLine } from '../../IExpenseLine';\r\nimport { IExpenseReceipt } from '../../IExpenseReceipt';\r\nimport { IExpenseSummary } from '../../IExpenseSummary';\r\nimport { ITravelMode } from '../../ITravelMode';\r\nimport { ITravelRate } from '../../ITravelRate';\r\nimport { ITripLegType } from '../../ITripLegType';\r\nimport * as fromExpense from '../../store';\r\nimport { City } from '../../store/city';\r\n\r\n@Component({\r\n selector: 'ef-expense-add',\r\n templateUrl: './expense-add.component.html',\r\n styleUrls: ['./expense-add.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ExpenseAddComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ExpenseAddComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseAddComponent\r\n extends AbstractFormGroupComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @Input() Save$: Observable;\r\n @Input() public userInfo: IUserInfo;\r\n private SummarySubject = new Subject();\r\n private _summary: IExpenseSummary;\r\n @Input() public set summary(value: IExpenseSummary) {\r\n this._summary = value;\r\n this.SummarySubject.next(value);\r\n }\r\n public get summary(): IExpenseSummary {\r\n return this._summary;\r\n }\r\n private SelectedDetailSubject = new Subject();\r\n private _selectedDetail: IExpenseLine;\r\n @Input() public set selectedDetail(value: IExpenseLine) {\r\n this._selectedDetail = value;\r\n this.SelectedDetailSubject.next(value);\r\n }\r\n public get selectedDetail(): IExpenseLine {\r\n return this._selectedDetail;\r\n }\r\n @Input() public details: Array;\r\n @Input() public receipts: Array;\r\n @Input() public selectedReceipt: IExpenseReceipt;\r\n @Input() public selectedAttachment: IAttachment;\r\n private _tasks: Array;\r\n @Input() public set tasks(value: Array) {\r\n this.log.verbose({ type: 'ExpenseAddComponent:tasks:set', value });\r\n this._tasks = value;\r\n }\r\n public get tasks(): Array {\r\n return this._tasks;\r\n }\r\n private _expenseItems: Array;\r\n @Input() public set expenseItems(value: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:expenseItems:set',\r\n value\r\n });\r\n this._expenseItems = value;\r\n }\r\n public get expenseItems(): Array {\r\n return this._expenseItems;\r\n }\r\n @Input() public locales: Array;\r\n @Input() public perDiemTypes: Array;\r\n @Input() public travelTypes: Array;\r\n @Input() public paymentMethods: Array;\r\n @Input() public userPaymentMethods: Array;\r\n @Input() public travelModes: Array;\r\n @Input() public travelRates: Array;\r\n @Input() public states: Array;\r\n @Input() public cities: Array;\r\n @Input() public locations: Array;\r\n @Input() public countries: Array;\r\n @Input() public areas: Array;\r\n @Input() public tripLegTypes: Array;\r\n private _selectedRate: ITravelRate;\r\n // this is for the onSelectDetail from the expense-detail-selector component, not the input from selectedDetail\r\n private SelectDetailSubject = new ReplaySubject(1);\r\n @Input() public set selectedRate(value: ITravelRate) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:selectedRate:set',\r\n value\r\n });\r\n this._selectedRate = value;\r\n }\r\n public get selectedRate() {\r\n return this._selectedRate;\r\n }\r\n public get Title() {\r\n if (this.process) {\r\n switch (this.process.ProcessID) {\r\n case 70:\r\n case 91:\r\n case 92:\r\n return 'Expense Detail';\r\n break;\r\n case 147:\r\n return 'Travel Request';\r\n break;\r\n }\r\n return '';\r\n }\r\n \r\n }\r\n @Input() public minDate: Date;\r\n @Input() public maxDate: Date;\r\n @Input() public successMessage: string;\r\n @Input() public failureMessage: string;\r\n @Input() public process: Process;\r\n @Output() public Cancel = new EventEmitter();\r\n @Output() public UploadReceiptAttachment = new ReplaySubject(1);\r\n // @Output() public SelectAttachment = new ReplaySubject(1);\r\n @Output() public SelectAttachment = new BehaviorSubject(null);\r\n @Output() public SaveDetail = new EventEmitter();\r\n @Output() public SelectReceipt = new EventEmitter();\r\n @Output() public SelectTask = new EventEmitter();\r\n @Output() public SetTripLegType = new EventEmitter();\r\n @Output() SetPostalCode = new EventEmitter();\r\n @Output() SetPostalCode2 = new EventEmitter();\r\n @Output() SetCity = new EventEmitter();\r\n @Output() SetState = new EventEmitter();\r\n @Output() SetFromCity = new EventEmitter();\r\n @Output() SetFromState = new EventEmitter();\r\n @Output() SetToCity = new EventEmitter();\r\n @Output() SetToState = new EventEmitter();\r\n @Output() SetTravelStart = new EventEmitter();\r\n @Output() SetTravelEnd = new EventEmitter();\r\n @Output() SetPerDiemType = new EventEmitter();\r\n @Output() SetLocale = new EventEmitter();\r\n @Output() SetDestination = new EventEmitter();\r\n @Output() SetTravelType = new EventEmitter();\r\n @Output() SetMileageType = new EventEmitter();\r\n @Output() SetMileage = new EventEmitter();\r\n @Output() SelectDetail = new EventEmitter();\r\n @Output() ReportDateChange = new EventEmitter();\r\n @Output() public AttachmentError = new EventEmitter();\r\n @ViewChild('cancel', { read: ElementRef, static: true })\r\n cancelButton: ElementRef;\r\n @ViewChild('save', { read: ElementRef, static: true })\r\n saveButton: ElementRef;\r\n // @ViewChild('saveExpense', { read: ElementRef, static: true })\r\n // saveExpenseButton: ElementRef;\r\n public addExpenseForm: FormGroup;\r\n public closing = false;\r\n public saveOptions: MenuItem[] = [\r\n {\r\n label: 'Save Only',\r\n icon: 'pi-save',\r\n command: () => {\r\n this.saveOnly();\r\n }\r\n },\r\n {\r\n label: 'Save & New',\r\n icon: 'pi pi-plus-circle',\r\n command: () => {\r\n this.saveAndNew();\r\n }\r\n },\r\n {\r\n label: 'Save & Copy',\r\n icon: 'pi pi-copy',\r\n command: () => {\r\n this.saveAndCopy();\r\n }\r\n }\r\n ];\r\n private componentActive = true;\r\n private summaryCanCloseSubject = new ReplaySubject(1);\r\n private detailsCanCloseSubject = new ReplaySubject(1);\r\n constructor(\r\n @Inject(UnsavedChangesService)\r\n private confirmservice: UnsavedChangesService,\r\n @Inject(LoggingService) protected log: LoggingService,\r\n protected cdRef: ChangeDetectorRef,\r\n private dispatcher: ActionsSubject\r\n ) {\r\n super(log, cdRef);\r\n\r\n this.addExpenseForm = new FormGroup({\r\n expenseDetailAddParent: new FormControl(),\r\n expenseSummaryAddParent: new FormControl(),\r\n expenseReceiptAddParent: new FormControl()\r\n });\r\n this.form = this.addExpenseForm;\r\n }\r\n\r\n ngOnInit() {\r\n this.addExpenseForm.statusChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(status => !!status),\r\n debounceTime(100),\r\n pairwise(),\r\n filter(([prev, curr]) => prev !== curr),\r\n map(([prev, curr]) => curr)\r\n )\r\n .subscribe(status => {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:addExpenseForm:statusChanges',\r\n status,\r\n form: this.addExpenseForm\r\n });\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.componentActive = false;\r\n }\r\n ngAfterViewInit(): void {\r\n this.log.debug({\r\n type: 'ExpenseAddComponent:AfterViewInit',\r\n summary: this.summary,\r\n details: this.details,\r\n selectedDetail: this.selectedDetail,\r\n receipts: this.receipts,\r\n tasks: this.tasks,\r\n expenseItems: this.expenseItems,\r\n locales: this.locales,\r\n perDiemTypes: this.perDiemTypes,\r\n travelTypes: this.travelTypes,\r\n paymentMethods: this.paymentMethods,\r\n userPaymentMethods: this.userPaymentMethods\r\n });\r\n this.setupSubscriptions();\r\n }\r\n\r\n setupSubscriptions() {\r\n this.UploadReceiptAttachment.pipe(\r\n takeWhile(() => this.componentActive)\r\n ).subscribe(attachment =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:UploadReceiptAttachment:subscribe',\r\n attachment\r\n })\r\n );\r\n\r\n this.dispatcher\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummarySuccess,\r\n fromExpense.ActionTypes.AddExpenseLineSuccess,\r\n fromExpense.ActionTypes.AddExpenseReceiptsSuccess,\r\n fromExpense.ActionTypes.AddExpenseAttachmentSuccess,\r\n fromExpense.ActionTypes.SetExpenseSummaries,\r\n fromExpense.ActionTypes.UpdateExpenseSummary,\r\n fromExpense.ActionTypes.SetExpenseLines,\r\n fromExpense.ActionTypes.SetExpenseReceipts,\r\n fromExpense.ActionTypes.EditExpenseReceiptAttachment\r\n ),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:resetting canclose after save',\r\n action\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n this.summaryCanCloseSubject.next(true);\r\n this.detailsCanCloseSubject.next(true);\r\n });\r\n\r\n this.SelectDetailSubject.pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(x => !!x),\r\n withLatestFrom(this.detailsCanCloseSubject.pipe(startWith(false)))\r\n ).subscribe(([detail, canclose]) => {\r\n if (canclose) {\r\n this.SelectDetail.emit(detail);\r\n } else {\r\n this.confirmservice.confirmPromise().then(() => {\r\n this.summaryCanCloseSubject.next(true);\r\n this.detailsCanCloseSubject.next(true);\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.SelectDetail.emit(detail);\r\n });\r\n }\r\n });\r\n\r\n fromEvent(this.cancelButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(() =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:close:click:closing'\r\n })\r\n ),\r\n tap(() => (this.closing = true)),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:close:click',\r\n x\r\n })\r\n ),\r\n withLatestFrom(\r\n this.summaryCanCloseSubject.pipe(\r\n startWith(true),\r\n distinctUntilChanged()\r\n ),\r\n this.detailsCanCloseSubject.pipe(\r\n startWith(true),\r\n distinctUntilChanged()\r\n )\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:close:click',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([closeClick, summaryCanClose, detailCanClose]) =>\r\n this.closePopup(summaryCanClose, detailCanClose)\r\n );\r\n }\r\n\r\n closePopup(summaryCanClose, detailCanClose) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:closePopup:canclose',\r\n form: this.addExpenseForm,\r\n summaryCanClose,\r\n detailCanClose\r\n });\r\n const controls = this.addExpenseForm.controls;\r\n const canClose = summaryCanClose && detailCanClose;\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:close:click:canclose',\r\n summaryCanClose,\r\n detailCanClose,\r\n canClose\r\n });\r\n if (!canClose) {\r\n this.confirmservice\r\n .confirmPromise()\r\n .then(() => this.Cancel.next())\r\n .catch(() => {});\r\n } else {\r\n this.Cancel.next();\r\n }\r\n }\r\n saveAndNew() {\r\n this.saveExpense((a, b) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:saveAndNew:callback'\r\n });\r\n if (b) {\r\n this.addExpenseForm.controls['expenseDetailAddParent'].reset();\r\n this.onAddDetail({ ExpReportNbr: -1 });\r\n }\r\n });\r\n }\r\n saveAndCopy() {\r\n this.saveExpense((a, b) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:saveAndCopy:callback'\r\n });\r\n if (b) {\r\n this.onAddDetail({\r\n ExpReportNbr: -1,\r\n RptTask: this.selectedDetail.RptTask,\r\n EIListID: this.selectedDetail.EIListID,\r\n Purpose: this.selectedDetail.Purpose\r\n });\r\n }\r\n });\r\n }\r\n saveAndClose() {\r\n this.saveExpense((a: Action, canClose: boolean) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:saveAndClose:callback',\r\n a,\r\n canClose\r\n });\r\n if (canClose) {\r\n this.closePopup(true, true);\r\n }\r\n });\r\n }\r\n saveOnly() {\r\n this.saveExpense(() => {});\r\n }\r\n waitForSaveComplete(toSave: waitForSaveCallback) {\r\n this.SaveDetail.pipe(\r\n take(1),\r\n tap(detail =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:waitForSaveComplete:SaveDetail:tap',\r\n detail\r\n })\r\n ),\r\n withLatestFrom(this.SelectAttachment),\r\n tap(([detail, attachment]) =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:waitForSaveComplete:withLatestFrom:SelectAttachment',\r\n detail,\r\n attachment\r\n })\r\n ),\r\n switchMap(([detail, attachment]) => {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:SaveDetail:switchMap',\r\n detail\r\n });\r\n let action = fromExpense.ActionTypes.AddExpenseLineSuccess;\r\n\r\n const expenseDetail =\r\n this.addExpenseForm.controls['expenseDetailAddParent']\r\n .value;\r\n if (expenseDetail.receiptParent) {\r\n action = fromExpense.ActionTypes.AddExpenseReceiptsSuccess;\r\n }\r\n if (attachment) {\r\n action =\r\n fromExpense.ActionTypes.AddExpenseAttachmentSuccess;\r\n }\r\n return this.dispatcher.pipe(\r\n ofType(action),\r\n take(1),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:SaveDetail:dispatcher:take:1',\r\n action\r\n })\r\n ),\r\n withLatestFrom(this.detailsCanCloseSubject),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:SaveDetail:dispatcher:detailsCanCloseSubject',\r\n action\r\n })\r\n )\r\n );\r\n })\r\n ).subscribe(([a, canClose]) => toSave(a, canClose));\r\n }\r\n saveExpense(afterSave: waitForSaveCallback) {\r\n // subscription has to be set up before the savedetail call\r\n this.waitForSaveComplete(afterSave);\r\n const controls = this.addExpenseForm.controls;\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:saveExpense',\r\n expenseDetailParent: { ...controls['expenseDetailAddParent'].value }\r\n });\r\n\r\n const expense = { ...controls['expenseDetailAddParent'].value };\r\n expense.EIListID = expense.EIListID.EIListID;\r\n this.log.debug({\r\n type: 'ExpenseAddComponent:saveExpenseButton:click',\r\n summary: this.summary,\r\n otherSummary: this.addExpenseForm.value.expenseSummaryAddParent,\r\n expense\r\n });\r\n this.SaveDetail.next({\r\n ...this.summary,\r\n ...this.addExpenseForm.value.expenseSummaryAddParent,\r\n ...expense\r\n });\r\n }\r\n onSelectReceipt(receipt) {\r\n this.log.debug({\r\n type: 'ExpenseAddComponent:onSelectReceipt',\r\n receipt\r\n });\r\n this.SelectReceipt.next(receipt);\r\n }\r\n onAddDetail($event: IExpenseLine) {\r\n this.log.debug({ type: 'ExpenseAddComponent:onAddDetail' });\r\n this.onSelectDetail($event);\r\n this.SelectReceipt.next({ ExpenseRptNbr: -1 });\r\n }\r\n onSelectTask(task) {\r\n this.log.debug({ type: 'ExpenseAddComponent:onSelectTask', task });\r\n this.SelectTask.next(task);\r\n }\r\n onSetPostalCode(postalCode) {\r\n this.SetPostalCode.emit(postalCode);\r\n }\r\n onSetPostalCode2(postalCode) {\r\n this.SetPostalCode2.emit(postalCode);\r\n }\r\n onSetFromCity(city) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetFromCity:values',\r\n city\r\n });\r\n this.SetFromCity.emit(city);\r\n }\r\n onSetFromState(state) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetFromState:values',\r\n state\r\n });\r\n this.SetFromState.emit(state);\r\n }\r\n onSetToCity(city) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetToCity:values',\r\n city\r\n });\r\n this.SetToCity.emit(city);\r\n }\r\n onSetToState(state) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetToState:values',\r\n state\r\n });\r\n this.SetToState.emit(state);\r\n this.addExpenseForm.updateValueAndValidity();\r\n }\r\n onSetCity(city) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetCity:values',\r\n city\r\n });\r\n this.SetCity.emit(city);\r\n }\r\n onSetState(state) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetState:values',\r\n state\r\n });\r\n this.SetState.emit(state);\r\n }\r\n onSetTravelStart(startDate) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetTravelStart:values',\r\n startDate\r\n });\r\n this.SetTravelStart.emit(startDate);\r\n }\r\n onSetTravelEnd(endDate) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetTravelEnd:values',\r\n endDate\r\n });\r\n this.SetTravelEnd.emit(endDate);\r\n }\r\n onSetPerDiemType(pdType) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetPerDiemType:values',\r\n pdType\r\n });\r\n this.SetPerDiemType.emit(pdType);\r\n }\r\n onSetLocale(locale) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetLocale:values',\r\n locale\r\n });\r\n this.SetLocale.emit(locale);\r\n }\r\n onSetTripLegType(legType) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetTripLegType:values',\r\n legType\r\n });\r\n this.SetTripLegType.emit(legType);\r\n }\r\n onSetDestination(rate) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetDestination:values',\r\n rate\r\n });\r\n this.SetDestination.emit(rate);\r\n }\r\n onSelectDetail(detail) {\r\n // detail = {...detail, Receipts: this.receipts.filter(x => x.Sequenceid === detail.SequenceId)};\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSelectDetail:values',\r\n detail\r\n });\r\n this.SelectDetailSubject.next(detail);\r\n // TODO: check for changed data\r\n }\r\n onSetTravelType(travelType) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetTravelType:values',\r\n travelType\r\n });\r\n this.SetTravelType.emit(travelType);\r\n }\r\n onSetMileageType(mileageType) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetMileageType:values',\r\n mileageType\r\n });\r\n this.SetMileageType.emit(mileageType);\r\n }\r\n onSetMileage(mileage) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSetMileage:values',\r\n mileage\r\n });\r\n this.SetMileage.emit(mileage);\r\n }\r\n onUploadReceiptAttachment(attachment) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onUploadReceiptAttachment:attachment',\r\n attachment\r\n });\r\n this.UploadReceiptAttachment.next(attachment);\r\n }\r\n onSelectAttachment(attachment) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSelectAttachment',\r\n attachment\r\n });\r\n this.SelectAttachment.next(attachment);\r\n }\r\n\r\n onReportDateChange(reportDate: Date) {\r\n this.ReportDateChange.emit(reportDate);\r\n }\r\n onSummaryCanCloseChanged(canClose: boolean) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onSummaryCanCloseChanged',\r\n canClose\r\n });\r\n this.summaryCanCloseSubject.next(canClose);\r\n }\r\n onDetailCanCloseChanged(canClose: boolean) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onDetailCanCloseChanged',\r\n canClose\r\n });\r\n this.detailsCanCloseSubject.next(canClose);\r\n }\r\n onAttachmentError($event) {\r\n this.log.verbose({\r\n type: 'ExpenseAddComponent:onAttachmentError',\r\n $event\r\n });\r\n this.AttachmentError.next($event);\r\n }\r\n}\r\n\r\ntype waitForSaveCallback = (a: Action, canClose: boolean) => void;\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ActionsSubject } from '@ngrx/store';\r\nimport {\r\n combineLatest,\r\n fromEvent,\r\n merge,\r\n Observable,\r\n ReplaySubject,\r\n Subject\r\n} from 'rxjs';\r\nimport {\r\n debounceTime,\r\n filter,\r\n map,\r\n pairwise,\r\n startWith,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { environment } from '../../../../../environments/environment';\r\nimport * as fromLookup from '../../../../lookups';\r\nimport { ITravelType } from '../../../../lookups';\r\nimport { AbstractFormGroupComponent, IAttachment } from '../../../../shared';\r\nimport { SelectItem } from '../../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../../../user-info';\r\nimport { PerDiemTypeEnum, TravelTypeEnum } from '../../../expense-enums';\r\nimport { IExpenseLine } from '../../../IExpenseLine';\r\nimport { IExpenseReceipt } from '../../../IExpenseReceipt';\r\nimport { IExpenseSummary } from '../../../IExpenseSummary';\r\nimport { ITravelMode } from '../../../ITravelMode';\r\nimport { ITravelRate } from '../../../ITravelRate';\r\nimport { ITripLegType } from '../../../ITripLegType';\r\nimport * as fromExpense from '../../../store';\r\nimport { City } from '../../../store/city';\r\n\r\n@Component({\r\n selector: 'ef-expense-detail-add',\r\n templateUrl: './expense-detail-add.component.html',\r\n styleUrls: ['./expense-detail-add.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ExpenseDetailAddComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ExpenseDetailAddComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseDetailAddComponent\r\n extends AbstractFormGroupComponent\r\n implements AfterViewInit, OnDestroy\r\n{\r\n private ClosingSubject = new ReplaySubject(1);\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n\r\n @Input() public set closing(value: boolean) {\r\n if (value) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:closing',\r\n form: this.addExpenseDetailForm\r\n });\r\n this.ClosingSubject.next(value);\r\n }\r\n }\r\n @Input() public userInfo: IUserInfo;\r\n @Input() public summary: IExpenseSummary;\r\n private SetDetailSubject = new Subject();\r\n private _selectedDetail: IExpenseLine;\r\n @Input() public set selectedDetail(value: IExpenseLine) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:selectedDetail:set',\r\n value\r\n });\r\n this._selectedDetail = value;\r\n this.SetDetailSubject.next(value);\r\n }\r\n public get selectedDetail(): IExpenseLine {\r\n return this._selectedDetail;\r\n }\r\n @Input() public receipts: Array;\r\n @Input() public selectedReceipt: IExpenseReceipt;\r\n @Input() public selectedAttachment: IAttachment;\r\n private SetTasksSubject = new Subject>();\r\n private _tasks: Array = [];\r\n @Input() public set tasks(value: Array) {\r\n this._tasks = value;\r\n this._taskItems = this._tasks\r\n .sort((a, b) => a.TaskLongName.localeCompare(b.TaskLongName))\r\n .map(x => ({\r\n ...x,\r\n label: x.TaskLongName,\r\n value: x.TaskListID,\r\n disabled: !x.IsActive\r\n }));\r\n this.SetTasksSubject.next(value);\r\n }\r\n public get tasks(): Array {\r\n return this._tasks;\r\n }\r\n private _taskItems: Array;\r\n public set taskItems(value: Array) {\r\n this._taskItems = value;\r\n }\r\n public get taskItems(): Array {\r\n return this._taskItems;\r\n }\r\n private SetExpenseItemsSubject = new Subject<\r\n Array\r\n >();\r\n private _expenseItems: Array = [];\r\n @Input() public set expenseItems(value: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:expenseItems:set',\r\n value\r\n });\r\n this._expenseItems = value;\r\n this.SetExpenseItemsSubject.next(value);\r\n }\r\n public get expenseItems(): Array {\r\n if (this._expenseItems) {\r\n return this._expenseItems.sort((a, b) =>\r\n a.ExpenseItem.localeCompare(b.ExpenseItem)\r\n );\r\n }\r\n return [];\r\n }\r\n\r\n private PerDiemCanCloseSubject = new ReplaySubject(1);\r\n private MileageCanCloseSubject = new ReplaySubject(1);\r\n private ReceiptCanCloseSubject = new ReplaySubject(1);\r\n @Input() public perDiemTypes: Array;\r\n @Input() public locales: Array;\r\n @Input() public travelTypes: Array;\r\n @Input() public paymentMethods: Array;\r\n @Input() public userPaymentMethods: Array;\r\n @Input() public travelModes: Array;\r\n @Input() public travelRates: Array;\r\n @Input() public states: Array;\r\n @Input() public cities: City[];\r\n @Input() public countries: Array;\r\n @Input() public areas: Array;\r\n @Input() public locations: Array;\r\n @Input() public tripLegTypes: Array;\r\n private _selectedRate: ITravelRate;\r\n @Input() public set selectedRate(value: ITravelRate) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:selectedRate:set',\r\n value\r\n });\r\n this._selectedRate = value;\r\n }\r\n public get selectedRate() {\r\n return this._selectedRate;\r\n }\r\n @Input() Save$: Observable;\r\n @Output() public UploadReceiptAttachment = new EventEmitter();\r\n @Output() public SelectAttachment = new EventEmitter();\r\n @Output() public SelectTask = new EventEmitter();\r\n @Output()\r\n public SelectExpense = new EventEmitter();\r\n @Output() SetPostalCode = new EventEmitter();\r\n @Output() SetPostalCode2 = new EventEmitter();\r\n @Output() SetCity = new EventEmitter();\r\n @Output() SetState = new EventEmitter();\r\n @Output() SetFromCity = new EventEmitter();\r\n @Output() SetFromState = new EventEmitter();\r\n @Output() SetToCity = new EventEmitter();\r\n @Output() SetToState = new EventEmitter();\r\n @Output() SetTravelStart = new EventEmitter();\r\n @Output() SetTravelEnd = new EventEmitter();\r\n @Output() SetPerDiemType = new EventEmitter();\r\n @Output() SetLocale = new EventEmitter();\r\n @Output() SetTripLegType = new EventEmitter();\r\n @Output() SetDestination = new EventEmitter();\r\n @Output() SetTravelType = new EventEmitter();\r\n @Output() SetMileageType = new EventEmitter();\r\n @Output() SetMileage = new EventEmitter();\r\n @Output() SelectDetail = new EventEmitter();\r\n @Output() public SelectReceipt = new EventEmitter();\r\n @Output() public AddReceipt = new EventEmitter();\r\n @Output() public canCloseChanged = new EventEmitter();\r\n @Output() public AttachmentError = new EventEmitter();\r\n @ViewChild('receiptParent', { read: ElementRef })\r\n receiptParentElement: ElementRef;\r\n @ViewChild('purpose', { read: ElementRef })\r\n purposeEl: ElementRef;\r\n @ViewChild('travelType', { read: ElementRef })\r\n travelTypeEl: ElementRef;\r\n public addExpenseDetailForm: FormGroup;\r\n private componentActive = true;\r\n public TravelTypeSubject = new ReplaySubject(1);\r\n public selectedPerDiemType;\r\n constructor(\r\n @Inject(LoggingService) protected log: LoggingService,\r\n protected cdRef: ChangeDetectorRef,\r\n private renderer: Renderer2,\r\n private dispatcher: ActionsSubject\r\n ) {\r\n super(log, cdRef);\r\n\r\n this.addExpenseDetailForm = new FormGroup(\r\n {\r\n ExpReportNbr: new FormControl(null),\r\n ExpenseGroupId: new FormControl(null),\r\n ExpenseID: new FormControl(null),\r\n EmpAuthID: new FormControl(null),\r\n Row_Version: new FormControl(null),\r\n RptTask: new FormControl(null, Validators.required),\r\n EIListID: new FormControl(null, Validators.required),\r\n TravelTypeID: new FormControl(\r\n {\r\n TravelTypeID: TravelTypeEnum.Unknown,\r\n TravelTypeDesc: ''\r\n },\r\n Validators.required\r\n ),\r\n receiptParent: new FormControl(),\r\n perDiemParent: new FormControl(),\r\n mileageParent: new FormControl(),\r\n SequenceId: new FormControl(),\r\n Purpose: new FormControl()\r\n },\r\n { validators: this.validateDetails }\r\n );\r\n\r\n this.form = this.addExpenseDetailForm;\r\n\r\n this.setupSubjects();\r\n }\r\n\r\n validateDetails: ValidatorFn = (\r\n ctrl: AbstractControl\r\n ): ValidationErrors | null => {\r\n const category = ctrl.get('TravelTypeID');\r\n const mileage = ctrl.get('mileageParent');\r\n const perDiem = ctrl.get('perDiemParent');\r\n const receipt = ctrl.get('receiptParent');\r\n\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:validateDetails',\r\n category,\r\n categoryType: category?.value,\r\n mileage,\r\n perDiem,\r\n receipt\r\n });\r\n\r\n if (category?.value) {\r\n let error: any = null;\r\n switch (category?.value) {\r\n case TravelTypeEnum.Mileage:\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:validateMileage',\r\n addExpenseDetailForm: this.addExpenseDetailForm.valid,\r\n group: ctrl.valid,\r\n category: category.value,\r\n mileage: mileage?.value,\r\n valid: mileage?.valid,\r\n status: mileage?.status\r\n });\r\n if (!mileage?.valid) {\r\n return { mileage: mileage?.errors };\r\n }\r\n break;\r\n case TravelTypeEnum.PerDiem: {\r\n const perdiemType =\r\n ctrl.value &&\r\n ctrl.value.perDiemParent &&\r\n ctrl.value.perDiemParent.PerDiemTypeID;\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:validatePerDiem',\r\n addExpenseDetailForm: this.addExpenseDetailForm,\r\n group: ctrl.valid,\r\n category: category.value,\r\n perDiem: perDiem,\r\n valid: perDiem?.valid,\r\n status: perDiem?.status,\r\n receipt,\r\n perdiemType\r\n });\r\n if (!perDiem?.valid) {\r\n error = error\r\n ? Object.assign(error, perDiem?.errors)\r\n : perDiem?.errors;\r\n // return { perDiem: perDiem.errors };\r\n }\r\n\r\n if (\r\n perdiemType === PerDiemTypeEnum.Lodging ||\r\n perdiemType === PerDiemTypeEnum.BothLodgingandMIE\r\n ) {\r\n if (!receipt?.valid) {\r\n error = error\r\n ? Object.assign(error, {\r\n receiptRequiredPerDiemType:\r\n 'Receipt information is required'\r\n })\r\n : {\r\n receiptRequiredPerDiemType:\r\n 'Receipt information is required'\r\n };\r\n } else {\r\n if (error && error.receiptRequiredPerDiemType) {\r\n delete error.receiptRequiredPerDiemType;\r\n }\r\n }\r\n }\r\n return error;\r\n break;\r\n }\r\n case TravelTypeEnum.Receipt:\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:validateReceipt',\r\n addExpenseDetailForm: this.addExpenseDetailForm,\r\n group: ctrl.valid,\r\n category: category.value,\r\n receipt: receipt,\r\n valid: receipt?.valid,\r\n status: receipt?.status\r\n });\r\n if (!receipt?.valid) {\r\n // receipt.updateValueAndValidity();\r\n return {\r\n receiptRequiredTravelType:\r\n 'Receipt information is required'\r\n };\r\n }\r\n break;\r\n case 1:\r\n default:\r\n return { TravelTypeID: 'Invalid Travel Type' };\r\n break;\r\n }\r\n }\r\n return null;\r\n };\r\n ngAfterViewInit(): void {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:ngAfterViewInit',\r\n summary: this.summary,\r\n selectedDetail: this.selectedDetail,\r\n tasks: this.tasks,\r\n expenseItems: this.expenseItems,\r\n locales: this.locales,\r\n perDiemTypes: this.perDiemTypes,\r\n travelTypes: this.travelTypes,\r\n paymentMethods: this.paymentMethods,\r\n userPaymentMethods: this.userPaymentMethods\r\n });\r\n\r\n this.addExpenseDetailForm.controls['receiptParent'].disable();\r\n this.renderer.addClass(\r\n this.receiptParentElement.nativeElement,\r\n 'disabled'\r\n );\r\n\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.componentActive = false;\r\n }\r\n setupSubjects() {\r\n combineLatest([\r\n this.SetDetailSubject,\r\n this.SetTasksSubject.pipe(filter(x => !!x))\r\n ])\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:patchForm',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([detail, tasks]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:patchForm',\r\n detail\r\n });\r\n this.patchForm(detail);\r\n if (tasks && tasks.length) {\r\n const task = tasks.find(\r\n x => x.TaskLongName === detail.RptTask\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:patchForm:tasks',\r\n tasks,\r\n detail\r\n });\r\n if (task) {\r\n this.addExpenseDetailForm.controls[\r\n 'RptTask'\r\n ].patchValue(task.TaskListID);\r\n this.SelectTask.next(task);\r\n } else {\r\n this.addExpenseDetailForm.controls['RptTask'].reset();\r\n this.SelectTask.next(null);\r\n if (detail.ExpReportNbr > 0) {\r\n this.log.warn({\r\n type: 'ExpenseDetailAddComponent:patchForm:tasks',\r\n message: `No Task found for ${detail.RptTask}`,\r\n detail,\r\n tasks: tasks\r\n });\r\n }\r\n }\r\n } else {\r\n this.log.warn({\r\n type: 'ExpenseDetailAddComponent:patchForm:tasks',\r\n message: `No tasks`,\r\n detail\r\n });\r\n }\r\n });\r\n this.SetExpenseItemsSubject.pipe(\r\n takeWhile(() => this.componentActive),\r\n withLatestFrom(this.SetDetailSubject),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:patchForm:expenseItems',\r\n x\r\n })\r\n )\r\n ).subscribe(([expenseItems, detail]) => {\r\n if (expenseItems && expenseItems.length) {\r\n const ei = expenseItems.find(\r\n x => x.EIListID === detail.EIListID\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:patchForm:expenseItems',\r\n detail,\r\n expenseItems,\r\n ei\r\n });\r\n if (ei) {\r\n this.addExpenseDetailForm.controls['EIListID'].patchValue(\r\n ei\r\n );\r\n } else {\r\n this.log.warn({\r\n type: 'ExpenseDetailAddComponent:patchForm:expenseItems',\r\n message: `No expenseItem found for ${detail.EIListID}`,\r\n detail,\r\n expenseItems: expenseItems\r\n });\r\n }\r\n }\r\n });\r\n }\r\n setupSubscriptions() {\r\n const controls = this.addExpenseDetailForm.controls;\r\n this.dispatcher\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummarySuccess,\r\n fromExpense.ActionTypes.AddExpenseLineSuccess,\r\n fromExpense.ActionTypes.AddExpenseReceiptsSuccess,\r\n fromExpense.ActionTypes.AddExpenseAttachmentSuccess,\r\n fromExpense.ActionTypes.SetExpenseSummaries,\r\n fromExpense.ActionTypes.UpdateExpenseSummary,\r\n fromExpense.ActionTypes.SetExpenseLines,\r\n fromExpense.ActionTypes.SetExpenseReceipts,\r\n fromExpense.ActionTypes.EditExpenseReceiptAttachment\r\n ),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:resetting canclose after save',\r\n action\r\n })\r\n )\r\n )\r\n .subscribe(() => {\r\n this.PerDiemCanCloseSubject.next(true);\r\n this.MileageCanCloseSubject.next(true);\r\n this.ReceiptCanCloseSubject.next(true);\r\n });\r\n\r\n merge(\r\n combineLatest([\r\n fromEvent(this.purposeEl.nativeElement, 'click'),\r\n controls['Purpose'].valueChanges.pipe(filter(x => !!x))\r\n ]),\r\n combineLatest([\r\n controls['TravelTypeID'].valueChanges.pipe(filter(x => !!x))\r\n ])\r\n )\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(() => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:addExpenseDetailForm:Purpose'\r\n });\r\n this.canCloseChanged.next(false);\r\n this.addExpenseDetailForm.markAsTouched();\r\n });\r\n\r\n this.addExpenseDetailForm.statusChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(status => !!status),\r\n debounceTime(100),\r\n pairwise(),\r\n filter(([prev, curr]) => prev !== curr),\r\n map(([prev, curr]) => curr)\r\n )\r\n .subscribe(status => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:addExpenseDetailForm:statusChanges',\r\n status,\r\n form: this.addExpenseDetailForm\r\n });\r\n this.cdRef.detectChanges();\r\n });\r\n\r\n this.Save$.pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(() =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:resetting canclose after save'\r\n })\r\n )\r\n ).subscribe(() => {\r\n this.PerDiemCanCloseSubject.next(true);\r\n this.MileageCanCloseSubject.next(true);\r\n this.ReceiptCanCloseSubject.next(true);\r\n });\r\n\r\n combineLatest([\r\n this.PerDiemCanCloseSubject.pipe(startWith(true)),\r\n this.MileageCanCloseSubject.pipe(startWith(true)),\r\n this.ReceiptCanCloseSubject.pipe(startWith(true))\r\n ])\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(([perDiem, mileage, receipt]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:addExpenseDetailForm:canClose',\r\n perDiem,\r\n mileage,\r\n receipt,\r\n detail: this.form.untouched || this.form.pristine\r\n });\r\n this.canCloseChanged.next(\r\n perDiem &&\r\n mileage &&\r\n receipt &&\r\n (this.form.untouched || this.form.pristine)\r\n );\r\n });\r\n\r\n controls['TravelTypeID'].valueChanges\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(category => {\r\n this.TravelTypeSubject.next(\r\n this.travelTypes.find(x => x.TravelTypeID === category)\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:TravelTypeID:change',\r\n category\r\n });\r\n const mileage =\r\n this.addExpenseDetailForm.controls['mileageParent'];\r\n const perDiem =\r\n this.addExpenseDetailForm.controls['perDiemParent'];\r\n const receipt =\r\n this.addExpenseDetailForm.controls['receiptParent'];\r\n\r\n perDiem.disable();\r\n mileage.disable();\r\n receipt.disable();\r\n\r\n switch (category) {\r\n case TravelTypeEnum.Mileage:\r\n mileage.enable();\r\n break;\r\n case TravelTypeEnum.PerDiem:\r\n perDiem.enable();\r\n break;\r\n case TravelTypeEnum.Receipt:\r\n receipt.enable();\r\n break;\r\n }\r\n this.SetTravelType.next(category);\r\n });\r\n\r\n combineLatest([\r\n controls['receiptParent'].valueChanges,\r\n controls['TravelTypeID'].valueChanges\r\n ])\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(([receiptValues, travelType]) => {\r\n const receiptParent =\r\n this.addExpenseDetailForm.controls['receiptParent'];\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:combineLatest(receiptParent,TravelTypeID):receiptValues, travelType, receiptParent',\r\n receiptValues,\r\n travelType,\r\n receiptParent\r\n });\r\n // if (!(receiptValues && receiptParent)) { return; }\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:combineLatest(receiptParent,TravelTypeID):receiptValues, travelType, receiptParent:enabling receiptParent',\r\n receiptValues,\r\n travelType,\r\n receiptParent\r\n });\r\n if (travelType === TravelTypeEnum.Receipt) {\r\n if (receiptParent.disabled) {\r\n receiptParent.enable();\r\n }\r\n } else {\r\n //TODO: what is this supposed to be doing?\r\n if (receiptParent.disabled) {\r\n if (!this.receiptEmpty(receiptValues)) {\r\n receiptParent.enable();\r\n this.renderer.removeClass(\r\n this.receiptParentElement.nativeElement,\r\n 'disabled'\r\n );\r\n }\r\n } else {\r\n if (this.receiptEmpty(receiptValues)) {\r\n receiptParent.disable();\r\n this.renderer.addClass(\r\n this.receiptParentElement.nativeElement,\r\n 'disabled'\r\n );\r\n }\r\n }\r\n }\r\n\r\n // this.log.verbose('ExpenseDetailAddComponent:ExpenseDetailAddComponent:receiptParent:valueChanges:setupSubscriptions:receiptForm, receiptParent', receiptForm, receiptParent);\r\n // if (!this.receiptEmpty(this.selectedReceipt)) {\r\n // receiptParent.enable();\r\n // // receiptParent.updateValueAndValidity();\r\n // } else {\r\n // receiptParent.disable();\r\n // }\r\n });\r\n\r\n controls['RptTask'].valueChanges\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(item => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:ExpenseDetailAddComponent:RptTask:valueChanges',\r\n task: item\r\n });\r\n const task = this.tasks.find(x => x.TaskListID === item);\r\n this.SelectTask.emit(task);\r\n });\r\n\r\n controls['EIListID'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(x => !!x)\r\n )\r\n .subscribe(expenseItem => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:ExpenseDetailAddComponent:EIListID:valueChanges',\r\n expenseItem\r\n });\r\n this.SelectExpense.emit(expenseItem);\r\n });\r\n }\r\n receiptEmpty(receipt: IExpenseReceipt) {\r\n if (receipt) {\r\n const hasData =\r\n receipt.Unique_Id ||\r\n receipt.ReceiptTax ||\r\n receipt.ReceiptTotal ||\r\n receipt.ReceiptDescription ||\r\n receipt.Creditaccountlistid;\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:receiptEmpty',\r\n receipt,\r\n hasData\r\n });\r\n return !hasData;\r\n }\r\n return true;\r\n }\r\n\r\n onSelectDetail(item?: IExpenseLine) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSelectDetail',\r\n item\r\n });\r\n this.SelectDetail.emit(item);\r\n }\r\n\r\n patchForm(item: IExpenseLine) {\r\n if (item) {\r\n const controls = this.addExpenseDetailForm.controls;\r\n if (controls) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:patchForm',\r\n item\r\n });\r\n\r\n controls['ExpReportNbr'].patchValue(item.ExpReportNbr);\r\n controls['ExpenseGroupId'].patchValue(item.ExpenseGroupId);\r\n controls['ExpenseID'].patchValue(item.ExpenseID);\r\n controls['EmpAuthID'].patchValue(item.EmpAuthID);\r\n controls['Row_Version'].patchValue(item.Row_Version);\r\n controls['TravelTypeID'].patchValue(item.TravelTypeID);\r\n controls['SequenceId'].patchValue(item.SequenceId);\r\n controls['Purpose'].patchValue(item.Purpose);\r\n controls['EIListID'].patchValue(item.EIListID);\r\n }\r\n this.addExpenseDetailForm.markAsUntouched();\r\n this.addExpenseDetailForm.markAsPristine();\r\n } else {\r\n this.addExpenseDetailForm.reset({\r\n ExpReportNbr: { value: null },\r\n ExpenseGroupId: { value: null },\r\n ExpenseID: { value: null },\r\n EmpAuthID: { value: null },\r\n Row_Version: { value: null },\r\n RptTask: { value: null },\r\n EIListID: { value: null },\r\n TravelTypeID: { value: null },\r\n SequenceId: { value: null },\r\n Purpose: { value: null }\r\n });\r\n }\r\n }\r\n onAddDetail() {\r\n this.onSelectDetail();\r\n }\r\n onSelectReceipt(receipt: IExpenseReceipt) {\r\n this.log.debug({\r\n type: 'ExpenseDetailAddComponent.onSelectReceipt',\r\n receipt\r\n });\r\n this.SelectReceipt.next(receipt);\r\n }\r\n\r\n onSetPostalCode(postalCode) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetPostalCode:values',\r\n postalCode\r\n });\r\n this.SetPostalCode.emit(postalCode);\r\n }\r\n onSetPostalCode2(postalCode) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetPostalCode:values',\r\n postalCode\r\n });\r\n this.SetPostalCode2.emit(postalCode);\r\n }\r\n onSetCity(city) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetCity:values',\r\n city\r\n });\r\n this.SetCity.emit(city);\r\n }\r\n onSetState(state) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetState:values',\r\n state\r\n });\r\n this.SetState.emit(state);\r\n }\r\n onSetFromCity(city) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetFromCity:values',\r\n city\r\n });\r\n this.SetFromCity.emit(city);\r\n }\r\n onSetFromState(state) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetFromState:values',\r\n state\r\n });\r\n this.SetFromState.emit(state);\r\n }\r\n onSetToCity(city) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetToCity:values',\r\n city\r\n });\r\n this.SetToCity.emit(city);\r\n }\r\n onSetToState(state) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetToState:values',\r\n state\r\n });\r\n this.SetToState.emit(state);\r\n }\r\n onSetTravelStart(startDate) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetTravelStart:values',\r\n startDate\r\n });\r\n this.SetTravelStart.emit(startDate);\r\n }\r\n onSetTravelEnd(endDate) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetTravelEnd:values',\r\n endDate\r\n });\r\n this.SetTravelEnd.emit(endDate);\r\n }\r\n onSetPerDiemType(pdType) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetPerDiemType:values',\r\n pdType\r\n });\r\n this.SetPerDiemType.emit(pdType);\r\n this.selectedPerDiemType = pdType;\r\n }\r\n onSetLocale(locale) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetLocale:values',\r\n locale\r\n });\r\n this.SetLocale.emit(locale);\r\n }\r\n onSetTripLegType(legType) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetTripLegType:values',\r\n legType\r\n });\r\n this.SetTripLegType.emit(legType);\r\n }\r\n onSetDestination(rate: ITravelRate) {\r\n // if (!rate) { return; }\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetDestination:values',\r\n rate\r\n });\r\n this.SetDestination.emit(rate);\r\n }\r\n onSetMileageType(mileageType: ITravelMode) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetMileageType:values',\r\n mileageType\r\n });\r\n this.SetMileageType.emit(mileageType);\r\n }\r\n onSetMileage(mileage: number) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSetMileageType:values',\r\n mileage\r\n });\r\n this.SetMileage.emit(mileage);\r\n }\r\n onUploadReceiptAttachment(attachment) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onUploadReceiptAttachment:attachment',\r\n attachment\r\n });\r\n this.UploadReceiptAttachment.emit(attachment);\r\n }\r\n onPerDiemCanCloseChanged(canClose: boolean) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onPerDiemCanCloseChanged',\r\n canClose\r\n });\r\n this.PerDiemCanCloseSubject.next(canClose);\r\n }\r\n onMileageCanCloseChanged(canClose: boolean) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onMileageCanCloseChanged',\r\n canClose\r\n });\r\n this.MileageCanCloseSubject.next(canClose);\r\n }\r\n onReceiptCanCloseChanged(canClose: boolean) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onReceiptCanCloseChanged',\r\n canClose\r\n });\r\n this.ReceiptCanCloseSubject.next(canClose);\r\n }\r\n onAttachmentError($event) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onAttachmentError',\r\n $event\r\n });\r\n this.AttachmentError.next($event);\r\n }\r\n onSelectAttachment($event) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:onSelectAttachment',\r\n $event\r\n });\r\n this.SelectAttachment.next($event);\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, startWith, tap } from 'rxjs/operators';\r\nimport * as fromLookup from '../../../../../../lookups';\r\nimport { LoggingService } from '../../../../../../shared/services/logging';\r\nimport { LocaleEnum } from '../../../../../expense-enums';\r\nimport * as fromCity from '../../../../../store/city';\r\n\r\n@Component({\r\n selector: 'ef-expense-detail-city-state-zip-container',\r\n templateUrl: './expense-detail-city-state-zip-container.component.html',\r\n styleUrls: ['./expense-detail-city-state-zip-container.component.scss']\r\n})\r\nexport class ExpenseDetailCityStateZipContainerComponent\r\n implements OnInit, OnDestroy, OnChanges\r\n{\r\n public cities$: Observable;\r\n public states$: Observable;\r\n public countries$: Observable;\r\n public areas$: Observable;\r\n public locations$: Observable;\r\n @Input() public locale: LocaleEnum;\r\n @Input() public selectedCity: fromCity.City;\r\n @Input() public selectedState: fromLookup.IState;\r\n @Input() public selectedPostalCode: string;\r\n @Input() public selectedCountryArea: fromLookup.ILocation;\r\n @Input() public selectedLocation: fromLookup.ILocation;\r\n @Input() showAddressDialog: boolean;\r\n @Output() showAddressDialogChange = new EventEmitter();\r\n @Output() SetAddressData = new EventEmitter();\r\n private SetPostalCode = new ReplaySubject(1);\r\n private active = true;\r\n\r\n constructor(private log: LoggingService, private store: Store) {}\r\n\r\n ngOnInit(): void {\r\n this.cities$ = this.store.pipe(select(fromCity.selectAll));\r\n this.states$ = combineLatest([\r\n this.SetPostalCode.pipe(\r\n startWith(null as string),\r\n tap(postalCode =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:states$:postalCode',\r\n postalCode\r\n })\r\n )\r\n ),\r\n this.store.pipe(\r\n select(fromCity.selectAll),\r\n startWith(null as fromCity.City[]),\r\n tap(cities =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:states$:cities',\r\n cities\r\n })\r\n )\r\n ),\r\n this.store.pipe(\r\n select(fromLookup.getStates),\r\n tap(states =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:states$:states',\r\n states\r\n })\r\n )\r\n )\r\n ]).pipe(\r\n tap(([postalCode, cities, states]) =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:states$:postalCode, cities, states',\r\n states,\r\n cities,\r\n postalCode\r\n })\r\n ),\r\n map(([postalCode, cities, states]) =>\r\n !!postalCode && cities && cities.length\r\n ? cities.map(city => ({ State: city.State }))\r\n : states\r\n )\r\n );\r\n\r\n this.countries$ = this.store.pipe(select(fromLookup.getCountries));\r\n this.areas$ = this.store.pipe(select(fromLookup.getAreas));\r\n this.locations$ = this.store.pipe(select(fromLookup.getLocations));\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:ngOnChanges',\r\n changes\r\n });\r\n if (\r\n changes &&\r\n changes.selectedPostalCode &&\r\n changes.selectedPostalCode.currentValue\r\n ) {\r\n this.store.dispatch(\r\n fromCity.getCitys({\r\n ZipCode: changes.selectedPostalCode.currentValue\r\n })\r\n );\r\n } else {\r\n if (\r\n changes &&\r\n changes.selectedState &&\r\n changes.selectedState.currentValue\r\n ) {\r\n this.store.dispatch(\r\n fromCity.getCitys({\r\n State: changes.selectedState.currentValue.State\r\n })\r\n );\r\n }\r\n }\r\n }\r\n onSelectState(state: fromLookup.IState) {\r\n if (this.selectedState !== state) {\r\n this.selectedState = state;\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:onSelectState',\r\n state,\r\n locale: this.locale\r\n });\r\n if (this.locale === LocaleEnum.Domestic) {\r\n this.store.dispatch(fromCity.getCitys({ State: state.State }));\r\n } else {\r\n this.store.dispatch(\r\n new fromLookup.LoadLocations({\r\n locale: this.locale,\r\n countryArea: state.State\r\n })\r\n );\r\n }\r\n }\r\n }\r\n onSelectPostalCode(postalCode: string) {\r\n if (this.selectedPostalCode !== postalCode) {\r\n this.selectedPostalCode = postalCode;\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:onSelectPostalCode',\r\n postalCode,\r\n locale: this.locale\r\n });\r\n this.store.dispatch(fromCity.loadCitys({ citys: [] }));\r\n this.store.dispatch(fromCity.getCitys({ ZipCode: postalCode }));\r\n this.SetPostalCode.next(postalCode);\r\n }\r\n }\r\n onSelectCountry(location: fromLookup.ILocation) {\r\n if (this.selectedCountryArea !== location) {\r\n this.selectedCountryArea = location;\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:onSelectCountry',\r\n location,\r\n locale: this.locale\r\n });\r\n this.store.dispatch(\r\n new fromLookup.LoadLocations({\r\n locale: this.locale,\r\n countryArea: location.CountryArea\r\n })\r\n );\r\n }\r\n }\r\n onClose($event) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipContainerComponent:onClose',\r\n $event\r\n });\r\n if (!!$event) {\r\n this.SetAddressData.next($event);\r\n }\r\n this.showAddressDialogChange.next(false);\r\n }\r\n}\r\n","export * from './expense-detail-city-state-zip-container.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport {\r\n debounceTime,\r\n filter,\r\n pairwise,\r\n startWith,\r\n takeWhile,\r\n tap\r\n} from 'rxjs/operators';\r\nimport * as fromLookup from '../../../../../../lookups';\r\nimport { LoggingService } from '../../../../../../shared/services/logging';\r\nimport { LocaleEnum } from '../../../../../expense-enums';\r\nimport { City } from '../../../../../store/city/city.model';\r\n\r\n@Component({\r\n selector: 'ef-expense-detail-city-state-zip',\r\n templateUrl: './expense-detail-city-state-zip.component.html',\r\n styleUrls: ['./expense-detail-city-state-zip.component.scss']\r\n})\r\nexport class ExpenseDetailCityStateZipComponent\r\n implements AfterViewInit, OnChanges, OnDestroy\r\n{\r\n public formDomestic: FormGroup;\r\n public formForeign: FormGroup;\r\n public formOCONUS: FormGroup;\r\n @Input() cities: City[];\r\n @Input() states: fromLookup.IState[];\r\n @Input() countries: fromLookup.ILocation[];\r\n @Input() areas: fromLookup.ILocation[];\r\n @Input() locations: fromLookup.ILocation[];\r\n @Input() selectedCity: City;\r\n @Input() selectedState: fromLookup.IState;\r\n @Input() selectedPostalCode: string;\r\n @Input() selectedCountryArea: fromLookup.ILocation;\r\n @Input() selectedLocation: fromLookup.ILocation;\r\n @Input() locale: LocaleEnum;\r\n @Output() SelectState = new EventEmitter();\r\n @Output() SelectCountryArea = new EventEmitter();\r\n @Output() SelectCity = new EventEmitter();\r\n @Output() SelectPostalCode = new EventEmitter();\r\n @Output() SelectCountry = new EventEmitter();\r\n @Output() SelectLocation = new EventEmitter();\r\n @Output() Close = new EventEmitter();\r\n @Input() showAddressDialog: boolean;\r\n @Output() showAddressDialogChange = new EventEmitter();\r\n private active = true;\r\n public get CountryArea(): string {\r\n return this.locale === LocaleEnum.Foreign ? 'Country' : 'Area';\r\n }\r\n public LocaleEnum: any;\r\n constructor(private log: LoggingService) {\r\n this.formDomestic = new FormGroup({\r\n PostalCode: new FormControl(),\r\n State: new FormControl(null, Validators.required),\r\n City: new FormControl(null, Validators.required)\r\n });\r\n this.formForeign = new FormGroup({\r\n CountryArea: new FormControl(null, Validators.required),\r\n Location: new FormControl(null, Validators.required)\r\n });\r\n this.formOCONUS = new FormGroup({\r\n CountryArea: new FormControl(null, Validators.required),\r\n Location: new FormControl(null, Validators.required)\r\n });\r\n this.LocaleEnum = LocaleEnum;\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:ngOnChanges',\r\n changes\r\n });\r\n const controlsDomestic = this.formDomestic.controls;\r\n const controlsForeign = this.formForeign.controls;\r\n const controlsOCONUS = this.formOCONUS.controls;\r\n // if (changes && changes.locale) {\r\n // this.setValidators(changes.locale.currentValue);\r\n // }\r\n if (\r\n changes &&\r\n changes.selectedState &&\r\n changes.selectedState.currentValue\r\n ) {\r\n controlsDomestic.State.setValue(changes.selectedState.currentValue);\r\n }\r\n if (\r\n changes &&\r\n changes.selectedCountryArea &&\r\n changes.selectedCountryArea.currentValue &&\r\n changes.selectedCountryArea.currentValue.CountryArea\r\n ) {\r\n controlsForeign.CountryArea.setValue(\r\n changes.selectedCountryArea.currentValue\r\n );\r\n controlsOCONUS.CountryArea.setValue(\r\n changes.selectedCountryArea.currentValue\r\n );\r\n }\r\n if (\r\n changes &&\r\n changes.selectedLocation &&\r\n changes.selectedLocation.currentValue &&\r\n changes.selectedLocation.currentValue.Destination\r\n ) {\r\n controlsForeign.Location.setValue(\r\n changes.selectedLocation.currentValue\r\n );\r\n controlsOCONUS.Location.setValue(\r\n changes.selectedLocation.currentValue\r\n );\r\n }\r\n if (\r\n changes &&\r\n changes.selectedCity &&\r\n changes.selectedCity.currentValue &&\r\n changes.selectedCity.currentValue.City\r\n ) {\r\n controlsDomestic.City.setValue(changes.selectedCity.currentValue);\r\n }\r\n if (changes && changes.selectedPostalCode) {\r\n controlsDomestic.PostalCode.setValue(\r\n changes.selectedPostalCode.currentValue\r\n );\r\n }\r\n if (changes && changes.locations) {\r\n if (\r\n changes.locations.currentValue &&\r\n changes.locations.currentValue.length === 1\r\n ) {\r\n controlsForeign.Location.setValue(\r\n changes.locations.currentValue[0]\r\n );\r\n }\r\n }\r\n if (changes && changes.states) {\r\n if (\r\n changes.states.currentValue &&\r\n changes.states.currentValue.length === 1\r\n ) {\r\n controlsDomestic.State.setValue(changes.states.currentValue[0]);\r\n }\r\n }\r\n if (changes && changes.cities) {\r\n if (\r\n changes.cities.currentValue &&\r\n changes.cities.currentValue.length === 1\r\n ) {\r\n controlsDomestic.City.setValue(changes.cities.currentValue[0]);\r\n }\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n const controlsDomestic = this.formDomestic.controls;\r\n const controlsForeign = this.formForeign.controls;\r\n const controlsOCONUS = this.formOCONUS.controls;\r\n controlsDomestic.PostalCode.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n controlsDomestic['State'].setValue(null, { emitEvent: false });\r\n controlsDomestic['City'].setValue(null, { emitEvent: false });\r\n });\r\n controlsDomestic.PostalCode.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(750)\r\n )\r\n .subscribe(value => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:onSelectPostalCode',\r\n value\r\n });\r\n this.SelectPostalCode.emit(value);\r\n });\r\n controlsDomestic.PostalCode.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(value => !value)\r\n )\r\n .subscribe(value => controlsDomestic.State.setValue(null));\r\n\r\n // clear the city when the state changes\r\n controlsDomestic.State.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n startWith(this.selectedState),\r\n tap(state =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:controlsDomestic.State.valueChanges',\r\n state\r\n })\r\n ),\r\n pairwise(),\r\n tap(([prev, next]) =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:controlsDomestic.State.valueChanges',\r\n prev,\r\n next\r\n })\r\n ),\r\n filter(([prev, next]) => !!prev && !!next),\r\n filter(([prev, next]) => prev !== next)\r\n )\r\n .subscribe(([prev, next]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:State:valueChanges',\r\n prev,\r\n next\r\n });\r\n controlsDomestic.City.setValue(null);\r\n });\r\n // clear the location when countryarea changes\r\n controlsForeign.CountryArea.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n startWith(this.selectedCountryArea),\r\n tap(country =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:controlsForeign.CountryArea.valueChanges',\r\n country\r\n })\r\n ),\r\n pairwise(),\r\n tap(([prev, next]) =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:controlsForeign.CountryArea.valueChanges',\r\n prev,\r\n next\r\n })\r\n ),\r\n filter(([prev, next]) => !!prev && !!next),\r\n filter(([prev, next]) => prev !== next)\r\n )\r\n .subscribe(([prev, next]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:controlsForeign.CountryArea.valueChanges',\r\n prev,\r\n next\r\n });\r\n controlsForeign.Location.setValue(null);\r\n });\r\n // clear the location when countryarea changes\r\n controlsOCONUS.CountryArea.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n startWith(this.selectedCountryArea),\r\n tap(area =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:controlsOCONUS.CountryArea.valueChanges',\r\n area\r\n })\r\n ),\r\n pairwise(),\r\n tap(([prev, next]) =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:controlsOCONUS.CountryArea.valueChanges',\r\n prev,\r\n next\r\n })\r\n ),\r\n filter(([prev, next]) => !!prev && !!next),\r\n filter(([prev, next]) => prev !== next)\r\n )\r\n .subscribe(([prev, next]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailCityStateZipComponent:ontrolsOCONUS.CountryArea.valueChanges',\r\n prev,\r\n next\r\n });\r\n controlsOCONUS.Location.setValue(null);\r\n });\r\n }\r\n}\r\n","export * from './expense-detail-city-state-zip.component';\r\n","export * from './expense-detail-city-state-zip-container';\r\nexport * from './expense-detail-city-state-zip-presenter';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { BehaviorSubject, combineLatest, fromEvent, ReplaySubject } from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n filter,\r\n map,\r\n share,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromLookup from '../../../../../lookups';\r\nimport {\r\n AbstractFormGroupComponent,\r\n DialogService\r\n} from '../../../../../shared';\r\nimport { LoggingService } from '../../../../../shared/services/logging/logging.service';\r\nimport { IExpenseLine } from '../../../../IExpenseLine';\r\nimport { ITravelMode } from '../../../../ITravelMode';\r\nimport { ITravelRate } from '../../../../ITravelRate';\r\nimport { City } from '../../../../store/city';\r\n\r\n@Component({\r\n selector: 'ef-expense-detail-mileage',\r\n templateUrl: './expense-detail-mileage.component.html',\r\n styleUrls: ['./expense-detail-mileage.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ExpenseDetailMileageComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ExpenseDetailMileageComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseDetailMileageComponent\r\n extends AbstractFormGroupComponent\r\n implements AfterViewInit, OnDestroy, OnChanges\r\n{\r\n public addMileageForm: FormGroup;\r\n @Input() travelModes: Array;\r\n private StatesSubject = new BehaviorSubject([]);\r\n public State1Subject = new BehaviorSubject([]);\r\n public State2Subject = new BehaviorSubject([]);\r\n public City1Subject = new BehaviorSubject[]>([]);\r\n public City2Subject = new BehaviorSubject[]>([]);\r\n private CitiesSubject = new BehaviorSubject([]);\r\n private MileageSubject = new ReplaySubject(1);\r\n private TravelRatesSubject = new ReplaySubject>(1);\r\n private TravelTypeSubject = new ReplaySubject(1);\r\n private OpenLocationSubject = new ReplaySubject(1);\r\n private _travelType: fromLookup.ITravelType;\r\n private _states: Array;\r\n private _travelRates: Array;\r\n private _selectedRate: ITravelRate;\r\n @Input() public set states(value: Array) {\r\n this._states = value;\r\n this.StatesSubject.next(value);\r\n this.log.debug({\r\n type: 'ExpenseDetailMileageComponent:states:set',\r\n value\r\n });\r\n }\r\n public get states(): Array {\r\n return this._states;\r\n }\r\n @Input() public set cities(value: Array) {\r\n this.log.debug({\r\n type: 'ExpenseDetailMileageComponent:cities:set',\r\n value\r\n });\r\n this.CitiesSubject.next(value);\r\n }\r\n private _mileage: IExpenseLine;\r\n public get mileage(): IExpenseLine {\r\n return this._mileage;\r\n }\r\n @Input() public set mileage(value: IExpenseLine) {\r\n this._mileage = clone(value);\r\n this.addMileageForm.reset();\r\n this.MileageSubject.next(this._mileage);\r\n }\r\n @Input() set travelRates(value: Array) {\r\n this.log.debug({\r\n type: 'ExpenseDetailMileageComponent:travelRates:set',\r\n value\r\n });\r\n this._travelRates = value;\r\n this.TravelRatesSubject.next(value);\r\n }\r\n get travelRates(): Array {\r\n return this._travelRates;\r\n }\r\n @Input() public set selectedRate(value: ITravelRate) {\r\n this.log.debug({\r\n type: 'ExpenseDetailMileageComponent:selectedRate:set',\r\n value\r\n });\r\n this._selectedRate = value;\r\n }\r\n public get selectedRate(): ITravelRate {\r\n return this._selectedRate;\r\n }\r\n @Input() public set travelType(value: fromLookup.ITravelType) {\r\n this._travelType = value;\r\n this.TravelTypeSubject.next(value);\r\n }\r\n public get travelType(): fromLookup.ITravelType {\r\n return this._travelType;\r\n }\r\n @Output() SetTravelStart = new EventEmitter();\r\n @Output() SetTravelEnd = new EventEmitter();\r\n @Output() SetMileageType = new EventEmitter();\r\n @Output() SetMileage = new EventEmitter();\r\n @Output() SetPostalCode = new EventEmitter();\r\n @Output() SetPostalCode2 = new EventEmitter();\r\n @Output() SetFromCity = new EventEmitter();\r\n @Output() SetToCity = new EventEmitter();\r\n @Output() SetFromState = new EventEmitter();\r\n @Output() SetToState = new EventEmitter();\r\n @Output() SetDestination = new EventEmitter();\r\n @Output() canCloseChanged = new EventEmitter();\r\n @ViewChild('fromState', { read: ElementRef, static: true })\r\n fromStateEl: ElementRef;\r\n @ViewChild('fromCity', { read: ElementRef, static: true })\r\n fromCityEl: ElementRef;\r\n @ViewChild('toState', { read: ElementRef, static: true })\r\n toStateEl: ElementRef;\r\n @ViewChild('toCity', { read: ElementRef, static: true })\r\n toCityEl: ElementRef;\r\n @ViewChild('travelMode', { read: ElementRef, static: true })\r\n travelModeEl: ElementRef;\r\n private active = true;\r\n showAddressDialog = false;\r\n mileageFrom = true;\r\n constructor(\r\n protected log: LoggingService,\r\n public dialogService: DialogService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n super(log, cdRef);\r\n this.addMileageForm = new FormGroup(\r\n {\r\n TravelStartDate: new FormControl(),\r\n TravelEndDate: new FormControl(),\r\n Zipcode1: new FormControl(),\r\n State1: new FormControl(),\r\n City1: new FormControl(),\r\n Zipcode2: new FormControl(),\r\n State2: new FormControl(),\r\n City2: new FormControl(),\r\n Mileage: new FormControl(),\r\n RateTypeID: new FormControl(null, Validators.required),\r\n Amount: new FormControl(null),\r\n Mileage_Rate: new FormControl(null)\r\n },\r\n { validators: this.validateMileage }\r\n );\r\n this.form = this.addMileageForm;\r\n }\r\n validateMileage: ValidatorFn = (\r\n ctrl: AbstractControl\r\n ): ValidationErrors | null => {\r\n const zip1 = ctrl.get('Zipcode1')?.value;\r\n const zip2 = ctrl.get('Zipcode2')?.value;\r\n const state1 = ctrl.get('State1')?.value;\r\n const state2 = ctrl.get('State2')?.value;\r\n\r\n const zip1Valid: boolean = zip1 && zip1.length > 4;\r\n const state1Valid: boolean = state1?.State;\r\n const zip2Valid: boolean = zip2 && zip2.length > 4;\r\n const state2Valid: boolean = state2?.State;\r\n\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:validateMileage',\r\n zip1,\r\n zip2,\r\n state1,\r\n state2,\r\n zip1Valid,\r\n state1Valid,\r\n zip2Valid,\r\n state2Valid\r\n });\r\n if (!(zip1Valid || state1Valid)) {\r\n return {\r\n location1: { location1: 'Zipcode1 or State1 is required' }\r\n };\r\n }\r\n if (!(zip2Valid || state2Valid)) {\r\n return {\r\n location2: { location2: 'Zipcode2 or State2 is required' }\r\n };\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:validateMileage',\r\n valid: true\r\n });\r\n return null;\r\n };\r\n\r\n ngAfterViewInit() {\r\n this.setupSubscriptions();\r\n this.setupScrolls();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:ngOnChanges',\r\n changes\r\n });\r\n }\r\n setupScrolls() {\r\n fromEvent(this.travelModeEl.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(event => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent: travelModeEl:click',\r\n event\r\n });\r\n this.travelModeEl.nativeElement.scrollIntoView({\r\n block: 'end'\r\n });\r\n });\r\n }\r\n setupSubscriptions() {\r\n const controls = this.addMileageForm.controls;\r\n\r\n this.MileageSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n mileage => this.patchForm(mileage)\r\n );\r\n\r\n this.StatesSubject.pipe(\r\n filter(states => !!states && states.length > 0),\r\n take(1),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:StatesSubject:setInitialStates',\r\n x\r\n })\r\n )\r\n ).subscribe(states => {\r\n this.State1Subject.next(states);\r\n this.State2Subject.next(states);\r\n });\r\n\r\n combineLatest([this.TravelRatesSubject, controls.State1.valueChanges])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(([rates]) => rates && rates.length > 0),\r\n filter(\r\n ([rates, state]) =>\r\n !state || rates.some(x => x.State === state.State)\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:TravelRatesSubject,State1',\r\n x\r\n })\r\n ),\r\n map(([rates, state]) =>\r\n state ? rates.find(r => r.State === state.State) : rates[0]\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:TravelRatesSubject,State1:mapped',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(rate => {\r\n this.SetDestination.emit(rate);\r\n controls.Amount.patchValue(rate.Amount);\r\n controls.Mileage_Rate.patchValue(rate.Mileage_Rate);\r\n });\r\n this.addMileageForm.statusChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n // this.log.verbose({\r\n // type: 'ExpenseDetailMileageComponent:addMileageForm:statusChanges',\r\n // value,\r\n // form: this.addMileageForm\r\n // });\r\n });\r\n this.addMileageForm.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:addMileageForm:valueChanges',\r\n value,\r\n form: this.addMileageForm\r\n });\r\n this.canCloseChanged.next(\r\n this.form.untouched || this.form.pristine\r\n );\r\n });\r\n\r\n this.SetPostalCode.pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x),\r\n // startWith(null as any),\r\n debounceTime(500),\r\n withLatestFrom(this.CitiesSubject),\r\n withLatestFrom(this.StatesSubject),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:SetPostalCode',\r\n x\r\n })\r\n )\r\n ).subscribe(([[zip, cities], states]) => {\r\n this.State1Subject.next(states);\r\n this.City1Subject.next(cities);\r\n if (zip) {\r\n // setTimeout(() => {\r\n // if (states.length === 1) {\r\n // this.addMileageForm.controls.State1.setValue(\r\n // states[0]\r\n // );\r\n // } else {\r\n // this.addMileageForm.controls.State1.setValue(null);\r\n // }\r\n // this.addMileageForm.controls.City1.setValue(cities[0]);\r\n // }, 0);\r\n } else {\r\n // this.SetToState.next('');\r\n // this.SetToCity.next('');\r\n // controls.State1.reset();\r\n // controls.City1.reset();\r\n }\r\n });\r\n\r\n this.SetPostalCode2.pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x),\r\n // startWith(null as any),\r\n debounceTime(500),\r\n withLatestFrom(this.CitiesSubject),\r\n withLatestFrom(this.StatesSubject),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:SetPostalCode2',\r\n x\r\n })\r\n )\r\n ).subscribe(([[zip, cities], states]) => {\r\n this.State2Subject.next(states);\r\n this.City2Subject.next(cities);\r\n if (zip) {\r\n // setTimeout(() => {\r\n // if (states.length === 1) {\r\n // this.addMileageForm.controls.State2.setValue(\r\n // states[0]\r\n // );\r\n // } else {\r\n // this.addMileageForm.controls.State2.setValue(null);\r\n // }\r\n // this.addMileageForm.controls.City2.setValue(cities[0]);\r\n // }, 0);\r\n } else {\r\n // this.SetToState.next('');\r\n // this.SetToCity.next('');\r\n // controls.State2.reset();\r\n // controls.City2.reset();\r\n }\r\n });\r\n controls.TravelStartDate.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:TravelStartDate:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n this.SetTravelStart.emit(new Date(moment(x).format('L')));\r\n });\r\n controls.TravelEndDate.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:TravelEndDate:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n this.SetTravelEnd.emit(new Date(moment(x).format('L')));\r\n });\r\n controls.RateTypeID.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:RateTypeID:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(mileageType => {\r\n this.SetMileageType.next(mileageType);\r\n });\r\n controls.Mileage.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:Mileage:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(mileage => {\r\n this.SetMileage.next(mileage);\r\n });\r\n controls.Zipcode1.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:Zipcode1:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n const zip = controls['Zipcode1'];\r\n if (zip.valid) {\r\n this.SetPostalCode.emit(zip.value);\r\n }\r\n });\r\n controls.Zipcode2.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:Zipcode2:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n const zip = controls['Zipcode2'];\r\n if (zip.valid) {\r\n this.SetPostalCode2.emit(zip.value);\r\n }\r\n });\r\n controls.City1.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.City),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:City1:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n const city = controls['City1'];\r\n if (city.valid) {\r\n this.SetFromCity.emit(city.value);\r\n }\r\n });\r\n controls.City2.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.City),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:City2:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n const city = controls['City2'];\r\n if (city.valid) {\r\n this.SetToCity.emit(city.value);\r\n }\r\n });\r\n\r\n const sharedState1 = controls.State1.valueChanges.pipe(share());\r\n\r\n sharedState1\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && !!x.State),\r\n debounceTime(500),\r\n tap(state =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:State1:values',\r\n state\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(state => {\r\n if (state) {\r\n this.SetFromState.emit(state.State);\r\n this.CitiesSubject.pipe(\r\n tap(cities =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:State1:values:cities',\r\n cities\r\n })\r\n ),\r\n filter(\r\n cities =>\r\n state &&\r\n cities.some(x => x.State === state.State)\r\n ),\r\n take(1),\r\n map(cities =>\r\n cities.sort((a, b) =>\r\n a.City.toLocaleLowerCase().localeCompare(\r\n b.City.toLocaleLowerCase()\r\n )\r\n )\r\n )\r\n ).subscribe(cities => this.City1Subject.next(cities));\r\n }\r\n });\r\n\r\n const sharedState2 = controls.State2.valueChanges.pipe(share());\r\n sharedState2\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && !!x.State),\r\n debounceTime(500),\r\n tap(state =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:State2:values',\r\n state\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(state => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:State2:subscribe',\r\n state\r\n });\r\n if (state) {\r\n this.SetToState.emit(state.State);\r\n this.CitiesSubject.pipe(\r\n tap(cities =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:State2:values:cities',\r\n cities\r\n })\r\n ),\r\n filter(\r\n cities =>\r\n state &&\r\n cities.some(x => x.State === state.State)\r\n ),\r\n take(1),\r\n map(cities =>\r\n cities.sort((a, b) =>\r\n a.City.toLocaleLowerCase().localeCompare(\r\n b.City.toLocaleLowerCase()\r\n )\r\n )\r\n )\r\n ).subscribe(cities => this.City2Subject.next(cities));\r\n }\r\n });\r\n }\r\n patchForm(value: IExpenseLine) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:patchMileage',\r\n value\r\n });\r\n if (value) {\r\n const controls = this.addMileageForm.controls;\r\n let start = moment(value.TravelStartDate); // .startOf('day');\r\n let stop = moment(value.TravelEndDate); // .startOf('day');\r\n if (!start.isValid()) {\r\n start = moment();\r\n }\r\n if (!stop.isValid()) {\r\n stop = moment();\r\n }\r\n if (value.TravelStartDate) {\r\n controls.TravelStartDate.patchValue(\r\n new Date(start.format('L'))\r\n );\r\n } else {\r\n controls.TravelStartDate.reset();\r\n }\r\n if (value.TravelEndDate) {\r\n controls.TravelEndDate.patchValue(new Date(stop.format('L')));\r\n } else {\r\n controls.TravelEndDate.reset();\r\n }\r\n controls.Zipcode1.patchValue(value.Zipcode1);\r\n controls.Zipcode2.patchValue(value.Zipcode2);\r\n this.City1Subject.next([{ City: value.City1 }]);\r\n this.City2Subject.next([{ City: value.City2 }]);\r\n this.State1Subject.next([{ State: value.State1 }]);\r\n this.State2Subject.next([{ State: value.State2 }]);\r\n // setTimeout(() => {\r\n controls.City1.patchValue({ City: value.City1 });\r\n controls.City2.patchValue({ City: value.City2 });\r\n controls.State1.patchValue({ State: value.State1 });\r\n controls.State2.patchValue({ State: value.State2 });\r\n // }, 0);\r\n\r\n controls.Mileage.patchValue(value.Mileage);\r\n controls.RateTypeID.patchValue(\r\n this.travelModes.find(x => x.RateTypeID === value.RateTypeID)\r\n );\r\n controls.Amount.patchValue(value.Amount);\r\n controls.Mileage_Rate.patchValue(value.Mileage_Rate);\r\n\r\n this.SetTravelStart.emit(value.TravelStartDate);\r\n this.SetTravelEnd.emit(value.TravelEndDate);\r\n this.SetPostalCode.emit(value.Zipcode1);\r\n this.SetFromCity.emit(value.City1);\r\n this.SetFromState.emit(value.State1);\r\n this.SetPostalCode2.emit(value.Zipcode2);\r\n this.SetToState.emit(value.State2);\r\n this.SetToCity.emit(value.City2);\r\n this.SetMileage.emit(value.Mileage);\r\n this.SetMileageType.emit(\r\n this.travelModes.find(x => x.RateTypeID === value.RateTypeID)\r\n );\r\n } else {\r\n this.addMileageForm.reset();\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:patchMileage',\r\n addMileageForm: this.addMileageForm.value\r\n });\r\n }\r\n onFromLocationClick() {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:onFromLocationClick',\r\n mileage: this.mileage\r\n });\r\n this.mileageFrom = true;\r\n // setTimeout(() => {\r\n this.showAddressDialog = true;\r\n // }, 0);\r\n }\r\n onToLocationClick() {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:onToLocationClick',\r\n mileage: this.mileage\r\n });\r\n this.mileageFrom = false;\r\n // setTimeout(() => {\r\n this.showAddressDialog = true;\r\n // }, 0);\r\n }\r\n onSetAddressData(value) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:onSetAddressData',\r\n value,\r\n mileageFrom: this.mileageFrom\r\n });\r\n if (value) {\r\n if (this.mileageFrom) {\r\n this.mileage.Zipcode1 = value.PostalCode;\r\n this.mileage.City1 = value.City.City;\r\n this.mileage.State1 = value.State.State;\r\n } else {\r\n this.mileage.Zipcode2 = value.PostalCode;\r\n this.mileage.City2 = value.City.City;\r\n this.mileage.State2 = value.State.State;\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:onSetAddressData2',\r\n value,\r\n mileage: { ...this.mileage }\r\n });\r\n // if (this.mileage.ExpReportNbr > 0) {\r\n // this.patchForm(this.mileage);\r\n // } else {\r\n const controls = this.addMileageForm.controls;\r\n if (this.mileageFrom) {\r\n controls.Zipcode1.patchValue(value.PostalCode);\r\n controls.State1.patchValue(value.State);\r\n controls.City1.patchValue(value.City);\r\n controls.Zipcode1.updateValueAndValidity();\r\n controls.State1.updateValueAndValidity();\r\n controls.City1.updateValueAndValidity();\r\n } else {\r\n controls.Zipcode2.patchValue(value.PostalCode);\r\n controls.State2.patchValue(value.State);\r\n controls.City2.patchValue(value.City);\r\n controls.Zipcode2.updateValueAndValidity();\r\n controls.State2.updateValueAndValidity();\r\n controls.City2.updateValueAndValidity();\r\n }\r\n // }\r\n this.log.verbose({\r\n type: 'ExpenseDetailMileageComponent:onSetAddressData3',\r\n addMileageForm: this.addMileageForm.value\r\n });\r\n }\r\n }\r\n}\r\n","export * from './expense-detail-mileage.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, fromEvent, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n skip,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromLookup from '../../../../../lookups';\r\nimport { ILocale } from '../../../../../lookups';\r\nimport * as fromShared from '../../../../../shared';\r\nimport { AbstractFormGroupComponent } from '../../../../../shared';\r\nimport {\r\n DialogService,\r\n SelectItem\r\n} from '../../../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../../../shared/services/logging/logging.service';\r\nimport {\r\n LocaleEnum,\r\n PerDiemTypeEnum,\r\n TravelTypeEnum\r\n} from '../../../../expense-enums';\r\nimport { IExpenseLine } from '../../../../IExpenseLine';\r\nimport { ITravelRate } from '../../../../ITravelRate';\r\nimport { ITripLegType } from '../../../../ITripLegType';\r\nimport { City } from '../../../../store/city';\r\n@Component({\r\n selector: 'ef-expense-detail-per-diem',\r\n templateUrl: './expense-detail-per-diem.component.html',\r\n styleUrls: ['./expense-detail-per-diem.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ExpenseDetailPerDiemComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ExpenseDetailPerDiemComponent),\r\n multi: true\r\n },\r\n DialogService\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseDetailPerDiemComponent\r\n extends AbstractFormGroupComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private _locales: Array;\r\n private PerDiemTypesSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _perDiemTypes: Array;\r\n @Input() public set perDiemTypes(value: Array) {\r\n this._perDiemTypes = value;\r\n this.PerDiemTypesSubject.next(this._perDiemTypes);\r\n }\r\n public get perDiemTypes(): Array {\r\n return this._perDiemTypes;\r\n }\r\n @Input() set locales(value: Array) {\r\n this._locales = value;\r\n this.LocalesSubject.next(value);\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:locales:set',\r\n value\r\n });\r\n }\r\n get locales(): Array {\r\n return this._locales;\r\n }\r\n private _travelRates: Array;\r\n @Input() set travelRates(value: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:travelRates:set',\r\n value\r\n });\r\n if (value && value.length > 0) {\r\n this._travelRates = value;\r\n this.TravelRatesSubject.next(value);\r\n }\r\n }\r\n get travelRates(): Array {\r\n return this._travelRates;\r\n }\r\n private _states: Array;\r\n @Input() public set states(value: Array) {\r\n this._states = value;\r\n this.StatesSubject.next(value);\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:states:set',\r\n value\r\n });\r\n }\r\n public get states(): Array {\r\n return this._states;\r\n }\r\n private _cities: Array;\r\n @Input() public set cities(value: Array) {\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:cities:set',\r\n value\r\n });\r\n this._cities = value;\r\n this.CitiesSubject.next(this._cities);\r\n }\r\n public get cities(): Array {\r\n return this._cities;\r\n }\r\n private _countries: Array;\r\n @Input() public set countries(value: Array) {\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:countries:set',\r\n value\r\n });\r\n if (value && value.length) {\r\n this.CountriesSubject.next(value);\r\n this._countries = value;\r\n }\r\n }\r\n public get countries(): Array {\r\n return this._countries;\r\n }\r\n private _areas: Array;\r\n @Input() public set areas(value: Array) {\r\n this._areas = value;\r\n this.AreasSubject.next(value);\r\n }\r\n public get areas(): Array {\r\n return this._areas;\r\n }\r\n private _locations: Array;\r\n @Input() public set locations(value: Array) {\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:locations:set',\r\n value\r\n });\r\n this._locations = value;\r\n this.LocationsSubject.next(value);\r\n }\r\n public get locations(): Array {\r\n return this._locations;\r\n }\r\n private _tripLegTypes: Array;\r\n @Input() public set tripLegTypes(value: Array) {\r\n this._tripLegTypes = value;\r\n this.TripLegSubject.next(value);\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:tripLegTypes:set',\r\n value\r\n });\r\n }\r\n public get tripLegTypes(): Array {\r\n return this._tripLegTypes;\r\n }\r\n private PerDiemSubject = new ReplaySubject(1);\r\n private _perDiem: IExpenseLine = {};\r\n @Input() set perDiem(value: IExpenseLine) {\r\n this._perDiem = clone(value);\r\n this.PerDiemSubject.next(this._perDiem);\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:perDiem:set',\r\n value\r\n });\r\n }\r\n get perDiem(): IExpenseLine {\r\n return this._perDiem;\r\n }\r\n private _selectedRate: ITravelRate;\r\n @Input() public set selectedRate(value: ITravelRate) {\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:selectedRate:set',\r\n value\r\n });\r\n this._selectedRate = value;\r\n }\r\n public get selectedRate(): ITravelRate {\r\n return this._selectedRate;\r\n }\r\n private TravelTypeSubject = new ReplaySubject(1);\r\n private _travelType: fromLookup.ITravelType = {\r\n TravelTypeDesc: '',\r\n TravelTypeID: TravelTypeEnum.Unknown\r\n };\r\n @Input() public set travelType(value: fromLookup.ITravelType) {\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:travelType:set',\r\n value\r\n });\r\n if (value && value.TravelTypeID) {\r\n this._travelType = value;\r\n this.TravelTypeSubject.next(value);\r\n }\r\n }\r\n public get travelType(): fromLookup.ITravelType {\r\n return this._travelType;\r\n }\r\n @Output() SetPostalCode = new EventEmitter();\r\n @Output() SetCity = new EventEmitter();\r\n @Output() SetState = new EventEmitter();\r\n @Output() SetTravelStart = new EventEmitter();\r\n @Output() SetTravelEnd = new EventEmitter();\r\n @Output() SetPerDiemType = new EventEmitter();\r\n @Output() SetLocale = new ReplaySubject(1);\r\n @Output() SetTripLegType = new EventEmitter();\r\n @Output() SetDestination = new EventEmitter();\r\n @Output() canCloseChanged = new EventEmitter();\r\n\r\n @ViewChild('tripLeg', { read: ElementRef, static: true })\r\n tripLegEl: ElementRef;\r\n @ViewChild('locale', { read: ElementRef, static: true })\r\n localeEl: ElementRef;\r\n @ViewChild('perDiemType', { read: ElementRef, static: true })\r\n perDiemTypeEl: ElementRef;\r\n @ViewChild('state', { read: ElementRef, static: true }) stateEl: ElementRef;\r\n @ViewChild('city', { read: ElementRef, static: true }) cityEl: ElementRef;\r\n @ViewChild('destination', { read: ElementRef, static: true })\r\n destinationEl: ElementRef;\r\n @ViewChild('perDiemForm', { read: ElementRef, static: true })\r\n perDiemFormEl: ElementRef;\r\n public addPerDiemForm: FormGroup;\r\n public filteredPerDiemTypes: SelectItem[];\r\n public filteredTravelRates: Array;\r\n public StateEditable = true;\r\n public StateLabel = 'State';\r\n public stateValues: any;\r\n public stateKey: string;\r\n public stateValue: string;\r\n public CityEditable = true;\r\n public CityLabel = 'City (optional)';\r\n // public cityValues: Array;\r\n private active = true;\r\n private LocationsSubject = new ReplaySubject>();\r\n private AreasSubject = new ReplaySubject>();\r\n private LocalesSubject = new ReplaySubject>();\r\n private CountriesSubject = new ReplaySubject>();\r\n private StatesSubject = new ReplaySubject>();\r\n private TripLegSubject = new ReplaySubject>();\r\n private TravelRatesSubject = new ReplaySubject>();\r\n private CitiesSubject = new ReplaySubject>>();\r\n // private OpenLocationSubject = new ReplaySubject(1);\r\n header$: Observable;\r\n showAddressDialog = false;\r\n\r\n constructor(\r\n protected log: LoggingService,\r\n public dialogService: DialogService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n super(log, cdRef);\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent::',\r\n perDiem: this.perDiem\r\n });\r\n this.addPerDiemForm = new FormGroup(\r\n {\r\n TravelStartDate: new FormControl(null, Validators.required),\r\n TravelEndDate: new FormControl(null, Validators.required),\r\n LocaleID: new FormControl(null, Validators.required),\r\n PerDiemTypeID: new FormControl(null, Validators.required),\r\n State1: new FormControl(this.perDiem.State1),\r\n City1: new FormControl(this.perDiem.City1),\r\n Country_Area: new FormControl(this.perDiem.State1),\r\n Destination: new FormControl(\r\n this.perDiem.Destination_Location,\r\n Validators.required\r\n ),\r\n Location: new FormControl(\r\n this.perDiem.Destination_Location,\r\n Validators.required\r\n ),\r\n Zipcode1: new FormControl(this.perDiem.Zipcode1),\r\n TripLegTypeID: new FormControl(null, Validators.required),\r\n Rate_Meals: new FormControl(null),\r\n Rate_Lodging: new FormControl(null),\r\n Amount: new FormControl(null),\r\n NumberOfDays: new FormControl(null)\r\n },\r\n { validators: this.validatePerDiem }\r\n );\r\n\r\n this.form = this.addPerDiemForm;\r\n }\r\n\r\n validatePerDiem: ValidatorFn = (\r\n group: AbstractControl\r\n ): ValidationErrors | null => {\r\n if (\r\n moment(group?.get('TravelStartDate')?.value).isAfter(\r\n group?.get('TravelEndDate')?.value\r\n )\r\n ) {\r\n return {\r\n TravelStartDate: 'Start Date must be before End Date'\r\n };\r\n }\r\n return null;\r\n };\r\n\r\n ngOnInit() {}\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngAfterViewInit() {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.setupSubjectSubscriptions();\r\n\r\n this.setupScrolls();\r\n }\r\n setupObservables() {\r\n this.header$ = this.SetLocale.pipe(\r\n tap(locale =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:SetLocale',\r\n locale\r\n })\r\n ),\r\n map(locale => {\r\n switch (locale.LocaleID) {\r\n case LocaleEnum.Domestic:\r\n return 'Enter City/State/Zip';\r\n case LocaleEnum.Foreign:\r\n return 'Enter Country/Location';\r\n case LocaleEnum.OCONUS:\r\n return 'Enter Area/Location';\r\n default:\r\n return 'Enter Location';\r\n }\r\n })\r\n );\r\n }\r\n setupScrolls() {\r\n fromEvent(this.tripLegEl.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(event => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:tripLegEl:click',\r\n event\r\n });\r\n this.tripLegEl.nativeElement.scrollIntoView({ block: 'end' });\r\n });\r\n fromEvent(this.localeEl.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(event => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:localeEl:click',\r\n event\r\n });\r\n this.localeEl.nativeElement.scrollIntoView({ block: 'end' });\r\n // this works also\r\n // this.perDiemFormEl.nativeElement.scrollTop = this.perDiemFormEl.nativeElement.scrollHeight;\r\n });\r\n fromEvent(this.perDiemTypeEl.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(event => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:perDiemTypeEl:click',\r\n event\r\n });\r\n this.perDiemTypeEl.nativeElement.scrollIntoView({\r\n block: 'end'\r\n });\r\n });\r\n fromEvent(this.destinationEl.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(event => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:destinationEl:click',\r\n event\r\n });\r\n this.destinationEl.nativeElement.scrollIntoView({\r\n block: 'end'\r\n });\r\n });\r\n }\r\n // these need to be setup before the form control subscriptions\r\n setupSubjectSubscriptions() {\r\n const controls = this.addPerDiemForm.controls;\r\n combineLatest([this.PerDiemSubject, this.PerDiemTypesSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(([perdiem, types]) => !!perdiem)\r\n )\r\n .subscribe(([perdiem, types]) => {\r\n this.filteredPerDiemTypes = types\r\n .filter(y => y.LocaleID === perdiem.LocaleID)\r\n .map(x => ({\r\n label: x.PerDiemTypeDesc,\r\n value: x.PerDiemTypeID,\r\n disabled: !this.perDiemOptionEnabled(\r\n x.PerDiemTypeDesc,\r\n controls['TravelStartDate'].value,\r\n controls.TravelEndDate.value\r\n )\r\n }));\r\n this.log.verbose(\r\n 'ExpenseDetailPerDiemComponent:ngAfterViewInit:this.filteredPerDiemTypes',\r\n this.filteredPerDiemTypes\r\n );\r\n });\r\n\r\n combineLatest([\r\n this.PerDiemSubject,\r\n this.LocalesSubject.pipe(filter(x => x && x.length > 0)),\r\n this.TripLegSubject.pipe(filter(x => x && x.length > 0))\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([perDiem, locales, tripLegs]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject:subscribe',\r\n perDiem,\r\n locales,\r\n tripLegs\r\n });\r\n // if (perDiem && perDiem.ExpReportNbr > 0) {\r\n this.patchForm(perDiem);\r\n // }\r\n const locale = locales.find(\r\n x => x.LocaleID === perDiem.LocaleID\r\n );\r\n if (locale) {\r\n controls.LocaleID.patchValue(locale);\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:LocalesSubject:patchValue',\r\n locale,\r\n locales,\r\n perDiem\r\n });\r\n } else {\r\n this.log.warn({\r\n type: 'ExpenseDetailPerDiemComponent:LocalesSubject',\r\n message: `No LocaleID found for ${perDiem.LocaleID}`,\r\n perDiem,\r\n locales\r\n });\r\n }\r\n if (perDiem && perDiem.ExpReportNbr > 0) {\r\n const tripLeg = tripLegs.find(\r\n x => x.TripLegTypeID === perDiem.TripLegTypeID\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TripLegsSubject',\r\n tripLeg,\r\n tripLegs\r\n });\r\n if (tripLeg) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TripLegsSubject:patchValue',\r\n tripLeg,\r\n tripLegs,\r\n perDiem\r\n });\r\n controls.TripLegTypeID.patchValue(tripLeg);\r\n } else {\r\n this.log.warn({\r\n type: 'ExpenseDetailPerDiemComponent:TripLegsSubject',\r\n message: `No TripLegTypeID found for ${perDiem.TripLegTypeID}`,\r\n perDiem,\r\n tripLegs\r\n });\r\n }\r\n } else {\r\n controls.TripLegTypeID.patchValue(\r\n this.tripLegTypes.find(x =>\r\n x.TripLegTypeDesc.toLocaleLowerCase().includes(\r\n 'complete'\r\n )\r\n )\r\n );\r\n }\r\n });\r\n\r\n // combineLatest([this.PerDiemSubject, this.StatesSubject])\r\n this.PerDiemSubject.pipe(\r\n withLatestFrom(this.StatesSubject),\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject,StatesSubject',\r\n x\r\n })\r\n )\r\n ).subscribe(([perDiem, states]) => {\r\n if (states && states.length > 0) {\r\n if (perDiem.State1) {\r\n const state = states.find(\r\n x =>\r\n x.State.toLocaleLowerCase() ===\r\n perDiem.State1.toLocaleLowerCase()\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject,StatesSubject:subscribe',\r\n perDiem,\r\n states,\r\n state,\r\n thisstates: this.states\r\n });\r\n controls.State1.patchValue(state);\r\n }\r\n }\r\n });\r\n // this.TravelRatesSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n // value => {\r\n // this.log.verbose({\r\n // type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject:Destination',\r\n // value\r\n // });\r\n // controls.Destination.setValue(null);\r\n // }\r\n // );\r\n\r\n combineLatest([this.TravelRatesSubject, controls.LocaleID.valueChanges])\r\n .pipe(\r\n // take(0),\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject,LocaleID',\r\n x\r\n })\r\n ),\r\n filter(\r\n ([rates, locale]) =>\r\n rates &&\r\n rates.length > 0 &&\r\n locale &&\r\n locale.LocaleID &&\r\n locale.LocaleID !== LocaleEnum.Domestic\r\n ), // && !!perDiem && perDiem.ExpReportNbr > 0)\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject,LocaleID:filtered, !Domestic',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([rates, locale]) => {\r\n const rate = rates[0];\r\n this.selectedRate = rate;\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject,LocaleID:subscribe, !Domestic',\r\n rate,\r\n filteredTravelRates: this.filteredTravelRates\r\n });\r\n controls.Rate_Meals.patchValue(rate.Meals_Rate);\r\n controls.Rate_Lodging.patchValue(rate.Lodging_Rate);\r\n controls.NumberOfDays.patchValue(rate.TravelDays);\r\n controls.Amount.patchValue(rate.Amount);\r\n controls.Rate_Meals.updateValueAndValidity();\r\n controls.Rate_Lodging.updateValueAndValidity();\r\n controls.NumberOfDays.updateValueAndValidity();\r\n controls.Amount.updateValueAndValidity();\r\n });\r\n\r\n combineLatest([this.TravelRatesSubject, this.PerDiemSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject,PerDiemSubject',\r\n x\r\n })\r\n ),\r\n filter(\r\n ([rates, perDiem]) =>\r\n rates &&\r\n rates.length > 0 &&\r\n perDiem.ExpReportNbr > 0 &&\r\n perDiem.LocaleID === LocaleEnum.Domestic &&\r\n perDiem.TravelTypeID === TravelTypeEnum.PerDiem\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject,PerDiemSubject:filtered, Domestic',\r\n x\r\n })\r\n ),\r\n take(1)\r\n )\r\n .subscribe(([rates, perDiem]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject,PerDiemSubject:subscribe, Domestic',\r\n // city,\r\n perDiem,\r\n filteredTravelRates: this.filteredTravelRates\r\n });\r\n const rate = rates[0];\r\n if (rate) {\r\n this.filteredTravelRates = rates.filter(\r\n x => x.City === rate.City\r\n );\r\n\r\n this.selectedRate = rate;\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject,PerDiemSubject:subscribe, Domestic',\r\n rate,\r\n // city,\r\n perDiem,\r\n filteredTravelRates: this.filteredTravelRates\r\n });\r\n // controls.City1.patchValue(city);\r\n controls.Rate_Meals.patchValue(rate.Meals_Rate);\r\n controls.Rate_Lodging.patchValue(rate.Lodging_Rate);\r\n controls.NumberOfDays.patchValue(rate.TravelDays);\r\n controls.Amount.patchValue(rate.Amount);\r\n controls.Amount.updateValueAndValidity();\r\n controls.Destination.patchValue(rate);\r\n }\r\n });\r\n this.TravelRatesSubject.pipe(\r\n takeWhile(() => this.active),\r\n // filter(rates => rates && rates.length > 0),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelRatesSubject',\r\n x\r\n })\r\n ),\r\n withLatestFrom(this.PerDiemSubject.pipe(filter(x => !!x)))\r\n ).subscribe(([rates, perDiem]) => {\r\n this.filteredTravelRates = rates.filter(\r\n x => x.City === perDiem.City1\r\n );\r\n this.CitiesSubject.next(\r\n (fromShared.uniqBy(rates, x => x.City) as ITravelRate[])\r\n .map(x => ({\r\n id: `${x.City}`,\r\n City: x.City,\r\n State: x.State,\r\n ZipCode: x.ZipCode\r\n }))\r\n .sort(\r\n (a, b) =>\r\n a.City?.toLocaleLowerCase()?.localeCompare(\r\n b.City?.toLocaleLowerCase() ?? ''\r\n ) ?? 0\r\n )\r\n );\r\n });\r\n combineLatest([this.PerDiemSubject, this.CitiesSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([perDiem, cities]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject,CitiesSubject',\r\n perDiem,\r\n cities\r\n });\r\n if (perDiem.City1) {\r\n const city = cities.find(x => x.City === perDiem.City1);\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject,CitiesSubject',\r\n perDiem,\r\n city\r\n });\r\n controls.City1.patchValue(city);\r\n } else if (cities && cities.length > 0) {\r\n controls.City1.patchValue(cities[0]);\r\n }\r\n });\r\n\r\n combineLatest([this.PerDiemSubject, this.CountriesSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([perDiem, countries]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject,CountriesSubject',\r\n perDiem,\r\n countries\r\n });\r\n controls.Country_Area.patchValue({\r\n CountryArea: perDiem.Country_Area\r\n });\r\n });\r\n combineLatest([this.PerDiemSubject, this.LocationsSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([perDiem, locations]) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject,LocationsSubject',\r\n perDiem,\r\n locations\r\n });\r\n const location = locations.find(\r\n x => x.Destination === perDiem.Destination_Location\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemSubject,LocationsSubject',\r\n perDiem,\r\n locations,\r\n location\r\n });\r\n controls.Location.patchValue(location);\r\n });\r\n }\r\n\r\n setupSubscriptions() {\r\n const controls = this.addPerDiemForm.controls;\r\n\r\n this.addPerDiemForm.statusChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(status => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:addPerDiemForm:statusChanges',\r\n status,\r\n form: this.addPerDiemForm\r\n });\r\n });\r\n this.addPerDiemForm.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(status => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:addPerDiemForm:valueChanges',\r\n touched: this.addPerDiemForm.touched,\r\n pristine: this.addPerDiemForm.pristine,\r\n status,\r\n form: this.addPerDiemForm\r\n });\r\n this.canCloseChanged.next(\r\n this.form.untouched || this.form.pristine\r\n );\r\n });\r\n\r\n controls.LocaleID.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:LocaleID:valueChanges',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(next => {\r\n try {\r\n const locale = next.LocaleID;\r\n if (locale) {\r\n this.SetLocale.next(next);\r\n\r\n // controls.State1.setValue(null);\r\n // controls.City1.setValue(null);\r\n // controls.Country_Area.setValue(null);\r\n // controls.Destination.setValue(null);\r\n // controls.Location.setValue(null);\r\n\r\n // controls.State1.setValue(perDiem.State1);\r\n // controls.City1.setValue(perDiem.City1);\r\n // controls.Country_Area.setValue(perDiem.Country_Area);\r\n // controls.Destination.setValue(\r\n // perDiem.Destination_Location\r\n // );\r\n // controls.Location.setValue(\r\n // perDiem.Destination_Location\r\n // );\r\n\r\n switch (locale) {\r\n case LocaleEnum.Domestic:\r\n controls.Destination.setValidators([\r\n Validators.required\r\n ]);\r\n controls.Location.setValidators(null);\r\n controls.Country_Area.setValidators(null);\r\n break;\r\n case LocaleEnum.Foreign:\r\n controls.Destination.setValidators(null);\r\n controls.Location.setValidators([\r\n Validators.required\r\n ]);\r\n controls.Country_Area.setValidators([\r\n Validators.required\r\n ]);\r\n break;\r\n case LocaleEnum.OCONUS:\r\n controls.Destination.setValidators(null);\r\n controls.Location.setValidators([\r\n Validators.required\r\n ]);\r\n controls.Country_Area.setValidators([\r\n Validators.required\r\n ]);\r\n break;\r\n default:\r\n controls.Destination.setValidators([\r\n Validators.required\r\n ]);\r\n controls.Location.setValidators(null);\r\n controls.Country_Area.setValidators(null);\r\n break;\r\n }\r\n controls.State1.updateValueAndValidity();\r\n controls.City1.updateValueAndValidity();\r\n controls.Country_Area.updateValueAndValidity();\r\n controls.Destination.updateValueAndValidity();\r\n controls.Location.updateValueAndValidity();\r\n }\r\n\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:LocaleID:valueChanges',\r\n locale\r\n });\r\n this.filteredPerDiemTypes = this.perDiemTypes\r\n .filter(y => y.LocaleID === locale)\r\n .map(x => ({\r\n label: x.PerDiemTypeDesc,\r\n value: x.PerDiemTypeID,\r\n disabled: !this.perDiemOptionEnabled(\r\n x.PerDiemTypeDesc,\r\n this.addPerDiemForm.controls['TravelStartDate']\r\n .value,\r\n this.addPerDiemForm.controls['TravelEndDate']\r\n .value\r\n )\r\n }));\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:setupSubscriptions',\r\n filteredPerDiemTypes: this.filteredPerDiemTypes\r\n });\r\n } catch (e) {\r\n this.log.error(e);\r\n }\r\n });\r\n controls.Zipcode1.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:Zipcode1:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(zipcode => {\r\n this.SetPostalCode.emit(zipcode);\r\n });\r\n\r\n controls.City1.valueChanges\r\n .pipe(\r\n filter(x => !!x && x.City),\r\n map(x => x.City),\r\n distinctUntilChanged(),\r\n takeWhile(() => this.active),\r\n skip(1)\r\n )\r\n .subscribe(city => {\r\n this.TravelRatesSubject.pipe(skip(1)).subscribe(travelRates => {\r\n if (city) {\r\n this.filteredTravelRates = travelRates.filter(\r\n x => x.City === city\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:City1:city, travelRates',\r\n city,\r\n travelRates,\r\n filteredTravelRates: this.filteredTravelRates\r\n });\r\n controls.Rate_Meals.setValue(null);\r\n controls.Rate_Lodging.setValue(null);\r\n controls.NumberOfDays.setValue(null);\r\n controls.Amount.setValue(null);\r\n controls.Amount.updateValueAndValidity();\r\n controls.Destination.setValue(null);\r\n controls.Destination.updateValueAndValidity();\r\n }\r\n });\r\n });\r\n combineLatest([\r\n controls.LocaleID.valueChanges.pipe(filter(x => !!x)),\r\n controls.TravelStartDate.valueChanges.pipe(filter(x => !!x)),\r\n controls.TravelEndDate.valueChanges.pipe(filter(x => !!x))\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(([locale, start, end]) =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:LocaleID,TravelStartDate,TravelEndDate',\r\n locale,\r\n start,\r\n end\r\n })\r\n )\r\n )\r\n .subscribe(([locale, start, end]) => {\r\n this.filteredPerDiemTypes = this.perDiemTypes\r\n .filter(y => y.LocaleID === locale.LocaleID)\r\n .map(x => ({\r\n label: x.PerDiemTypeDesc,\r\n value: x.PerDiemTypeID,\r\n disabled: !this.perDiemOptionEnabled(\r\n x.PerDiemTypeDesc,\r\n start,\r\n end\r\n )\r\n }));\r\n const controls = this.addPerDiemForm.controls;\r\n controls.Rate_Meals.setValue(null);\r\n controls.Rate_Lodging.setValue(null);\r\n controls.NumberOfDays.setValue(null);\r\n controls.Amount.setValue(null);\r\n controls.Destination.setValue(null);\r\n });\r\n combineLatest([\r\n controls.LocaleID.valueChanges,\r\n controls.Country_Area.valueChanges\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(500),\r\n filter(([locale, country]) => country && country.CountryArea),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:Country_Area:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(([locale, country]) => {\r\n this.SetState.emit(country.CountryArea);\r\n });\r\n controls.State1.valueChanges\r\n .pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:State1:values',\r\n x\r\n })\r\n ),\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.State),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:State1:values:filtered',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(state => {\r\n this.SetState.emit(state.State);\r\n });\r\n controls.City1.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:City1:values',\r\n x\r\n })\r\n ),\r\n filter(x => !!x && x.City),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:City1:values:filtered',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(city => {\r\n // this.SetCity.emit(city.City);\r\n });\r\n controls.PerDiemTypeID.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:PerDiemTypeID:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n this.SetPerDiemType.emit(x);\r\n });\r\n controls.TravelStartDate.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelStartDate:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n this.SetTravelStart.emit(new Date(moment(x).format('L')));\r\n });\r\n controls.TravelEndDate.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TravelEndDate:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n this.SetTravelEnd.emit(new Date(moment(x).format('L')));\r\n });\r\n controls.TripLegTypeID.valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:TripLegTypeID:values',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(x => {\r\n this.SetTripLegType.emit(x);\r\n controls.Rate_Meals.setValue(null);\r\n controls.Rate_Lodging.setValue(null);\r\n controls.NumberOfDays.setValue(null);\r\n controls.Amount.setValue(null);\r\n controls.Destination.setValue(null);\r\n });\r\n combineLatest([\r\n controls.Destination.valueChanges,\r\n controls.LocaleID.valueChanges\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:Destination,LocaleID:values',\r\n x\r\n })\r\n ),\r\n filter(([destination, locale]) => !!destination && !!locale),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:Destination,LocaleID:values:filtered',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n )\r\n .subscribe(([destination, locale]: [ITravelRate, ILocale]) => {\r\n this.selectedRate = destination;\r\n this.SetDestination.emit(destination);\r\n controls.NumberOfDays.patchValue(destination.TravelDays);\r\n controls.Amount.patchValue(destination.Amount);\r\n controls.Rate_Meals.patchValue(destination.Meals_Rate);\r\n controls.Rate_Lodging.patchValue(destination.Lodging_Rate);\r\n });\r\n combineLatest([\r\n controls.LocaleID.valueChanges,\r\n controls.Location.valueChanges\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(\r\n ([locale, destination]) =>\r\n locale &&\r\n locale.LocaleID !== LocaleEnum.Domestic &&\r\n !!destination\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:LocaleID:Location',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([locale, location]) => {\r\n this.SetCity.emit(location.Destination);\r\n });\r\n }\r\n\r\n showLodgingRate(perDiemType: number): boolean {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:showLodgingRate',\r\n perDiemType\r\n });\r\n if (!perDiemType) {\r\n return false;\r\n }\r\n switch (perDiemType) {\r\n case PerDiemTypeEnum.Lodging:\r\n return true;\r\n break;\r\n case PerDiemTypeEnum.BothLodgingandMIE:\r\n return true;\r\n break;\r\n case PerDiemTypeEnum.LocalIncidental:\r\n return false;\r\n break;\r\n case PerDiemTypeEnum.LocalMealRate:\r\n return false;\r\n case PerDiemTypeEnum.MIE:\r\n return false;\r\n case PerDiemTypeEnum.ProportionalMealRate:\r\n return false;\r\n default:\r\n return false;\r\n break;\r\n }\r\n }\r\n showMealsRate(perDiemType: number): boolean {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:showMealsRate',\r\n perDiemType\r\n });\r\n if (!perDiemType) {\r\n return false;\r\n }\r\n switch (perDiemType) {\r\n case PerDiemTypeEnum.Lodging:\r\n return false;\r\n break;\r\n case PerDiemTypeEnum.BothLodgingandMIE:\r\n return true;\r\n break;\r\n case PerDiemTypeEnum.LocalIncidental:\r\n return true;\r\n break;\r\n case PerDiemTypeEnum.LocalMealRate:\r\n return true;\r\n case PerDiemTypeEnum.MIE:\r\n return true;\r\n case PerDiemTypeEnum.ProportionalMealRate:\r\n return true;\r\n default:\r\n return false;\r\n break;\r\n }\r\n }\r\n patchForm(value: IExpenseLine) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:patchForm',\r\n value,\r\n states: this.states,\r\n areas: this.areas,\r\n countries: this.countries,\r\n locations: this.locations\r\n });\r\n\r\n if (value && value.ExpReportNbr > 0) {\r\n const controls = this.addPerDiemForm.controls;\r\n // do locale first, it can affect other controls\r\n const locale = this.locales.find(\r\n x => x.LocaleID === value.LocaleID\r\n );\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:patchForm:locale',\r\n locale,\r\n LocaleID: controls.LocaleID\r\n });\r\n if (\r\n controls.LocaleID.value?.LocaleID &&\r\n locale?.LocaleID !== controls.LocaleID.value.LocaleID\r\n )\r\n controls.LocaleID.patchValue(locale);\r\n controls.PerDiemTypeID.patchValue(value.PerDiemTypeID);\r\n let start = moment(value.TravelStartDate); // .startOf('day');\r\n let stop = moment(value.TravelEndDate); // .startOf('day');\r\n if (!start.isValid()) {\r\n start = moment();\r\n }\r\n if (!stop.isValid()) {\r\n stop = moment();\r\n }\r\n if (value.TravelStartDate) {\r\n controls.TravelStartDate.patchValue(\r\n new Date(start.format('L'))\r\n );\r\n } else {\r\n controls.TravelStartDate.reset();\r\n }\r\n if (value.TravelEndDate) {\r\n controls.TravelEndDate.patchValue(new Date(stop.format('L')));\r\n } else {\r\n controls.TravelEndDate.reset();\r\n }\r\n controls.Zipcode1.patchValue(value.Zipcode1);\r\n controls.State1.patchValue({ State: value.State1 });\r\n if (!value.ExpReportNbr) {\r\n controls.Destination.reset();\r\n controls.Location.reset();\r\n controls.NumberOfDays.reset();\r\n controls.Amount.reset();\r\n controls.Rate_Meals.reset();\r\n controls.Rate_Lodging.reset();\r\n } else {\r\n const rate = {\r\n Destination: value.Destination_Location,\r\n City: value.City1,\r\n Lodging_Rate: value.Rate_Lodging,\r\n Meals_Rate: value.Rate_Meals,\r\n TravelDays: stop.diff(start, 'days') + 1,\r\n Amount: value.Amount\r\n };\r\n this.selectedRate = rate;\r\n this.TravelRatesSubject.next([rate]);\r\n controls.Destination.patchValue(rate);\r\n controls.Location.patchValue(rate);\r\n controls.Country_Area.patchValue({\r\n CountryArea: value.Country_Area\r\n });\r\n controls.NumberOfDays.patchValue(\r\n stop.startOf('day').diff(start.startOf('day'), 'days') + 1\r\n );\r\n controls.Amount.patchValue(value.Amount);\r\n controls.Rate_Meals.patchValue(value.Rate_Meals);\r\n controls.Rate_Lodging.patchValue(value.Rate_Lodging);\r\n }\r\n } else {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:patchForm:reset'\r\n });\r\n this.addPerDiemForm.reset();\r\n }\r\n this.form.markAsPristine();\r\n this.form.markAsUntouched();\r\n this.canCloseChanged.next(this.form.untouched || this.form.pristine);\r\n }\r\n\r\n perDiemOptionEnabled(desc, start, end): boolean {\r\n try {\r\n const startDate = moment(start);\r\n const endDate = moment(end);\r\n if (startDate.isValid() && endDate.isValid()) {\r\n return true;\r\n // return desc.toLocaleLowerCase().includes('lodg')\r\n // ? endDate.diff(startDate, 'hours') >= 24\r\n // : true;\r\n } else {\r\n return !desc.toLocaleLowerCase().includes('lodg');\r\n }\r\n } catch (e) {\r\n this.log.error({ type: 'ExpenseDetailPerDiemComponent', e });\r\n }\r\n return false;\r\n }\r\n onLocationClick() {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:onLocationClick',\r\n perDiem: this.perDiem\r\n });\r\n\r\n this.showAddressDialog = true;\r\n }\r\n onSetAddressData(value) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:onSetAddressData',\r\n value,\r\n perDiem: { ...this.perDiem }\r\n });\r\n if (value) {\r\n const controls = this.addPerDiemForm.controls;\r\n const _locale = controls.LocaleID.value.LocaleID;\r\n if (_locale === LocaleEnum.Domestic) {\r\n this.perDiem.City1 = value.City.City;\r\n this.perDiem.State1 = value.State.State;\r\n this.perDiem.Zipcode1 = value.PostalCode;\r\n }\r\n if (_locale === LocaleEnum.Foreign) {\r\n this.perDiem.Country_Area = value.CountryArea.CountryArea;\r\n this.perDiem.Destination_Location = value.Location.Destination;\r\n this.perDiem.Location = value.Location;\r\n }\r\n if (_locale === LocaleEnum.OCONUS) {\r\n this.perDiem.Country_Area = value.CountryArea.CountryArea;\r\n this.perDiem.Destination_Location = value.Location.Destination;\r\n this.perDiem.Location = value.Location;\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:onSetAddressData2',\r\n value,\r\n perDiem: { ...this.perDiem }\r\n });\r\n // this.perDiem.Destination_Location = null;\r\n if (this.perDiem.ExpReportNbr > 0) {\r\n this.patchForm(this.perDiem);\r\n } else {\r\n // this.addPerDiemForm.patchValue(this.perDiem);\r\n controls.Zipcode1.patchValue(value.PostalCode);\r\n controls.State1.patchValue(value.State);\r\n controls.City1.patchValue(value.City);\r\n controls.Country_Area.patchValue(value.CountryArea);\r\n controls.Location.patchValue(value.Location);\r\n controls.Destination.setValue(null);\r\n controls.State1.updateValueAndValidity();\r\n controls.City1.updateValueAndValidity();\r\n controls.Country_Area.updateValueAndValidity();\r\n controls.Destination.updateValueAndValidity();\r\n controls.Location.updateValueAndValidity();\r\n controls.Amount.patchValue(value.Amount);\r\n controls.Amount.updateValueAndValidity();\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseDetailPerDiemComponent:onSetAddressData3',\r\n value,\r\n perDiemForm: this.addPerDiemForm.value\r\n });\r\n this.addPerDiemForm.updateValueAndValidity();\r\n }\r\n }\r\n}\r\n","export * from './expense-detail-per-diem.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n Validators\r\n} from '@angular/forms';\r\nimport { StateService } from '@uirouter/core';\r\nimport {\r\n combineLatest,\r\n fromEvent,\r\n merge,\r\n Observable,\r\n ReplaySubject\r\n} from 'rxjs';\r\nimport {\r\n filter,\r\n startWith,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as env from '../../../../../../environments/environment';\r\nimport { AuthenticationService } from '../../../../../auth/authentication.service';\r\nimport { AbstractFormGroupComponent, IAttachment } from '../../../../../shared';\r\nimport {\r\n FileUpload,\r\n SelectItem\r\n} from '../../../../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../../../shared/services/logging/logging.service';\r\nimport { IExpenseReceipt } from '../../../../IExpenseReceipt';\r\nimport * as fromLookup from '../../../../../lookups';\r\nimport {\r\n TravelTypeEnum\r\n} from '../../../../expense-enums';\r\n\r\n@Component({\r\n selector: 'ef-expense-detail-receipt',\r\n templateUrl: './expense-detail-receipt.component.html',\r\n styleUrls: ['./expense-detail-receipt.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ExpenseDetailReceiptComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ExpenseDetailReceiptComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseDetailReceiptComponent\r\n extends AbstractFormGroupComponent\r\n implements AfterViewInit, OnDestroy\r\n{\r\n public addReceiptForm: FormGroup;\r\n public environment: any;\r\n private UserPaymentMethodsSubject = new ReplaySubject>(1);\r\n private _userPaymentMethods: Array;\r\n @Input() public set userPaymentMethods(value: Array) {\r\n this._userPaymentMethods = value;\r\n this.UserPaymentMethodsSubject.next(value);\r\n this.log.debug({\r\n type: 'ExpenseDetailPerDiemComponent:userPaymentMethods:set',\r\n value\r\n });\r\n }\r\n public get userPaymentMethods(): Array {\r\n return this._userPaymentMethods;\r\n }\r\n @Input() receipts: Array;\r\n @Input() selectedAttachment: any; // IAttachment; we have case issues with File_unique_id and File_Unique_Id\r\n private ReceiptSubject = new ReplaySubject(1);\r\n private _receipt: IExpenseReceipt;\r\n @Input() public set receipt(value: IExpenseReceipt) {\r\n this._receipt = value;\r\n this.ReceiptSubject.next(value);\r\n if (value) {\r\n this.patchForm(value);\r\n }\r\n }\r\n public get receipt(): IExpenseReceipt {\r\n return this._receipt;\r\n }\r\n private PerDiemTypeSubject = new ReplaySubject(1);\r\n private _perDiemType: number;\r\n @Input() public set selectedPerDiemType(value: number) {\r\n this._perDiemType = value;\r\n this.PerDiemTypeSubject.next(this._perDiemType);\r\n }\r\n public get selectedPerDiemType(): number {\r\n return this._perDiemType;\r\n }\r\n @Input() public Save$: Observable;\r\n @Output() public SelectReceipt = new EventEmitter();\r\n @Output() public AddReceipt = new EventEmitter();\r\n @Output() public UploadReceiptAttachment = new EventEmitter();\r\n @Output() canCloseChanged = new EventEmitter();\r\n @Output() public AttachmentError = new EventEmitter();\r\n @Output() public SelectAttachment = new EventEmitter();\r\n @ViewChild('receiptTax', { read: ElementRef, static: true })\r\n receiptTaxEl: ElementRef;\r\n @ViewChild('receiptTotal', { read: ElementRef, static: true })\r\n receiptTotalEl: ElementRef;\r\n @ViewChild('receiptDescription', { read: ElementRef, static: true })\r\n receiptDescriptionEl: ElementRef;\r\n @ViewChild('receiptAttachmentUploader', { static: true })\r\n receiptAttachmentUploader: FileUpload;\r\n private active = true;\r\n public attachment: File;\r\n private SelectReceiptSubject = new ReplaySubject(1);\r\n IsReceiptTaxValid = false;\r\n IsReceiptTotalValid = false;\r\n IsReceiptDescValid = false;\r\n IsPaymentMethodValid = false;\r\n constructor(\r\n @Inject(LoggingService) protected log: LoggingService,\r\n @Inject(AuthenticationService) protected auth: AuthenticationService,\r\n @Inject(UnsavedChangesService)\r\n private confirmservice: UnsavedChangesService,\r\n @Inject(StateService) private ss: StateService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n super(log, cdRef);\r\n this.environment = env.environment;\r\n this.addReceiptForm = new FormGroup({\r\n ReceiptTax: new FormControl(),\r\n ReceiptDescription: new FormControl(),\r\n Creditaccountlistid: new FormControl(),\r\n ReceiptTotal: new FormControl(),\r\n Unique_Id: new FormControl(),\r\n File_unique_id: new FormControl(),\r\n Row_Version: new FormControl()\r\n });\r\n this.form = this.addReceiptForm;\r\n }\r\n ngAfterViewInit(): void {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:ngAfterViewInit',\r\n userPaymentMethods: this.userPaymentMethods\r\n });\r\n this.setupSubjects();\r\n this.setupSubscriptions();\r\n }\r\n setupSubscriptions() {\r\n this.canCloseChanged\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(canclose => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:canCloseChanged',\r\n canclose\r\n });\r\n });\r\n\r\n this.SelectReceiptSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.canCloseChanged.pipe(startWith(true)))\r\n ).subscribe(([receipt, canclose]) => {\r\n if (canclose) {\r\n this.SelectReceipt.next(receipt);\r\n } else {\r\n this.confirmservice.confirmPromise().then(() => {\r\n this.canCloseChanged.next(true);\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.SelectReceipt.next(receipt);\r\n });\r\n }\r\n });\r\n\r\n this.addReceiptForm.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:valueChanges',\r\n form: this.addReceiptForm,\r\n pristine: this.addReceiptForm.pristine,\r\n touched: this.addReceiptForm.touched\r\n });\r\n this.canCloseChanged.next(\r\n this.form.untouched || this.form.pristine\r\n );\r\n });\r\n\r\n this.Save$.pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:Save$',\r\n x\r\n })\r\n ),\r\n filter(\r\n receipt =>\r\n receipt.Unique_Id === this._receipt.Unique_Id ||\r\n !this._receipt.Unique_Id\r\n )\r\n ).subscribe(receipt => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:Save$',\r\n receipt\r\n });\r\n if (this.attachment) {\r\n this.receiptUpload(this.attachment);\r\n this.attachment = null;\r\n }\r\n this.canCloseChanged.next(true);\r\n });\r\n }\r\n setupSubjects() {\r\n const controls = this.addReceiptForm.controls;\r\n\r\n merge(\r\n combineLatest([\r\n fromEvent(this.receiptTaxEl.nativeElement, 'click'),\r\n controls['ReceiptTax'].valueChanges.pipe(filter(x => !!x))\r\n ]),\r\n combineLatest([\r\n fromEvent(this.receiptTotalEl.nativeElement, 'click'),\r\n controls['ReceiptTotal'].valueChanges.pipe(filter(x => !!x))\r\n ]),\r\n combineLatest([\r\n fromEvent(this.receiptDescriptionEl.nativeElement, 'click'),\r\n controls['ReceiptDescription'].valueChanges.pipe(\r\n filter(x => !!x)\r\n )\r\n ])\r\n )\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailAddComponent:addReceiptForm:inputs'\r\n });\r\n this.canCloseChanged.next(false);\r\n this.addReceiptForm.markAsTouched();\r\n });\r\n\r\n controls['ReceiptTax'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value) {\r\n this.IsReceiptTaxValid = true;\r\n } else {\r\n this.IsReceiptTaxValid = false;\r\n }\r\n });\r\n controls['ReceiptTotal'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value) {\r\n this.IsReceiptTotalValid = true;\r\n } else {\r\n this.IsReceiptTotalValid = false;\r\n }\r\n });\r\n controls['ReceiptDescription'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value) {\r\n this.IsReceiptDescValid = true;\r\n } else {\r\n this.IsReceiptDescValid = false;\r\n }\r\n });\r\n controls['Creditaccountlistid'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value) {\r\n this.IsPaymentMethodValid = true;\r\n } else {\r\n this.IsPaymentMethodValid = false;\r\n }\r\n });\r\n this.ReceiptSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n receipt => this.patchForm(receipt)\r\n );\r\n combineLatest([this.ReceiptSubject, this.UserPaymentMethodsSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(\r\n ([receipt, payMethods]) =>\r\n !!receipt && payMethods && payMethods.length > 0\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:ReceiptSubject,UserPaymentMethodsSubject',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([receipt, payMethods]) => {\r\n controls['Creditaccountlistid'].patchValue(\r\n receipt.Creditaccountlistid\r\n );\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n onSelectReceipt(receipt: IExpenseReceipt) {\r\n this.log.debug({\r\n type: 'ExpenseDetailReceiptComponent.onSelectReceipt',\r\n receipt\r\n });\r\n this.SelectReceiptSubject.next(receipt);\r\n }\r\n onAddReceipt($event) {\r\n this.AddReceipt.next($event);\r\n }\r\n patchForm(item: IExpenseReceipt) {\r\n const controls = this.addReceiptForm.controls;\r\n\r\n controls['ReceiptTax'].patchValue(item.ReceiptTax);\r\n controls['ReceiptTotal'].patchValue(item.ReceiptTotal);\r\n controls['ReceiptDescription'].patchValue(item.ReceiptDescription);\r\n controls['Creditaccountlistid'].patchValue(item.Creditaccountlistid);\r\n controls['Unique_Id'].patchValue(item.Unique_Id);\r\n controls['File_unique_id'].patchValue(item.File_unique_id);\r\n controls['Row_Version'].patchValue(item.Row_Version);\r\n\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:patchForm',\r\n item\r\n });\r\n this.canCloseChanged.next(true);\r\n }\r\n receiptUpload(attachment: File) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:receiptUpload',\r\n attachment\r\n });\r\n const fileReader = new FileReader();\r\n fileReader.onload = (e: any) => {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:onFileReaderLoad',\r\n e\r\n });\r\n // Will print the base64 here.\r\n const result = e.target.result as any;\r\n\r\n this.UploadReceiptAttachment.next({\r\n expenseNumber: this.receipt.ExpenseID,\r\n uniqueId: this.receipt.Unique_Id,\r\n meta: attachment,\r\n file: result.substr(result.indexOf(',') + 1)\r\n });\r\n };\r\n // readAsDataURL is base64 encoded\r\n fileReader.readAsDataURL(attachment);\r\n // fileReader.readAsBinaryString($event.files[0]);\r\n this.receiptAttachmentUploader.clear();\r\n }\r\n onBeforeSend($event) {\r\n this.log.verbose(\r\n 'ExpenseDetailReceiptComponent::onBeforeSend:$event',\r\n $event\r\n );\r\n $event.formData.append('ExpenseID', this.receipt.ExpenseID);\r\n $event.formData.append('Unique_Id', this.receipt.Unique_Id);\r\n $event.formData.append('Attachmentprocess', 'expense');\r\n $event.formData.append('Filename', '');\r\n $event.xhr.setRequestHeader(\r\n 'Authorization',\r\n `Bearer ${this.auth.bearerToken}`\r\n );\r\n }\r\n\r\n onUpload($event) {\r\n this.log.verbose(\r\n 'ExpenseDetailReceiptComponent::onUpload:$event',\r\n $event\r\n );\r\n }\r\n onError($event) {\r\n this.log.verbose(\r\n 'ExpenseDetailReceiptComponent::onError:$event',\r\n $event\r\n );\r\n }\r\n onProgress($event) {\r\n this.log.verbose(\r\n 'ExpenseDetailReceiptComponent::onProgress:$event',\r\n $event\r\n );\r\n }\r\n onAttachmentSelect($event: { originalEvent: any; files: File[] }) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:onAttachmentSelect',\r\n $event\r\n });\r\n this.attachment = $event.files[0];\r\n if (this.attachment.name.length > 150) {\r\n this.attachment = null;\r\n this.AttachmentError.next(\r\n 'Attachment filename must be < 150 characters'\r\n );\r\n } else {\r\n this.SelectAttachment.next(this.attachment);\r\n }\r\n this.receiptAttachmentUploader.clear();\r\n }\r\n\r\n onBeforeUpload($event: { formData: FormData }) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:onBeforeUpload',\r\n $event\r\n });\r\n }\r\n isImage(attachment: IAttachment): boolean {\r\n return attachment && attachment.Filemimetype.startsWith('image');\r\n }\r\n attachmentUrl(File_Unique_Id): string {\r\n const url = this.ss.href('receipt', {\r\n receiptId: File_Unique_Id\r\n });\r\n this.log.verbose({\r\n type: 'ExpenseDetailReceiptComponent:attachmentUrl',\r\n File_Unique_Id,\r\n url\r\n });\r\n return url;\r\n }\r\n}\r\n","export * from './expense-detail-receipt.component';\r\n","import * as $ from 'jquery';\r\nimport {\r\n Component,\r\n Input,\r\n Inject,\r\n ChangeDetectionStrategy,\r\n Output,\r\n EventEmitter,\r\n AfterViewChecked,\r\n AfterViewInit,\r\n ElementRef,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { LoggingService } from '../../../../../shared/services/logging/logging.service';\r\nimport { IExpenseLine } from '../../../../IExpenseLine';\r\n\r\n@Component({\r\n selector: 'ef-expense-detail-selector',\r\n templateUrl: './expense-detail-selector.component.html',\r\n styleUrls: ['./expense-detail-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseDetailSelectorComponent\r\n implements AfterViewInit, AfterViewChecked\r\n{\r\n @Input() public set closing(value: boolean) {\r\n if (value) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailSelectorComponent:closing',\r\n form: this\r\n });\r\n }\r\n }\r\n @Input() details: Array;\r\n @Input() SelectedDetail: IExpenseLine;\r\n @Output() SelectDetail = new EventEmitter();\r\n @Output() AddDetail = new EventEmitter();\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n private element: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n ngAfterViewInit(): void {\r\n this.log.verbose({\r\n type: 'ExpenseDetailSelectorComponent:ngAfterViewInit',\r\n SelectedDetail: this.SelectedDetail\r\n });\r\n this.highlightItem(this.SelectedDetail);\r\n }\r\n ngAfterViewChecked(): void {\r\n this.highlightItem(this.SelectedDetail);\r\n }\r\n addDetail() {\r\n this.log.verbose({ type: 'ExpenseDetailSelectorComponent:addDetail' });\r\n this.AddDetail.next({ ExpReportNbr: -1 });\r\n }\r\n onClick(item: IExpenseLine) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailSelectorComponent:onClick',\r\n item\r\n });\r\n // this.highlightItem(item);\r\n this.SelectDetail.next(item);\r\n }\r\n\r\n private highlightItem(item: IExpenseLine) {\r\n $('ef-expense-detail-selector li').removeClass('selected');\r\n if (item) {\r\n $(`#expenseDetail${item.SequenceId}`).addClass('selected');\r\n }\r\n }\r\n}\r\n","export * from './expense-detail-selector.component';","export * from './expense-detail-add.component';\r\nexport * from './expense-detail-mileage';\r\nexport * from './expense-detail-per-diem';\r\nexport * from './expense-detail-receipt';\r\nexport * from './expense-detail-selector';\r\n","import {\r\n AfterViewChecked,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport { LoggingService } from '../../../../../shared/services/logging/logging.service';\r\nimport { IExpenseReceipt } from '../../../../IExpenseReceipt';\r\n\r\n@Component({\r\n selector: 'ef-expense-receipt-selector',\r\n templateUrl: './expense-receipt-selector.component.html',\r\n styleUrls: ['./expense-receipt-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseReceiptSelectorComponent\r\n implements OnInit, AfterViewInit, AfterViewChecked {\r\n @Input() receipts: Array;\r\n @Input() SelectedReceipt: IExpenseReceipt;\r\n @Output() SelectReceipt = new EventEmitter();\r\n @Output() AddReceipt = new EventEmitter();\r\n\r\n constructor(@Inject(LoggingService) private log: LoggingService) {}\r\n ngAfterViewInit(): void {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptSelectorComponent:ngAfterViewInit',\r\n SelectedReceipt: this.SelectedReceipt\r\n });\r\n setTimeout(() => {\r\n this.highlightItem(this.SelectedReceipt);\r\n }, 0);\r\n }\r\n ngAfterViewChecked(): void {\r\n // this.log.verbose({\r\n // type: 'ExpenseReceiptSelectorComponent:ngAfterViewChecked',\r\n // SelectedReceipt: this.SelectedReceipt\r\n // });\r\n this.highlightItem(this.SelectedReceipt);\r\n }\r\n ngOnInit() {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptSelectorComponent:ngOnInit',\r\n receipts: this.receipts\r\n });\r\n }\r\n onClick(item: IExpenseReceipt) {\r\n this.SelectReceipt.next(item);\r\n }\r\n private highlightItem(item: IExpenseReceipt) {\r\n // this.log.verbose({\r\n // type: 'ExpenseReceiptSelectorComponent:highlightItem',\r\n // item\r\n // });\r\n $('ef-expense-detail-selector li').removeClass('selected');\r\n if (item) {\r\n $(`#${item.Unique_Id}`).addClass('selected');\r\n }\r\n }\r\n addReceipt() {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptSelectorComponent:addReceipt'\r\n });\r\n this.AddReceipt.next({ ExpenseRptNbr: -1 });\r\n }\r\n}\r\n","export * from './expense-receipt-selector.component';","// export * from './expense-receipt-add.component';\r\nexport * from './expense-receipt-selector';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n Validators\r\n} from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { IExpenseItem } from '../../../../lookups';\r\nimport { AbstractFormGroupComponent } from '../../../../shared';\r\nimport { LoggingService } from '../../../../shared/services/logging/logging.service';\r\nimport { IExpenseSummary } from '../../../IExpenseSummary';\r\n\r\n@Component({\r\n selector: 'ef-expense-summary-add',\r\n templateUrl: './expense-summary-add.component.html',\r\n styleUrls: ['./expense-summary-add.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ExpenseSummaryAddComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ExpenseSummaryAddComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseSummaryAddComponent\r\n extends AbstractFormGroupComponent\r\n implements AfterViewInit, OnDestroy\r\n{\r\n @Input() public set closing(value: boolean) {\r\n if (value) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryAddComponent:closing',\r\n form: this.addExpenseSummaryForm\r\n });\r\n this.canCloseChanged.next(\r\n this.form.untouched || this.form.pristine\r\n );\r\n }\r\n }\r\n @Input() public summary: IExpenseSummary;\r\n @Input() public expenseItems: Array;\r\n private _minDate: Date = new Date();\r\n @Input() public set minDate(value: Date) {\r\n const mdate = moment(value);\r\n if (mdate.isValid()) {\r\n this._minDate = mdate.toDate();\r\n }\r\n }\r\n public get minDate(): Date {\r\n return this._minDate;\r\n }\r\n private _maxDate: Date = new Date();\r\n @Input() public set maxDate(value: Date) {\r\n const mdate = moment(value);\r\n if (mdate.isValid()) {\r\n this._maxDate = mdate.toDate();\r\n }\r\n }\r\n public get maxDate(): Date {\r\n return this._maxDate;\r\n }\r\n @Output() public cancel = new EventEmitter();\r\n @Output() public ReportDateChange = new EventEmitter();\r\n @Output() public canCloseChanged = new EventEmitter();\r\n addExpenseSummaryForm: FormGroup;\r\n private active = true;\r\n constructor(\r\n @Inject(LoggingService) protected log: LoggingService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n super(log, cdRef);\r\n\r\n this.addExpenseSummaryForm = new FormGroup({\r\n ExpReportNbr: new FormControl(),\r\n ReportDate: new FormControl(null, Validators.required)\r\n });\r\n\r\n this.form = this.addExpenseSummaryForm;\r\n\r\n this.addExpenseSummaryForm.controls['ReportDate'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(x => this.ReportDateChange.emit(moment(x).toDate()));\r\n\r\n this.addExpenseSummaryForm.statusChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(status => {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryAddComponent:addExpenseSummaryForm:statusChanges',\r\n status,\r\n form: this.addExpenseSummaryForm\r\n });\r\n });\r\n this.addExpenseSummaryForm.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(status => {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryAddComponent:addExpenseSummaryForm:valueChanges',\r\n status,\r\n form: this.addExpenseSummaryForm\r\n });\r\n this.canCloseChanged.next(\r\n this.form.untouched || this.form.pristine\r\n );\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.log.debug({\r\n type: 'ExpenseSummaryAddComponent:AfterViewInit',\r\n summary: this.summary\r\n });\r\n const controls = this.addExpenseSummaryForm.controls;\r\n setTimeout(() => {\r\n if (this.summary.ReportDate) {\r\n controls['ReportDate'].patchValue(\r\n new Date(this.summary.ReportDate.toString())\r\n );\r\n }\r\n controls['ExpReportNbr'].patchValue(this.summary.ExpReportNbr);\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","export * from './expense-summary-add.component';\r\n","export * from './expense-add.component';\r\nexport * from './expense-detail-add';\r\nexport * from './expense-receipt-add';\r\nexport * from './expense-summary-add';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { startWith, takeWhile } from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport { IPerDiemLocale, ITravelType } from '../../../../lookups';\r\nimport { UnsavedChangesService } from '../../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../../shared/services/logging/logging.service';\r\nimport { ExpenseStatus, TravelTypeEnum } from '../../../expense-enums';\r\nimport { IExpenseLine } from '../../../IExpenseLine';\r\nimport { IExpenseSummary } from '../../../IExpenseSummary';\r\nimport { EditExpenseReceiptAttachment } from '../../../store';\r\n\r\n@Component({\r\n selector: 'ef-expense-detail-list',\r\n templateUrl: './expense-detail-list.component.html',\r\n styleUrls: ['./expense-detail-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseDetailListComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private ExpenseLinesSubject = new ReplaySubject>(1);\r\n private _expenseLines: Array;\r\n @Input() set expenseLines(value: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:expenseLines:set',\r\n value\r\n });\r\n if (value && value.length > 0) {\r\n this._expenseLines = value.map(x => ({ ...x }));\r\n } else {\r\n this._expenseLines = [];\r\n }\r\n if (this.tabExpenseDetails) {\r\n this.tabExpenseDetails.replaceData(this._expenseLines);\r\n // for some reason the titles on the detail tabulator don't initiall display unless you do this.\r\n setTimeout(() => {\r\n this.tabExpenseDetails.redraw(true);\r\n }, 0);\r\n }\r\n }\r\n get expenseLines(): Array {\r\n return this._expenseLines;\r\n }\r\n private _showDetails = false;\r\n @Input() set showDetails(value: boolean) {\r\n if (this.tabExpenseDetails) {\r\n this._showDetails = value;\r\n this.toggleDetails(value);\r\n }\r\n }\r\n get showDetails(): boolean {\r\n return this._showDetails;\r\n }\r\n @Input() perDiemTypes: Array;\r\n @Input() travelTypes: Array;\r\n private ValidatingSubject = new ReplaySubject(1);\r\n private _validating = false;\r\n @Input() public set validating(value: boolean) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:validating:set',\r\n value\r\n });\r\n if (this.tabExpenseDetails) {\r\n if (value) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:validating:set-showing My Task',\r\n value\r\n });\r\n this.tabExpenseDetails.showColumn('CurrentTMTask');\r\n this.tabExpenseDetails.showColumn('My Tasks');\r\n } else {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:validating:set-hiding My Task',\r\n value\r\n });\r\n this.tabExpenseDetails.hideColumn('CurrentTMTask');\r\n this.tabExpenseDetails.hideColumn('My Tasks');\r\n }\r\n }\r\n this.ValidatingSubject.next(value);\r\n }\r\n public get validating(): boolean {\r\n return this._validating;\r\n }\r\n private ApprovingSubject = new ReplaySubject(1);\r\n private _approving: boolean;\r\n @Input() set approving(value: boolean) {\r\n this._approving = value;\r\n this.ApprovingSubject.next(value);\r\n }\r\n get approving(): boolean {\r\n return this._approving;\r\n }\r\n private SelectedExpenseSubject = new ReplaySubject(1);\r\n @Input() public set selectedExpense(value: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:selectedExpense',\r\n value\r\n });\r\n this.SelectedExpenseSubject.next(value);\r\n }\r\n private ExpenseReportStatus?: ExpenseStatus;\r\n @Output() selectDetail = new EventEmitter();\r\n @Output() editDetail = new EventEmitter();\r\n @Output() deleteDetail = new EventEmitter();\r\n @Output() showPdbo = new EventEmitter();\r\n public selectedRowsCheckbox = { checked: false, indeterminate: false };\r\n private tabExpenseDetails: Tabulator;\r\n private active = true;\r\n constructor(\r\n private confirmservice: UnsavedChangesService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n this.createTabulator(this.expenseLines, []);\r\n const cols = this.tabExpenseDetails.getColumns(true);\r\n this.log.verbose({ type: 'ExpenseDetailListComponent', columns: cols });\r\n this.setupSubscriptions();\r\n }\r\n setupSubscriptions() {\r\n combineLatest([\r\n this.SelectedExpenseSubject.pipe(startWith(undefined)),\r\n this.ExpenseLinesSubject.pipe(startWith([])),\r\n this.ApprovingSubject.pipe(startWith(false)),\r\n this.ValidatingSubject.pipe(startWith(false))\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([expense, lines, approving, validating]) => {\r\n this.ExpenseReportStatus =\r\n expense && expense.ExpenseReportStatus;\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:ApprovingSubject:ValidatingSubject',\r\n validating,\r\n approving,\r\n expense\r\n });\r\n this.showHideColumns(approving || validating);\r\n });\r\n }\r\n\r\n private createTabulator(\r\n expenseLines: Array,\r\n errors: Array\r\n ) {\r\n const ed = this;\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:createTabulator:validating',\r\n validating: this.validating\r\n });\r\n this.tabExpenseDetails = new Tabulator('#tabExpenseDetails', {\r\n data: [], // expenseLines.map(e => e),\r\n maxHeight: '20vh',\r\n minHeight: '7vh',\r\n columnMinWidth: 85,\r\n columns: [\r\n // ExpenseRptNbr\r\n {\r\n title: 'ExpenseRptNbr',\r\n field: 'ExpenseRptNbr',\r\n visible: false\r\n },\r\n // SequenceId\r\n {\r\n title: 'SequenceId',\r\n field: 'SequenceId',\r\n visible: false\r\n },\r\n // Exp Line\r\n {\r\n headerSort: false,\r\n title: 'Exp Line',\r\n field: '',\r\n visible: true,\r\n width: 50,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return `${data.ExpReportNbr}-${data.SequenceId}`;\r\n }\r\n },\r\n //Per Diem Breakout\r\n {\r\n headerSort: false,\r\n title: 'PD Breakout',\r\n field: 'PDBOstatus',\r\n visible: true,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n\r\n return ed.ExpenseReportStatus <= ExpenseStatus.Signed\r\n ? `${\r\n data?.PDBOstatus ? data?.PDBOstatus : ''\r\n }`\r\n : data?.PDBOstatus\r\n ? data?.PDBOstatus\r\n : '';\r\n },\r\n cellClick: (e, c) => {\r\n const data = c.getData() as IExpenseLine;\r\n ed.log.verbose({\r\n type: 'ExpenseDetailListComponent:pdboClick',\r\n data\r\n });\r\n if (\r\n ed.ExpenseReportStatus <= ExpenseStatus.Signed &&\r\n data?.PDBOstatus\r\n ) {\r\n ed.showPdboClick.bind(this)(c.getData());\r\n }\r\n },\r\n cellTap: (e, c) => {\r\n const data = c.getData() as IExpenseLine;\r\n ed.log.verbose({\r\n type: 'ExpenseDetailListComponent:pdboTap',\r\n data\r\n });\r\n if (\r\n ed.ExpenseReportStatus <= ExpenseStatus.Signed &&\r\n data?.PDBOstatus\r\n ) {\r\n ed.showPdboClick.bind(this)(c.getData());\r\n }\r\n }\r\n },\r\n // Line Total\r\n {\r\n headerSort: false,\r\n title: 'Line Total',\r\n field: 'Amount',\r\n formatter: 'money',\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n visible: false\r\n },\r\n // My Tasks\r\n {\r\n visible: ed.validating,\r\n headerSort: false,\r\n title: 'My Tasks',\r\n field: 'CurrentTMTask',\r\n formatter: 'tickCross',\r\n formatterParams: { crossElement: false }\r\n },\r\n // Task\r\n {\r\n headerSort: false,\r\n title: 'Task',\r\n field: 'RptTask',\r\n visible: true\r\n },\r\n // Expense Item\r\n {\r\n headerSort: false,\r\n title: 'Expense Item',\r\n field: 'ExpenseItem',\r\n visible: true\r\n },\r\n // Calc Amount\r\n {\r\n headerSort: false,\r\n title: 'Calc Amount',\r\n field: 'Amount',\r\n visible: true,\r\n width: 90,\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n formatter: 'money'\r\n },\r\n // Receipt Total\r\n {\r\n headerSort: false,\r\n title: 'Receipt Total',\r\n field: 'Line_ReceiptTotal',\r\n visible: true,\r\n width: 75,\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n formatter: 'money'\r\n },\r\n // Allowable\r\n {\r\n headerSort: false,\r\n title: 'Allowable',\r\n field: 'Line_Allowable',\r\n visible: true,\r\n width: 75,\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n formatter: 'money'\r\n },\r\n // Unallowable\r\n {\r\n headerSort: false,\r\n title: 'Unallowable',\r\n field: 'Line_Unallowable',\r\n visible: true,\r\n width: 75,\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n formatter: 'money'\r\n },\r\n // Travel Start\r\n {\r\n headerSort: false,\r\n title: 'Travel Start',\r\n field: 'TravelStartDate',\r\n visible: false,\r\n formatter: 'datetime',\r\n formatterParams: c => {\r\n return { outputFormat: 'MM/DD/YYYY' };\r\n },\r\n cssClass: 'expense-detail-perdiem'\r\n },\r\n // Travel End\r\n {\r\n headerSort: false,\r\n title: 'Travel End',\r\n field: 'TravelEndDate',\r\n visible: false,\r\n formatter: 'datetime',\r\n formatterParams: c => {\r\n return { outputFormat: 'MM/DD/YYYY' };\r\n },\r\n cssClass: 'expense-detail-perdiem'\r\n },\r\n // Per Diem Type\r\n {\r\n headerSort: false,\r\n title: 'Per Diem Type',\r\n field: 'PerDiemTypeID',\r\n visible: false,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return this.perDiemTypes.findIndex(\r\n x =>\r\n x.LocaleID === data.LocaleID &&\r\n x.PerDiemTypeID === data.PerDiemTypeID\r\n ) < 0\r\n ? c.getValue()\r\n : this.perDiemTypes.find(\r\n x =>\r\n x.LocaleID === data.LocaleID &&\r\n x.PerDiemTypeID === data.PerDiemTypeID\r\n ).PerDiemTypeDesc;\r\n },\r\n cssClass: 'expense-detail-perdiem'\r\n },\r\n // Zip\r\n {\r\n headerSort: false,\r\n title: 'Zip',\r\n field: 'Zipcode1',\r\n visible: false,\r\n cssClass: 'expense-detail-perdiem'\r\n },\r\n // State\r\n {\r\n headerSort: false,\r\n title: 'State',\r\n field: 'State1',\r\n visible: false,\r\n cssClass: 'expense-detail-perdiem',\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.TravelTypeID === TravelTypeEnum.PerDiem\r\n ? data.State1\r\n : '';\r\n }\r\n },\r\n // City\r\n {\r\n headerSort: false,\r\n title: 'City',\r\n field: 'City1',\r\n visible: false,\r\n cssClass: 'expense-detail-perdiem',\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.TravelTypeID === TravelTypeEnum.PerDiem\r\n ? data.City1\r\n : '';\r\n }\r\n },\r\n // Country\r\n {\r\n headerSort: false,\r\n title: 'Country',\r\n field: 'Country_Area',\r\n visible: false,\r\n cssClass: 'expense-detail-perdiem'\r\n },\r\n // Destination\r\n {\r\n headerSort: false,\r\n title: 'Destination',\r\n field: 'Destination_Location',\r\n visible: false,\r\n cssClass: 'expense-detail-perdiem'\r\n },\r\n // ]\r\n // },\r\n // // 9\r\n // {\r\n // field: 'MileageExpenseType',\r\n // title: 'Mileage Expense Type',\r\n // columns: [\r\n // Beginning Zip\r\n {\r\n headerSort: false,\r\n title: 'Beginning Zip',\r\n field: 'Zipcode1',\r\n visible: false,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.Zipcode2 ? data.Zipcode1 : '';\r\n },\r\n cssClass: 'expense-detail-mileage'\r\n },\r\n // State\r\n {\r\n headerSort: false,\r\n title: 'State',\r\n field: 'State1',\r\n visible: false,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.TravelTypeID === TravelTypeEnum.Mileage\r\n ? data.State1\r\n : '';\r\n },\r\n cssClass: 'expense-detail-mileage'\r\n },\r\n // City\r\n {\r\n headerSort: false,\r\n title: 'City',\r\n field: 'City1',\r\n visible: false,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.TravelTypeID === TravelTypeEnum.Mileage\r\n ? data.City1\r\n : '';\r\n },\r\n cssClass: 'expense-detail-mileage'\r\n },\r\n // Ending Zip\r\n {\r\n headerSort: false,\r\n title: 'Ending Zip',\r\n field: 'Zipcode2',\r\n visible: false,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.Zipcode2 ? data.Zipcode2 : '';\r\n },\r\n cssClass: 'expense-detail-mileage'\r\n },\r\n // State\r\n {\r\n headerSort: false,\r\n title: 'State',\r\n field: 'State2',\r\n visible: false,\r\n cssClass: 'expense-detail-mileage',\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.TravelTypeID === TravelTypeEnum.Mileage\r\n ? data.State2\r\n : '';\r\n }\r\n },\r\n // City\r\n {\r\n headerSort: false,\r\n title: 'City',\r\n field: 'City2',\r\n visible: false,\r\n cssClass: 'expense-detail-mileage',\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.TravelTypeID === TravelTypeEnum.Mileage\r\n ? data.City2\r\n : '';\r\n }\r\n },\r\n // Mileage\r\n {\r\n headerSort: false,\r\n title: 'Mileage',\r\n field: 'Mileage',\r\n visible: false,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseLine;\r\n return data.TravelTypeID === TravelTypeEnum.Mileage\r\n ? data.Mileage\r\n : '';\r\n },\r\n cssClass: 'expense-detail-mileage'\r\n },\r\n // Mode of Travel\r\n {\r\n headerSort: false,\r\n title: 'Mode of Travel',\r\n field: 'ModeofTravel',\r\n visible: false,\r\n cssClass: 'expense-detail-mileage'\r\n },\r\n // delete\r\n {\r\n minWidth: 50,\r\n width: 50,\r\n title: 'Delete',\r\n field: 'delete',\r\n visible: false,\r\n formatter: c => {\r\n if (ed.ExpenseReportStatus <= ExpenseStatus.Signed) {\r\n return ``;\r\n }\r\n },\r\n cellClick: (e, c) => {\r\n if (ed.ExpenseReportStatus === ExpenseStatus.Signed) {\r\n this.onExpenseDetailDelete.bind(this)(c.getData());\r\n }\r\n },\r\n cellTap: (e, c) => {\r\n if (ed.ExpenseReportStatus === ExpenseStatus.Signed) {\r\n this.onExpenseDetailDelete.bind(this)(c.getData());\r\n }\r\n },\r\n headerSort: false\r\n }\r\n // ]\r\n // },\r\n ],\r\n layout: 'fitColumns',\r\n // rowClick: this.itemClick.bind(this),\r\n // rowTap: this.itemClick.bind(this),\r\n rowDblClick: this.itemDblClick.bind(this),\r\n rowDblTap: this.itemDblClick.bind(this),\r\n selectable: 1,\r\n initialSort: [\r\n { column: 'ExpenseRptNbr', dir: 'asc' },\r\n { column: 'SequenceId', dir: 'asc' }\r\n ]\r\n });\r\n }\r\n private itemClick(e, item) {\r\n const data = item.getData();\r\n this.log.debug({ type: 'ExpenseDetailListComponent:itemClick', data });\r\n this.selectDetail.emit(data);\r\n }\r\n private itemDblClick(e, item) {\r\n const data = item.getData();\r\n this.log.debug({\r\n type: 'ExpenseDetailListComponent:itemDblClick',\r\n data\r\n });\r\n this.editDetail.emit(data);\r\n // this.tabService.rowMouseHandler(e, row);\r\n }\r\n private toggleDetails(show: boolean) {\r\n const cols = this.tabExpenseDetails.getColumns(true); // .filter(c => c.getSubColumns().length);\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:toggleDetails',\r\n cols,\r\n show\r\n });\r\n // TODO: what about the conditionals in front\r\n cols.forEach((c, i) => {\r\n if (i > 11) {\r\n show ? c.show() : c.hide();\r\n }\r\n });\r\n // show the delete column\r\n cols[cols.length - 1].show();\r\n this.tabExpenseDetails.redraw(true);\r\n }\r\n\r\n private onExpenseDetailDelete(detail: IExpenseLine) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:onExpenseDetailDelete',\r\n summary: detail\r\n });\r\n this.confirm(this.deleteDetail, detail);\r\n }\r\n private showPdboClick(detail: IExpenseLine) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:showPdboClick',\r\n summary: detail\r\n });\r\n this.showPdbo.emit(detail);\r\n }\r\n confirm(emitter: EventEmitter, summary: IExpenseLine) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: 'Are you sure you want to delete this detail?'\r\n })\r\n .then(() => {\r\n emitter.emit(summary);\r\n })\r\n .catch(() => {});\r\n }\r\n showHideColumns(hide: boolean) {\r\n this.log.verbose({\r\n type: 'ExpenseDetailListComponent:showHideColumns',\r\n hide\r\n });\r\n if (this.tabExpenseDetails) {\r\n if (hide) {\r\n this.tabExpenseDetails.hideColumn('delete');\r\n } else {\r\n this.tabExpenseDetails.showColumn('delete');\r\n }\r\n }\r\n }\r\n}\r\n","export * from './expense-detail-list.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, fromEvent, Observable } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n filter,\r\n startWith,\r\n take,\r\n takeWhile,\r\n tap\r\n} from 'rxjs/operators';\r\nimport {\r\n IDirectReport,\r\n IExpenseItem,\r\n IPerDiemLocale,\r\n ITask,\r\n ITravelType\r\n} from '../../../lookups';\r\nimport { Process } from '../../../shared';\r\nimport { Dialog } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IUserColor, IUserInfo, UserRoleEnum } from '../../../user-info';\r\nimport { IExpenseLine } from '../../IExpenseLine';\r\nimport { IExpenseReceipt } from '../../IExpenseReceipt';\r\nimport { IExpenseSummary } from '../../IExpenseSummary';\r\n\r\n@Component({\r\n selector: 'ef-expense-list',\r\n templateUrl: './expense-list.component.html',\r\n styleUrls: ['./expense-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseListComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() expenses: Array = [];\r\n @Input() userWebColors: Array;\r\n @Input() expenseLines: Array;\r\n @Input() expenseReceipts: Array;\r\n selectedExpenses: Array;\r\n @Input() process: Process;\r\n @Input() loading: boolean;\r\n private _startDate: Date;\r\n @Input() public set startDate(value: Date) {\r\n const m = moment(value);\r\n if (m.isValid()) {\r\n this._startDate = m.toDate();\r\n this.filterFormGroup.controls['startDate'].patchValue(m.toDate());\r\n }\r\n }\r\n public get startDate(): Date {\r\n return this._startDate;\r\n }\r\n private _endDate: Date;\r\n @Input() public set endDate(value: Date) {\r\n const m = moment(value);\r\n if (m.isValid()) {\r\n this._endDate = m.toDate();\r\n this.filterFormGroup.controls['endDate'].patchValue(m.toDate());\r\n }\r\n }\r\n public get endDate(): Date {\r\n return this._endDate;\r\n }\r\n @Input() roleId: number;\r\n @Input() directReports: Array;\r\n @Input() perDiemTypes: Array;\r\n @Input() travelTypes: Array;\r\n @Input() tasks: Array;\r\n @Input() expenseItems: Array;\r\n @Input() selectedExpense: IExpenseSummary;\r\n @Input() selectedDetail: IExpenseLine;\r\n @Input() selectedUser: IDirectReport;\r\n @Input() superUserEnabled: boolean;\r\n @Input() userInfo: IUserInfo;\r\n @Input() validating: boolean;\r\n @Input() approving: boolean;\r\n\r\n @Output() addExpense = new EventEmitter();\r\n @Output() editExpense = new EventEmitter();\r\n @Output() ShowExpenseDetail = new EventEmitter();\r\n @Output() deleteExpense = new EventEmitter();\r\n @Output() oversignExpense = new EventEmitter();\r\n @Output() ConvertExpense = new EventEmitter>();\r\n @Output() ValidateExpense = new EventEmitter>();\r\n @Output() ApproveExpense = new EventEmitter>();\r\n @Output() UnvalidateExpense = new EventEmitter>();\r\n @Output() UnapproveExpense = new EventEmitter>();\r\n @Output() DisapproveExpense = new EventEmitter>();\r\n @Output() selectDetail = new EventEmitter();\r\n @Output() editDetail = new EventEmitter();\r\n @Output() deleteDetail = new EventEmitter();\r\n @Output() deleteReceipt = new EventEmitter();\r\n @Output() editReceipt = new EventEmitter();\r\n @Output() selectReceipt = new EventEmitter();\r\n @Output() dateFiltersChanged = new EventEmitter<{\r\n startDate: Date;\r\n endDate: Date;\r\n }>();\r\n @Output() CanClose = new EventEmitter();\r\n // @Output() taskFilterChanged = new EventEmitter>();\r\n // @Output() expenseItemFilterChanged = new EventEmitter>();\r\n @Output() userSelected = new EventEmitter();\r\n @Output() AddSelectedExpense = new EventEmitter();\r\n @Output() RemoveSelectedExpense = new EventEmitter();\r\n @Output() ClearSelectedExpenses = new EventEmitter();\r\n @Output() ShowPdbo = new EventEmitter();\r\n @ViewChild('summary', { static: true })\r\n matExpansionSummary: MatExpansionPanel;\r\n @ViewChild('addExpense', { read: ElementRef, static: true })\r\n addExpenseButton: ElementRef;\r\n @ViewChild('validateExpense', { read: ElementRef, static: true })\r\n btnValidateExpenseEl: ElementRef;\r\n @ViewChild('approveExpense', { read: ElementRef, static: true })\r\n btnApproveExpenseEl: ElementRef;\r\n @ViewChild('unvalidateExpense', { read: ElementRef, static: true })\r\n btnUnvalidateExpenseEl: ElementRef;\r\n @ViewChild('unapproveExpense', { read: ElementRef, static: true })\r\n btnUnapproveExpenseEl: ElementRef;\r\n @ViewChild('disapproveExpense', { read: ElementRef, static: true })\r\n btnDisapproveExpenseEl: ElementRef;\r\n @ViewChild('disapprovalDialog', { static: true }) disapprovalDialog: Dialog;\r\n public RoleType = UserRoleEnum;\r\n public directReportsGroup: FormGroup;\r\n public filterFormGroup: FormGroup;\r\n public showLineDetails = false;\r\n public panelOpenState = true;\r\n public dialogVisible = false;\r\n private componentActive = true;\r\n public validateClick$: Observable;\r\n public approveClick$: Observable;\r\n public unvalidateClick$: Observable;\r\n public unapproveClick$: Observable;\r\n public disapproveClick$: Observable;\r\n public canOversign = false;\r\n private cdRef: ChangeDetectorRef;\r\n public get ExpenseLabel(): string {\r\n if (this.process && this.process.ProcessID === 147) {\r\n return 'Add Travel Request';\r\n } else {\r\n return 'Add Expense Report';\r\n }\r\n }\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(Injector) injector: Injector\r\n ) {\r\n this.log.verbose({ type: 'ExpenseListComponent::' });\r\n this.cdRef = injector.get(ChangeDetectorRef);\r\n\r\n this.directReportsGroup = new FormGroup({\r\n superUser: new FormControl(null),\r\n ddlDirectReports: new FormControl(null),\r\n disapprovalComment: new FormControl(null)\r\n });\r\n\r\n this.filterFormGroup = new FormGroup({\r\n endDate: new FormControl(null),\r\n startDate: new FormControl(null)\r\n // tasksFilter: new FormControl(null),\r\n // expenseItemFilter: new FormControl(null),\r\n });\r\n }\r\n ngOnInit() {}\r\n ngOnDestroy(): void {\r\n this.log.verbose({ type: 'ExpenseListComponent:ngOnDestroy' });\r\n this.componentActive = false;\r\n }\r\n ngAfterViewInit(): void {\r\n const mStartDate = moment(this.startDate);\r\n const mEndDate = moment(this.endDate);\r\n setTimeout(() => {\r\n // if (mStartDate.isValid()) {\r\n // this.filterFormGroup.controls['startDate'].patchValue(\r\n // mStartDate.toDate()\r\n // );\r\n // }\r\n // if (mEndDate.isValid()) {\r\n // this.filterFormGroup.controls['endDate'].patchValue(\r\n // mEndDate.toDate()\r\n // );\r\n // }\r\n this.directReportsGroup.controls['superUser'].patchValue(\r\n this.process.IsSuperUserProcess\r\n );\r\n }, 0);\r\n\r\n this.setupSubscriptions();\r\n this.log.verbose({\r\n type: 'ExpenseListComponent:ngAfterViewInit',\r\n process: this.process,\r\n approving: this.approving,\r\n validating: this.validating\r\n });\r\n }\r\n setupSubscriptions() {\r\n this.validateClick$ = fromEvent(\r\n this.btnValidateExpenseEl.nativeElement,\r\n 'click'\r\n ).pipe(\r\n tap(x =>\r\n this.log.verbose({ type: 'ExpenseListComponent:validateClick' })\r\n ),\r\n tap(x => x.stopPropagation())\r\n );\r\n this.unvalidateClick$ = fromEvent(\r\n this.btnUnvalidateExpenseEl.nativeElement,\r\n 'click'\r\n ).pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListComponent:unvalidateClick'\r\n })\r\n ),\r\n tap(x => x.stopPropagation())\r\n );\r\n this.approveClick$ = fromEvent(\r\n this.btnApproveExpenseEl.nativeElement,\r\n 'click'\r\n ).pipe(\r\n tap(x =>\r\n this.log.verbose({ type: 'ExpenseListComponent:approveClick' })\r\n ),\r\n tap(x => x.stopPropagation())\r\n );\r\n this.unapproveClick$ = fromEvent(\r\n this.btnUnapproveExpenseEl.nativeElement,\r\n 'click'\r\n ).pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListComponent:unapproveClick'\r\n })\r\n ),\r\n tap(x => x.stopPropagation())\r\n );\r\n this.disapproveClick$ = fromEvent(\r\n this.btnDisapproveExpenseEl.nativeElement,\r\n 'click'\r\n ).pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ExpenseListComponent:disapproveClick'\r\n })\r\n ),\r\n tap(x => x.stopPropagation())\r\n );\r\n this.directReportsGroup.controls['superUser'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseListComponent:directReportsGroup:superUser:valueChanges',\r\n x\r\n })\r\n ),\r\n filter((x: boolean) => x !== true)\r\n )\r\n .subscribe(x => {\r\n this.userSelected.emit(null);\r\n });\r\n\r\n this.directReportsGroup.controls['ddlDirectReports'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n startWith()\r\n )\r\n .subscribe((x: IDirectReport) => {\r\n this.log.debug({\r\n type: 'ExpenseListComponent:directReportsGroup:ddlDirectReports:valueChanges',\r\n x\r\n });\r\n this.userSelected.emit(x);\r\n this.clearDependentGrids();\r\n });\r\n\r\n combineLatest([\r\n this.filterFormGroup.controls['startDate'].valueChanges.pipe(\r\n startWith(this.startDate)\r\n ),\r\n this.filterFormGroup.controls['endDate'].valueChanges.pipe(\r\n startWith(this.endDate)\r\n )\r\n ])\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n debounceTime(500)\r\n )\r\n .subscribe(([startDate, endDate]) => {\r\n this.clearDependentGrids();\r\n this.dateFiltersChanged.emit({\r\n startDate: startDate,\r\n endDate: endDate\r\n });\r\n });\r\n\r\n fromEvent(this.addExpenseButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe((x: any) => {\r\n let d = moment();\r\n const max = moment(this.endDate);\r\n const min = moment(this.startDate);\r\n d = moment.min(d, max);\r\n d = moment.max(d, min);\r\n // this.summary.ReportDate = d.toDate();\r\n this.addExpense.emit({\r\n ExpReportNbr: -1,\r\n ReportDate: d.toDate()\r\n });\r\n x.stopPropagation();\r\n });\r\n }\r\n private clearDependentGrids() {\r\n this.ShowExpenseDetail.emit(null);\r\n }\r\n onClickExpense($event: IExpenseSummary) {\r\n this.log.debug({\r\n type: 'ExpenseListComponent:onClickExpense',\r\n $event\r\n });\r\n this.ShowExpenseDetail.emit($event);\r\n }\r\n onSelectExpenses($event: IExpenseSummary[]) {\r\n this.log.debug({\r\n type: 'ExpenseListComponent:onSelectExpenses',\r\n $event\r\n });\r\n this.selectedExpenses = $event.map(x => x.ExpReportNbr);\r\n }\r\n onEditExpense($event: IExpenseSummary) {\r\n this.editExpense.emit($event);\r\n }\r\n onDeleteExpense($event: IExpenseSummary) {\r\n this.deleteExpense.emit($event);\r\n }\r\n onDeleteDetail($event: IExpenseLine) {\r\n this.deleteDetail.emit($event);\r\n }\r\n onDeleteReceipt($event: IExpenseReceipt) {\r\n this.log.verbose({\r\n type: 'ExpenseListComponent:onDeleteReceipt',\r\n $event\r\n });\r\n this.deleteReceipt.emit($event);\r\n }\r\n onOversignExpense($event: IExpenseSummary) {\r\n this.oversignExpense.emit($event);\r\n }\r\n onSelectDetail($event: IExpenseLine) {\r\n this.selectDetail.emit($event);\r\n }\r\n onSelectReceipt($event: IExpenseReceipt) {\r\n this.selectReceipt.emit($event);\r\n }\r\n onEditDetail($event: IExpenseLine) {\r\n this.editDetail.emit($event);\r\n }\r\n onEditReceipt($event: IExpenseReceipt) {\r\n this.editReceipt.emit($event);\r\n }\r\n onConvertExpense($event: Array) {\r\n this.ConvertExpense.emit($event);\r\n }\r\n onValidateExpense($event: Array) {\r\n this.ValidateExpense.emit($event);\r\n }\r\n onApproveExpense($event: Array) {\r\n this.ApproveExpense.emit($event);\r\n }\r\n onUnvalidateExpense($event: Array) {\r\n this.UnvalidateExpense.emit($event);\r\n }\r\n onUnapproveExpense($event: Array) {\r\n this.UnapproveExpense.emit($event);\r\n }\r\n onDisapproveExpense($event: Array) {\r\n this.log.debug({\r\n type: 'ExpenseListComponent:onDisapproveExpense',\r\n $event\r\n });\r\n this.disapprovalDialog.onHide.pipe(take(1)).subscribe(() => {\r\n this.onCloseComment($event);\r\n });\r\n this.dialogVisible = true;\r\n this.disapprovalDialog.visible = true;\r\n }\r\n onCloseComment(expenses: Array) {\r\n this.log.debug({\r\n type: 'ExpenseListComponent:onCloseComment',\r\n expenses\r\n });\r\n const comment =\r\n this.directReportsGroup.get('disapprovalComment')?.value;\r\n this.DisapproveExpense.emit(\r\n expenses.map(x => ({ ...x, MgrComment: comment }))\r\n );\r\n }\r\n onCanClose($event: boolean) {\r\n this.CanClose.next($event);\r\n }\r\n onAddSelectedExpense($event) {\r\n this.AddSelectedExpense.emit($event);\r\n }\r\n onRemoveSelectedExpense($event) {\r\n this.RemoveSelectedExpense.emit($event);\r\n }\r\n onClearSelectedExpenses($event) {\r\n this.ClearSelectedExpenses.emit($event);\r\n }\r\n onShowPdbo($event: IExpenseLine) {\r\n this.log.debug({\r\n type: 'ExpenseListComponent:onShowPdbo',\r\n $event\r\n });\r\n this.ShowPdbo.emit($event);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { MatDialogConfig } from '@angular/material/dialog';\r\nimport { StateService } from '@uirouter/core';\r\nimport { combineLatest, ReplaySubject, Subject } from 'rxjs';\r\nimport { takeWhile, tap } from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport { UnsavedChangesService } from '../../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../../shared/services/logging/logging.service';\r\nimport { ExpenseStatus } from '../../../expense-enums';\r\nimport { IExpenseLine } from '../../../IExpenseLine';\r\nimport { IExpenseReceipt } from '../../../IExpenseReceipt';\r\nimport { IExpenseSummary } from '../../../IExpenseSummary';\r\n\r\n@Component({\r\n selector: 'ef-expense-receipt-list',\r\n templateUrl: './expense-receipt-list.component.html',\r\n styleUrls: ['./expense-receipt-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseReceiptListComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private _expenseReceipts: Array;\r\n @Input() public set expenseReceipts(value: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:expenseReceipts:set',\r\n value\r\n });\r\n this._expenseReceipts = value;\r\n this.ReceiptsSubject.next(value);\r\n }\r\n public get expenseReceipts(): Array {\r\n return this._expenseReceipts;\r\n }\r\n @Input() public set selectedDetail(value: IExpenseLine) {\r\n this.SelectedDetailSubject.next(value);\r\n }\r\n @Input() public set selectedExpense(value: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptListComponent:selectedExpense',\r\n value\r\n });\r\n if (value) {\r\n this.ExpenseReportStatus = value.ExpenseReportStatus;\r\n this.showHideColumns();\r\n }\r\n }\r\n private ExpenseReportStatus?: ExpenseStatus;\r\n private ValidatingSubject = new ReplaySubject(1);\r\n private _validating: boolean;\r\n @Input() set validating(value: boolean) {\r\n this._validating = value;\r\n this.ValidatingSubject.next(value);\r\n }\r\n get validating(): boolean {\r\n return this._validating;\r\n }\r\n private ApprovingSubject = new ReplaySubject(1);\r\n private _approving: boolean;\r\n @Input() set approving(value: boolean) {\r\n this._approving = value;\r\n this.ApprovingSubject.next(value);\r\n }\r\n get approving(): boolean {\r\n return this._approving;\r\n }\r\n @Output() selectReceipt = new EventEmitter();\r\n @Output() editReceipt = new EventEmitter();\r\n @Output() deleteReceipt = new EventEmitter();\r\n public selectedRowsCheckbox = { checked: false, indeterminate: false };\r\n private tabExpenseReceipts: Tabulator;\r\n private SelectedDetailSubject = new Subject();\r\n private ReceiptsSubject = new Subject>();\r\n private active = true;\r\n constructor(\r\n private confirmservice: UnsavedChangesService,\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(StateService) private ss: StateService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.ReceiptsSubject.pipe(\r\n takeWhile(() => this.active),\r\n tap(receipts =>\r\n this.log.verbose({\r\n type: 'ExpenseReceiptListComponent:ngOnInit',\r\n receipts\r\n })\r\n )\r\n ).subscribe(receipts => {\r\n // this.createTabulator(receipts, []);\r\n if (this.tabExpenseReceipts) {\r\n this.tabExpenseReceipts.setData(receipts.map(x => ({ ...x })));\r\n setTimeout(() => {\r\n this.tabExpenseReceipts.redraw(true);\r\n }, 500);\r\n }\r\n });\r\n\r\n combineLatest([this.SelectedDetailSubject, this.ReceiptsSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([line, receipts]) => {\r\n const first = receipts.find(\r\n x => x.Sequenceid === line.SequenceId\r\n );\r\n if (this.tabExpenseReceipts) {\r\n this.tabExpenseReceipts.deselectRow();\r\n if (first) {\r\n this.tabExpenseReceipts.selectRow(first.Unique_Id);\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'ExpenseReceiptListComponent:SelectedDetailSubject:ReceiptsSubject',\r\n line,\r\n receipts\r\n });\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n this.createTabulator([], []);\r\n this.setupSubscriptions();\r\n }\r\n setupSubscriptions() {\r\n combineLatest([\r\n this.ReceiptsSubject,\r\n this.ApprovingSubject,\r\n this.ValidatingSubject\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([receipts, approving, validating]) => {\r\n this.showHideColumns();\r\n });\r\n }\r\n private createTabulator(\r\n receipts: Array,\r\n errors: Array\r\n ) {\r\n const comp = this;\r\n this.log.verbose(\r\n 'ExpenseReceiptListComponent::createTabulator:receipts, errors',\r\n receipts,\r\n errors\r\n );\r\n this.tabExpenseReceipts = new Tabulator('#tabExpenseReceipts', {\r\n data: receipts.map(e => ({ ...e })),\r\n maxHeight: '20vh',\r\n minHeight: '7vh',\r\n // paginationSize: 5,\r\n // paginationSizeSelector: [5, 10, 15, 20, 25],\r\n // pagination: 'local',\r\n columns: [\r\n // 2\r\n {\r\n headerSort: false,\r\n title: 'Expense Receipt #',\r\n minWidth: 110,\r\n field: '',\r\n visible: true,\r\n formatter: c => {\r\n const data = c.getData() as IExpenseReceipt;\r\n // const row = c.getRow();\r\n // const e = c.getElement();\r\n // const exp = row.getData() as IExpenseSummary;\r\n // e.classList.add(ExpenseStatus[exp.ExpenseReportStatus]);\r\n return `${data.ExpenseRptNbr}-${data.Sequenceid}`;\r\n }\r\n },\r\n // 3\r\n {\r\n minWidth: 101,\r\n headerSort: false,\r\n title: 'Payment Method',\r\n field: 'PaymentMethod',\r\n visible: true\r\n },\r\n // 4\r\n {\r\n minWidth: 60,\r\n headerSort: false,\r\n title: 'Total',\r\n field: 'ReceiptTotal',\r\n visible: true,\r\n formatter: 'money',\r\n formatterParams: {\r\n symbol: '$'\r\n }\r\n },\r\n // 5\r\n {\r\n minWidth: 60,\r\n headerSort: false,\r\n title: 'Tax',\r\n field: 'ReceiptTax',\r\n visible: true,\r\n formatter: 'money',\r\n formatterParams: {\r\n symbol: '$'\r\n }\r\n },\r\n // 6\r\n {\r\n minWidth: 75,\r\n headerSort: false,\r\n title: 'Description',\r\n field: 'ReceiptDescription',\r\n visible: true\r\n },\r\n {\r\n headerSort: false,\r\n title: '',\r\n formatter: c => {\r\n const data = c.getData() as IExpenseReceipt;\r\n const url = this.ss.href('receipt', {\r\n receiptId: data.File_unique_id\r\n });\r\n if (data.File_unique_id) {\r\n return `View`;\r\n }\r\n return '';\r\n // return `View`;\r\n }\r\n },\r\n {\r\n minWidth: 50,\r\n width: 50,\r\n title: 'Delete',\r\n field: 'delete',\r\n visible: false,\r\n formatter: c => {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptListComponent:delete',\r\n status: comp.ExpenseReportStatus\r\n });\r\n\r\n if (comp.ExpenseReportStatus === ExpenseStatus.Signed) {\r\n return ``;\r\n }\r\n },\r\n cellClick: (e, c) => {\r\n if (comp.ExpenseReportStatus === ExpenseStatus.Signed) {\r\n this.onExpenseReceiptDelete.bind(this)(c.getData());\r\n }\r\n },\r\n cellTap: (e, c) => {\r\n if (comp.ExpenseReportStatus === ExpenseStatus.Signed) {\r\n this.onExpenseReceiptDelete.bind(this)(c.getData());\r\n }\r\n },\r\n headerSort: false\r\n },\r\n {\r\n title: 'ExpenseRptNbr',\r\n field: 'ExpenseRptNbr',\r\n visible: false\r\n },\r\n {\r\n title: 'Sequenceid',\r\n field: 'Sequenceid',\r\n visible: false\r\n },\r\n {\r\n title: 'Unique_Id',\r\n field: 'Unique_Id',\r\n visible: false\r\n }\r\n ],\r\n index: 'Unique_Id',\r\n layout: 'fitColumns',\r\n rowDblClick: this.onReceiptClick.bind(this),\r\n rowDblTap: this.onReceiptClick.bind(this),\r\n selectable: 1,\r\n initialSort: [\r\n { column: 'ExpenseRptNbr', dir: 'asc' },\r\n { column: 'Sequenceid', dir: 'asc' }\r\n ]\r\n });\r\n }\r\n private onReceiptClick(e, row) {\r\n const data = row.getData();\r\n this.log.debug({\r\n type: 'ExpenseReceiptListComponent:onReceiptClick',\r\n data\r\n });\r\n this.editReceipt.emit(data);\r\n }\r\n private onExpenseReceiptDelete(receipt: IExpenseReceipt) {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptListComponent:onExpenseReceiptDelete',\r\n summary: receipt\r\n });\r\n this.confirm(this.deleteReceipt, receipt);\r\n }\r\n confirm(emitter: EventEmitter, receipt: IExpenseReceipt) {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: 'Are you sure you want to delete this receipt?'\r\n })\r\n .then(() => {\r\n emitter.emit(receipt);\r\n })\r\n .catch(() => {});\r\n }\r\n\r\n showHideColumns() {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptListComponent:showHideColumns',\r\n validating: this.validating,\r\n approving: this.approving,\r\n tab: this.tabExpenseReceipts\r\n });\r\n if (this.tabExpenseReceipts) {\r\n if (this.validating || this.approving) {\r\n this.tabExpenseReceipts.hideColumn('delete');\r\n } else {\r\n this.tabExpenseReceipts.showColumn('delete');\r\n }\r\n }\r\n }\r\n}\r\n","export * from './expense-receipt-list.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ActionsSubject } from '@ngrx/store';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { filter, first, takeWhile, withLatestFrom } from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport { IDirectReport, IExpenseItem, ITask } from '../../../../lookups';\r\nimport { Process } from '../../../../shared';\r\nimport { UnsavedChangesService } from '../../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../../shared/services/logging/logging.service';\r\nimport { IUserColor, UserRoleEnum } from '../../../../user-info';\r\nimport { ExpenseRequestTypeEnum, ExpenseStatus } from '../../../expense-enums';\r\nimport { IExpenseSummary } from '../../../IExpenseSummary';\r\nimport * as fromExpense from '../../../store';\r\n\r\n@Component({\r\n selector: 'ef-expense-summary-list',\r\n templateUrl: './expense-summary-list.component.html',\r\n styleUrls: ['./expense-summary-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ExpenseSummaryListComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n @Input() set expenses(value: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:expenses:set',\r\n value\r\n });\r\n this.ExpensesSubject.next(value.map(x => ({ ...x })));\r\n }\r\n @Input() public set approveClick(value: any) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:approveClick',\r\n value\r\n });\r\n if (value) {\r\n // const summaries = this.tabExpenses.getData() as Array<\r\n // IExpenseSummary\r\n // >;\r\n // const selected = summaries.filter(x => x.selected);\r\n const selected = this.tabExpenses.getSelectedData();\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:approveClick',\r\n selected\r\n });\r\n this.onExpenseSummaryApprove(selected);\r\n }\r\n }\r\n @Input() public set validateClick(value: any) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:validateClick',\r\n value\r\n });\r\n if (value) {\r\n // const summaries = this.tabExpenses.getData() as Array<\r\n // IExpenseSummary\r\n // >;\r\n // const selected = summaries.filter(x => x.selected);\r\n const selected = this.tabExpenses.getSelectedData();\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:validateClick',\r\n selected\r\n });\r\n this.onExpenseSummaryValidate(selected);\r\n }\r\n }\r\n @Input() public set unapproveClick(value: any) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:unapproveClick',\r\n value\r\n });\r\n if (value) {\r\n // const summaries = this.tabExpenses.getData() as Array<\r\n // IExpenseSummary\r\n // >;\r\n // const selected = summaries.filter(x => x.selected);\r\n const selected = this.tabExpenses.getSelectedData();\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:unapproveClick',\r\n selected\r\n });\r\n this.onExpenseSummaryUnapprove(selected);\r\n }\r\n }\r\n @Input() public set disapproveClick(value: any) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:disapproveClick',\r\n value\r\n });\r\n if (value) {\r\n // const summaries = this.tabExpenses.getData() as Array<\r\n // IExpenseSummary\r\n // >;\r\n // const selected = summaries.filter(x => x.selected);\r\n const selected = this.tabExpenses.getSelectedData();\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:disapproveClick',\r\n selected\r\n });\r\n this.onExpenseSummaryDisapprove(selected);\r\n }\r\n }\r\n @Input() public set unvalidateClick(value: any) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:unvalidateClick',\r\n value\r\n });\r\n if (value) {\r\n // const summaries = this.tabExpenses.getData() as Array<\r\n // IExpenseSummary\r\n // >;\r\n // const selected = summaries.filter(x => x.selected);\r\n const selected = this.tabExpenses.getSelectedData();\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:unvalidateClick',\r\n selected\r\n });\r\n this.onExpenseSummaryUnvalidate(selected);\r\n }\r\n }\r\n @Input() process: Process;\r\n @Input() startDate: Date;\r\n @Input() endDate: Date;\r\n @Input() directReports: Array;\r\n @Input() tasks: Array;\r\n @Input() expenseItems: Array;\r\n @Input() selectedUser: IDirectReport;\r\n @Input() superUserEnabled: boolean;\r\n @Input() userColors: Array;\r\n @Input() canOversign: boolean;\r\n @Input() public set roleId(value: number) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:roleId:set',\r\n value\r\n });\r\n this.RoleSubject.next(value);\r\n }\r\n _validating: boolean;\r\n @Input() public set validating(value: boolean) {\r\n this._validating = value;\r\n if (value) {\r\n this.maxStatus = ExpenseStatus.Validated;\r\n }\r\n\r\n this.showHideColumns();\r\n }\r\n public get validating(): boolean {\r\n return this._validating;\r\n }\r\n _approving: boolean;\r\n @Input() public set approving(value: boolean) {\r\n this._approving = value;\r\n if (value) {\r\n this.maxStatus = ExpenseStatus.Approved;\r\n }\r\n\r\n this.showHideColumns();\r\n }\r\n public get approving(): boolean {\r\n return this._approving;\r\n }\r\n @Output() SelectExpenses = new EventEmitter();\r\n @Output() clickExpense = new EventEmitter();\r\n @Output() editExpense = new EventEmitter();\r\n @Output() deleteExpense = new EventEmitter();\r\n @Output() oversignExpense = new EventEmitter();\r\n @Output() ConvertExpense = new EventEmitter();\r\n @Output() ValidateExpense = new EventEmitter>();\r\n @Output() ApproveExpense = new EventEmitter>();\r\n @Output() UnvalidateExpense = new EventEmitter>();\r\n @Output() UnapproveExpense = new EventEmitter>();\r\n @Output() DisapproveExpense = new EventEmitter>();\r\n @Output() AddSelectedExpense = new EventEmitter();\r\n @Output() RemoveSelectedExpense = new EventEmitter();\r\n @Output() ClearSelectedExpenses = new EventEmitter();\r\n @Output() CanClose = new EventEmitter();\r\n @ViewChild('cbxColumnHeader', { static: true })\r\n cbxColumnHeader: MatCheckbox;\r\n public loading = true;\r\n public selectedRowsCheckbox = { checked: false, indeterminate: false };\r\n public tabExpenses: Tabulator;\r\n public componentActive = true;\r\n public RoleSubject = new ReplaySubject(1);\r\n public ExpensesSubject = new ReplaySubject>(1);\r\n public maxStatus: ExpenseStatus = 0;\r\n public selected: Array = [];\r\n private placeholderText: string;\r\n constructor(\r\n @Inject(UnsavedChangesService)\r\n public confirmservice: UnsavedChangesService,\r\n public dialog: MatDialog,\r\n @Inject(LoggingService) public log: LoggingService,\r\n public dispatcher: ActionsSubject\r\n ) {\r\n this.log.verbose({ type: 'ExpenseSummaryListComponent::' });\r\n }\r\n ngOnInit() {\r\n this.log.verbose({ type: 'ExpenseSummaryListComponent:ngOnInit' });\r\n }\r\n ngAfterViewInit(): void {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:ngAfterViewInit',\r\n userColors: this.userColors\r\n });\r\n if (this.process.ProcessID === 86) {\r\n // expense approval\r\n this.placeholderText =\r\n 'No expense reports for the selected person and date range';\r\n } else {\r\n this.placeholderText =\r\n 'No expense reports exist for the selected time period';\r\n }\r\n this.createTabulator([], []);\r\n this.showHideColumns();\r\n this.setupSubscriptions();\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:ngAfterViewInit',\r\n process: this.process\r\n });\r\n this.maxStatus = 0;\r\n }\r\n setupSubscriptions() {\r\n // for any changes in the list of expenses, replace the data in tabulator\r\n this.ExpensesSubject.pipe(\r\n takeWhile(() => this.componentActive)\r\n ).subscribe(expenses => {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:ExpensesSubject',\r\n expenses\r\n });\r\n this.tabExpenses.replaceData(expenses);\r\n });\r\n this.ExpensesSubject.pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(x => !!x && x.length > 0),\r\n first()\r\n ).subscribe(expenses => {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:ExpensesSubject',\r\n expenses\r\n });\r\n this.tabExpenses.redraw(true);\r\n });\r\n\r\n // for new expenses, scroll to the new row\r\n this.dispatcher\r\n .pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummarySuccess\r\n ),\r\n takeWhile(() => this.componentActive),\r\n withLatestFrom(this.ExpensesSubject)\r\n )\r\n .subscribe(([newExpense, expenses]) => {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:AddExpenseSummarySuccess',\r\n newExpense\r\n });\r\n if (\r\n expenses.find(\r\n x =>\r\n x.ExpReportNbr ===\r\n newExpense.payload.Items[0].ExpReportNbr\r\n )\r\n ) {\r\n this.tabExpenses.scrollToRow(\r\n newExpense.payload.Items[0].ExpReportNbr,\r\n 'center',\r\n false\r\n );\r\n }\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.log.verbose({ type: 'ExpenseSummaryListComponent:ngOnDestroy' });\r\n this.componentActive = false;\r\n }\r\n private createTabulator(\r\n expenses: Array,\r\n errors: Array\r\n ) {\r\n const comp = this;\r\n this.log.debug({\r\n type: 'ExpenseSummaryListComponent:createTabulator',\r\n expenses\r\n });\r\n this.tabExpenses = new Tabulator('#tabExpenses', {\r\n placeholder: comp.placeholderText,\r\n maxHeight: '20vh',\r\n minHeight: '7vh',\r\n height: '20vh',\r\n index: 'ExpReportNbr',\r\n scrollToRowPosition: 'center',\r\n selectablePersistence: true,\r\n rowSelectionChanged: (data, rows) => {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:tabExpenses:rowSelectionChanged',\r\n rows,\r\n data\r\n });\r\n this.SelectExpenses.emit(data);\r\n },\r\n rowFormatter: row => {\r\n const selected = row.getCell('selected').getElement();\r\n const summary = row.getData() as IExpenseSummary;\r\n // comp.log.verbose({\r\n // type: 'ExpenseSummaryListComponent:tabulator:rowFormatter',\r\n // row,\r\n // selected\r\n // });\r\n if (comp.maxStatus < summary.ExpenseReportStatus) {\r\n selected.classList.add('disabled');\r\n }\r\n },\r\n columns: [\r\n // 1: selected\r\n {\r\n title: '',\r\n field: 'selected',\r\n headerSort: false,\r\n width: 50,\r\n formatter: 'rowSelection',\r\n titleFormatter: 'rowSelection',\r\n editor: false,\r\n cellClick: (e, cell) => {\r\n const row = cell.getRow();\r\n const summary = row.getData() as IExpenseSummary;\r\n if (summary.ExpenseReportStatus <= this.maxStatus) {\r\n row.toggleSelect();\r\n }\r\n },\r\n cellDblClick: (e, cell) => {\r\n const row = cell.getRow();\r\n const summary = row.getData() as IExpenseSummary;\r\n if (summary.ExpenseReportStatus <= this.maxStatus) {\r\n row.update({\r\n selected: !summary.selected\r\n }).then(() => {\r\n this.SelectExpenses.emit(\r\n cell\r\n .getTable()\r\n .getData()\r\n .filter(x => x.selected)\r\n );\r\n comp.log.verbose({\r\n type: 'ExpenseSummaryListComponent:tabulator:selectableCheck',\r\n ExpenseReportStatus:\r\n summary.ExpenseReportStatus,\r\n maxStatus: this.maxStatus\r\n });\r\n });\r\n }\r\n }\r\n },\r\n // 2: Report #\r\n {\r\n minWidth: 85,\r\n width: 85,\r\n title: 'Report #',\r\n field: 'ExpReportNbr',\r\n visible: true,\r\n formatter: c => {\r\n const row = c.getRow();\r\n const e = c.getElement() as HTMLElement;\r\n const exp = row.getData() as IExpenseSummary;\r\n // e.classList.add(ExpenseStatus[exp.ExpenseReportStatus]);\r\n if (this.userColors && this.userColors.length) {\r\n const statusColor = this.userColors.find(\r\n color =>\r\n color.StatusID === exp.ExpenseReportStatus\r\n );\r\n\r\n if (statusColor) {\r\n try {\r\n let foreColor = statusColor.Forecolor_Hex;\r\n let backColor = statusColor.Backcolor_hex;\r\n let superUserColor;\r\n if (\r\n exp.RequiresOversign &&\r\n this.canOversign\r\n ) {\r\n const pendingOversignColor =\r\n this.userColors.find(\r\n color =>\r\n color.Status.toLocaleLowerCase() ===\r\n 'pendingoversign'\r\n );\r\n if (pendingOversignColor) {\r\n backColor =\r\n pendingOversignColor.Backcolor_hex;\r\n foreColor =\r\n pendingOversignColor.Forecolor_Hex;\r\n } else {\r\n superUserColor =\r\n this.userColors.find(\r\n color =>\r\n color.StatusID ===\r\n ExpenseStatus.SuperUser\r\n );\r\n }\r\n }\r\n\r\n e.style.color = foreColor;\r\n e.style.backgroundColor = backColor;\r\n\r\n e.style.borderBottomColor = foreColor;\r\n if (superUserColor) {\r\n e.style.color =\r\n superUserColor.Backcolor_hex;\r\n // e.style.borderColor =\r\n // superUserColor.Backcolor_hex;\r\n // e.style.borderWidth = '3px';\r\n // e.style.borderStyle = 'solid';\r\n // } else {\r\n }\r\n e.style.borderBottomStyle = 'solid';\r\n e.style.borderBottomWidth = '1px';\r\n if (\r\n exp.ExpenseReportStatus ===\r\n ExpenseStatus.Approved\r\n ) {\r\n e.classList.add('disabled');\r\n }\r\n } catch (err) {\r\n this.log.warn(err);\r\n }\r\n }\r\n }\r\n return c.getValue();\r\n },\r\n cellDblClick: this.itemDblClick.bind(this),\r\n cellClick: this.itemClick.bind(this)\r\n },\r\n // 3: Report Date\r\n {\r\n minWidth: 100,\r\n width: 100,\r\n title: 'Report Date',\r\n field: 'ReportDate',\r\n cssClass: 'tabulator-cell-readonly',\r\n formatter: 'datetime',\r\n formatterParams: c => {\r\n return { outputFormat: 'MM/DD/YYYY' };\r\n },\r\n cellDblClick: this.itemDblClick.bind(this),\r\n cellClick: this.itemClick.bind(this)\r\n },\r\n // 4: Report Total\r\n {\r\n minWidth: 102,\r\n width: 102,\r\n title: 'Report Total',\r\n field: 'ReportTotal',\r\n cssClass: 'tabulator-cell-readonly',\r\n formatter: 'money',\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n cellDblClick: this.itemDblClick.bind(this),\r\n cellClick: this.itemClick.bind(this)\r\n },\r\n // 5\r\n {\r\n minWidth: 90,\r\n width: 90,\r\n title: 'Allowable',\r\n field: 'ReportAllowable',\r\n cssClass: 'tabulator-cell-readonly',\r\n formatter: 'money',\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n cellDblClick: this.itemDblClick.bind(this),\r\n cellClick: this.itemClick.bind(this)\r\n },\r\n // 6\r\n {\r\n minWidth: 105,\r\n width: 105,\r\n title: 'Unallowable',\r\n field: 'ReportUnallowable',\r\n cssClass: 'tabulator-cell-readonly',\r\n formatter: 'money',\r\n formatterParams: {\r\n symbol: '$'\r\n },\r\n cellDblClick: this.itemDblClick.bind(this),\r\n cellClick: this.itemClick.bind(this)\r\n },\r\n // 7\r\n {\r\n title: 'Status',\r\n field: 'ExpenseReportStatus',\r\n // formatter: 'tickCross',\r\n // tickElement: '',\r\n // crossElement: '',\r\n visible: false,\r\n cellDblClick: this.itemDblClick.bind(this),\r\n cellClick: this.itemClick.bind(this)\r\n },\r\n // 8\r\n {\r\n minWidth: 95,\r\n width: 95,\r\n title: 'Sent to QB',\r\n field: 'Exported',\r\n cssClass: 'tabulator-cell-readonly',\r\n cellDblClick: this.itemDblClick.bind(this),\r\n cellClick: this.itemClick.bind(this)\r\n // formatter: 'tickCross',\r\n // tickElement: '',\r\n // crossElement: '',\r\n },\r\n // 9\r\n {\r\n title: '',\r\n field: 'Row_Version',\r\n visible: false\r\n },\r\n {\r\n minWidth: 85,\r\n width: 85,\r\n title: 'Receipt?',\r\n field: 'HasReceipt',\r\n cssClass: 'tabulator-cell-readonly',\r\n formatter: 'tickCross',\r\n formatterParams: { crossElement: false }\r\n // tickElement: '',\r\n // crossElement: '',\r\n },\r\n {\r\n minWidth: 80,\r\n width: 80,\r\n title: 'Travel?',\r\n field: 'IncludesTravel',\r\n cssClass: 'tabulator-cell-readonly',\r\n formatter: 'tickCross',\r\n formatterParams: { crossElement: false }\r\n // tickElement: '',\r\n // crossElement: '',\r\n },\r\n // 10\r\n {\r\n minWidth: 60,\r\n width: 60,\r\n title: 'Oversign',\r\n field: 'oversign',\r\n visible: false,\r\n formatter: c => {\r\n let result = '';\r\n const s = c.getData() as IExpenseSummary;\r\n if (\r\n s.RequiresOversign &&\r\n this.canOversign &&\r\n this.roleId !== UserRoleEnum.Administrator &&\r\n this.roleId !== UserRoleEnum.Supervisor &&\r\n this.roleId !== UserRoleEnum.TaskManager\r\n ) {\r\n result += '
Oversign
';\r\n }\r\n return result;\r\n },\r\n cellClick: (e, c) => {\r\n const s = c.getData() as IExpenseSummary;\r\n comp.log.verbose({\r\n type: 'ExpenseSummaryListComponent:Oversign:click',\r\n s,\r\n canOversign: this.canOversign\r\n });\r\n if (s.RequiresOversign && this.canOversign) {\r\n this.onExpenseSummaryOversign.bind(this)(s);\r\n }\r\n },\r\n cellTap: (e, c) => {\r\n const s = c.getData() as IExpenseSummary;\r\n if (s.RequiresOversign && this.canOversign) {\r\n this.onExpenseSummaryOversign.bind(this)(s);\r\n }\r\n },\r\n headerSort: false\r\n },\r\n // 10.1\r\n {\r\n minWidth: 55,\r\n width: 55,\r\n title: 'Convert',\r\n field: 'convert',\r\n visible: false,\r\n formatter: c => {\r\n let result = '';\r\n const s = c.getData() as IExpenseSummary;\r\n if (\r\n s.ExpenseReportStatus === ExpenseStatus.Approved &&\r\n s.ERTypeID === ExpenseRequestTypeEnum.Travel\r\n ) {\r\n result +=\r\n '
Convert
';\r\n }\r\n return result;\r\n },\r\n cellClick: (e, c) => {\r\n const s = c.getData() as IExpenseSummary;\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:Convert',\r\n s\r\n });\r\n\r\n if (s.ExpenseReportStatus === ExpenseStatus.Approved) {\r\n this.onTravelExpenseConvert.bind(this)(s);\r\n }\r\n },\r\n cellTap: (e, c) => {\r\n const s = c.getData() as IExpenseSummary;\r\n if (s.ExpenseReportStatus === ExpenseStatus.Signed) {\r\n this.onTravelExpenseConvert.bind(this)(s);\r\n }\r\n },\r\n headerSort: false\r\n },\r\n // 11\r\n {\r\n minWidth: 50,\r\n width: 50,\r\n title: 'Delete',\r\n field: 'delete',\r\n visible: false,\r\n formatter: c => {\r\n const s = c.getData() as IExpenseSummary;\r\n if (\r\n s.ExpenseReportStatus === ExpenseStatus.Signed ||\r\n s.ExpenseReportStatus === ExpenseStatus.Disapproved\r\n ) {\r\n return ``;\r\n }\r\n },\r\n cellClick: (e, c) => {\r\n const s = c.getData() as IExpenseSummary;\r\n if (\r\n s.ExpenseReportStatus === ExpenseStatus.Signed ||\r\n s.ExpenseReportStatus === ExpenseStatus.Disapproved\r\n ) {\r\n this.onExpenseSummaryDelete.bind(this)(c.getData());\r\n }\r\n },\r\n cellTap: (e, c) => {\r\n const s = c.getData() as IExpenseSummary;\r\n if (\r\n s.ExpenseReportStatus === ExpenseStatus.Signed ||\r\n s.ExpenseReportStatus === ExpenseStatus.Disapproved\r\n ) {\r\n this.onExpenseSummaryDelete.bind(this)(c.getData());\r\n }\r\n },\r\n headerSort: false\r\n }\r\n ],\r\n layout: 'fitColumns',\r\n selectable: true,\r\n initialSort: [{ column: 'ExpReportNbr', dir: 'asc' }],\r\n data: expenses\r\n });\r\n }\r\n showHideColumns() {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:showHideColumns',\r\n validating: this.validating,\r\n approving: this.approving,\r\n tabExpenses: this.tabExpenses\r\n });\r\n if (this.tabExpenses) {\r\n if (this.validating || this.approving) {\r\n this.tabExpenses.showColumn('selected');\r\n this.tabExpenses.hideColumn('oversign');\r\n this.tabExpenses.hideColumn('convert');\r\n this.tabExpenses.hideColumn('delete');\r\n } else {\r\n this.tabExpenses.hideColumn('selected');\r\n this.tabExpenses.showColumn('oversign');\r\n if (this.process.ProcessID === 147) {\r\n this.tabExpenses.showColumn('convert');\r\n }\r\n this.tabExpenses.showColumn('delete');\r\n // this.tabExpenses.selectable = 1;\r\n }\r\n }\r\n }\r\n confirm(emitter: EventEmitter, summary: IExpenseSummary) {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: 'Are you sure you want to delete this expense?'\r\n })\r\n .then(() => {\r\n emitter.emit(summary);\r\n })\r\n .catch(() => {});\r\n }\r\n private onExpenseSummaryDelete(summary: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryDelete',\r\n summary\r\n });\r\n this.confirm(this.deleteExpense, summary);\r\n }\r\n private onExpenseSummaryValidate(summaries: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryValidate',\r\n summaries\r\n });\r\n this.ValidateExpense.emit(summaries);\r\n }\r\n private onExpenseSummaryApprove(summaries: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryApprove',\r\n summaries\r\n });\r\n this.ApproveExpense.emit(summaries);\r\n }\r\n private onExpenseSummaryUnvalidate(summaries: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryUnvalidate',\r\n summaries\r\n });\r\n this.UnvalidateExpense.emit(summaries);\r\n }\r\n private onExpenseSummaryUnapprove(summaries: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryUnapprove',\r\n summaries\r\n });\r\n this.UnapproveExpense.emit(summaries);\r\n }\r\n private onExpenseSummaryDisapprove(summaries: Array) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryDisapprove',\r\n summaries\r\n });\r\n this.DisapproveExpense.emit(summaries);\r\n }\r\n private onTravelExpenseConvert(summary: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onTravelExpenseConvert',\r\n summary\r\n });\r\n\r\n this.ConvertExpense.emit(summary);\r\n // this.confirmPromise(this.ConvertExpense, summary);\r\n }\r\n private onExpenseSummaryOversign(summary: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryOversign',\r\n summary\r\n });\r\n this.oversignExpense.emit(summary);\r\n // this.confirmPromise(this.oversignExpense, summary);\r\n }\r\n private onExpenseSummaryEdit(summary: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummaryEdit',\r\n summary\r\n });\r\n this.editExpense.emit(summary);\r\n }\r\n private onExpenseSummarySelect(summary: IExpenseSummary) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:onExpenseSummarySelect',\r\n summary\r\n });\r\n this.clickExpense.emit(summary);\r\n }\r\n private itemClick(e, item) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:itemClick',\r\n item\r\n });\r\n item.getTable().deselectRow();\r\n item.getRow().select();\r\n // both cells and rows have a getData function\r\n this.onExpenseSummarySelect(item.getData());\r\n }\r\n private itemDblClick(e, item) {\r\n this.log.verbose({\r\n type: 'ExpenseSummaryListComponent:itemDblClick',\r\n item\r\n });\r\n item.getTable().deselectRow();\r\n item.getRow().select();\r\n // both cells and rows have a getData function\r\n this.onExpenseSummaryEdit(item.getData());\r\n }\r\n}\r\n","export * from './expense-summary-list.component';\r\n","export * from './expense-summary-list';\r\nexport * from './expense-detail-list';\r\nexport * from './expense-receipt-list';\r\nexport * from './expense-list.component';\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IColumn, getDynamicColumns } from '../../../shared';\r\n\r\n@Component({\r\n selector: 'ef-expense-pdbo',\r\n templateUrl: './expense-pdbo.component.html',\r\n styleUrls: ['./expense-pdbo.component.scss']\r\n})\r\nexport class ExpensePdboComponent implements OnInit, OnChanges {\r\n @Input() public items: any;\r\n @Output() public Cancel = new EventEmitter();\r\n @Output() public Save = new EventEmitter();\r\n public pdboFormGroup: FormGroup;\r\n cols: IColumn[] = [];\r\n filterItems = [\r\n 'pdbo_type',\r\n 'pdbo_amount',\r\n 'dailyperdiemamount',\r\n 'expenseID'\r\n ];\r\n constructor(private log: LoggingService) {\r\n this.pdboFormGroup = new FormGroup({});\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n changes.items &&\r\n changes.items.currentValue &&\r\n Array.isArray(changes.items.currentValue) &&\r\n changes.items.currentValue.length > 0\r\n ) {\r\n // const dc = getDynamicColumns(\r\n // changes.items.currentValue[0],\r\n // this.filterItems\r\n // );\r\n const dc = Object.keys(changes.items.currentValue[0]).filter(\r\n x => !this.filterItems.includes(x)\r\n );\r\n this.cols = dc.map(c => ({\r\n field: c,\r\n header: c,\r\n showColumn: true,\r\n group: ''\r\n }));\r\n this.log.verbose({\r\n type: 'ExpensePdboComponent:ngOnChanges',\r\n changes,\r\n cols: this.cols\r\n });\r\n }\r\n }\r\n public GetHeaderName(col: IColumn): string {\r\n switch (col.field.toLocaleLowerCase()) {\r\n case 'pdbo_typedesc':\r\n return 'Per Diem Breakout';\r\n case 'inuse':\r\n return 'Include';\r\n case 'pdbo_date':\r\n return 'Travel Date';\r\n default:\r\n return col.field;\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n public onCancel() {\r\n this.log.verbose({ type: 'ExpensePdboComponent:onCancel' });\r\n this.Cancel.emit();\r\n }\r\n public onSave($event: any) {\r\n this.log.verbose({ type: 'ExpensePdboComponent:onSave', $event });\r\n this.Save.emit($event);\r\n }\r\n}\r\n","export * from './expense-pdbo.component';\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { IAttachment } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\n\r\n@Component({\r\n selector: 'ef-expense-receipt-view-presenter',\r\n templateUrl: './expense-receipt-view-presenter.component.html',\r\n styleUrls: ['./expense-receipt-view-presenter.component.scss']\r\n})\r\nexport class ExpenseReceiptViewPresenterComponent implements OnChanges {\r\n @Input() public attachment: IAttachment;\r\n isImage(attachment: IAttachment): boolean {\r\n return attachment && attachment.Filemimetype.startsWith('image');\r\n }\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes.attachment && changes.attachment.currentValue) {\r\n const attachment = changes.attachment.currentValue;\r\n if (attachment.File) {\r\n this.log.verbose({\r\n type: 'ExpenseReceiptViewPresenterComponent.ngOnChanges',\r\n attachment: changes.attachment.currentValue\r\n });\r\n this.attachment.SafeResource =\r\n this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.attachment.File\r\n );\r\n if (!this.isImage(attachment)) {\r\n const downloadLink = document.createElement('a');\r\n const a = document.createElement('a');\r\n a.style.display = 'none';\r\n document.body.appendChild(a);\r\n // var json = JSON.stringify(data),\r\n const blob = this.dataURItoBlob(attachment);\r\n const url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = attachment.Filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n }\r\n }\r\n }\r\n }\r\n dataURItoBlob(attachment: IAttachment) {\r\n const dataURI = attachment.File.substring(attachment.File.indexOf(',') + 1);\r\n const byteString = window.atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], {\r\n type: attachment.Filemimetype\r\n });\r\n return blob;\r\n }\r\n}\r\n","export * from './expense-receipt-view-presenter.component';\r\n","export * from './expense-list';\r\nexport * from './expense-add';\r\nexport * from './expense-receipt-view-presenter';\r\nexport * from './expense-pdbo';\r\n","import { Action } from '@ngrx/store';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IDirectReport } from '../../lookups';\r\nimport { IAttachment, IGenericResponse } from '../../shared';\r\nimport { ExpenseRequestTypeEnum } from '../expense-enums';\r\nimport {\r\n IExpenseDetailResponse,\r\n IExpenseLine,\r\n IExpenseLineResponse\r\n} from '../IExpenseLine';\r\nimport { IExpenseReceipt, IExpenseReceiptResponse } from '../IExpenseReceipt';\r\nimport {\r\n IDeleteReceiptResponse,\r\n IExpenseSummary,\r\n IExpenseSummaryResponse\r\n} from '../IExpenseSummary';\r\nimport { IExpenseTask } from '../IExpenseTask';\r\nimport { IPaymentMethod } from '../IPaymentMethod';\r\nimport { ITravelMode } from '../ITravelMode';\r\nimport { ITravelRate } from '../ITravelRate';\r\nimport { ITripLegType } from '../ITripLegType';\r\nimport { UserPaymentMethod } from '../UserPaymentMethod';\r\n\r\nexport enum ActionTypes {\r\n Reset = '[expenses] Reset',\r\n ResetSelectedExpense = '[expenses] Reset Selected Expense',\r\n ClearMessages = '[expenses] Clear Messages',\r\n AddExpenseSummary = '[expenses] Add Expense Summary',\r\n AddExpenseSummarySuccess = '[expenses] Add Expense Summary Success',\r\n AddExpenseSummaryFailure = '[expenses] Add Expense Summary Failure',\r\n AddExpenseDetails = '[expenses] Add Expense Details',\r\n AddExpenseDetailsFailure = '[expenses] Add Expense Details Failure',\r\n AddExpenseLine = '[expenses] Add Expense Lines',\r\n AddExpenseLineSuccess = '[expenses] Add Expense Lines Success',\r\n AddExpenseLineFailure = '[expenses] Add Expense Lines Failure',\r\n AddExpenseReceipts = '[expenses] Add Expense Receipts',\r\n AddExpenseReceiptsSuccess = '[expenses] Add Expense Receipts Success',\r\n AddExpenseReceiptsFailure = '[expenses] Add Expense Receipts Failure',\r\n AddExpenseAttachment = '[expenses] Add Expense Attachment',\r\n AddExpenseAttachmentSuccess = '[expenses] Add Expense Attachment Success',\r\n AddExpenseAttachmentFailure = '[expenses] Add Expense Attachment Failure',\r\n LoadExpenseSummaries = '[expenses] Load Expense Summaries',\r\n SetExpenseSummaries = '[expenses] Set Expense Summaries',\r\n LoadExpenseSummary = '[expenses] Load Expense Summary',\r\n SelectDirectReport = '[expenses] Select Direct Report',\r\n EditExpenseSummary = '[expenses] Edit Expense Summary',\r\n EditExpenseDetail = '[expenses] Edit Expense Detail',\r\n EditExpenseReceipt = '[expenses] Edit Expense Receipt',\r\n LoadExpenseReceiptAttachment = '[expenses] Load Expense Receipt Attachment',\r\n EditExpenseReceiptAttachment = '[expenses] Edit Expense Receipt Attachment',\r\n DeleteExpenseSummary = '[expenses] Delete Expense Summary',\r\n DeleteExpenseDetail = '[expenses] Delete Expense Detail',\r\n DeleteExpenseReceipt = '[expenses] Delete Expense Receipt',\r\n RemoveExpenseSummary = '[expenses] Remove Expense Summary',\r\n RemoveExpenseDetail = '[expenses] Remove Expense Detail',\r\n RemoveExpenseReceipt = '[expenses] Remove Expense Receipt',\r\n OversignExpenseSummary = '[expenses] Oversign Expense Summary',\r\n ConvertExpense = '[expenses] Convert Expense',\r\n ValidateExpense = '[expenses] Validate Expense',\r\n UnvalidateExpense = '[expenses] Unvalidate Expense',\r\n ApproveExpense = '[expenses] Approve Expense',\r\n UnapproveExpense = '[expenses] Unapprove Expense',\r\n DisapproveExpense = '[expenses] Disapprove Expense',\r\n UpdateExpenseSummary = '[expenses] Update Expense Summary',\r\n LoadExpenseLines = '[expenses] Load Expense Lines',\r\n SetExpenseLines = '[expenses] Set Expense Lines',\r\n LoadExpenseReceipts = '[expenses] Load Expense Receipts',\r\n SetExpenseReceipts = '[expenses] Set Expense Receipts',\r\n LoadPaymentMethods = '[expenses] Load Payment Methods',\r\n SetPaymentMethods = '[expenses] Set Payment Methods',\r\n LoadUserPaymentMethods = '[expenses] Load User Payment Methods',\r\n SetUserPaymentMethods = '[expenses] Set User Payment Methods',\r\n LoadTravelMode = '[expenses] Load Travel Mode',\r\n SetTravelMode = '[expenses] Set Travel Mode',\r\n LoadReceiptImage = '[expenses] Load Receipt Image',\r\n SetReceiptImage = '[expenses] Set Receipt Image',\r\n LoadReceiptImageFailure = '[expenses] Load Receipt Image Failure',\r\n LoadExpenseTasks = '[expenses] Load Expense Tasks',\r\n SetExpenseTasks = '[expenses] Set Expense Tasks',\r\n LoadTravelRates = '[expenses] Load Travel Rates',\r\n SetTravelRates = '[expenses] Set Travel Rates',\r\n SelectTravelRate = '[expenses] Select Travel Rate',\r\n LoadTripLegTypes = '[expenses] Load Trip Leg Types',\r\n SetTripLegTypes = '[expenses] Set Trip Leg Types',\r\n AddSelectedExpense = '[expenses] Add Selected Expense',\r\n RemoveSelectedExpense = '[expenses] Remove Selected Expense',\r\n ClearSelectedExpenses = '[expenses] Clear Selected Expenses',\r\n LoadExpenseReports = '[expenses] LoadExpenseReports',\r\n SetExpenseReports = '[expenses] SetExpenseReports',\r\n ClearExpenseNumber = '[expenses] ClearExpenseNumber',\r\n UpdateExpenseLinePDBO = '[expenses] Update Expense Line PDBO',\r\n LoadExpenseLinePDBO = '[expenses] Load Expense Line PDBO',\r\n SetExpenseLinePDBO = '[expenses] Set Expense Line PDBO'\r\n}\r\n\r\nexport class Reset implements Action {\r\n readonly type = ActionTypes.Reset;\r\n}\r\nexport class ResetSelectedExpense implements Action {\r\n readonly type = ActionTypes.ResetSelectedExpense;\r\n}\r\nexport class ClearMessages implements Action {\r\n readonly type = ActionTypes.ClearMessages;\r\n}\r\nexport class AddExpenseSummary implements Action {\r\n constructor(public payload: IExpenseSummary) {}\r\n readonly type = ActionTypes.AddExpenseSummary;\r\n}\r\nexport class AddExpenseSummarySuccess implements Action {\r\n constructor(public payload: IExpenseSummaryResponse) {}\r\n readonly type = ActionTypes.AddExpenseSummarySuccess;\r\n}\r\nexport class AddExpenseSummaryFailure implements Action {\r\n constructor(public payload: IExpenseSummaryResponse) {}\r\n readonly type = ActionTypes.AddExpenseSummaryFailure;\r\n}\r\nexport class LoadReceiptImageFailure implements Action {\r\n constructor(public payload: string) {}\r\n readonly type = ActionTypes.LoadReceiptImageFailure;\r\n}\r\nexport class AddExpenseDetails implements Action {\r\n constructor(\r\n public payload: {\r\n summary: IExpenseSummary;\r\n details: Array;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.AddExpenseDetails;\r\n}\r\nexport class AddExpenseDetailsFailure implements Action {\r\n constructor(public payload: IExpenseDetailResponse) {}\r\n readonly type = ActionTypes.AddExpenseDetailsFailure;\r\n}\r\nexport class AddExpenseLine implements Action {\r\n constructor(\r\n public payload: { summary: IExpenseSummaryResponse; line: IExpenseLine }\r\n ) {}\r\n readonly type = ActionTypes.AddExpenseLine;\r\n}\r\nexport class AddExpenseLineSuccess implements Action {\r\n constructor(public payload: IExpenseLineResponse) {}\r\n readonly type = ActionTypes.AddExpenseLineSuccess;\r\n}\r\nexport class AddExpenseLineFailure implements Action {\r\n constructor(public payload: IExpenseLineResponse) {}\r\n readonly type = ActionTypes.AddExpenseLineFailure;\r\n}\r\nexport class AddExpenseReceipts implements Action {\r\n constructor(\r\n public detail: IExpenseLine,\r\n public payload: Array\r\n ) {}\r\n readonly type = ActionTypes.AddExpenseReceipts;\r\n}\r\nexport class AddExpenseReceiptsSuccess implements Action {\r\n constructor(public payload: IExpenseReceiptResponse) {}\r\n readonly type = ActionTypes.AddExpenseReceiptsSuccess;\r\n}\r\nexport class AddExpenseReceiptsFailure implements Action {\r\n constructor(public payload: IExpenseReceiptResponse) {}\r\n readonly type = ActionTypes.AddExpenseReceiptsFailure;\r\n}\r\nexport class AddExpenseAttachment implements Action {\r\n constructor(\r\n public expenseNumber: number,\r\n public uniqueId: string,\r\n public meta: any,\r\n public file: any\r\n ) {}\r\n readonly type = ActionTypes.AddExpenseAttachment;\r\n}\r\nexport class AddExpenseAttachmentSuccess implements Action {\r\n constructor(public payload: IGenericResponse) {}\r\n readonly type = ActionTypes.AddExpenseAttachmentSuccess;\r\n}\r\nexport class AddExpenseAttachmentFailure implements Action {\r\n constructor(public payload: IGenericResponse) {}\r\n readonly type = ActionTypes.AddExpenseAttachmentFailure;\r\n}\r\nexport class LoadExpenseSummary implements Action {\r\n constructor(\r\n public payload: { expenseNbr: number; EmployeeListID: string }\r\n ) {}\r\n readonly type = ActionTypes.LoadExpenseSummary;\r\n}\r\nexport class LoadExpenseSummaries implements Action {\r\n constructor(\r\n public payload?: {\r\n startDate?: Date;\r\n endDate?: Date;\r\n tasks?: Array;\r\n expenseItems?: Array;\r\n employeeListID?: string;\r\n expenseType?: ExpenseRequestTypeEnum;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.LoadExpenseSummaries;\r\n}\r\n\r\nexport class SetExpenseSummaries implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = ActionTypes.SetExpenseSummaries;\r\n}\r\n\r\nexport class SelectDirectReport implements Action {\r\n readonly type = ActionTypes.SelectDirectReport;\r\n constructor(public payload: fromLookups.IDirectReport) {}\r\n}\r\n\r\nexport class DeleteExpenseSummary implements Action {\r\n readonly type = ActionTypes.DeleteExpenseSummary;\r\n constructor(public payload: IExpenseSummary) {}\r\n}\r\nexport class DeleteExpenseDetail implements Action {\r\n readonly type = ActionTypes.DeleteExpenseDetail;\r\n constructor(public payload: IExpenseLine) {}\r\n}\r\nexport class DeleteExpenseReceipt implements Action {\r\n readonly type = ActionTypes.DeleteExpenseReceipt;\r\n constructor(public payload: IExpenseReceipt) {}\r\n}\r\nexport class RemoveExpenseSummary implements Action {\r\n readonly type = ActionTypes.RemoveExpenseSummary;\r\n constructor(public payload: IExpenseSummary) {}\r\n}\r\nexport class RemoveExpenseDetail implements Action {\r\n readonly type = ActionTypes.RemoveExpenseDetail;\r\n constructor(public payload: IExpenseLine) {}\r\n}\r\nexport class RemoveExpenseReceipt implements Action {\r\n readonly type = ActionTypes.RemoveExpenseReceipt;\r\n constructor(public payload: IDeleteReceiptResponse) {}\r\n}\r\nexport class OversignExpenseSummary implements Action {\r\n readonly type = ActionTypes.OversignExpenseSummary;\r\n constructor(public payload: IExpenseSummary) {}\r\n}\r\nexport class ConvertExpense implements Action {\r\n readonly type = ActionTypes.ConvertExpense;\r\n constructor(public payload: { summary: IExpenseSummary; roleId: number }) {}\r\n}\r\nexport class ValidateExpense implements Action {\r\n readonly type = ActionTypes.ValidateExpense;\r\n constructor(\r\n public payload: { summaries: Array; roleId: number }\r\n ) {}\r\n}\r\nexport class UnvalidateExpense implements Action {\r\n readonly type = ActionTypes.UnvalidateExpense;\r\n constructor(\r\n public payload: { summaries: Array; roleId: number }\r\n ) {}\r\n}\r\nexport class ApproveExpense implements Action {\r\n readonly type = ActionTypes.ApproveExpense;\r\n constructor(\r\n public payload: { summaries: Array; roleId: number }\r\n ) {}\r\n}\r\nexport class UnapproveExpense implements Action {\r\n readonly type = ActionTypes.UnapproveExpense;\r\n constructor(\r\n public payload: { summaries: Array; roleId: number }\r\n ) {}\r\n}\r\nexport class DisapproveExpense implements Action {\r\n readonly type = ActionTypes.DisapproveExpense;\r\n constructor(\r\n public payload: { summaries: Array; roleId: number }\r\n ) {}\r\n}\r\nexport class UpdateExpenseSummary implements Action {\r\n readonly type = ActionTypes.UpdateExpenseSummary;\r\n constructor(public payload: IExpenseSummary) {}\r\n}\r\n\r\nexport class EditExpenseSummary implements Action {\r\n readonly type = ActionTypes.EditExpenseSummary;\r\n constructor(public payload: IExpenseSummary) {}\r\n}\r\n\r\nexport class EditExpenseDetail implements Action {\r\n readonly type = ActionTypes.EditExpenseDetail;\r\n constructor(public payload: IExpenseLine) {}\r\n}\r\n\r\nexport class EditExpenseReceipt implements Action {\r\n readonly type = ActionTypes.EditExpenseReceipt;\r\n constructor(public payload: IExpenseReceipt) {}\r\n}\r\nexport class EditExpenseReceiptAttachment implements Action {\r\n readonly type = ActionTypes.EditExpenseReceiptAttachment;\r\n constructor(public payload: Partial) {}\r\n}\r\n\r\nexport class LoadExpenseLines implements Action {\r\n readonly type = ActionTypes.LoadExpenseLines;\r\n constructor(public payload: number) {}\r\n}\r\nexport class SetExpenseLines implements Action {\r\n readonly type = ActionTypes.SetExpenseLines;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadExpenseReceipts implements Action {\r\n readonly type = ActionTypes.LoadExpenseReceipts;\r\n constructor(public payload: number) {}\r\n}\r\nexport class SetExpenseReceipts implements Action {\r\n readonly type = ActionTypes.SetExpenseReceipts;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadExpenseReceiptAttachment implements Action {\r\n readonly type = ActionTypes.LoadExpenseReceiptAttachment;\r\n constructor(public payload: Partial) {}\r\n}\r\nexport class LoadPaymentMethods implements Action {\r\n readonly type = ActionTypes.LoadPaymentMethods;\r\n constructor(public payload: string) {}\r\n}\r\nexport class SetPaymentMethods implements Action {\r\n readonly type = ActionTypes.SetPaymentMethods;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadUserPaymentMethods implements Action {\r\n readonly type = ActionTypes.LoadUserPaymentMethods;\r\n constructor(public payload: string) {}\r\n}\r\nexport class SetUserPaymentMethods implements Action {\r\n readonly type = ActionTypes.SetUserPaymentMethods;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadTravelMode implements Action {\r\n readonly type = ActionTypes.LoadTravelMode;\r\n}\r\nexport class SetTravelMode implements Action {\r\n readonly type = ActionTypes.SetTravelMode;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadReceiptImage implements Action {\r\n readonly type = ActionTypes.LoadReceiptImage;\r\n constructor(public payload: IExpenseReceipt) {}\r\n}\r\nexport class SetReceiptImage implements Action {\r\n readonly type = ActionTypes.SetReceiptImage;\r\n constructor(public payload: string) {}\r\n}\r\nexport class LoadExpenseTasks implements Action {\r\n readonly type = ActionTypes.LoadExpenseTasks;\r\n constructor(public payload: string) {}\r\n}\r\nexport class SetExpenseTasks implements Action {\r\n readonly type = ActionTypes.SetExpenseTasks;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadTravelRates implements Action {\r\n readonly type = ActionTypes.LoadTravelRates;\r\n constructor(public payload: ITravelRate) {}\r\n}\r\nexport class SetTravelRates implements Action {\r\n readonly type = ActionTypes.SetTravelRates;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class SelectTravelRate implements Action {\r\n readonly type = ActionTypes.SelectTravelRate;\r\n constructor(public payload: ITravelRate) {}\r\n}\r\nexport class LoadTripLegTypes implements Action {\r\n readonly type = ActionTypes.LoadTripLegTypes;\r\n}\r\nexport class SetTripLegTypes implements Action {\r\n readonly type = ActionTypes.SetTripLegTypes;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class AddSelectedExpense implements Action {\r\n readonly type = ActionTypes.AddSelectedExpense;\r\n constructor(public payload: number) {}\r\n}\r\nexport class RemoveSelectedExpense implements Action {\r\n readonly type = ActionTypes.RemoveSelectedExpense;\r\n constructor(public payload: number) {}\r\n}\r\nexport class ClearSelectedExpenses implements Action {\r\n readonly type = ActionTypes.ClearSelectedExpenses;\r\n}\r\nexport class LoadExpenseReports implements Action {\r\n readonly type = ActionTypes.LoadExpenseReports;\r\n constructor(\r\n public roleId: number = 0,\r\n public activeOnly: boolean,\r\n public startDate: Date,\r\n public endDate: Date\r\n ) {}\r\n}\r\nexport class SetExpenseReports implements Action {\r\n readonly type = ActionTypes.SetExpenseReports;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class ClearExpenseNumber implements Action {\r\n readonly type = ActionTypes.ClearExpenseNumber;\r\n constructor(public payload: number) {}\r\n}\r\n\r\nexport class UpdateExpenseLinePDBO implements Action {\r\n readonly type = ActionTypes.UpdateExpenseLinePDBO;\r\n constructor(public pdbo: any) {}\r\n}\r\nexport class LoadExpenseLinePDBO implements Action {\r\n readonly type = ActionTypes.LoadExpenseLinePDBO;\r\n constructor(public expenseLineId: number) {}\r\n}\r\nexport class SetExpenseLinePDBO implements Action {\r\n readonly type = ActionTypes.SetExpenseLinePDBO;\r\n constructor(public pdbo: any) {}\r\n}\r\n\r\nexport type ActionsUnion =\r\n | Reset\r\n | ResetSelectedExpense\r\n | ClearMessages\r\n | LoadExpenseSummaries\r\n | SetExpenseSummaries\r\n | LoadExpenseSummary\r\n | SelectDirectReport\r\n | EditExpenseSummary\r\n | EditExpenseDetail\r\n | EditExpenseReceipt\r\n | DeleteExpenseSummary\r\n | DeleteExpenseDetail\r\n | RemoveExpenseSummary\r\n | RemoveExpenseDetail\r\n | RemoveExpenseReceipt\r\n | OversignExpenseSummary\r\n | ValidateExpense\r\n | ApproveExpense\r\n | UnvalidateExpense\r\n | UnapproveExpense\r\n | DisapproveExpense\r\n | UpdateExpenseSummary\r\n | LoadExpenseLines\r\n | SetExpenseLines\r\n | LoadExpenseReceipts\r\n | SetExpenseReceipts\r\n | LoadPaymentMethods\r\n | SetPaymentMethods\r\n | LoadUserPaymentMethods\r\n | SetUserPaymentMethods\r\n | LoadTravelMode\r\n | SetTravelMode\r\n | LoadReceiptImage\r\n | SetReceiptImage\r\n | LoadReceiptImageFailure\r\n | SetExpenseTasks\r\n | LoadExpenseTasks\r\n | LoadTravelRates\r\n | SetTravelRates\r\n | SelectTravelRate\r\n | LoadTripLegTypes\r\n | SetTripLegTypes\r\n | AddExpenseSummary\r\n | AddExpenseSummarySuccess\r\n | AddExpenseSummaryFailure\r\n | AddExpenseDetails\r\n | AddExpenseDetailsFailure\r\n | AddExpenseLine\r\n | AddExpenseLineSuccess\r\n | AddExpenseLineFailure\r\n | AddExpenseReceipts\r\n | AddExpenseReceiptsSuccess\r\n | AddExpenseReceiptsFailure\r\n | AddExpenseAttachment\r\n | AddExpenseAttachmentSuccess\r\n | AddExpenseAttachmentFailure\r\n | LoadExpenseReceiptAttachment\r\n | EditExpenseReceiptAttachment\r\n | AddSelectedExpense\r\n | RemoveSelectedExpense\r\n | ClearSelectedExpenses\r\n | LoadExpenseReports\r\n | SetExpenseReports\r\n | ClearExpenseNumber\r\n | UpdateExpenseLinePDBO\r\n | LoadExpenseLinePDBO\r\n | SetExpenseLinePDBO;\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { City } from './city.model';\r\n\r\nexport const loadCitys = createAction(\r\n '[City/API] Load Citys',\r\n props<{ citys: City[] }>()\r\n);\r\n\r\nexport const addCity = createAction(\r\n '[City/API] Add City',\r\n props<{ city: City }>()\r\n);\r\n\r\nexport const upsertCity = createAction(\r\n '[City/API] Upsert City',\r\n props<{ city: City }>()\r\n);\r\n\r\nexport const addCitys = createAction(\r\n '[City/API] Add Citys',\r\n props<{ citys: City[] }>()\r\n);\r\n\r\nexport const upsertCitys = createAction(\r\n '[City/API] Upsert Citys',\r\n props<{ citys: City[] }>()\r\n);\r\n\r\nexport const updateCity = createAction(\r\n '[City/API] Update City',\r\n props<{ city: Update }>()\r\n);\r\n\r\nexport const updateCitys = createAction(\r\n '[City/API] Update Citys',\r\n props<{ citys: Update[] }>()\r\n);\r\n\r\nexport const deleteCity = createAction(\r\n '[City/API] Delete City',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteCitys = createAction(\r\n '[City/API] Delete Citys',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearCitys = createAction('[City/API] Clear Citys');\r\n\r\nexport const getCitys = createAction(\r\n '[City/API] Get Citys',\r\n props<{ State?: string; ZipCode?: string }>()\r\n);\r\n\r\nexport const emptyAction = createAction('[City/API] empty');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, distinctUntilChanged, distinctUntilKeyChanged, filter, map, switchMap, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { CityService } from '../../city.service';\r\nimport * as actions from './city.actions';\r\n\r\n@Injectable()\r\nexport class CityEffects {\r\n private last: { state: string; zipCode: string } = {\r\n state: null,\r\n zipCode: null\r\n };\r\n constructor(\r\n private actions$: Actions,\r\n private log: LoggingService,\r\n private service: CityService\r\n ) {}\r\n\r\n LoadCities$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(actions.getCitys),\r\n distinctUntilChanged((p, c) => {\r\n return p.State === c.State && p.ZipCode === c.ZipCode;\r\n }),\r\n // filter(\r\n // a =>\r\n // !(\r\n // this.last.zipCode === a.ZipCode &&\r\n // this.last.state === a.State\r\n // )\r\n // ),\r\n tap(a => this.log.verbose({ type: 'CityEffects:LoadCities$', a })),\r\n switchMap(a => {\r\n // this.last.zipCode = a.ZipCode;\r\n // this.last.state = a.State;\r\n return this.service.get(a.State, a.ZipCode).pipe(\r\n tap(citys =>\r\n this.log.verbose({\r\n type: 'CityEffects:LoadCities$:response',\r\n citys\r\n })\r\n ),\r\n map(citys => actions.loadCitys({ citys })),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n })\r\n );\r\n });\r\n}\r\n","export interface City {\r\n id: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport * as CityActions from './city.actions';\r\nimport { City } from './city.model';\r\n\r\nexport const citiesFeatureKey = 'cities';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: City) => model.id,\r\n sortComparer: (a, b) => a.City.localeCompare(b.City)\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst cityReducer = createReducer(\r\n initialState,\r\n on(CityActions.addCity, (state, action) =>\r\n adapter.addOne(action.city, state)\r\n ),\r\n on(CityActions.upsertCity, (state, action) =>\r\n adapter.upsertOne(action.city, state)\r\n ),\r\n on(CityActions.addCitys, (state, action) =>\r\n adapter.addMany(action.citys, state)\r\n ),\r\n on(CityActions.upsertCitys, (state, action) =>\r\n adapter.upsertMany(action.citys, state)\r\n ),\r\n on(CityActions.updateCity, (state, action) =>\r\n adapter.updateOne(action.city, state)\r\n ),\r\n on(CityActions.updateCitys, (state, action) =>\r\n adapter.updateMany(action.citys, state)\r\n ),\r\n on(CityActions.deleteCity, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(CityActions.deleteCitys, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(CityActions.loadCitys, (state, action) =>\r\n adapter.setAll(action.citys, state)\r\n ),\r\n on(CityActions.clearCitys, state => adapter.removeAll(state))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return cityReducer(state, action);\r\n}\r\nconst localState = createFeatureSelector(citiesFeatureKey);\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\n","export * from './city.actions';\r\nexport * from './city.reducer';\r\nexport * from './city.effects';\r\nexport * from './city.model';\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Actions, Effect, createEffect, ofType } from '@ngrx/effects';\r\nimport { Action, select, Store } from '@ngrx/store';\r\nimport { combineLatest } from 'rxjs';\r\nimport {\r\n catchError,\r\n concatMap,\r\n debounceTime,\r\n filter,\r\n flatMap,\r\n map,\r\n switchMap,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { AttachmentService } from '../../attachment-view-feature/attachment.service';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport { DisplayMessageMinimum, IStatusMessage } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { LocaleEnum } from '../expense-enums';\r\nimport { ExpenseService } from '../expense.service';\r\nimport * as fromExpense from './index';\r\n\r\n@Injectable()\r\nexport class ExpenseEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private lookups: Store,\r\n private expenseStore: Store,\r\n @Inject(fromLookups.CountryAreaLookupService)\r\n private countryAreaService: fromLookups.CountryAreaLookupService,\r\n @Inject(fromLookups.ExpenseItemLookupService)\r\n private expenseItemService: fromLookups.ExpenseItemLookupService,\r\n @Inject(fromLookups.PerDiemLookupService)\r\n private perDiemService: fromLookups.PerDiemLookupService,\r\n @Inject(fromLookups.LocaleLookupService)\r\n private localeService: fromLookups.LocaleLookupService,\r\n @Inject(fromLookups.TravelTypeLookupService)\r\n private travelTypeService: fromLookups.TravelTypeLookupService,\r\n @Inject(ExpenseService) private service: ExpenseService,\r\n @Inject(AttachmentService) private attachmentService: AttachmentService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n updatePdbo$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.UpdateExpenseLinePDBO\r\n ),\r\n switchMap(a =>\r\n this.service.putExpensePdbo(a.pdbo).pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: 'ExpenseEffects:updatePdbo$',\r\n resp\r\n });\r\n return new fromExpense.SetExpenseLinePDBO(resp);\r\n })\r\n )\r\n )\r\n );\r\n });\r\n getPdbo$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseLinePDBO\r\n ),\r\n switchMap(a =>\r\n this.service.getExpensePdbo(a.expenseLineId).pipe(\r\n map(resp => {\r\n this.log.verbose({\r\n type: 'ExpenseEffects:updatePdbo$',\r\n resp\r\n });\r\n return new fromExpense.SetExpenseLinePDBO(resp);\r\n })\r\n )\r\n )\r\n );\r\n });\r\n @Effect() SaveDetailAfterSummary$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseLineFailure\r\n ),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:SaveDetailAfterSummary$',\r\n x\r\n })\r\n ),\r\n withLatestFrom(\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseDetails\r\n )\r\n )\r\n ),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:SaveDetailAfterSummary$:AddExpenseSummary',\r\n x\r\n })\r\n ),\r\n withLatestFrom(\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummarySuccess\r\n )\r\n )\r\n ),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:SaveDetailAfterSummary$:AddExpenseSummary:AddExpenseSummarySuccess',\r\n x\r\n })\r\n ),\r\n filter(([[lf, d], sx]) => d.payload.summary.ExpReportNbr === -1),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:SaveDetailAfterSummary$:filtered',\r\n x\r\n })\r\n ),\r\n map(\r\n ([[lf, d], sx]) =>\r\n new fromExpense.ClearExpenseNumber(\r\n sx.payload.Items[0].ExpReportNbr\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadLocations$ = this.actions$.pipe(\r\n ofType(\r\n fromLookups.LookupActionTypes.LoadLocations\r\n ),\r\n switchMap(a =>\r\n this.countryAreaService\r\n .getLocations(a.payload.locale, a.payload.countryArea)\r\n .pipe(\r\n map(x => new fromLookups.SetLocations(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() Areas$ = this.actions$.pipe(\r\n ofType(fromLookups.LookupActionTypes.LoadAreas),\r\n withLatestFrom(this.lookups.pipe(select(fromLookups.getAreas))),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(() =>\r\n this.countryAreaService.get(LocaleEnum.OCONUS).pipe(\r\n map(x => new fromLookups.SetAreas(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() Countries$ = this.actions$.pipe(\r\n ofType(\r\n fromLookups.LookupActionTypes.LoadCountries\r\n ),\r\n withLatestFrom(this.lookups.pipe(select(fromLookups.getCountries))),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(a =>\r\n this.countryAreaService.get(LocaleEnum.Foreign).pipe(\r\n map(x => new fromLookups.SetCountries(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() ExpenseItems$ = this.actions$.pipe(\r\n ofType(\r\n fromLookups.LookupActionTypes.LoadExpenseItems\r\n ),\r\n withLatestFrom(\r\n this.lookups.pipe(select(fromLookups.getTravelTypesLookup))\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(a =>\r\n this.expenseItemService.get().pipe(\r\n map(x => new fromLookups.SetExpenseItems(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() TravelTypes$ = this.actions$.pipe(\r\n ofType(\r\n fromLookups.LookupActionTypes.LoadTravelTypes\r\n ),\r\n withLatestFrom(\r\n this.lookups.pipe(select(fromLookups.getTravelTypesLookup))\r\n ),\r\n filter(([, travelTypes]) => travelTypes.length === 0),\r\n switchMap(a =>\r\n this.travelTypeService.get().pipe(\r\n map(x => new fromLookups.SetTravelTypes(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() Locales$ = this.actions$.pipe(\r\n ofType(\r\n fromLookups.LookupActionTypes.LoadLocales\r\n ),\r\n withLatestFrom(this.lookups.pipe(select(fromLookups.getLocalesLookup))),\r\n filter(([, locales]) => locales.length === 0),\r\n switchMap(a =>\r\n this.localeService.get().pipe(\r\n map(x => new fromLookups.SetLocales(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() PerDiemTypes$ = this.actions$.pipe(\r\n ofType(\r\n fromLookups.LookupActionTypes.LoadPerDiemTypes\r\n ),\r\n withLatestFrom(\r\n this.lookups.pipe(select(fromLookups.getPerDiemTypesLookup))\r\n ),\r\n filter(([, perDiemTypes]) => perDiemTypes.length === 0),\r\n switchMap(a =>\r\n this.perDiemService.get().pipe(\r\n map(x => new fromLookups.SetPerDiemTypes(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadExpenseSummaries$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseSummaries\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadExpenses$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getExpenseSummaries(x.payload).pipe(\r\n map(exp => new fromExpense.SetExpenseSummaries(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadExpenseSummary$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseSummary\r\n ),\r\n switchMap(action =>\r\n this.service\r\n .getExpenseSummary(\r\n action.payload.expenseNbr,\r\n action.payload.EmployeeListID\r\n )\r\n .pipe(\r\n map(x => new fromExpense.UpdateExpenseSummary(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() DeleteExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.DeleteExpenseSummary\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:DeleteExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.deleteExpense(x.payload).pipe(\r\n concatMap(exp =>\r\n exp\r\n ? [\r\n new fromExpense.RemoveExpenseSummary(exp),\r\n new fromExpense.ResetSelectedExpense()\r\n ]\r\n : [fromShared.Errors.UnknownResponse()]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() DeleteExpenseDetail$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.DeleteExpenseDetail\r\n ),\r\n withLatestFrom(\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseSummary\r\n )\r\n )\r\n ),\r\n tap(actions =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:DeleteExpenseDetail$:filtered',\r\n actions\r\n })\r\n ),\r\n switchMap(([deleteAction, loadSummaryAction]) =>\r\n this.service.deleteExpenseDetail(deleteAction.payload).pipe(\r\n concatMap(\r\n exp =>\r\n exp\r\n ? [\r\n new fromExpense.RemoveExpenseDetail(exp),\r\n new fromExpense.LoadExpenseSummary({\r\n expenseNbr: exp.ExpReportNbr,\r\n EmployeeListID:\r\n loadSummaryAction.payload\r\n .EmployeeListID\r\n })\r\n ]\r\n : [fromShared.Errors.UnknownResponse()]\r\n // new fromExpense.ResetSelectedExpense()\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() DeleteExpenseReceipt$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.DeleteExpenseReceipt\r\n ),\r\n withLatestFrom(\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseSummary\r\n )\r\n )\r\n ),\r\n tap(actions =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:DeleteExpenseReceipt$:filtered',\r\n actions\r\n })\r\n ),\r\n switchMap(([deleteReceiptAction, loadSummaryAction]) =>\r\n // switchMap(deleteReceiptAction =>\r\n this.service.deleteExpenseReceipt(deleteReceiptAction.payload).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n new fromExpense.RemoveExpenseReceipt(resp),\r\n new fromExpense.LoadExpenseLines(\r\n deleteReceiptAction.payload.ExpenseRptNbr\r\n ),\r\n new fromExpense.LoadExpenseSummary({\r\n expenseNbr:\r\n deleteReceiptAction.payload.ExpenseRptNbr,\r\n EmployeeListID: loadSummaryAction\r\n ? loadSummaryAction.payload.EmployeeListID\r\n : null\r\n })\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() OversignExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.OversignExpenseSummary\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:OversignExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.oversignExpense(x.payload).pipe(\r\n concatMap(exp =>\r\n exp.Items\r\n ? exp.Items.map(\r\n e => new fromExpense.UpdateExpenseSummary(e)\r\n )\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n exp.Items,\r\n 'Oversign'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() ConvertExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.ConvertExpense\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:ConvertExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .convertExpense(x.payload.summary, x.payload.roleId)\r\n .pipe(\r\n concatMap(exp =>\r\n exp.Items\r\n ? exp.Items.map(\r\n e => new fromExpense.UpdateExpenseSummary(e)\r\n )\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n exp.Items,\r\n 'Convert'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() ValidateExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.ValidateExpense\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:ValidateExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .validateExpense(x.payload.summaries, x.payload.roleId)\r\n .pipe(\r\n concatMap(exp =>\r\n exp.Items\r\n ? exp.Items.map(\r\n e => new fromExpense.UpdateExpenseSummary(e)\r\n )\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n exp.Items,\r\n 'Validate'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() UnvalidateExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.UnvalidateExpense\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:UnvalidateExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .unvalidateExpense(x.payload.summaries, x.payload.roleId)\r\n .pipe(\r\n concatMap(exp =>\r\n exp.Items\r\n ? exp.Items.map(\r\n e => new fromExpense.UpdateExpenseSummary(e)\r\n )\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n exp.Items,\r\n 'Unvalidate'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() ApproveExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.ApproveExpense\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:ApproveExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .approveExpense(x.payload.summaries, x.payload.roleId)\r\n .pipe(\r\n concatMap(exp =>\r\n exp.Items\r\n ? exp.Items.map(\r\n e => new fromExpense.UpdateExpenseSummary(e)\r\n )\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n exp.Items,\r\n 'Approve'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() UnapproveExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.UnapproveExpense\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:UnapproveExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .unapproveExpense(x.payload.summaries, x.payload.roleId)\r\n .pipe(\r\n concatMap(exp =>\r\n exp.Items\r\n ? exp.Items.map(\r\n e => new fromExpense.UpdateExpenseSummary(e)\r\n )\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n exp.Items,\r\n 'Unapprove'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() DisapproveExpense$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.DisapproveExpense\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:DisapproveExpense$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .disapproveExpense(x.payload.summaries, x.payload.roleId)\r\n .pipe(\r\n concatMap(exp =>\r\n exp.Items\r\n ? exp.Items.map(\r\n e => new fromExpense.UpdateExpenseSummary(e)\r\n )\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n exp.Items,\r\n 'Disapprove'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() SelectedExpenseClear$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.ValidateExpense,\r\n fromExpense.ActionTypes.UnvalidateExpense,\r\n fromExpense.ActionTypes.ApproveExpense,\r\n fromExpense.ActionTypes.UnapproveExpense,\r\n fromExpense.ActionTypes.DisapproveExpense\r\n ),\r\n map(x => new fromExpense.ClearSelectedExpenses()),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n @Effect() LoadExpenseLines$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseLines\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadExpenseLines$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getExpenseLines(x.payload).pipe(\r\n tap(receipts =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:getExpenseLines',\r\n receipts\r\n })\r\n ),\r\n map(lineItems => new fromExpense.SetExpenseLines(lineItems)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadExpenseReceipts$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseReceipts\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadExpenseReceipts$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getExpenseReceipts(x && x.payload).pipe(\r\n tap(receipts =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:getExpenseReceipts',\r\n receipts\r\n })\r\n ),\r\n map(receipts => new fromExpense.SetExpenseReceipts(receipts)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadExpensePaymentMethods$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadPaymentMethods\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadExpensePaymentMethods$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service.getPaymentMethods(action.payload).pipe(\r\n tap(paymentMethods =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:getPaymentMethods',\r\n paymentMethods\r\n })\r\n ),\r\n map(\r\n paymentMethods =>\r\n new fromExpense.SetPaymentMethods(paymentMethods)\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadUserPaymentMethods$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadUserPaymentMethods\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadUserPaymentMethods$:filtered',\r\n action\r\n })\r\n ),\r\n debounceTime(500),\r\n switchMap(action =>\r\n this.service.getUserPaymentMethods(action.payload).pipe(\r\n tap(paymentMethods =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:getUserPaymentMethods',\r\n paymentMethods\r\n })\r\n ),\r\n map(\r\n paymentMethods =>\r\n new fromExpense.SetUserPaymentMethods(paymentMethods)\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadTravelMode$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadTravelMode\r\n ),\r\n withLatestFrom(\r\n this.lookups.pipe(select(fromExpense.getExpenseTravelModes))\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadTravelMode$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getTravelModes().pipe(\r\n tap(travelModes =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadTravelMode',\r\n travelModes\r\n })\r\n ),\r\n map(travelModes => new fromExpense.SetTravelMode(travelModes)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() AddExpenseSummary$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummary\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseSummary$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service.saveExpenseSummary(action.payload).pipe(\r\n tap(summary =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:saveExpenseSummary',\r\n summary\r\n })\r\n ),\r\n concatMap(summary => {\r\n if (fromShared.Errors.IsSuccessStatus(summary.StatusCode)) {\r\n return [\r\n new fromExpense.AddExpenseSummarySuccess(summary),\r\n new fromExpense.EditExpenseSummary(summary.Items[0])\r\n ];\r\n } else {\r\n return [\r\n new fromExpense.AddExpenseSummaryFailure(summary)\r\n ];\r\n }\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() AddExpenseSummaryFailure$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummaryFailure\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseSummaryFailure$:filtered',\r\n action\r\n })\r\n ),\r\n map(\r\n err =>\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...err.payload.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...err.payload.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n @Effect() AddExpenseLine$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseLine\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseLine$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service\r\n .saveExpenseDetail({\r\n ...action.payload.line,\r\n ExpReportNbr: action.payload.summary.Items[0].ExpReportNbr,\r\n WorkDate: new Date(\r\n action.payload.summary.Items[0].ReportDate\r\n )\r\n })\r\n .pipe(\r\n tap(resp =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseLine$',\r\n resp\r\n })\r\n ),\r\n concatMap(resp => {\r\n if (\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ) {\r\n return [\r\n new fromExpense.AddExpenseLineSuccess(resp),\r\n new fromExpense.AddExpenseReceipts(\r\n resp.Items[0],\r\n action.payload.line.Receipts\r\n )\r\n ];\r\n } else {\r\n return [\r\n new fromExpense.AddExpenseLineFailure(resp)\r\n ];\r\n }\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() AddExpenseLineSuccess$ = combineLatest([\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseLineSuccess\r\n )\r\n ),\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummarySuccess\r\n )\r\n )\r\n ]).pipe(\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseLinesSuccess$:filtered',\r\n action\r\n })\r\n ),\r\n concatMap(([lineSuccessAction, summarySuccessAction]) => [\r\n new fromExpense.EditExpenseDetail(\r\n lineSuccessAction.payload.Items[0]\r\n ),\r\n new fromExpense.LoadExpenseSummary({\r\n expenseNbr: lineSuccessAction.payload.Items[0].ExpReportNbr,\r\n EmployeeListID:\r\n summarySuccessAction.payload.Items[0].EmployeeListID\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n @Effect() AddExpenseLinesFailure$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseLineFailure\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseLinesFailure$:filtered',\r\n action\r\n })\r\n ),\r\n map(\r\n err =>\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(err.payload)\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n @Effect() AddExpenseDetails$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseDetails\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseDetail$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service.saveExpenseSummary(action.payload.summary).pipe(\r\n flatMap((resp): Action[] => {\r\n if (fromShared.Errors.IsSuccessStatus(resp.StatusCode)) {\r\n return [\r\n ...action.payload.details.map(\r\n d =>\r\n new fromExpense.AddExpenseLine({\r\n summary: resp,\r\n line: d\r\n })\r\n ),\r\n new fromExpense.AddExpenseSummarySuccess({\r\n ...resp,\r\n Items: resp.Items.map(summary => ({\r\n ...summary,\r\n EmployeeListID:\r\n action.payload.summary.EmployeeListID\r\n }))\r\n })\r\n ];\r\n } else {\r\n return [new fromExpense.AddExpenseSummaryFailure(resp)];\r\n }\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() AddExpenseReceipts$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseReceipts\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseReceipts$:filtered',\r\n action\r\n })\r\n ),\r\n map(action => ({\r\n ...action,\r\n payload: action.payload.filter(x => x.Creditaccountlistid)\r\n })),\r\n filter(action => action.payload.length > 0),\r\n switchMap(action =>\r\n this.service\r\n .saveExpenseReceipt(\r\n action.payload\r\n .filter(r => r.Creditaccountlistid)\r\n .map(r => ({\r\n ...r,\r\n ExpenseID: action.detail.ExpenseID\r\n }))\r\n )\r\n .pipe(\r\n tap(resp =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseReceipt$:response',\r\n resp\r\n })\r\n ),\r\n flatMap(resp => {\r\n if (\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ) {\r\n return [\r\n new fromExpense.AddExpenseReceiptsSuccess(resp)\r\n ];\r\n } else {\r\n return [\r\n new fromExpense.AddExpenseReceiptsFailure(resp)\r\n ];\r\n }\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() AddExpenseReceiptsSuccess$ = combineLatest([\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseReceiptsSuccess\r\n )\r\n ),\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseSummarySuccess\r\n )\r\n )\r\n ]).pipe(\r\n concatMap(([receiptSuccessAction, summarySuccessAction]) => [\r\n new fromExpense.LoadExpenseLines(\r\n receiptSuccessAction.payload.Items[0].ExpenseRptNbr\r\n ),\r\n new fromExpense.LoadExpenseSummary({\r\n expenseNbr: receiptSuccessAction.payload.Items[0].ExpenseRptNbr,\r\n EmployeeListID:\r\n summarySuccessAction.payload.Items[0].EmployeeListID\r\n })\r\n ])\r\n );\r\n @Effect() AddExpenseReceiptsFailure$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseLineFailure\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:AddExpenseReceiptsFailure$:filtered',\r\n action\r\n })\r\n ),\r\n map(\r\n err =>\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...err.payload.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...err.payload.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n @Effect() LoadReceiptImageFailure$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadReceiptImageFailure\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadReceiptImageFailure$:filtered',\r\n action\r\n })\r\n ),\r\n map(\r\n err =>\r\n new fromShared.Errors.SetErrors(\r\n [err.payload].map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n )\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n @Effect() SelectDirectReport$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.SelectDirectReport\r\n ),\r\n flatMap(action => [\r\n new fromExpense.SetExpenseTasks([]),\r\n new fromExpense.LoadExpenseTasks(action.payload.EmployeeListID)\r\n ])\r\n );\r\n @Effect() LoadExpenseTasks$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseTasks\r\n ),\r\n withLatestFrom(this.lookups.pipe(select(fromExpense.getExpenseTasks))),\r\n filter(([, tasks]) => tasks.length === 0),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadExpenseTasks$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(([action]) =>\r\n this.service.getExpenseTasks(action.payload).pipe(\r\n tap(tasks =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:loadExpenseTasks',\r\n tasks\r\n })\r\n ),\r\n map(tasks => new fromExpense.SetExpenseTasks(tasks)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadTravelRates$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadTravelRates\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadTravelRates$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service\r\n .getTravelRates(action.payload) // want cancellable, only interested in last call results\r\n .pipe(\r\n tap(rates =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:getTravelRates',\r\n rates\r\n })\r\n ),\r\n map(rates => new fromExpense.SetTravelRates(rates)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadTripLegTypes$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadTripLegTypes\r\n ),\r\n withLatestFrom(this.lookups.pipe(select(fromExpense.getTripLegTypes))),\r\n filter(([, items]) => items.length === 0),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:LoadTripLegTypes$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service.getTripLegTypes().pipe(\r\n tap(types =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:getTravelRates',\r\n types\r\n })\r\n ),\r\n map(types => new fromExpense.SetTripLegTypes(types)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() AddExpenseAttachment$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseAttachment\r\n ),\r\n withLatestFrom(\r\n this.expenseStore.pipe(select(fromExpense.getEditingExpenseReceipt))\r\n ),\r\n tap(x =>\r\n this.log.debug({ type: 'ExpenseEffects:AddExpenseAttachment$', x })\r\n ),\r\n switchMap(([action, receipt]) =>\r\n this.attachmentService\r\n .saveExpenseAttachment(\r\n action.expenseNumber,\r\n action.uniqueId,\r\n receipt && receipt.File_unique_id,\r\n action.meta,\r\n action.file\r\n )\r\n .pipe(\r\n tap(res =>\r\n this.log.debug({\r\n type: 'ExpenseEffects:addExpenseAttachment',\r\n res\r\n })\r\n ),\r\n map(res => {\r\n if (fromShared.Errors.IsSuccessStatus(res.StatusCode)) {\r\n return new fromExpense.AddExpenseAttachmentSuccess(\r\n res\r\n );\r\n } else {\r\n return new fromExpense.AddExpenseAttachmentFailure(\r\n res\r\n );\r\n }\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() EditExpenseReceipt$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.EditExpenseReceipt\r\n ),\r\n map(\r\n action =>\r\n new fromExpense.LoadExpenseReceiptAttachment(action.payload)\r\n )\r\n );\r\n @Effect() LoadExpenseReceiptAttachment$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseReceiptAttachment\r\n ),\r\n switchMap(action =>\r\n this.attachmentService\r\n .getExpenseReceiptAttachment(action.payload)\r\n .pipe(\r\n map(x => {\r\n return new fromExpense.EditExpenseReceiptAttachment(x);\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() AddExpenseAttachmentSuccess$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.AddExpenseAttachmentSuccess\r\n ),\r\n withLatestFrom(\r\n this.expenseStore.pipe(select(fromExpense.getEditingExpenseReceipt))\r\n ),\r\n withLatestFrom(\r\n this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseSummary\r\n )\r\n )\r\n ),\r\n flatMap(([[action, receipt], loadSummaryAction]) => [\r\n new fromExpense.LoadExpenseSummary({\r\n expenseNbr: receipt.ExpenseRptNbr,\r\n EmployeeListID: loadSummaryAction.payload.EmployeeListID\r\n }),\r\n new fromExpense.LoadExpenseLines(receipt.ExpenseRptNbr),\r\n new fromExpense.LoadExpenseReceipts(receipt.ExpenseRptNbr)\r\n ])\r\n );\r\n @Effect() LoadExpenseReports$ = this.actions$.pipe(\r\n ofType(\r\n fromExpense.ActionTypes.LoadExpenseReports\r\n ),\r\n debounceTime(500),\r\n switchMap(action =>\r\n this.service\r\n .getDirectReports(\r\n action.roleId,\r\n action.activeOnly,\r\n action.startDate,\r\n action.endDate\r\n )\r\n .pipe(\r\n map(data => new fromExpense.SetExpenseReports(data)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n}\r\n","export * from './actions';\r\nexport * from './reducer';\r\n// export * from './effects';\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { IExpenseSummary } from '../IExpenseSummary';\r\nimport { IDirectReport, ITravelType } from '../../lookups';\r\nimport { IExpenseLine } from '../IExpenseLine';\r\nimport { IExpenseReceipt } from '../IExpenseReceipt';\r\nimport { IPaymentMethod } from '../IPaymentMethod';\r\nimport { ITravelMode } from '../ITravelMode';\r\nimport { IExpenseTask } from '../IExpenseTask';\r\nimport { ITravelRate } from '../ITravelRate';\r\nimport { ITripLegType } from '../ITripLegType';\r\nimport { IAttachment } from '../../shared';\r\nimport { ExpenseRequestTypeEnum } from '../expense-enums';\r\nimport * as actions from './actions';\r\nimport * as fromShared from '../../shared';\r\nimport { UserPaymentMethod } from '../UserPaymentMethod';\r\n\r\nexport interface State {\r\n expenseTasks: Array;\r\n expenseSummaries: Array;\r\n expenseLines: Array;\r\n expenseReceipts: Array;\r\n paymentMethods: Array;\r\n userPaymentMethods: Array;\r\n travelModes: Array;\r\n selectedUser: IDirectReport | null;\r\n editingExpenseSummary: IExpenseSummary | null;\r\n editingExpenseDetail: IExpenseLine | null;\r\n editingExpenseReceipt: IExpenseReceipt | null;\r\n editingExpenseReceiptAttachment: Partial | null;\r\n receiptImage: string | null; // base64 encoded image\r\n travelRates: Array;\r\n selectedRate: ITravelRate | null;\r\n tripLegTypes: Array;\r\n successMessages?: string | null;\r\n failureMessages?: string | null;\r\n selectedExpenses: Array;\r\n directReports: Array;\r\n pdbo: any;\r\n}\r\n\r\nexport const initialState: State = {\r\n expenseTasks: [],\r\n expenseSummaries: [],\r\n expenseLines: [],\r\n expenseReceipts: [],\r\n paymentMethods: [],\r\n userPaymentMethods: [],\r\n travelModes: [],\r\n selectedUser: null,\r\n editingExpenseSummary: null,\r\n editingExpenseDetail: null,\r\n editingExpenseReceipt: null,\r\n editingExpenseReceiptAttachment: null,\r\n receiptImage: null,\r\n travelRates: [],\r\n selectedRate: null,\r\n tripLegTypes: [],\r\n successMessages: null,\r\n failureMessages: null,\r\n selectedExpenses: [],\r\n directReports: [],\r\n pdbo: null\r\n};\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: actions.ActionsUnion\r\n): State {\r\n try {\r\n switch (action.type) {\r\n case actions.ActionTypes.Reset:\r\n return initialState;\r\n case actions.ActionTypes.ResetSelectedExpense:\r\n return {\r\n ...state,\r\n editingExpenseSummary: null,\r\n editingExpenseDetail: null,\r\n editingExpenseReceipt: null,\r\n editingExpenseReceiptAttachment: null,\r\n receiptImage: null,\r\n expenseLines: [],\r\n expenseReceipts: [],\r\n successMessages: null,\r\n failureMessages: null\r\n };\r\n case actions.ActionTypes.ClearMessages:\r\n return {\r\n ...state,\r\n successMessages: null,\r\n failureMessages: null\r\n };\r\n case actions.ActionTypes.AddExpenseSummarySuccess:\r\n return {\r\n ...state,\r\n expenseSummaries: state.expenseSummaries\r\n .filter(\r\n x =>\r\n !action.payload.Items.some(\r\n y => y.ExpReportNbr === x.ExpReportNbr\r\n )\r\n )\r\n .concat(action.payload.Items), // add any new\r\n editingExpenseSummary: action.payload.Items[0] // we currently only edit one at a time\r\n };\r\n case actions.ActionTypes.AddExpenseSummaryFailure:\r\n return {\r\n ...state,\r\n failureMessages: action.payload.Items.map(\r\n x => x?.Status?.Message\r\n ).reduce((a, c) => a + ' ' + c, ''),\r\n successMessages: null\r\n };\r\n case actions.ActionTypes.AddExpenseDetailsFailure:\r\n return {\r\n ...state,\r\n failureMessages: action.payload.Items.map(\r\n x => x?.Status?.Message\r\n ).reduce((a, c) => a + ' ' + c, ''),\r\n successMessages: null\r\n };\r\n case actions.ActionTypes.AddExpenseLineSuccess:\r\n return {\r\n ...state,\r\n expenseLines: state.expenseLines\r\n .filter(\r\n x =>\r\n !action.payload.Items.some(\r\n y =>\r\n y.ExpenseID === x.ExpenseID &&\r\n y.SequenceId === x.SequenceId\r\n )\r\n )\r\n .concat(action.payload.Items), // add any new\r\n successMessages: action.payload.Items.map(\r\n x => x?.Status?.Message\r\n ).reduce((a, c) => a + ' ' + c, ''),\r\n failureMessages: null\r\n };\r\n case actions.ActionTypes.AddExpenseLineFailure:\r\n return {\r\n ...state,\r\n failureMessages:\r\n action.payload.ErrorMessages.reduce(\r\n (a, c) => a + ' ' + c,\r\n ''\r\n ) +\r\n action.payload.Items.map(\r\n x => x?.Status?.Message\r\n ).reduce((a, c) => a + ' ' + c, ''),\r\n successMessages: null\r\n };\r\n case actions.ActionTypes.AddExpenseReceiptsSuccess:\r\n return {\r\n ...state,\r\n expenseReceipts: state.expenseReceipts\r\n .filter(\r\n x =>\r\n !action.payload.Items.some(\r\n y => y.Unique_Id === x.Unique_Id\r\n )\r\n )\r\n .concat(action.payload.Items), // add any new\r\n expenseLines: state.expenseLines\r\n .filter(\r\n x =>\r\n !action.payload.Items.some(\r\n y =>\r\n y.ExpenseID === x.ExpenseID &&\r\n y.Sequenceid === x.SequenceId\r\n )\r\n )\r\n .concat(\r\n state.expenseLines\r\n .filter(x =>\r\n action.payload.Items.some(\r\n y =>\r\n y.ExpenseID === x.ExpenseID &&\r\n y.Sequenceid === x.SequenceId\r\n )\r\n )\r\n .map(x => ({\r\n ...x,\r\n Row_Version: action.payload.Items.find(\r\n y =>\r\n y.ExpenseID === x.ExpenseID &&\r\n y.Sequenceid === x.SequenceId\r\n )?.Line_rowversion\r\n }))\r\n ),\r\n editingExpenseReceipt: action.payload.Items[0],\r\n successMessages: action.payload.Items.map(\r\n x => x?.Status?.Message\r\n ).reduce((a, c) => a + ' ' + c, ''),\r\n failureMessages: null\r\n };\r\n case actions.ActionTypes.AddExpenseReceiptsFailure:\r\n return {\r\n ...state,\r\n failureMessages:\r\n action.payload.ErrorMessages.reduce(\r\n (a, c) => a + ' ' + c,\r\n ''\r\n ) +\r\n action.payload.Items.map(\r\n x => x?.Status?.Message\r\n ).reduce((a, c) => a + ' ' + c, ''),\r\n successMessages: null\r\n };\r\n case actions.ActionTypes.AddExpenseAttachmentSuccess: {\r\n return {\r\n ...state,\r\n editingExpenseReceiptAttachment: action.payload.Items[0],\r\n successMessages: action.payload.Items.map(\r\n x => x.Status.Message\r\n ).reduce((a, c) => a + ' ' + c, ''),\r\n failureMessages: null\r\n };\r\n }\r\n case actions.ActionTypes.AddExpenseAttachmentFailure: {\r\n return {\r\n ...state,\r\n failureMessages:\r\n action.payload.ErrorMessages.reduce(\r\n (a, c) => a + ' ' + c,\r\n ''\r\n ) +\r\n action.payload.Items.map(x => x.Status.Message).reduce(\r\n (a, c) => a + ' ' + c,\r\n ''\r\n ),\r\n successMessages: null\r\n };\r\n }\r\n case actions.ActionTypes.SetExpenseSummaries:\r\n return {\r\n ...state,\r\n expenseSummaries: [...action.payload],\r\n successMessages: null,\r\n failureMessages: null\r\n };\r\n case actions.ActionTypes.SelectDirectReport:\r\n return {\r\n ...state,\r\n selectedUser: { ...action.payload }\r\n };\r\n case actions.ActionTypes.EditExpenseSummary:\r\n return {\r\n ...state,\r\n editingExpenseSummary: { ...action.payload }\r\n };\r\n case actions.ActionTypes.EditExpenseDetail:\r\n return {\r\n ...state,\r\n editingExpenseDetail: { ...action.payload }\r\n };\r\n case actions.ActionTypes.EditExpenseReceipt:\r\n return {\r\n ...state,\r\n editingExpenseReceipt: { ...action.payload }\r\n };\r\n case actions.ActionTypes.SetExpenseLines:\r\n return {\r\n ...state,\r\n expenseLines: [...action.payload] || [],\r\n editingExpenseDetail: state.editingExpenseDetail\r\n ? action.payload.find(\r\n x =>\r\n x.ExpenseID ===\r\n state.editingExpenseDetail?.ExpenseID\r\n ) || state.editingExpenseDetail\r\n : null,\r\n successMessages: null,\r\n failureMessages: null\r\n };\r\n case actions.ActionTypes.SetExpenseReceipts:\r\n return {\r\n ...state,\r\n expenseReceipts: [...action.payload] || [],\r\n editingExpenseReceipt: state.editingExpenseReceipt\r\n ? action.payload.find(\r\n x =>\r\n x.Unique_Id ===\r\n state.editingExpenseReceipt?.Unique_Id\r\n ) || action.payload[0]\r\n : action.payload[0],\r\n successMessages: null,\r\n failureMessages: null\r\n };\r\n case actions.ActionTypes.SetPaymentMethods:\r\n return {\r\n ...state,\r\n paymentMethods: [...action.payload] || []\r\n };\r\n case actions.ActionTypes.SetUserPaymentMethods:\r\n return {\r\n ...state,\r\n userPaymentMethods: [...action.payload] || []\r\n };\r\n case actions.ActionTypes.SetTravelMode:\r\n return {\r\n ...state,\r\n travelModes: [...action.payload] || []\r\n };\r\n case actions.ActionTypes.SetReceiptImage:\r\n return {\r\n ...state,\r\n receiptImage: action.payload\r\n };\r\n case actions.ActionTypes.SetExpenseTasks:\r\n return {\r\n ...state,\r\n expenseTasks: [...action.payload] || []\r\n };\r\n case actions.ActionTypes.UpdateExpenseSummary:\r\n if (action.payload && action.payload.ExpReportNbr) {\r\n return {\r\n ...state,\r\n expenseSummaries: state.expenseSummaries\r\n .filter(\r\n x =>\r\n x.ExpReportNbr !==\r\n action.payload.ExpReportNbr\r\n )\r\n .concat(action.payload)\r\n };\r\n } else {\r\n return state;\r\n }\r\n case actions.ActionTypes.RemoveExpenseSummary:\r\n return {\r\n ...state,\r\n expenseSummaries: state.expenseSummaries.filter(\r\n x => x.ExpReportNbr !== action.payload.ExpReportNbr\r\n )\r\n };\r\n case actions.ActionTypes.RemoveExpenseDetail:\r\n return {\r\n ...state,\r\n expenseSummaries:\r\n state.expenseLines.filter(\r\n x => x.ExpenseID !== action.payload.ExpenseID\r\n ).length === 0\r\n ? state.expenseSummaries.filter(\r\n x =>\r\n x.ExpReportNbr !==\r\n action.payload.ExpReportNbr\r\n )\r\n : state.expenseSummaries,\r\n expenseLines: state.expenseLines.filter(\r\n x => x.ExpenseID !== action.payload.ExpenseID\r\n ),\r\n expenseReceipts: state.expenseReceipts.filter(\r\n x => x.ExpenseID !== action.payload.ExpenseID\r\n )\r\n };\r\n case actions.ActionTypes.RemoveExpenseReceipt:\r\n return {\r\n ...state,\r\n expenseReceipts: state.expenseReceipts.filter(\r\n x => x.Unique_Id !== action.payload.Items[0].EntityID\r\n )\r\n };\r\n case actions.ActionTypes.SetTravelRates:\r\n return {\r\n ...state,\r\n travelRates: [...(action.payload || [])]\r\n };\r\n case actions.ActionTypes.SetTripLegTypes:\r\n return {\r\n ...state,\r\n tripLegTypes: action.payload\r\n };\r\n case actions.ActionTypes.SelectTravelRate:\r\n return {\r\n ...state,\r\n selectedRate: action.payload\r\n };\r\n case actions.ActionTypes.LoadExpenseReceiptAttachment:\r\n return {\r\n ...state,\r\n editingExpenseReceiptAttachment: null\r\n };\r\n case actions.ActionTypes.EditExpenseReceiptAttachment:\r\n return {\r\n ...state,\r\n editingExpenseReceiptAttachment: action.payload\r\n };\r\n case actions.ActionTypes.AddSelectedExpense:\r\n return {\r\n ...state,\r\n selectedExpenses: fromShared.uniqBy(\r\n [...state.selectedExpenses, action.payload],\r\n x => x\r\n )\r\n };\r\n case actions.ActionTypes.RemoveSelectedExpense:\r\n return {\r\n ...state,\r\n selectedExpenses: state.selectedExpenses.filter(\r\n x => x !== action.payload\r\n )\r\n };\r\n case actions.ActionTypes.SetExpenseReports:\r\n return {\r\n ...state,\r\n directReports: action.payload\r\n };\r\n case actions.ActionTypes.ClearSelectedExpenses:\r\n return {\r\n ...state,\r\n selectedExpenses: []\r\n };\r\n case actions.ActionTypes.ClearExpenseNumber:\r\n return {\r\n ...state,\r\n expenseSummaries: state.expenseSummaries.map(x =>\r\n x.ExpReportNbr === action.payload\r\n ? { ...x, ExpReportNbr: -1 }\r\n : x\r\n ),\r\n expenseLines: state.expenseLines.map(x =>\r\n x.ExpReportNbr === action.payload\r\n ? { ...x, ExpReportNbr: -1 }\r\n : x\r\n ),\r\n editingExpenseSummary:\r\n state.editingExpenseSummary?.ExpReportNbr ===\r\n action.payload\r\n ? {\r\n ...state.editingExpenseSummary,\r\n ExpReportNbr: -1\r\n }\r\n : state.editingExpenseSummary\r\n };\r\n case actions.ActionTypes.SetExpenseLinePDBO:\r\n return {\r\n ...state,\r\n pdbo: action.pdbo\r\n };\r\n default:\r\n return state;\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n return state;\r\n }\r\n}\r\nconst expenseState = createFeatureSelector('expenses');\r\nexport const getExpenseSummaries = createSelector(expenseState, x =>\r\n x.expenseSummaries.filter(y => y.ERTypeID !== ExpenseRequestTypeEnum.Travel)\r\n);\r\nexport const getTravelRequestSummaries = createSelector(expenseState, x =>\r\n x.expenseSummaries.filter(y => y.ERTypeID === ExpenseRequestTypeEnum.Travel)\r\n);\r\nexport const getSelectedUser = createSelector(\r\n expenseState,\r\n x => x.selectedUser\r\n);\r\nexport const getExpenseLines = createSelector(\r\n expenseState,\r\n x => x.expenseLines\r\n);\r\nexport const getExpenseReceipts = createSelector(\r\n expenseState,\r\n x => x.expenseReceipts\r\n);\r\nexport const getExpensePaymentMethods = createSelector(\r\n expenseState,\r\n x => x.paymentMethods\r\n);\r\nexport const getUserPaymentMethods = createSelector(\r\n expenseState,\r\n x => x.userPaymentMethods\r\n);\r\nexport const getExpenseTravelModes = createSelector(\r\n expenseState,\r\n x => x.travelModes\r\n);\r\nexport const getReceiptImage = createSelector(\r\n expenseState,\r\n x => x.receiptImage\r\n);\r\nexport const getExpenseTasks = createSelector(\r\n expenseState,\r\n x => x.expenseTasks\r\n);\r\nexport const getTravelRates = createSelector(expenseState, x => x.travelRates);\r\nexport const getSelectedRate = createSelector(\r\n expenseState,\r\n x => x.selectedRate\r\n);\r\nexport const getTripLegTypes = createSelector(\r\n expenseState,\r\n x => x.tripLegTypes\r\n);\r\nexport const getSuccessMessages = createSelector(\r\n expenseState,\r\n x => x.successMessages\r\n);\r\nexport const getFailureMessages = createSelector(\r\n expenseState,\r\n x => x.failureMessages\r\n);\r\nexport const getEditingExpenseSummary = createSelector(\r\n expenseState,\r\n x => x.editingExpenseSummary\r\n);\r\nexport const getEditingExpenseDetail = createSelector(\r\n expenseState,\r\n x => x.editingExpenseDetail\r\n);\r\nexport const getEditingExpenseReceipt = createSelector(\r\n expenseState,\r\n x => x.editingExpenseReceipt\r\n);\r\nexport const getReceiptAttachment = createSelector(\r\n expenseState,\r\n x => x.editingExpenseReceiptAttachment\r\n);\r\nexport const getExpenseReports = createSelector(\r\n expenseState,\r\n x => x.directReports\r\n);\r\nexport const getExpenseLinePdbo = createSelector(expenseState, x => x.pdbo);\r\n\r\nexport const selectSummaryById = (id: number | undefined) =>\r\n createSelector(getExpenseSummaries, summaries =>\r\n summaries.find(x => x.ExpReportNbr === id)\r\n );\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport { IChargeNumberManagement } from '../../contract-management/IChargeNumberManagement';\r\nimport * as fromCNStoreActions from '../../contract-management/store/charge-number-management.actions';\r\nimport * as fromCNStoreReducer from '../../contract-management/store/charge-number-management.reducer';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { FeeLevel } from '../../data-services/fee-level/fee-level.model';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport { FeeLevelPresenterComponent } from '../presenter/fee-level-presenter.component';\r\n@Component({\r\n selector: 'ef-fee-level-feature',\r\n templateUrl: './fee-level-feature.component.html',\r\n styleUrls: ['./fee-level-feature.component.scss']\r\n})\r\nexport class FeeLevelFeatureComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n process$: Observable;\r\n\r\n @ViewChild(FeeLevelPresenterComponent, { static: true })\r\n presenter: FeeLevelPresenterComponent;\r\n\r\n public feeLevels$: Observable;\r\n public feeOnGA$: Observable;\r\n public feeHistory$: Observable;\r\n public contracts$: Observable;\r\n public chargeNumbers$: Observable;\r\n public contractTypes$: Observable;\r\n public userInfo$: Observable;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n\r\n active = true;\r\n contractDataService: EntityCollectionService;\r\n feeLevelDataService: EntityCollectionService;\r\n feeOnGADataService: EntityCollectionService;\r\n feeHistoryDataService: EntityCollectionService;\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n this.feeLevelDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.FeeLevel.entityName\r\n );\r\n this.feeHistoryDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.FeeHistory.entityName\r\n );\r\n this.feeOnGADataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.FeeOnGA.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(new fromLookups.LoadContractTypes());\r\n this.feeOnGADataService.getAll();\r\n this.contractDataService.getAll();\r\n this.feeLevelDataService.clearCache();\r\n //this.feeLevelDataService.getWithQuery({ ActiveOnly: 'true' });\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.feeLevelDataService.clearCache();\r\n this.feeHistoryDataService.clearCache();\r\n // this.store.dispatch(fromActions.clearContractClasss());\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.feeLevels$ = this.feeLevelDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n\r\n this.feeOnGA$ = this.feeOnGADataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n\r\n this.feeHistory$ = this.feeHistoryDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n\r\n this.contractTypes$ = this.store.pipe(\r\n select(fromLookups.getContractTypes)\r\n );\r\n\r\n this.chargeNumbers$ = this.store.pipe(\r\n select(fromCNStoreReducer.selectAll)\r\n // map(chargenumbers => clone(chargenumbers))\r\n );\r\n\r\n this.contracts$ = this.contractDataService.entities$.pipe(\r\n //map(x => (x = x.filter(y => y.IsActive === true))),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n )\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n\r\n onLoadActiveInactiveFeeLevel($event) {\r\n //this.feeLevelDataService.clearCache();\r\n this.contractDataService.clearCache();\r\n this.contractDataService.getWithQuery({ActiveOnly: $event});\r\n //this.feeLevelDataService.getWithQuery({ ActiveOnly: $event });\r\n }\r\n\r\n onLoadFeeLevels($event) {\r\n this.log.verbose({\r\n type: 'FeeLevelFeatureComponent:onLoadFeeLevels'\r\n });\r\n this.feeLevelDataService.clearCache();\r\n if ($event.ContractList.length > 0) {\r\n this.feeLevelDataService.getWithQuery($event);\r\n }\r\n\r\n }\r\n\r\n onSaveFeeLevels($event) {\r\n this.log.verbose({\r\n type: 'FeeLevelFeatureComponent:onSaveFeeLevels'\r\n });\r\n this.feeLevelDataService.upsert($event);\r\n }\r\n\r\n onLoadContracts($event) {\r\n this.contractDataService.getAll();\r\n }\r\n\r\n onLoadChargeNumbers($event) {\r\n this.store.dispatch(\r\n fromCNStoreActions.getChargeNumbers({\r\n Contract: {\r\n ContractListID: $event.toString(),\r\n Activeonly: true\r\n }\r\n })\r\n );\r\n }\r\n\r\n onLoadFeeHistory($event) {\r\n this.log.verbose({\r\n type: 'FeeLevelFeatureComponent:onLoadFeeHistory'\r\n });\r\n this.feeHistoryDataService.clearCache();\r\n this.feeHistoryDataService.getWithQuery($event);\r\n }\r\n\r\n onSaveFeeHistory($event) {\r\n this.log.verbose({\r\n type: 'FeeLevelFeatureComponent:onSaveFeeHistory'\r\n });\r\n this.feeHistoryDataService.upsert($event);\r\n }\r\n\r\n onDeleteFeeLevel($event) {\r\n this.feeLevelDataService.delete($event);\r\n }\r\n\r\n // onShowError(event) {\r\n // this.ShowError.next(event);\r\n // }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FeeLevelFeatureComponent } from './feature/fee-level-feature.component';\r\nimport { FeeLevelPresenterComponent } from './presenter/fee-level-presenter.component';\r\nimport { FeeLevelDataService } from '../data-services/fee-level';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport { entityName } from '../data-services/fee-level/fee-level.data-service';\r\nimport { FeeLevelRoute } from './fee-level.route';\r\n\r\n\r\n@NgModule({\r\n // declarations: [FeeLevelFeatureComponent, FeeLevelPresenterComponent],\r\n providers: [FeeLevelDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [FeeLevelRoute]\r\n })\r\n ]\r\n})\r\nexport class FeeLevelModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n feeLevelService: FeeLevelDataService\r\n ) {\r\n entityDataService.registerService(entityName, feeLevelService);\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { FeeLevelFeatureComponent } from './feature/fee-level-feature.component';\r\nconst log = new LoggingService();\r\n\r\nexport const FeeLevelRoute: Ng2StateDeclaration = {\r\n name: 'feeestructure',\r\n url: '/feeestructure',\r\n data: { requiresAuth: true },\r\n\r\n component: FeeLevelFeatureComponent\r\n};\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { IChargeNumberManagement } from '../../contract-management/IChargeNumberManagement';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { FeeLevel } from '../../data-services/fee-level/fee-level.model';\r\nimport * as fromLookups from '../../lookups';\r\nimport { Process } from '../../shared';\r\nimport { columnResize } from '../../shared/columnResize';\r\nimport { SelectItem, Table } from '../../shared/efaact-primeng.module';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-fee-level-presenter',\r\n templateUrl: './fee-level-presenter.component.html',\r\n styleUrls: ['./fee-level-presenter.component.scss']\r\n})\r\nexport class FeeLevelPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private FeeLevelSubject = new ReplaySubject>(1);\r\n private _feelevels: Array;\r\n today: Date;\r\n minDate: Date;\r\n feeHistTabHeight: string;\r\n feeLevelTabHeight: string;\r\n contractChanged: boolean = false;\r\n oldSelectedContract: any;\r\n @Input() set feeLevels(value: Array) {\r\n this._feelevels = value;\r\n if (this._feelevels.some(x => x.ChargeNumber != null) == true) {\r\n this.log.verbose('there are charge numbers');\r\n this.AreCns = true;\r\n this.colspan = 4;\r\n } else {\r\n this.log.verbose('there are not charge numbers');\r\n this.AreCns = false;\r\n this.colspan = 3;\r\n }\r\n this.FeeLevelSubject.next(value);\r\n\r\n this.cFilterSelectItem = value.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n this.cFilterSelectItem = this.cFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.cnFilterSelectItem = value.map(x => ({\r\n value: x.CNListID,\r\n label: x.ChargeNumber\r\n }));\r\n this.cnFilterSelectItem = this.cnFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.ctFilterSelectItem = value.map(x => ({\r\n value: x.ContractType,\r\n label: x.ContractType\r\n }));\r\n this.ctFilterSelectItem = this.ctFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n setTimeout(() => {\r\n if (this.IsAddClicked === true) {\r\n const row = document.getElementById(\r\n `row-${\r\n this._feelevels[this._feelevels.length - 1].FeeSetupID\r\n }`\r\n );\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n this.IsAddClicked = false;\r\n }\r\n }, 1000);\r\n\r\n if (this.contractChanged == true && this._feelevels.length > 0) {\r\n this.selectedContract = this._feelevels[0];\r\n this.onContractSelected({data: this.selectedContract});\r\n this.handleOnOpen([0, 1]);\r\n this.contractChanged = false;\r\n }\r\n\r\n this.IsLoading = false;\r\n }\r\n get feeLevels(): Array {\r\n return this._feelevels;\r\n }\r\n\r\n private FeeHistorySubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _feehistory: Array;\r\n @Input() set feeHistory(\r\n value: Array\r\n ) {\r\n this._feehistory = value;\r\n if (this._feehistory.some(x => x.ChargeNumber != null) == true) {\r\n this.log.verbose('there are charge numbers: hist');\r\n this.AreHistCNs = true;\r\n this.histColSpan = 2;\r\n } else {\r\n this.log.verbose('there are not charge numbers: hist');\r\n this.AreHistCNs = false;\r\n this.histColSpan = 1;\r\n }\r\n this.FeeHistorySubject.next(value);\r\n\r\n this.hist_cnFilterSelectItem = value.map(x => ({\r\n value: x.CNListID,\r\n label: x.ChargeNumber\r\n }));\r\n this.hist_cnFilterSelectItem = this.hist_cnFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.hist_ctFilterSelectItem = value.map(x => ({\r\n value: x.ContractType,\r\n label: x.ContractType\r\n }));\r\n this.hist_ctFilterSelectItem = this.hist_ctFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n get feeHistory(): Array {\r\n return this._feehistory;\r\n }\r\n\r\n private FeeOnGASubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _feeonga: Array;\r\n @Input() set feeOnGA(value: Array) {\r\n this._feeonga = value;\r\n this.FeeOnGASubject.next(value);\r\n\r\n this.feeOnGASelectItem = value.map(x => ({\r\n value: x.FeeonGAtype,\r\n label: x.FeeonGAdescription\r\n }));\r\n this.feeOnGASelectItem = this.feeOnGASelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n get feeOnGA(): Array {\r\n return this._feeonga;\r\n }\r\n\r\n private ContractsSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n if (value && value.length > 0) {\r\n\r\n if (this.activeOnly == false) {\r\n value = value.filter(x => x.IsActive == true);\r\n }\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n this.loadContractsSelectItem = value.map(\r\n x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n })\r\n );\r\n }\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n private ContractTypesSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _contracttypes: Array;\r\n @Input() set contractTypes(value: Array) {\r\n if (value && value.length > 0) {\r\n this._contracttypes = value;\r\n this.ContractTypesSubject.next(value);\r\n this.contractTypesSelectItem = value.map(x => ({\r\n value: x.ContractType,\r\n label: x.ContractTypeName\r\n }));\r\n if (\r\n this._contracttypes.some(x => x.ContractType == 'unknown') ==\r\n true\r\n ) {\r\n this.contractTypesSelectItem =\r\n this.contractTypesSelectItem.filter(\r\n x => x.value != 'unknown'\r\n );\r\n }\r\n }\r\n }\r\n get contractTypes(): Array {\r\n return this._contracttypes;\r\n }\r\n\r\n private ChargeNumbersSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _chargenumbers: Array;\r\n @Input() set chargeNumbers(value: Array) {\r\n if (value && value.length > 0) {\r\n this._chargenumbers = value;\r\n this.ChargeNumbersSubject.next(value);\r\n const filteredCNs = this._chargenumbers.filter(\r\n x => x.ContractType == this.selectedContractType\r\n );\r\n const filteredCNsUnique = [];\r\n let index;\r\n if (filteredCNs.length > 0) {\r\n filteredCNs.forEach(cn => {\r\n index = this.feeLevels.findIndex(\r\n fee => fee.CNListID == cn.CNListID\r\n );\r\n if (index == -1) {\r\n filteredCNsUnique.push(cn);\r\n }\r\n });\r\n }\r\n\r\n if (filteredCNsUnique.length > 0) {\r\n this.chargeNumberDDPlaceholder = 'Charge Number';\r\n } else {\r\n this.chargeNumberDDPlaceholder = 'All Charge Numbers Assigned';\r\n }\r\n\r\n this.chargeNumbersSelectItem = filteredCNsUnique.map(x => ({\r\n value: x.CNListID,\r\n label: x.FullName\r\n }));\r\n // this.chargeNumbersSelectItem = value.map(x => ({\r\n // value: x.CNListID,\r\n // label: x.FullName\r\n // }));\r\n }\r\n }\r\n get chargeNumbers(): Array {\r\n return this._chargenumbers;\r\n }\r\n\r\n chargeNumberDDPlaceholder = 'Charge Number';\r\n\r\n @Input() public process: Process;\r\n @Input() public userInfo: fromUser.IUserInfo;\r\n\r\n public editing: FeeLevel = {} as FeeLevel;\r\n clonedFeeLevels: { [i: string]: FeeLevel } = {};\r\n\r\n clonedFeeHistory: { [i: string]: fromDataServices.FeeHistory.FeeHistory } =\r\n {};\r\n public histEditing: fromDataServices.FeeHistory.FeeHistory =\r\n {} as fromDataServices.FeeHistory.FeeHistory;\r\n\r\n active = true;\r\n\r\n @Output() LoadFeeLevels = new ReplaySubject(1);\r\n @Output() LoadActiveInactiveFeeLevel = new ReplaySubject(1);\r\n @Output() SaveFeeLevels = new ReplaySubject(1);\r\n @Output() DeleteFeeLevel = new ReplaySubject(1);\r\n @Output() LoadContracts = new ReplaySubject(1);\r\n @Output() LoadChargeNumbers = new ReplaySubject(1);\r\n @Output() LoadFeeHistory = new ReplaySubject(1);\r\n @Output() SaveFeeHistory = new ReplaySubject(1);\r\n\r\n loadContractsSelectItem: SelectItem[];\r\n contractsSelectItem: SelectItem[];\r\n contractTypesSelectItem: SelectItem[];\r\n chargeNumbersSelectItem: SelectItem[];\r\n cFilterSelectItem: SelectItem[];\r\n cnFilterSelectItem: SelectItem[];\r\n ctFilterSelectItem: SelectItem[];\r\n hist_cnFilterSelectItem: SelectItem[];\r\n hist_ctFilterSelectItem: SelectItem[];\r\n feeOnGASelectItem: SelectItem[];\r\n\r\n @ViewChild(Table, { static: true }) ContractTable: Table;\r\n\r\n addFormGroup: FormGroup;\r\n cFilterFormGroup: FormGroup;\r\n cnFilterFormGroup: FormGroup;\r\n ctFilterFormGroup: FormGroup;\r\n hist_cnFilterFormGroup: FormGroup;\r\n hist_ctFilterFormGroup: FormGroup;\r\n histFormGroup: FormGroup;\r\n\r\n withholding = true;\r\n hist_withholding = true;\r\n\r\n CPFF_LOE: boolean;\r\n hist_CPFF_LOE: boolean;\r\n IsHistTableSelected = false;\r\n\r\n selectedContractType: string;\r\n selectedContracts: any[] = [];\r\n selectedChargeNumbers: any[] = [];\r\n\r\n selectedContract: FeeLevel;\r\n\r\n AreHistCNs: boolean;\r\n AreCns: boolean;\r\n\r\n IsAddClicked = false;\r\n\r\n accordionSelected = false;\r\n\r\n histColSpan = 2;\r\n colspan = 4;\r\n\r\n @ViewChild(Table, { static: true })\r\n FeeLevelTable: Table;\r\n @ViewChild(Table, { static: true })\r\n FeeHistoryTable: Table;\r\n\r\n filteredContracts: Array = [];\r\n\r\n moment: any;\r\n\r\n IsLoading: boolean;\r\n\r\n feeHistoryHeader = 'Fee History';\r\n\r\n histStartDate: any;\r\n histEndDate: any;\r\n\r\n cols: any[];\r\n\r\n showFeeAmtDialog = false;\r\n\r\n feeAmtFocused = false;\r\n\r\n elements: HTMLCollection;\r\n\r\n activeState = [true, false];\r\n\r\n activeOnly = false;\r\n\r\n contractList = [];\r\n\r\n public currencyFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n });\r\n public tabHeight = '54vh';\r\n public percentFormatter(num) {\r\n return Number(num / 100).toLocaleString(undefined, {\r\n style: 'percent',\r\n minimumFractionDigits: 2\r\n });\r\n }\r\n\r\n constructor(@Inject(LoggingService) private log: LoggingService, protected cdRef: ChangeDetectorRef) {\r\n super();\r\n this.addFormGroup = new FormGroup({\r\n ContractType: new FormControl(null),\r\n Contract: new FormControl(null),\r\n ChargeNumber: new FormControl(null),\r\n FeePercent: new FormControl(null),\r\n FeeAmount: new FormControl(null),\r\n FeeHours: new FormControl(null),\r\n ed: new FormControl(null)\r\n });\r\n this.cFilterFormGroup = new FormGroup({\r\n c: new FormControl(null)\r\n });\r\n this.cnFilterFormGroup = new FormGroup({\r\n cn: new FormControl(null)\r\n });\r\n this.ctFilterFormGroup = new FormGroup({\r\n ct: new FormControl(null)\r\n });\r\n this.hist_cnFilterFormGroup = new FormGroup({\r\n cn: new FormControl(null)\r\n });\r\n this.hist_ctFilterFormGroup = new FormGroup({\r\n ct: new FormControl(null)\r\n });\r\n this.histFormGroup = new FormGroup({\r\n dateRange: new FormControl(null),\r\n clearFilters: new FormControl(null),\r\n showHide: new FormControl(null)\r\n });\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.today = new Date();\r\n this.minDate = new Date('01/01/1970');\r\n this.cols = [\r\n { field: 'ContractDesc', header: 'Contract' },\r\n { field: 'ChargeNumber', header: 'Charge Number' },\r\n { field: 'ContractType', header: 'Contract Type' },\r\n { field: 'EffectiveDate', header: 'Effective Date' },\r\n { field: 'FeePercentage', header: 'Fee %' },\r\n { field: 'FeeAmount', header: 'Fee Amount' },\r\n { field: 'EstHours', header: 'Est. Hours' },\r\n { field: 'FeeBilledCumulative', header: 'Fee Invoiced' },\r\n { field: 'FeeRetainCumulative', header: 'Fee Withheld' },\r\n {\r\n field: 'FeeRetainFull_FeeAmount',\r\n header: 'Start at Fee Invoiced'\r\n },\r\n { field: 'FeeRetainPercentStartDate', header: 'Start Date' },\r\n { field: 'FeeRetainPercent', header: 'Fee % Withheld' },\r\n {\r\n field: 'FeeRetainStop_FeeAmount',\r\n header: 'Stop at Fee Invoiced'\r\n },\r\n {\r\n field: 'FeeRetainStop_RetainAmount',\r\n header: 'Stop at Fee Withheld'\r\n }\r\n ];\r\n // var table = document.getElementById(\"FeeLevelTable\");\r\n // table.style.maxHeight = '35vh';\r\n this.setupSubscriptions();\r\n this.handleOnOpen([0]);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.userInfo != null) {\r\n this.histFormGroup.controls['dateRange'].patchValue([\r\n new Date(this.userInfo.PrevPayPeriodStart),\r\n new Date(this.userInfo.PrevPayPeriodEnd)\r\n ]);\r\n }\r\n setTimeout(() => {\r\n this.onActiveIndexChange([0, 1]);\r\n }, 0);\r\n\r\n //this.elements = document.getElementsByClassName('p-header-cell');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'FeeLevelPresenterComponent:setupSubscriptions'\r\n });\r\n\r\n this.addFormGroup.controls['ContractType'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.addFormGroup.controls['Contract'].reset();\r\n this.addFormGroup.controls['ChargeNumber'].reset();\r\n if (value == 'CPFF/LOE') {\r\n this.addFormGroup.controls['FeeHours'].enable();\r\n this.addFormGroup.controls['FeePercent'].disable();\r\n } else {\r\n this.addFormGroup.controls['FeeHours'].disable();\r\n this.addFormGroup.controls['FeePercent'].enable();\r\n }\r\n this.filteredContracts = this.contracts.filter(\r\n x =>\r\n x.ContractType == value || x.ContractType == 'mixed'\r\n );\r\n this.filteredContracts = this.filteredContracts.filter(x => x.IsActive == true);\r\n this.contractsSelectItem = this.filteredContracts.map(\r\n x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n })\r\n );\r\n this.selectedContractType = value;\r\n }\r\n });\r\n this.addFormGroup.controls['Contract'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.addFormGroup.controls['ChargeNumber'].reset();\r\n this.selectedContracts = [];\r\n if (value.length != 0) {\r\n this.LoadChargeNumbers.next(value);\r\n }\r\n value.forEach(val => {\r\n this.selectedContracts.push({\r\n contractlistid: this.contracts.find(\r\n x => x.ContractListID == val\r\n ).ContractListID,\r\n contractdesc: this.contracts.find(\r\n x => x.ContractListID == val\r\n ).ContractDesc,\r\n isactive: this.contracts.find(\r\n x => x.ContractListID == val\r\n ).IsActive\r\n });\r\n });\r\n if (value.length > 1) {\r\n this.addFormGroup.controls['ChargeNumber'].disable();\r\n this.chargeNumberDDPlaceholder =\r\n '[ Disabled ] multiple contracts selected';\r\n } else {\r\n this.chargeNumberDDPlaceholder = 'Charge Numbers';\r\n this.addFormGroup.controls['ChargeNumber'].enable();\r\n }\r\n }\r\n });\r\n this.addFormGroup.controls['ChargeNumber'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedChargeNumbers = [];\r\n value.forEach(val => {\r\n this.selectedChargeNumbers.push({\r\n CNListID: this.chargeNumbers.find(\r\n x => x.CNListID == val\r\n ).CNListID,\r\n FullName: this.chargeNumbers.find(\r\n x => x.CNListID == val\r\n ).FullName\r\n });\r\n });\r\n }\r\n });\r\n this.addFormGroup.controls['FeePercent'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['FeeAmount'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['FeeHours'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.cFilterFormGroup.controls['c'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.cnFilterFormGroup.controls['cn'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.ctFilterFormGroup.controls['ct'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.histFormGroup.controls['dateRange'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (\r\n value[0] != null &&\r\n value[1] != null &&\r\n this.selectedContract != null\r\n ) {\r\n this.histStartDate = value[0];\r\n this.histEndDate = value[1];\r\n this.LoadFeeHistory.next({\r\n ContractListID: this.selectedContract.ContractListID,\r\n StartDate: value[0],\r\n EndDate: value[1]\r\n });\r\n }\r\n });\r\n }\r\n\r\n onFeeAmtFocus(event) {\r\n if (event) {\r\n this.feeAmtFocused = true;\r\n }\r\n }\r\n\r\n onFeeAmtUnfocus(event) {\r\n if (event) {\r\n this.feeAmtFocused = false;\r\n }\r\n }\r\n\r\n feeAmtDialogAction(action) {\r\n if (action == 'YES') {\r\n this.LoadFeeLevels.next({\r\n EffectiveDate: this.addFormGroup.controls['ed'].value,\r\n ContractList: this.selectedContracts,\r\n CNList: this.selectedChargeNumbers,\r\n FeePercentage: this.addFormGroup.controls['FeePercent'].value,\r\n FeeAmount: this.addFormGroup.controls['FeeAmount'].value,\r\n EstHours: this.addFormGroup.controls['FeeHours'].value,\r\n FeeRetainFull_FeeAmount:\r\n this.addFormGroup.controls['FeeAmount'].value\r\n });\r\n\r\n this.addFormGroup.controls['ContractType'].reset();\r\n this.addFormGroup.controls['Contract'].reset();\r\n this.addFormGroup.controls['ChargeNumber'].reset();\r\n this.addFormGroup.controls['FeePercent'].reset();\r\n this.addFormGroup.controls['FeeAmount'].reset();\r\n this.addFormGroup.controls['FeeHours'].reset();\r\n this.addFormGroup.controls['ed'].reset();\r\n this.showFeeAmtDialog = false;\r\n } else {\r\n this.LoadFeeLevels.next({\r\n EffectiveDate: this.addFormGroup.controls['ed'].value,\r\n ContractList: this.selectedContracts,\r\n CNList: this.selectedChargeNumbers,\r\n FeePercentage: this.addFormGroup.controls['FeePercent'].value,\r\n FeeAmount: this.addFormGroup.controls['FeeAmount'].value,\r\n EstHours: this.addFormGroup.controls['FeeHours'].value\r\n });\r\n\r\n this.addFormGroup.controls['ContractType'].reset();\r\n this.addFormGroup.controls['Contract'].reset();\r\n this.addFormGroup.controls['ChargeNumber'].reset();\r\n this.addFormGroup.controls['FeePercent'].reset();\r\n this.addFormGroup.controls['FeeAmount'].reset();\r\n this.addFormGroup.controls['FeeHours'].reset();\r\n this.addFormGroup.controls['ed'].reset();\r\n this.showFeeAmtDialog = false;\r\n }\r\n }\r\n\r\n onCheckboxChange(event) {\r\n //this.IsLoading = true;\r\n // this.LoadFeeLevels.next({\r\n // ContractList: this.contractList.length > 0 ? this.contractList : [],\r\n // ActiveOnly: !this.activeOnly\r\n // });\r\n this.LoadActiveInactiveFeeLevel.next(!event.checked);\r\n }\r\n\r\n addClicked() {\r\n this.IsAddClicked = true;\r\n if (this.addFormGroup.controls['FeeAmount'].value != null) {\r\n this.showFeeAmtDialog = true;\r\n } else {\r\n this.LoadFeeLevels.next({\r\n EffectiveDate: this.addFormGroup.controls['ed'].value,\r\n ContractList: this.selectedContracts,\r\n CNList: this.selectedChargeNumbers,\r\n FeePercentage: this.addFormGroup.controls['FeePercent'].value,\r\n FeeAmount: this.addFormGroup.controls['FeeAmount'].value,\r\n EstHours: this.addFormGroup.controls['FeeHours'].value\r\n });\r\n\r\n this.addFormGroup.controls['ContractType'].reset();\r\n this.addFormGroup.controls['Contract'].reset();\r\n this.addFormGroup.controls['ChargeNumber'].reset();\r\n this.addFormGroup.controls['FeePercent'].reset();\r\n this.addFormGroup.controls['FeeAmount'].reset();\r\n this.addFormGroup.controls['FeeHours'].reset();\r\n this.addFormGroup.controls['ed'].reset();\r\n }\r\n\r\n // var row = document.getElementById(\r\n // `row-${this.feeLevels[this.feeLevels.length - 1].FeeSetupID}`\r\n // );\r\n // row.scrollIntoView({\r\n // behavior: 'smooth',\r\n // block: 'center',\r\n // inline: 'nearest'\r\n // });\r\n }\r\n\r\n findFeeOnGA(rowData: FeeLevel): string {\r\n if (rowData.FeeonGA != null) {\r\n const match = this.feeOnGA.find(\r\n x => x.FeeonGAtype === rowData.FeeonGA\r\n );\r\n return match.FeeonGAdescription;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n ////////////////////////// FEE LEVEL EDIT FUNCTIONS ////////////////////////////////\r\n onEditInit($event: { data: FeeLevel }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: FeeLevel) {\r\n this.clonedFeeLevels[rowData.FeeSetupID] = { ...rowData };\r\n this.editing = rowData;\r\n this.CPFF_LOE = null;\r\n if (rowData.ContractType == 'CPFF/LOE') {\r\n this.CPFF_LOE = true;\r\n } else {\r\n this.CPFF_LOE = false;\r\n }\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: FeeLevel) {\r\n this.SaveFeeLevels.next(rowData);\r\n delete this.clonedFeeLevels[rowData.FeeSetupID];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: FeeLevel) {\r\n const index = this.feeLevels.findIndex(\r\n x => x.FeeSetupID === item.FeeSetupID\r\n );\r\n if (index >= 0) {\r\n this.feeLevels.splice(\r\n index,\r\n 1,\r\n this.clonedFeeLevels[item.FeeSetupID]\r\n );\r\n }\r\n this.feeLevels = [...this.feeLevels];\r\n delete this.clonedFeeLevels[item.FeeSetupID];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n DeleteFee(rowData: FeeLevel) {\r\n this.DeleteFeeLevel.next(rowData);\r\n }\r\n\r\n onContractSelected($event) {\r\n\r\n if (this.oldSelectedContract && $event.data.ContractListID == this.oldSelectedContract.ContractListID) {\r\n return;\r\n }\r\n this.feeHistoryHeader = `Fee History for ${$event.data.ContractDesc}`;\r\n this.activeState[1] = true;\r\n this.accordionSelected = true;\r\n\r\n if (this.userInfo != null) {\r\n if (this.histStartDate != null && this.histEndDate != null) {\r\n this.LoadFeeHistory.next({\r\n ContractListID: $event.data.ContractListID,\r\n StartDate: this.histStartDate,\r\n EndDate: this.histEndDate\r\n });\r\n } else {\r\n this.LoadFeeHistory.next({\r\n ContractListID: $event.data.ContractListID,\r\n StartDate: this.userInfo.PrevPayPeriodStart,\r\n EndDate: this.userInfo.PrevPayPeriodEnd\r\n });\r\n }\r\n } else {\r\n if (this.histStartDate != null && this.histEndDate != null) {\r\n this.LoadFeeHistory.next({\r\n ContractListID: $event.data.ContractListID,\r\n StartDate: this.histStartDate,\r\n EndDate: this.histEndDate\r\n });\r\n } else {\r\n this.LoadFeeHistory.next({\r\n ContractListID: $event.data.ContractListID,\r\n StartDate: null,\r\n EndDate: null\r\n });\r\n }\r\n }\r\n this.oldSelectedContract = $event.data;\r\n }\r\n\r\n clearTableFilters() {\r\n this.cFilterFormGroup.controls['c'].reset();\r\n this.cnFilterFormGroup.controls['cn'].reset();\r\n this.ctFilterFormGroup.controls['ct'].reset();\r\n this.FeeLevelTable.clear();\r\n }\r\n\r\n showHideWithholding() {\r\n if (this.withholding == true) {\r\n this.withholding = false;\r\n } else {\r\n this.withholding = true;\r\n }\r\n }\r\n //////////////////////////////////////////////////////////////////////////////////\r\n\r\n /////////////////////////// FEE HISTORY EDIT FUNCTIONS ///////////////////////////\r\n onHistEditInit($event: { data: fromDataServices.FeeHistory.FeeHistory }) {\r\n this.histEditing = { ...$event.data };\r\n }\r\n\r\n onHistRowEditInit(rowData: fromDataServices.FeeHistory.FeeHistory) {\r\n this.clonedFeeHistory[rowData.id] = { ...rowData };\r\n this.histEditing = rowData;\r\n this.hist_CPFF_LOE = null;\r\n if (rowData.ContractType == 'CPFF/LOE') {\r\n this.hist_CPFF_LOE = true;\r\n } else {\r\n this.hist_CPFF_LOE = false;\r\n }\r\n this.log.verbose('onHistRowEditInit');\r\n }\r\n\r\n onHistRowEditSave(rowData: fromDataServices.FeeHistory.FeeHistory) {\r\n this.SaveFeeHistory.next(rowData);\r\n delete this.clonedFeeHistory[rowData.id];\r\n delete this.histEditing;\r\n this.log.verbose('onHistRowEditSave');\r\n }\r\n\r\n onHistRowEditCancel(item: fromDataServices.FeeHistory.FeeHistory) {\r\n delete this.clonedFeeHistory[item.id];\r\n delete this.histEditing;\r\n this.log.verbose('onHistRowEditCancel');\r\n }\r\n\r\n clearHistoryTableFilters() {\r\n this.hist_cnFilterFormGroup.controls['cn'].reset();\r\n this.hist_ctFilterFormGroup.controls['ct'].reset();\r\n this.FeeHistoryTable.clear();\r\n }\r\n\r\n showHideHistoryWithholding() {\r\n if (this.hist_withholding == true) {\r\n this.hist_withholding = false;\r\n } else {\r\n this.hist_withholding = true;\r\n }\r\n }\r\n\r\n onDateRangeSelected() {}\r\n\r\n onActiveIndexChange($event: number[]) {\r\n // this.log.verbose({\r\n // type: 'FeeLevelPresenterComponent:onActiveIndexChange',\r\n // $event\r\n // });\r\n // let baseHeight = 58;\r\n // if ($event && $event.includes(0)) {\r\n // baseHeight -= 8;\r\n // $event.splice($event.indexOf(0), 1);\r\n // }\r\n // this.tabHeight = `${\r\n // (baseHeight - 8 * ($event.length - 1)) /\r\n // ($event && $event.length ? $event.length : 1)\r\n // }vh`;\r\n // this.log.verbose({\r\n // type: 'FeeLevelPresenterComponent:onActiveIndexChange',\r\n // tabHeight: this.tabHeight\r\n // });\r\n }\r\n\r\n handleOnOpen($event) {\r\n const baseHeight = '20vh';\r\n let accHeight = 0;\r\n if ($event.length === 1) {\r\n accHeight += 48;\r\n } else if ($event.length === 2) {\r\n accHeight += 12;\r\n } else {\r\n accHeight += 0;\r\n }\r\n\r\n if (this.activeState[0]) {\r\n this.feeLevelTabHeight = `calc(${baseHeight} + ${accHeight}vh)`;\r\n }\r\n if (this.activeState[1]) {\r\n this.feeHistTabHeight = `calc(${baseHeight} + ${accHeight}vh)`;\r\n }\r\n\r\n // this.CTable.scrollHeight = `calc(${baseHeight} + ${accHeight}em)`;\r\n this.log.verbose({\r\n type: 'FeeLevelComponent:handleOnOpen',\r\n $event,\r\n scrollHeight: this.FeeLevelTable.scrollHeight\r\n });\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n onChangeContracts($event) {\r\n this.contractList = [];\r\n $event.value.forEach(x => {\r\n if (this.contracts.findIndex(con => con.ContractListID == x) != -1) {\r\n var contractObj = this.contracts.find(con => con.ContractListID == x);\r\n this.contractList.push(contractObj);\r\n }\r\n });\r\n this.LoadFeeLevels.next({\r\n ContractList: this.contractList,\r\n ActiveOnly: !this.activeOnly\r\n });\r\n\r\n this.contractChanged = true;\r\n }\r\n // onColumnResize($event) {\r\n\r\n // var numOfFrozenCols = 4;\r\n // var table = document.querySelector('table');\r\n // columnResize($event, numOfFrozenCols, table);\r\n // }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\r\nimport * as $ from 'jquery';\r\nimport * as moment from 'moment';\r\nimport { Moment } from 'moment';\r\nimport { fromEvent, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n startWith,\r\n takeWhile,\r\n tap,\r\n throttleTime\r\n} from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport { ITask } from '../../../lookups/ITask';\r\nimport {\r\n DisplayMessageMinimum,\r\n Process,\r\n ResponseStatus\r\n} from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { TabulatorService } from '../../../tabulator.service';\r\nimport { IFixedPrice } from '../../IFixedPrice';\r\n\r\n@Component({\r\n selector: 'ef-fixed-price',\r\n templateUrl: './fixed-price.component.html',\r\n styleUrls: ['./fixed-price.component.scss']\r\n})\r\nexport class FixedPriceComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() public process: Process;\r\n private _errors: Array;\r\n downloadOptions: { label: string; icon: string; command: () => void }[];\r\n sortedInvoices: IFixedPrice[] = [];\r\n @Input() public set errors(value: Array) {\r\n this.log.debug({\r\n type: 'FixedPricePresenterComponent:errors:set',\r\n value\r\n });\r\n this._errors = value;\r\n if (value && value.length) {\r\n this.errorHelpText = value\r\n .reduce((a, c) => a + c + '\\r\\n', '')\r\n .trim();\r\n } else {\r\n this.errorHelpText = '';\r\n }\r\n }\r\n public get errors(): Array {\r\n return this._errors;\r\n }\r\n private _selectedError: IShowErrors;\r\n @Input() public set selectedError(value: IShowErrors) {\r\n this.log.debug({\r\n type: 'FixedPricePresenterComponent:selectedError:set',\r\n value\r\n });\r\n if (this.process) {\r\n if (value.MsgProcessID === this.process.ProcessID) {\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const prevRow = this.tabFixedPrice\r\n .getRows()\r\n .find(\r\n row =>\r\n row.getData().UniqueID ===\r\n this._selectedError.MsgEntityID\r\n );\r\n if (prevRow) {\r\n prevRow.getElement().classList.remove('highlight');\r\n }\r\n }\r\n this._selectedError = value;\r\n const theRow = this.tabFixedPrice\r\n .getRows()\r\n .find(row => row.getData().UniqueID === value.MsgEntityID);\r\n if (theRow) {\r\n theRow.scrollTo();\r\n theRow.getElement().classList.add('highlight');\r\n // theRow.getElement().css({'background-color': 'green'});\r\n this.log.debug({\r\n type: 'FixedPricePresenterComponent:selectedError:set',\r\n rowElement: theRow.getElement()\r\n });\r\n }\r\n }\r\n }\r\n }\r\n public get selectedError(): IShowErrors {\r\n return this._selectedError;\r\n }\r\n\r\n toggleChecked: boolean;\r\n CNTaskDropdownText = 'Charge Numbers';\r\n taskLevelToggleText = 'Include sub tasks: [ OFF ]';\r\n public FPInvoicesSubject = new ReplaySubject>(1);\r\n private _fpinvoices: Array;\r\n @Input('fpinvoices') set fpinvoices(value: Array) {\r\n // INFO: it would appear @input values come through as immutable, tabulator requires mutable data\r\n\r\n if (value) {\r\n this._fpinvoices = value.map(x => ({ ...x }));\r\n this.loadingData = false;\r\n this.FPInvoicesSubject.next(this._fpinvoices);\r\n }\r\n }\r\n get fpinvoices(): Array {\r\n return this._fpinvoices;\r\n }\r\n\r\n @Input() tasks: Array;\r\n @Input() startDate: Date;\r\n @Input() endDate: Date;\r\n @Output() selectStartDate = new EventEmitter();\r\n @Output() selectEndDate = new EventEmitter();\r\n @Output() selectTask = new EventEmitter>();\r\n @Output() toggleTaskLevel = new EventEmitter();\r\n @Output() applyMultiUpdateClicked = new EventEmitter();\r\n @Output() selected = new EventEmitter();\r\n @Output() public ShowError = new EventEmitter();\r\n public tabFixedPrice;\r\n public filterFormGroup: FormGroup;\r\n public updateFormGroup: FormGroup;\r\n private componentActive = true;\r\n private currentPage: number;\r\n public selectColumnWidth = 50;\r\n public errorHelpText = '';\r\n public selectedRowsCheckbox = { checked: false, indeterminate: false };\r\n public taskFilters: any[] = [];\r\n public mu_invoiceAmount = '';\r\n public loadingData = true;\r\n public selectedStartDate: Date; // = this.startDate;\r\n public selectedEndDate: Date; // = this.endDate;\r\n public selectedStartString: string; // = this.startDate;\r\n public selectedEndString: string; // = this.endDate;\r\n\r\n currentCell: any;\r\n\r\n @ViewChild('selectAll', { read: ElementRef, static: true })\r\n selectAllButton: ElementRef;\r\n @ViewChild('cbxColumnHeader', { static: true })\r\n cbxColumnHeader: MatCheckbox;\r\n @ViewChild('applyMulti', { read: ElementRef, static: true })\r\n applyMultiButton: ElementRef;\r\n\r\n @Output() DeleteFixedPrice = new ReplaySubject(1);\r\n\r\n constructor(\r\n private log: LoggingService,\r\n private tabService: TabulatorService,\r\n private confirmservice: UnsavedChangesService\r\n ) {\r\n this.filterFormGroup = new FormGroup({\r\n startDate: new FormControl(null),\r\n endDate: new FormControl(null),\r\n tasks: new FormControl(null),\r\n taskLevelEntry: new FormControl(null),\r\n contractTypes: new FormControl(null)\r\n });\r\n\r\n this.updateFormGroup = new FormGroup({\r\n scheduledAmount: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentActive = false;\r\n }\r\n\r\n public downloadTable(type) {\r\n this.tabFixedPrice.download(\r\n type,\r\n `${this.process.ProcessTitle}_${moment(new Date()).format(\r\n 'MM-DD-YYYY'\r\n )}.${type}`,\r\n { sheetName: 'Fixed Price Entry' }\r\n );\r\n }\r\n ngOnInit() {\r\n this.downloadOptions = [\r\n {\r\n label: 'CSV',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('csv')\r\n },\r\n {\r\n label: 'Excel',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('xlsx')\r\n }\r\n ];\r\n this.setupSubscriptions();\r\n }\r\n setupSubscriptions() {\r\n this.FPInvoicesSubject.pipe(\r\n takeWhile(() => this.componentActive),\r\n filter(x => !!x && x.length > 0)\r\n ).subscribe(fpinvoices => {\r\n if (fpinvoices) {\r\n if (this.tabFixedPrice) {\r\n this.sortedInvoices = fpinvoices.sort((a, b) => {\r\n if (a.TaskLongName === b.TaskLongName) {\r\n return 0;\r\n }\r\n if (typeof a.TaskLongName === typeof b.TaskLongName) {\r\n return a.TaskLongName < b.TaskLongName ? -1 : 1;\r\n }\r\n return typeof a.TaskLongName < typeof b.TaskLongName\r\n ? -1\r\n : 1;\r\n });\r\n this.tabFixedPrice.replaceData(this.sortedInvoices);\r\n } else {\r\n this.sortedInvoices = fpinvoices.sort((a, b) => {\r\n if (a.TaskLongName === b.TaskLongName) {\r\n return 0;\r\n }\r\n if (typeof a.TaskLongName === typeof b.TaskLongName) {\r\n return a.TaskLongName < b.TaskLongName ? -1 : 1;\r\n }\r\n return typeof a.TaskLongName < typeof b.TaskLongName\r\n ? -1\r\n : 1;\r\n });\r\n this.createTabulator(this, this.sortedInvoices, []);\r\n }\r\n }\r\n });\r\n\r\n /*FormGroup for the filters which allows you to track the\r\n value and validity state of the filters FormControl instances.*/\r\n this.filterFormGroup = new FormGroup({\r\n endDate: new FormControl(\r\n moment(this.endDate).format('MM/DD/YYYY')\r\n ),\r\n startDate: new FormControl(\r\n moment(this.startDate).format('MM/DD/YYYY')\r\n ),\r\n tasks: new FormControl(null),\r\n taskLevelEntry: new FormControl(null),\r\n contractTypes: new FormControl(null)\r\n });\r\n\r\n /*FormGroup for the multiupdate which allows you to track the\r\n value and validity state of the multiupdate FormControl instances.*/\r\n this.updateFormGroup = new FormGroup({\r\n scheduledAmount: new FormControl(null)\r\n });\r\n\r\n // Catches when the value of the startdate filter changes\r\n this.filterFormGroup.controls['startDate'].valueChanges\r\n .pipe(\r\n startWith(this.startDate),\r\n takeWhile(_ => this.componentActive)\r\n )\r\n .subscribe(x => {\r\n try {\r\n if (moment(x).isValid()) {\r\n this.loadingData = true;\r\n this.selectStartDate.emit(\r\n moment(x).format('MM/DD/YYYY')\r\n );\r\n this.selectedStartDate = new Date(\r\n moment(x).format('MM/DD/YYYY')\r\n );\r\n }\r\n\r\n // this.selectedStartString\r\n } catch (e) {\r\n this.log.debug({\r\n type: 'FixedPriceComponent:startDate:valueChanges:subscribe:catch',\r\n e\r\n });\r\n }\r\n });\r\n\r\n // Catches when the value of the enddate filter changes\r\n this.filterFormGroup.controls['endDate'].valueChanges\r\n .pipe(\r\n startWith(this.endDate),\r\n takeWhile(_ => this.componentActive)\r\n )\r\n .subscribe(x => {\r\n try {\r\n if (moment(x).isValid()) {\r\n this.loadingData = true;\r\n this.selectEndDate.emit(moment(x).format('MM/DD/YYYY'));\r\n this.selectedEndDate = new Date(\r\n moment(x).format('MM/DD/YYYY')\r\n );\r\n }\r\n } catch (e) {\r\n this.log.debug({\r\n type: 'FixedPriceComponent:endDate:valueChanges:subscribe:catch',\r\n e\r\n });\r\n }\r\n });\r\n\r\n // Catches when the value of the task filter changes\r\n this.filterFormGroup.controls['tasks'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n startWith([]),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'FixedPriceComponent:tasks:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'FixedPriceComponent:tasks:valueChanges:subscribe',\r\n value\r\n });\r\n this.loadingData = true;\r\n this.selectTask.emit(value);\r\n if (value) {\r\n this.filterData(value);\r\n }\r\n });\r\n\r\n // Catches when the value of the task filter changes\r\n this.filterFormGroup.controls['contractTypes'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n startWith([]),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'FixedPriceComponent:contractTypes:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'FixedPriceComponent:contractTypes:valueChanges:subscribe',\r\n value\r\n });\r\n this.loadingData = true;\r\n this.selectTask.emit(value);\r\n if (value) {\r\n this.filterData(value);\r\n }\r\n });\r\n\r\n // Click event for multiupdate\r\n fromEvent(this.applyMultiButton.nativeElement, 'click')\r\n .pipe(\r\n tap(_ =>\r\n this.log.debug({\r\n type: 'FixedPricePresentersComponent:applyUpdatesButton:tap:click'\r\n })\r\n ),\r\n takeWhile(_ => this.componentActive),\r\n throttleTime(1000)\r\n )\r\n .subscribe(button => {\r\n this.log.debug({\r\n type: 'FixedPriceComponent:applyMultiButton:ApplyClick'\r\n });\r\n const rows = this.tabFixedPrice.getSelectedRows();\r\n rows.forEach(row => {\r\n row.update({\r\n Status: { StatusCode: ResponseStatus.Loading }\r\n });\r\n });\r\n\r\n const selectedData: Array =\r\n this.tabFixedPrice.getSelectedData();\r\n const controls = this.updateFormGroup.controls;\r\n selectedData.forEach(r => {\r\n if (controls['scheduledAmount'].value) {\r\n r.ScheduledAmount = controls['scheduledAmount'].value;\r\n }\r\n });\r\n this.currentPage = this.tabFixedPrice.getPage();\r\n this.applyMultiUpdateClicked.emit(\r\n {\r\n data: selectedData.map(r => {\r\n const id = r.UniqueID; // should be uniqueID\r\n const data = this.fpinvoices.find(\r\n x => x.UniqueID === id\r\n );\r\n return {\r\n ...data, // old values\r\n ...r // applying new values\r\n };\r\n }),\r\n type: 'Multi'\r\n } \r\n );\r\n\r\n this.updateFormGroup.reset();\r\n });\r\n }\r\n ngAfterViewInit(): void {\r\n this.log.verbose({ type: 'FixedPriceComponent:ngAfterViewInit' });\r\n\r\n this.tabService.tabulator = $('#tabFixedPrice');\r\n\r\n \r\n }\r\n\r\n showAll() {\r\n if (this.fpinvoices.length > 0) {\r\n this.tabFixedPrice.setData(this.fpinvoices);\r\n }\r\n }\r\n\r\n clearLinesWithout$() {\r\n if (this.fpinvoices.length > 0) {\r\n let filteredFPInvoices;\r\n filteredFPInvoices = this.fpinvoices.filter(\r\n x =>\r\n x.InvoiceAmount != null ||\r\n x.ScheduledAmount != null ||\r\n x.ScheduleDate == null\r\n );\r\n this.tabFixedPrice.setData(filteredFPInvoices);\r\n }\r\n }\r\n\r\n filterData(filters: any[]) {\r\n if (this.tabFixedPrice) {\r\n this.tabFixedPrice.clearFilter(true);\r\n\r\n const filtersToApply: Array<\r\n Array<{\r\n field: string;\r\n type: string;\r\n value: any;\r\n }>\r\n > = [[]];\r\n\r\n if (filters && filters.length > 0) {\r\n filters.forEach(v => {\r\n filtersToApply[0].push({\r\n field: 'TaskLongName',\r\n type: '=',\r\n value: v.TaskLongName\r\n });\r\n });\r\n }\r\n\r\n this.tabFixedPrice.setFilter(filtersToApply);\r\n this.loadingData = false;\r\n }\r\n }\r\n\r\n // Creates the tabulator with status, selected, and any page specific columns\r\n private createTabulator(\r\n fp: FixedPriceComponent,\r\n fpinvoices: any[],\r\n errors: Array\r\n ) {\r\n let headerClicked = false;\r\n\r\n const editCheck = function (cell) {\r\n const data = cell.getRow().getData();\r\n return !data.ScheduleDate;\r\n };\r\n\r\n this.tabFixedPrice = new Tabulator('#tabFixedPrice', {\r\n placeholder: 'No Data Available',\r\n height: '55vh',\r\n layout: 'fitColumns',\r\n data: fpinvoices,\r\n index: 'UniqueID',\r\n columns: [\r\n // 0\r\n {\r\n title: 'Id',\r\n field: 'UniqueID',\r\n frozen: true,\r\n visible: false\r\n },\r\n // 1 Status\r\n {\r\n title: '',\r\n field: 'Status',\r\n download: false,\r\n width: fp.selectColumnWidth,\r\n formatter: (cell, params, onRendered) => {\r\n const status = cell.getValue();\r\n if (status) {\r\n switch (status.StatusCode) {\r\n case 1:\r\n return '
check_circle
';\r\n case 2:\r\n return '
report_problem
';\r\n case 3:\r\n return '
highlight_off
';\r\n case 4:\r\n return '
highlight_off
';\r\n case 5:\r\n return '
highlight_off
';\r\n case 6:\r\n return '
highlight_off
';\r\n case 99:\r\n // return '
';\r\n default:\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n },\r\n headerSort: false,\r\n cellClick: function (e, cell) {\r\n const status = cell.getValue();\r\n fp.log.verbose({\r\n type: 'FixedPricePresenterComponent:StatusCellClick',\r\n status\r\n });\r\n if (status) {\r\n switch (status.StatusCode) {\r\n case 2:\r\n case 3:\r\n case 4:\r\n case 5:\r\n fp.ShowError.emit({\r\n open: true,\r\n MsgEntityID: status.MsgEntityID\r\n });\r\n }\r\n }\r\n }\r\n },\r\n // 2 Selected\r\n {\r\n title: 'Selected',\r\n field: 'selected',\r\n headerSort: false,\r\n download: false,\r\n width: fp.selectColumnWidth,\r\n titleFormatter: () =>\r\n document.getElementById('cbxColumnHeader'),\r\n headerClick: () => {\r\n headerClicked = true;\r\n\r\n const checked = fp.cbxColumnHeader.checked;\r\n\r\n this.log.debug({\r\n type: 'FixedPricePresentersComponent:headerClick',\r\n rows: this.tabFixedPrice.getRows(true).length\r\n });\r\n const rows = fp.tabFixedPrice.getRows(true);\r\n\r\n rows.forEach(function (row) {\r\n if (!checked) {\r\n row.select();\r\n } else {\r\n row.deselect();\r\n }\r\n row.update({ selected: !checked });\r\n });\r\n\r\n if (!checked) {\r\n // TODO: convert this to use css transitions\r\n $('#divSelectAll').fadeIn(500);\r\n }\r\n\r\n headerClicked = false;\r\n },\r\n formatter: 'tickCross',\r\n formatterParams: { crossElement: false },\r\n editor: false,\r\n selectablePersistence: false,\r\n cellClick: (e, cell) => {\r\n const row = cell.getRow();\r\n row.toggleSelect();\r\n }\r\n },\r\n\r\n // 3 Page Specific Columns\r\n {\r\n title: 'Charge Number / Task',\r\n field: 'TaskLongName',\r\n cssClass: 'disabled-cursor',\r\n minWidth: 200,\r\n editor: false\r\n },\r\n {\r\n title: 'Schedule Date',\r\n field: 'ScheduleDate',\r\n editor: this.tabService.dateEditor,\r\n width: 126,\r\n editable: editCheck,\r\n formatter: c => {\r\n return moment(c.getValue()).isValid()\r\n ? moment(c.getValue()).format('MM/DD/YYYY')\r\n : '-- Select Date --';\r\n },\r\n cellEdited: cell => {\r\n if (cell.getValue() != '') {\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n const data = this.fpinvoices.find(\r\n x => x.UniqueID === rowData.UniqueID\r\n );\r\n const scheduleDate = moment(rowData.ScheduleDate);\r\n row.update({\r\n Status: { StatusCode: ResponseStatus.Loading }\r\n });\r\n if (scheduleDate.isValid() === false) {\r\n rowData.ScheduleDate = null;\r\n } else {\r\n rowData.ScheduleDate = moment(\r\n rowData.ScheduleDate\r\n ).format('MM-DD-YYYY');\r\n }\r\n if (rowData.ScheduleDate != null) {\r\n row.update({\r\n ...rowData,\r\n ScheduleDate: cell.getValue(),\r\n ModifiedDate: moment(),\r\n Status: {\r\n StatusCode: 1\r\n }\r\n });\r\n const clone = { ...rowData };\r\n this.applyMultiUpdateClicked.emit({\r\n data: clone,\r\n type: 'Single'\r\n });\r\n } else {\r\n alert('You must choose a scheduled date.');\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Scheduled Amount',\r\n field: 'ScheduledAmount',\r\n editor: 'number',\r\n width: 140,\r\n cellEdited: cell => {\r\n if (cell.getValue() != '') {\r\n fp.currentCell = cell;\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n const data = this.fpinvoices.find(\r\n x => x.UniqueID === rowData.UniqueID\r\n );\r\n const scheduleDate = moment(rowData.ScheduleDate);\r\n row.update({\r\n Status: { StatusCode: ResponseStatus.Loading }\r\n });\r\n if (scheduleDate.isValid() === false) {\r\n rowData.ScheduleDate = null;\r\n } else {\r\n rowData.ScheduleDate = moment(\r\n rowData.ScheduleDate\r\n ).format('MM-DD-YYYY');\r\n }\r\n if (rowData.ScheduleDate != null) {\r\n const clone = { ...rowData };\r\n this.applyMultiUpdateClicked.emit({\r\n data: clone,\r\n type: 'Single'\r\n });\r\n } else {\r\n alert('You must choose a scheduled date.');\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Modified Date',\r\n field: 'ModifiedDate',\r\n width: 126,\r\n editor: false,\r\n cssClass: 'disabled-cursor',\r\n formatter: 'datetime',\r\n formatterParams: c => {\r\n return { outputFormat: 'MM/DD/YYYY' };\r\n }\r\n },\r\n {\r\n title: 'Invoice Number',\r\n field: 'InvoiceNbr',\r\n width: 126,\r\n cssClass: 'disabled-cursor',\r\n editor: false\r\n },\r\n {\r\n title: 'Invoice Amount',\r\n field: 'InvoiceAmount',\r\n width: 126,\r\n cssClass: 'disabled-cursor',\r\n editor: false\r\n },\r\n {\r\n title: '',\r\n field: '',\r\n width: fp.selectColumnWidth,\r\n editor: false,\r\n formatter: () => {\r\n return ``;\r\n },\r\n cellClick: (e, cell) => {\r\n const row = cell.getRow();\r\n const data = row.getData();\r\n fp.confirmservice\r\n .confirmPromise({\r\n headerText: 'Are you sure?',\r\n dialogText:\r\n 'This will delete the selected fixed price entry.',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n fp.DeleteFixedPrice.next(data);\r\n })\r\n .catch(() => {});\r\n }\r\n },\r\n {\r\n title: '',\r\n field: 'Row_Version',\r\n visible: false\r\n }\r\n ],\r\n rowSelected: function (row) {\r\n row.update({ selected: true });\r\n if (!headerClicked) {\r\n fp.checkIndeterminate();\r\n }\r\n },\r\n rowDeselected: function (row) {\r\n row.update({ selected: false });\r\n if (!headerClicked) {\r\n fp.checkIndeterminate();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Event for toggling task level entry\r\n public onToggleTaskLevel(e: MatSlideToggleChange) {\r\n this.log.debug({\r\n type: 'FixedPriceListComponent:onToggleTaskLevel',\r\n e\r\n });\r\n if (e.checked) {\r\n this.toggleChecked = true;\r\n this.taskLevelToggleText = '';\r\n this.CNTaskDropdownText = 'Charge Numbers & Tasks';\r\n } else {\r\n this.toggleChecked = false;\r\n this.taskLevelToggleText = '';\r\n this.CNTaskDropdownText = 'Charge Numbers';\r\n }\r\n\r\n this.toggleTaskLevel.emit(e.checked);\r\n // this.tabFixedPrice.redraw(true);\r\n }\r\n\r\n applyUpdates(items: Array) {\r\n this.log.debug({\r\n type: 'UserAuthorizationsComponent:applyUpdates',\r\n items\r\n });\r\n }\r\n\r\n public checkIndeterminate() {\r\n if (this.tabFixedPrice) {\r\n const rows = this.tabFixedPrice.getRows(true);\r\n const selectedRows: Array = [];\r\n rows.forEach(row => {\r\n if (row._row.data.selected === true) {\r\n selectedRows.push(row);\r\n }\r\n });\r\n\r\n this.cbxColumnHeader.checked = rows.reduce(\r\n (a, c) => a && c.getData().selected,\r\n true\r\n );\r\n this.cbxColumnHeader.indeterminate =\r\n selectedRows.length > 0 &&\r\n !rows.reduce((a, c) => a && c.getData().selected, true);\r\n }\r\n }\r\n\r\n public hasErrorStatus = ued =>\r\n ued && ued.Status && ued.Status.StatusCode >= DisplayMessageMinimum;\r\n\r\n // Clears any selected rows in the grid\r\n public clearSelectedFpInvoices() {\r\n this.tabFixedPrice.deselectRow();\r\n const data = this.tabFixedPrice.getRows();\r\n data.forEach(d => {\r\n d.update({ selected: false });\r\n });\r\n this.cbxColumnHeader.checked = false;\r\n this.checkIndeterminate();\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue = this.filterFormGroup.controls['startDate'].value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.filterFormGroup.controls['startDate'].setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n const ctrlValue = this.filterFormGroup.controls['startDate'].value;\r\n ctrlValue.month(normalizedMonth.month());\r\n this.filterFormGroup.controls['startDate'].setValue(ctrlValue);\r\n datepicker.close();\r\n }\r\n\r\n chosenDayHandler(normalizedDay: Moment, datepicker: MatDatepicker) {\r\n const ctrlValue = this.filterFormGroup.controls['startDate'].value;\r\n ctrlValue.month(normalizedDay.day());\r\n this.filterFormGroup.controls['startDate'].setValue(ctrlValue);\r\n datepicker.close();\r\n }\r\n\r\n public clearFilters() {\r\n this.tabFixedPrice.clearFilter(true);\r\n this.filterFormGroup.controls['contractTypes'].reset();\r\n this.filterFormGroup.controls['tasks'].reset();\r\n this.filterFormGroup.controls['startDate'].patchValue(\r\n new Date(\r\n this.startDate\r\n )\r\n );\r\n this.filterFormGroup.controls['endDate'].patchValue(\r\n new Date(\r\n this.endDate\r\n )\r\n );\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject, Subscription } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n filter,\r\n map,\r\n startWith,\r\n takeWhile\r\n} from 'rxjs/operators';\r\nimport * as fromLookups from '../../../lookups';\r\nimport { ITask } from '../../../lookups/ITask';\r\nimport * as fromShared from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IUser } from '../../../user-info/IUser';\r\nimport * as fromUser from '../../../user-info/store/user.reducer';\r\nimport { FixedPriceComponent } from '../../components/fixed-price-tab/fixed-price.component';\r\nimport { IFixedPrice } from '../../IFixedPrice';\r\nimport * as fromFixedPriceA from '../../store/actions';\r\nimport { DeleteFixedPrice, UpdateFixedPrice } from '../../store/actions';\r\nimport * as fromFixedPriceR from '../../store/reducer';\r\n@Component({\r\n selector: 'ef-fixed-price-shell',\r\n templateUrl: './fixed-price-shell.component.html',\r\n styleUrls: ['./fixed-price-shell.component.scss']\r\n})\r\nexport class FixedPriceShellComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n errors$: Observable;\r\n selectedError$: Observable;\r\n\r\n private userSub: Subscription;\r\n private active = true;\r\n public fyStartDate: Date;\r\n public fyEndDate: Date;\r\n public startDate: string;\r\n public endDate: string;\r\n public fpinvoices$: Observable>;\r\n public fpinvoices: Array = [];\r\n public tasks$: Observable>;\r\n public tasks: Array;\r\n public filteredByLaborTypeTasks: Array = [];\r\n public filteredByCNTasks: Array = [];\r\n public filteredInvoices: Array = [];\r\n process$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n @Input() public user: IUser;\r\n @ViewChild(FixedPriceComponent, { static: true })\r\n fixedPriceComp: FixedPriceComponent;\r\n startDateFilter: Date;\r\n endDateFilter: Date;\r\n constructor(\r\n private lookupsStore: Store,\r\n private fixedPriceStore: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private store: Store,\r\n private datePipe: DatePipe,\r\n private errorStore: Store\r\n ) {}\r\n\r\n transformDate(date): Date {\r\n return new Date(this.datePipe.transform(date, 'yyyy-MM-dd'));\r\n }\r\n\r\n ngOnInit() {\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n // getting the fy start and end date from the user info data in the store\r\n this.userSub = this.store\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n select(fromUser.getUser)\r\n )\r\n .subscribe(user => {\r\n this.log.debug({\r\n type: 'FixedPriceShellComponent:user-subscribe',\r\n user\r\n });\r\n this.user = user;\r\n\r\n if (user.userInfo) {\r\n this.startDate =\r\n user.userInfo.LastInvoiceStart &&\r\n user.userInfo.LastInvoiceStart.toString();\r\n this.endDate =\r\n user.userInfo.FYEndDate &&\r\n user.userInfo.FYEndDate.toString();\r\n this.fyStartDate = new Date(this.startDate);\r\n this.fyEndDate = new Date(this.endDate);\r\n this.fyStartDate = this.transformDate(this.fyStartDate);\r\n this.fyEndDate = this.transformDate(this.fyEndDate);\r\n }\r\n });\r\n\r\n // init observables\r\n // don't reassign after this\r\n this.fpinvoices$ = this.fixedPriceStore.pipe(\r\n select(fromFixedPriceR.getFixedPrice),\r\n filter(x => !!x && x.length > 0),\r\n map(items => clone(items)),\r\n map(x => this.zeroToNull(x))\r\n );\r\n // don't reassign after this\r\n this.tasks$ = this.lookupsStore.pipe(\r\n select(fromLookups.getTasksLookup)\r\n );\r\n\r\n this.errors$ = this.store.pipe(\r\n select(fromFixedPriceR.getFixedPriceErrors)\r\n );\r\n\r\n this.selectedError$ = this.errorStore.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n }\r\n zeroToNull(items): IFixedPrice[] {\r\n items.forEach(x => {\r\n if (x.ScheduledAmount == 0) {\r\n x.ScheduledAmount = null;\r\n }\r\n if (x.InvoiceAmount == 0) {\r\n x.InvoiceAmount = null;\r\n }\r\n });\r\n return items;\r\n }\r\n ngAfterViewInit() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n // // subscribing to fpinvoices in the redux store\r\n // this.fpinvoices$\r\n // .pipe(takeWhile(_ => this.active))\r\n // .subscribe(invoices => {\r\n // this.fpinvoices = invoices;\r\n // });\r\n\r\n const dates$ = combineLatest([\r\n this.fixedPriceComp.selectStartDate.pipe(\r\n startWith(this.startDate)\r\n ),\r\n this.fixedPriceComp.selectEndDate.pipe(startWith(this.fyEndDate))\r\n ]);\r\n\r\n // subscribing to the dates in the store and making a call to the service when new dates are picked\r\n dates$\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n debounceTime(250)\r\n )\r\n .subscribe(x => {\r\n if (x) {\r\n this.startDateFilter = new Date(x[0]);\r\n this.endDateFilter = new Date(x[1]);\r\n }\r\n this.fixedPriceStore.dispatch(\r\n new fromFixedPriceA.LoadFixedPrice({\r\n Txnstartdate: new Date(x[0]),\r\n Txnenddate: new Date(x[1]),\r\n Tasks: [],\r\n CalcType: 'FP',\r\n CNOnly: false\r\n })\r\n );\r\n });\r\n\r\n // filtering the tasks based on labor type and task level\r\n combineLatest([\r\n this.tasks$,\r\n this.fpinvoices$,\r\n this.fixedPriceComp.toggleTaskLevel.pipe(startWith(false))\r\n ])\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(x => {\r\n const tasks = x[0];\r\n const invoices = x[1];\r\n const taskLevel = x[2];\r\n this.filteredByLaborTypeTasks = tasks.filter(\r\n (task: ITask) => task.ContractType === 'FFP'\r\n );\r\n this.filteredByCNTasks = this.filteredByLaborTypeTasks.filter(\r\n (task: ITask) =>\r\n task.IsChargeNumber === !taskLevel || taskLevel\r\n );\r\n if (this.filteredByCNTasks.length) {\r\n this.fpinvoices = invoices.filter(i =>\r\n this.filteredByCNTasks.some(\r\n t => t.TaskLongName === i.TaskLongName\r\n )\r\n );\r\n } else {\r\n this.fpinvoices = invoices;\r\n }\r\n this.log.debug({\r\n type: 'FixedPriceShellComponent:toggleTaskLevel',\r\n filteredTasks: this.filteredByCNTasks,\r\n taskLevel\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n // this is for any observable subscriptions so we don't leak memory\r\n this.active = false;\r\n }\r\n\r\n // event that triggers a call to the service for updates\r\n public onApplyMultiClicked($event) {\r\n // const txnDate = moment($event.TxnDate);\r\n // if (txnDate.isValid() == true) {\r\n if ($event.type == 'Multi') {\r\n this.fixedPriceStore.dispatch(new UpdateFixedPrice($event.data));\r\n } else {\r\n this.fixedPriceStore.dispatch(new UpdateFixedPrice([$event.data]));\r\n }\r\n \r\n // }\r\n }\r\n\r\n OnShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n\r\n onDeleteFixedPrice($event) {\r\n const fpIDs = [];\r\n fpIDs.push($event.DftID);\r\n this.fixedPriceStore.dispatch(new DeleteFixedPrice(fpIDs));\r\n this.fixedPriceStore.dispatch(\r\n new fromFixedPriceA.LoadFixedPrice({\r\n Txnstartdate: this.startDateFilter,\r\n Txnenddate: this.endDateFilter,\r\n Tasks: [],\r\n CalcType: 'FP',\r\n CNOnly: false\r\n })\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FixedPriceComponent } from './components/fixed-price-tab/fixed-price.component';\r\nimport { FixedPriceShellComponent } from './containers/fixed-price-shell/fixed-price-shell.component';\r\nimport * as fromFixedPrice from './store/reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { FixedPriceEffects } from './store/effects';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MultiSelectModule } from '../shared/efaact-primeng.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n , StoreModule.forFeature('fpinvoices', fromFixedPrice.reducer)\r\n , EffectsModule.forFeature([FixedPriceEffects])\r\n , EfaactMaterialModule\r\n , FormsModule\r\n , ReactiveFormsModule\r\n , MultiSelectModule\r\n , SharedModule\r\n ],\r\n declarations: [FixedPriceComponent, FixedPriceShellComponent]\r\n})\r\nexport class FixedPriceModule { }\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { IFixedPrice } from './IFixedPrice';\r\nimport { Observable, Observer } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { tap } from 'rxjs/operators';\r\nimport { ITask } from '../lookups/ITask';\r\nimport * as moment from 'moment';\r\nimport { IDeleteResponse, IFixedPriceResponse } from './IFixedPriceResponse';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FixedPriceService {\r\n // public fpinvoicesMTE: IFixedPriceMTE = { ManualTxnExpense: [] };\r\n\r\n private uri = `${environment.apiLocation}/ManualTxnExpense`;\r\n public roles$: Observable> = new Observable>(\r\n o => (this._observer = o)\r\n );\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) { }\r\n\r\n private _observer: Observer>;\r\n\r\n\r\n\r\n // Service call for loading data for the page\r\n public getFixedPrice (params: {\r\n Txnstartdate?: Date,\r\n Txnenddate?: Date,\r\n Tasks?: Array,\r\n CalcType?: string,\r\n CNOnly?: boolean\r\n }): Observable> {\r\n const today = new Date();\r\n const request = {\r\n Txnstartdate: params && params.Txnstartdate || moment(today).add(-1, 'years').format('M/D/YYYY'),\r\n Txnenddate: params && params.Txnenddate || moment(today).format('M/D/YYYY'),\r\n Tasks: params && params.Tasks || [],\r\n CalcType: 'FP',\r\n CNOnly: params && params.CNOnly\r\n };\r\n\r\n return this.http\r\n .post>(this.uri, request)\r\n .pipe(\r\n tap(data => this.log.verbose({ type: 'FixedPriceService:getFixedPrices:reponse', data }))\r\n );\r\n }\r\n\r\n\r\n // Service call for updates\r\n public putFixedPrice (fpinvoices: Array): Observable {\r\n this.log.debug({ type: 'FixedPriceService:putFixedPrice', fpinvoices });\r\n return this.http.put(this.uri, { ManualTxnExpense: fpinvoices })\r\n .pipe(res => {\r\n this.log.verbose({ type: 'FixedPriceService:putFixedPrice:reponse', res });\r\n return res;\r\n });\r\n }\r\n\r\n public deleteFixedPrice(\r\n fpIDs: Array\r\n): Observable {\r\n this.log.debug({ type: 'FixedPriceService:deleteFixedPrice', fpIDs });\r\n\r\n return (\r\n this.http\r\n // TODO: change to .delete when upgrading to NG7\r\n .request('DELETE', this.uri, {\r\n body: { EntityIDs: fpIDs }\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'FixedPriceService:deleteFixedPrice:reponse',\r\n data\r\n })\r\n )\r\n )\r\n );\r\n}\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport { IFixedPrice, /*IFixedPriceMTE, IFixedPriceForPut*/ } from '../IFixedPrice';\r\nimport { ITask } from '../../lookups/ITask';\r\nimport { IDeleteResponse, IFixedPriceResponse } from '../IFixedPriceResponse';\r\n\r\nexport enum ActionTypes {\r\n LoadFixedPrice = '[fixedprice] Load Fixed Price',\r\n SetFixedPrice = '[fixedprice] Set Fixed Price',\r\n UpdateFixedPrice = '[fixedprice] Update Fixed Price',\r\n UpdateFixedPriceSuccess = '[fixedprice] Update Fixed Price Success',\r\n DeleteFixedPrice = '[fixedprice] Delete Fixed Price',\r\n DeleteFixedPriceSuccess = '[fixedprice] Delete Fixed Price Success',\r\n}\r\n\r\nexport class LoadFixedPrice implements Action {\r\n constructor(public payload?: {\r\n Txnstartdate?: Date\r\n , Txnenddate?: Date\r\n , Tasks?: Array\r\n , CalcType?: string\r\n , CNOnly?: boolean\r\n }) {\r\n }\r\n readonly type = ActionTypes.LoadFixedPrice;\r\n}\r\n\r\nexport class SetFixedPrice implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetFixedPrice;\r\n}\r\n\r\nexport class UpdateFixedPrice implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.UpdateFixedPrice;\r\n}\r\n\r\nexport class UpdateFixedPriceSuccess implements Action {\r\n constructor(public payload: IFixedPriceResponse) { }\r\n readonly type = ActionTypes.UpdateFixedPriceSuccess;\r\n}\r\n\r\nexport class DeleteFixedPrice implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.DeleteFixedPrice;\r\n}\r\nexport class DeleteFixedPriceSuccess implements Action {\r\n constructor(public payload: IDeleteResponse) { }\r\n readonly type = ActionTypes.DeleteFixedPriceSuccess;\r\n}\r\n\r\nexport type ActionsUnion = LoadFixedPrice\r\n | SetFixedPrice | UpdateFixedPrice | UpdateFixedPriceSuccess | DeleteFixedPrice | DeleteFixedPriceSuccess\r\n ;\r\n\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { catchError, flatMap, switchMap, tap } from 'rxjs/operators';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { FixedPriceService } from '../fixed-price.service';\r\nimport * as fromFixedPrice from './actions';\r\n\r\n@Injectable()\r\nexport class FixedPriceEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private lookups: Store,\r\n @Inject(FixedPriceService) private service: FixedPriceService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n @Effect() LoadFixedPrice$ = this.actions$.pipe(\r\n ofType(\r\n fromFixedPrice.ActionTypes.LoadFixedPrice\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'FixedPriceEffects:LoadFixedPrice$:filtered',\r\n action\r\n })\r\n ),\r\n // , withLatestFrom(this.lookups.pipe(select(fromLookups.getTasksLookup)))\r\n switchMap(x =>\r\n this.service.getFixedPrice(x.payload).pipe(\r\n flatMap(exp => [\r\n new fromFixedPrice.SetFixedPrice(exp),\r\n new fromShared.Errors.RemoveErrors(\r\n exp\r\n .filter(\r\n i =>\r\n i.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(i => i.UniqueID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...exp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() UpdateFixedPrice$ = this.actions$.pipe(\r\n ofType(\r\n fromFixedPrice.ActionTypes.UpdateFixedPrice\r\n ),\r\n tap(x =>\r\n this.log.verbose({ type: 'FixedPriceEffects:UpdateFixedPrice$', x })\r\n ),\r\n switchMap(a =>\r\n this.service.putFixedPrice([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromFixedPrice.UpdateFixedPriceSuccess(resp),\r\n // , new fromShared.Errors.SetErrors(resp.ErrorMessages)\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() DeleteFixedPrice$ = this.actions$.pipe(\r\n ofType(\r\n fromFixedPrice.ActionTypes.DeleteFixedPrice\r\n ),\r\n switchMap(a =>\r\n this.service.deleteFixedPrice([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromFixedPrice.DeleteFixedPriceSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x => x.Status.StatusCode === ResponseStatus.Success\r\n ).map(x => x.EntityID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { DisplayMessageMinimum } from '../../common';\r\nimport { IFixedPrice } from '../IFixedPrice';\r\nimport * as actions from './actions';\r\n\r\nexport interface State {\r\n fpinvoices: Array;\r\n errors: Array;\r\n}\r\n\r\nexport const initialState: State = {\r\n fpinvoices: [],\r\n errors: []\r\n};\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: actions.ActionsUnion\r\n): State {\r\n switch (action.type) {\r\n case actions.ActionTypes.SetFixedPrice:\r\n return {\r\n ...state,\r\n fpinvoices: [...action.payload]\r\n };\r\n // case actions.ActionTypes.UpdateFixedPrice:\r\n // return { //Delete the row if the dftid is -1\r\n // ...state,\r\n // fpinvoices: state.fpinvoices.slice()\r\n // }\r\n case actions.ActionTypes.UpdateFixedPriceSuccess:\r\n const fpresp = action.payload;\r\n return {\r\n ...state,\r\n fpinvoices: state.fpinvoices\r\n // problem here when the dftid for multiple rows is -1\r\n .map(\r\n x =>\r\n fpresp.Items.find(\r\n y => y.UniqueID === x.UniqueID\r\n ) || {\r\n ...x\r\n }\r\n ) // update any existing\r\n .concat(\r\n fpresp.Items.filter(\r\n x =>\r\n !state.fpinvoices.find(\r\n y => y.UniqueID === x.UniqueID\r\n )\r\n )\r\n ), // add any new\r\n errors: fpresp.ErrorMessages\r\n };\r\n case actions.ActionTypes.DeleteFixedPriceSuccess:\r\n const deleresp = action.payload;\r\n return {\r\n ...state,\r\n fpinvoices: state.fpinvoices, // need to remove the deleted fixed price from the state\r\n errors: [\r\n ...deleresp.ErrorMessages,\r\n ...deleresp.Items.filter(\r\n x => x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status.Message)\r\n ]\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\nconst StateFeatureSelector = createFeatureSelector('fpinvoices');\r\n\r\nexport const getFixedPrice = createSelector(\r\n StateFeatureSelector,\r\n x => x.fpinvoices\r\n);\r\nexport const getFixedPriceErrors = createSelector(\r\n StateFeatureSelector,\r\n x => x.errors\r\n);\r\n","import {\r\n Component,\r\n OnInit,\r\n Inject,\r\n ViewChild,\r\n OnDestroy,\r\n AfterViewInit,\r\n Input\r\n} from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport * as fromGroupsR from '../store/reducer';\r\nimport * as fromErrors from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport { Observable, combineLatest, ReplaySubject } from 'rxjs';\r\nimport {\r\n IGroup,\r\n IGroupMember,\r\n IGroupElement,\r\n IGroupType,\r\n IGroupElementType\r\n} from '../IGroups';\r\nimport { takeWhile, tap } from 'rxjs/operators';\r\nimport {\r\n LoadGroupMembers,\r\n LoadGroupTypes,\r\n LoadGroups,\r\n LoadGroupElements,\r\n LoadGroupElementTypes,\r\n UpdateGroupElements,\r\n UpdateGroupMembers,\r\n DeleteGroup,\r\n Reset\r\n} from '../store/actions';\r\nimport { GroupsPresentersComponent } from '../presenters/groups-presenters.component';\r\nimport { UserRoleEnum } from '../../user-info';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromGroupsA from '../store/actions';\r\n\r\n@Component({\r\n selector: 'ef-groups-feature',\r\n templateUrl: './groups-feature.component.html',\r\n styleUrls: ['./groups-feature.component.scss']\r\n})\r\nexport class GroupsFeatureComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n private active = true;\r\n public selectedGroup: IGroup;\r\n public groupIDs: Array = [];\r\n process$: Observable;\r\n public groups$: Observable>;\r\n public groups: Array = [];\r\n public groupMembers$: Observable>;\r\n public groupMembers: Array = [];\r\n public groupMembersORIG: Array = [];\r\n public groupElements$: Observable>;\r\n public groupElements: Array = [];\r\n public groupElementsORIG: Array = [];\r\n public groupTypes$: Observable>;\r\n public groupTypes: Array = [];\r\n public groupElementTypes$: Observable>;\r\n public groupElementTypes: Array = [];\r\n selectedError$: Observable;\r\n\r\n @ViewChild(GroupsPresentersComponent, { static: true })\r\n groupsPresComp: GroupsPresentersComponent;\r\n ShowError = new ReplaySubject(1);\r\n constructor(\r\n private groupsStore: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private store: Store,\r\n private errorStore: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.groups$ = this.groupsStore.pipe(select(fromGroupsR.getGroups));\r\n\r\n this.groupMembers$ = this.groupsStore.pipe(\r\n select(fromGroupsR.getGroupMembers)\r\n );\r\n\r\n this.groupElements$ = this.groupsStore.pipe(\r\n select(fromGroupsR.getGroupElements)\r\n );\r\n\r\n this.groupElementTypes$ = this.groupsStore.pipe(\r\n select(fromGroupsR.getGroupElementTypes)\r\n );\r\n\r\n this.groupTypes$ = this.groupsStore.pipe(\r\n select(fromGroupsR.getGroupTypes)\r\n );\r\n\r\n this.selectedError$ = this.errorStore.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ManageUsersFeatureComponent:selectedError$',\r\n x\r\n })\r\n )\r\n );\r\n }\r\n\r\n onLoadMembers($event) {\r\n this.groupsStore.dispatch(new LoadGroupMembers($event));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.groupsStore.dispatch(new LoadGroupTypes());\r\n\r\n this.process$.pipe(takeWhile(() => this.active)).subscribe(process => {\r\n if (process.ProcessID == 141) {\r\n this.groupsStore.dispatch(\r\n new LoadGroups({ Categoryid: 'SYS000000000000000000000000000000000' })\r\n );\r\n }\r\n this.setProcessRole(this.getProcessRole(process.ProcessID));\r\n });\r\n\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.groups$.pipe(takeWhile(_ => this.active)).subscribe(_groups => {\r\n this.groups = _groups;\r\n });\r\n\r\n this.groupMembers$\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:groupMembers$',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(members => {\r\n this.groupMembers = members;\r\n this.groupMembersORIG = members;\r\n });\r\n\r\n this.groupElements$\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(elements => {\r\n this.groupElements = elements;\r\n this.groupElementsORIG = elements;\r\n });\r\n\r\n this.groupTypes$.pipe(takeWhile(_ => this.active)).subscribe(types => {\r\n this.groupTypes = types;\r\n });\r\n\r\n this.groupElementTypes$\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(elementtypes => {\r\n this.groupElementTypes = elementtypes;\r\n });\r\n\r\n this.groupsPresComp.selectGroupType\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(grouptype => {\r\n const selectedType: IGroupType = grouptype;\r\n if (selectedType != null) {\r\n this.groupsStore.dispatch(\r\n new LoadGroups({ Categoryid: selectedType.Categoryid })\r\n );\r\n }\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:selectGroupType',\r\n selectedType\r\n });\r\n });\r\n\r\n this.groupsPresComp.selectGroup\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(group => {\r\n this.selectedGroup = group;\r\n if (this.selectedGroup != null) {\r\n this.groupsStore.dispatch(\r\n new LoadGroupMembers({\r\n GroupID: this.selectedGroup.GroupID\r\n })\r\n );\r\n this.groupsStore.dispatch(\r\n new LoadGroupElementTypes({\r\n GroupID: this.selectedGroup.GroupID\r\n })\r\n );\r\n }\r\n // this.log.debug({ type: 'GroupsFeatureComponent:selectGroupType', this.selectedGroup });\r\n });\r\n\r\n this.groupsPresComp.selectElement\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(element => {\r\n const selectedElement: IGroupElementType = element;\r\n if (selectedElement != null) {\r\n this.groupsStore.dispatch(\r\n new LoadGroupElements({\r\n GroupID: selectedElement.GroupID,\r\n GroupElementTypeID:\r\n selectedElement.GroupElementTypeID,\r\n ListID: selectedElement.ListID\r\n })\r\n );\r\n }\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:selectGroupType',\r\n selectedElement\r\n });\r\n });\r\n\r\n this.groupsPresComp.toggleMode\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(x => {\r\n if (x === false) {\r\n this.groupMembers = this.groupMembers.filter(\r\n y => y.IsGroupMember === true\r\n );\r\n this.groupElements = this.groupElements.filter(\r\n z => z.IsGroupElement === true\r\n );\r\n } else {\r\n this.groupMembers = this.groupMembersORIG;\r\n this.groupElements = this.groupElementsORIG;\r\n }\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:toggleMode',\r\n x\r\n });\r\n });\r\n\r\n this.groupsPresComp.toggleModeRoles\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(x => {\r\n if (x === true) {\r\n this.groupMembers = this.groupMembers.filter(\r\n y => y.IsGroupMember === true\r\n );\r\n this.groupElements = this.groupElements.filter(\r\n z => z.IsGroupElement === true\r\n );\r\n } else {\r\n this.groupMembers = this.groupMembersORIG;\r\n this.groupElements = this.groupElementsORIG;\r\n }\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:toggleModeRoles',\r\n x\r\n });\r\n });\r\n\r\n this.groupsPresComp.deleteGroup\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(x => {\r\n this.groupIDs.push(x.GroupID);\r\n this.groupsStore.dispatch(new DeleteGroup(this.groupIDs));\r\n this.groups = this.groups.filter(function (group) {\r\n return group.GroupID !== x.GroupID;\r\n });\r\n\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:deleteGroup',\r\n x\r\n });\r\n this.groupIDs = [];\r\n });\r\n }\r\n\r\n public onMemberRowSelectUpdate($event) {\r\n this.groupsStore.dispatch(new UpdateGroupMembers($event));\r\n }\r\n\r\n public onElementRowSelectUpdate($event) {\r\n this.groupsStore.dispatch(new UpdateGroupElements($event));\r\n }\r\n\r\n public onResetData() {\r\n this.groupsStore.dispatch(new Reset());\r\n }\r\n\r\n getProcessRole(processID: number): UserRoleEnum {\r\n let roleId;\r\n switch (processID) {\r\n case 139:\r\n roleId = UserRoleEnum.Administrator;\r\n break;\r\n case 73:\r\n roleId = UserRoleEnum.Supervisor;\r\n break;\r\n case 140:\r\n roleId = UserRoleEnum.TaskManager;\r\n break;\r\n case 141:\r\n roleId = UserRoleEnum.ReportAdmin;\r\n break;\r\n case 142:\r\n roleId = UserRoleEnum.Subcontractor;\r\n break;\r\n default:\r\n // roleId = user.DefaultRoleGroupID;\r\n break;\r\n }\r\n return roleId;\r\n }\r\n\r\n setProcessRole(roleId) {\r\n if (roleId === 1) {\r\n this.groupsStore.dispatch(new LoadGroupMembers({ GroupID: 1 }));\r\n this.groupsStore.dispatch(\r\n new LoadGroupElementTypes({ GroupID: 1 })\r\n );\r\n } else if (roleId === 12024) {\r\n this.groupsStore.dispatch(new LoadGroupMembers({ GroupID: 12024 }));\r\n this.groupsStore.dispatch(\r\n new LoadGroupElementTypes({ GroupID: 12024 })\r\n );\r\n } else if (roleId === 12025) {\r\n this.groupsStore.dispatch(new LoadGroupMembers({ GroupID: 12025 }));\r\n this.groupsStore.dispatch(\r\n new LoadGroupElementTypes({ GroupID: 12025 })\r\n );\r\n } else if (roleId === 12029) {\r\n this.groupsStore.dispatch(new LoadGroupMembers({ GroupID: 12029 }));\r\n this.groupsStore.dispatch(\r\n new LoadGroupElementTypes({ GroupID: 12029 })\r\n );\r\n } else if (roleId === 12030) {\r\n this.groupsStore.dispatch(new LoadGroupMembers({ GroupID: 12030 }));\r\n this.groupsStore.dispatch(\r\n new LoadGroupElementTypes({ GroupID: 12030 })\r\n );\r\n } else {\r\n // Do nothing\r\n }\r\n }\r\n\r\n OnShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n}\r\n","export * from './groups-feature.component';\r\n","import { NgModule } from '@angular/core';\r\nimport * as fromGroups from './store/reducer';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GroupsFeatureComponent } from './feature/groups-feature.component';\r\nimport { GroupsPresentersComponent } from './presenters/groups-presenters.component';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { GroupsEffects } from './store/effects';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MultiSelectModule, DropdownModule, RadioButtonModule } from '../shared/efaact-primeng.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { GroupsAddComponent } from './presenters/groups-add/groups-add.component';\r\nimport { ExpensesModule } from '../expenses';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('groups', fromGroups.reducer),\r\n EffectsModule.forFeature([GroupsEffects]),\r\n EfaactMaterialModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MultiSelectModule,\r\n DropdownModule,\r\n SharedModule,\r\n ExpensesModule,\r\n RadioButtonModule\r\n ],\r\n declarations: [GroupsFeatureComponent, GroupsPresentersComponent, GroupsAddComponent]\r\n})\r\nexport class GroupsModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, Observer } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport {\r\n IGroup,\r\n IGroupElement,\r\n IGroupElementType,\r\n IGroupMember,\r\n IGroupType\r\n} from './IGroups';\r\nimport {\r\n IGroupDeleteResponse,\r\n IGroupElementResponse,\r\n IGroupMemberResponse,\r\n IGroupResponse\r\n} from './IGroupsResponse';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GroupsService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n public roles$: Observable> = new Observable>(\r\n o => (this._observer = o)\r\n );\r\n\r\n private _observer: Observer>;\r\n private groupTypeUri = `${environment.apiLocation}/GroupType/CategoryID`;\r\n private groupElementTypeUri = `${environment.apiLocation}/GroupElementType`;\r\n private groupUri = `${environment.apiLocation}/Group`;\r\n private groupMemberUri = `${environment.apiLocation}/GroupMember`;\r\n\r\n // SERVICE CALLS FOR GROUP ELEMENT\r\n\r\n private groupElementUri = `${environment.apiLocation}/GroupElement`;\r\n\r\n // SERVICE CALL FOR GROUP TYPE\r\n public getGroupType(): Observable> {\r\n return this.http.get>(this.groupTypeUri).pipe(res => {\r\n this.log.verbose({\r\n type: 'GroupsService:getGroupType:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n // SERVICE CALL FOR GROUP ELEMENT TYPE\r\n public postGroupElementType(params: {\r\n GroupID: number;\r\n }): Observable> {\r\n const request = { GroupID: (params && params.GroupID) || 0 };\r\n return this.http\r\n .post>(this.groupElementTypeUri, request)\r\n .pipe(res => {\r\n this.log.verbose({\r\n type: 'GroupsService:postGroupElementType:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n\r\n // SERVICE CALLS FOR GROUP\r\n // Service call for loading groups for the page\r\n public postGroup(params: {\r\n Categoryid: string;\r\n }): Observable> {\r\n const request = {\r\n Categoryid: (params && params.Categoryid) || ''\r\n };\r\n return this.http\r\n .post>(this.groupUri, request)\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'GroupsService:postGroup:reponse',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n // Service call for group update\r\n public putGroup(groups: Array): Observable {\r\n this.log.debug({ type: 'GroupsService:putGroup', groups });\r\n return this.http\r\n .put(this.groupUri, { GroupList: groups })\r\n .pipe(res => {\r\n this.log.verbose({\r\n type: 'GroupsService:putGroup:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n\r\n // Service call for deleting a group\r\n public deleteGroup(\r\n groupIDs: Array\r\n ): Observable {\r\n this.log.debug({ type: 'GroupsService:deleteGroup', groupIDs });\r\n\r\n return (\r\n this.http\r\n // TODO: change to .delete when upgrading to NG7\r\n .request('DELETE', this.groupUri, {\r\n body: { EntityIDs: groupIDs }\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'GroupsService:deleteGroup:reponse',\r\n data\r\n })\r\n )\r\n )\r\n );\r\n }\r\n\r\n // SERVICE CALLS FOR GROUP MEMBER\r\n\r\n // Service call for getting group members\r\n public postGroupMember(params: {\r\n GroupID: number;\r\n IsGroupMember?: boolean;\r\n }): Observable> {\r\n const request = {\r\n GroupID: (params && params.GroupID) || 1,\r\n IsGroupMember: (params && params.IsGroupMember) || null\r\n };\r\n return this.http\r\n .post>(this.groupMemberUri, request)\r\n .pipe(res => {\r\n this.log.verbose({\r\n type: 'GroupsService:putGroup:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n\r\n // Service call for group member update / for a \"delete\" send isMember = false\r\n public putGroupMember(\r\n groupMembers: Array\r\n ): Observable {\r\n this.log.debug({ type: 'GroupsService:putGroup', groupMembers });\r\n this.log.verbose(JSON.stringify({ GroupMemberList: groupMembers }));\r\n return this.http\r\n .put(this.groupMemberUri, {\r\n GroupMemberList: groupMembers\r\n })\r\n .pipe(res => {\r\n this.log.verbose({\r\n type: 'GroupsService:putGroup:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n\r\n // Service call for getting group elements\r\n public postGroupElement(params: {\r\n GroupID: number;\r\n GroupElementTypeID: number;\r\n ListID: string;\r\n }): Observable> {\r\n const request = {\r\n GroupID: (params && params.GroupID) || 0,\r\n GroupElementTypeID: (params && params.GroupElementTypeID) || 0,\r\n ListID: (params && params.ListID) || ''\r\n };\r\n return this.http\r\n .post>(this.groupElementUri, request)\r\n .pipe(res => {\r\n this.log.verbose({\r\n type: 'GroupsService:getGroupElement:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n\r\n // Service call for group element update / for a \"delete\" send isElement = false\r\n public putGroupElement(\r\n groupElements: Array\r\n ): Observable {\r\n this.log.debug({\r\n type: 'GroupsService:putGroupElement',\r\n groupElements\r\n });\r\n this.log.verbose(JSON.stringify({ GroupElementList: groupElements }));\r\n return this.http\r\n .put(this.groupElementUri, {\r\n GroupElementList: groupElements\r\n })\r\n .pipe(res => {\r\n this.log.verbose({\r\n type: 'GroupsService:putGroupElement:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n}\r\n","export * from './feature';\r\nexport * from './presenters';\r\nexport * from './store';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { fromEvent, Observable, Subscription } from 'rxjs';\r\nimport { startWith, takeWhile, tap } from 'rxjs/operators';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IGroup, IGroupType } from '../../IGroups';\r\nimport { UpdateGroups } from '../../store/actions';\r\nimport * as fromGroupsR from '../../store/reducer';\r\n\r\n@Component({\r\n selector: 'ef-groups-add',\r\n templateUrl: './groups-add.component.html',\r\n styleUrls: ['./groups-add.component.scss']\r\n})\r\nexport class GroupsAddComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild('saveGroup', { read: ElementRef, static: true })\r\n saveGroupButton: ElementRef;\r\n @ViewChild('cancel', { read: ElementRef, static: true })\r\n cancelButton: ElementRef;\r\n public addGroupsForm: FormGroup;\r\n public gpcFilterFormGroup: FormGroup;\r\n\r\n private groupsSub: Subscription;\r\n\r\n private componentActive = true;\r\n\r\n public purposeAdd = '';\r\n public categoryidAdd = '';\r\n public groupType = '';\r\n public groupNameAdd = '';\r\n\r\n public groups: Array = [];\r\n public newGroups: Array = [];\r\n public groupTypes: Array = [];\r\n public filteredGroupTypes$: Observable>;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) data: any,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private groupsStore: Store\r\n ) {\r\n this.log.debug({ type: 'GroupsAddComponent:ctor', data });\r\n this.groupTypes = data.groupTypes;\r\n this.gpcFilterFormGroup = data.filterFormGroup;\r\n // this.gpc = data.gpc;\r\n }\r\n\r\n ngOnInit() {\r\n this.addGroupsForm = new FormGroup({\r\n groupName: new FormControl(),\r\n purpose: new FormControl(),\r\n groupTypes: new FormControl()\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentActive = false;\r\n if (this.categoryidAdd !== '' && this.groupNameAdd !== '') {\r\n this.groupsSub = this.groupsStore\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n select(fromGroupsR.getGroups)\r\n )\r\n .subscribe(groups => {\r\n this.groups = groups;\r\n this.log.verbose({\r\n type: 'GroupsAddComponent:groups-subscribe',\r\n groups,\r\n newGroups: this.newGroups\r\n });\r\n });\r\n\r\n const newGroup = this.groups.find(\r\n group => group.GroupName === this.groupNameAdd\r\n );\r\n\r\n if (this.gpcFilterFormGroup.controls['groups']) {\r\n this.gpcFilterFormGroup.controls['groups'].patchValue({\r\n GroupID: newGroup.GroupID\r\n });\r\n }\r\n // this.groupsStore.dispatch(new LoadGroupMembers({ GroupID: newGroup.GroupID }))\r\n // this.groupsStore.dispatch(new LoadGroupElementTypes({ GroupID: newGroup.GroupID }))\r\n\r\n if (this.gpcFilterFormGroup.controls['purpose']) {\r\n this.gpcFilterFormGroup.controls['purpose'].setValue(\r\n this.purposeAdd\r\n );\r\n }\r\n\r\n this.groupsSub.unsubscribe();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.groupTypes = this.groupTypes.filter(\r\n t => t.Categoryid !== 'SYS000000000000000000000000000000000'\r\n );\r\n\r\n fromEvent(this.saveGroupButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(x => {\r\n this.newGroups = [\r\n {\r\n Categoryid: this.categoryidAdd,\r\n GroupName: this.groupNameAdd,\r\n Purpose: this.purposeAdd,\r\n GroupID: null\r\n }\r\n ];\r\n this.groupsStore.dispatch(new UpdateGroups(this.newGroups));\r\n\r\n if (this.gpcFilterFormGroup.controls['groupTypes']) {\r\n this.gpcFilterFormGroup.controls['groupTypes'].patchValue({\r\n Categoryid: this.categoryidAdd\r\n });\r\n }\r\n // this.groupsStore.dispatch(new LoadGroups({ Categoryid: this.newGroups[0].Categoryid }));\r\n\r\n this.dialogRef.close();\r\n });\r\n fromEvent(this.cancelButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.componentActive))\r\n .subscribe(x => {\r\n this.dialogRef.close();\r\n });\r\n\r\n this.addGroupsForm.controls['groupTypes'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n startWith(''),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'GroupsAddComponent:groupTypes:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsAddComponent:groupTypes:valueChanges:subscribe',\r\n value\r\n });\r\n if (value && value != \"\" && this.groupTypes && this.groupTypes.length > 0) {\r\n this.groupTypes.forEach(x => {\r\n if (x.GroupType === value.GroupType) {\r\n this.groupType = x.GroupType;\r\n this.categoryidAdd = x.Categoryid;\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n this.addGroupsForm.controls['groupName'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n startWith(''),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'GroupsAddComponent:groupName:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsAddComponent:groupName:valueChanges:subscribe',\r\n value\r\n });\r\n if (value != null) {\r\n this.groupNameAdd = value;\r\n } else {\r\n this.groupNameAdd = '';\r\n }\r\n });\r\n\r\n this.addGroupsForm.controls['purpose'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.componentActive),\r\n startWith(''),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'GroupsAddComponent:purpose:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsAddComponent:purpose:valueChanges:subscribe',\r\n value\r\n });\r\n if (value != null) {\r\n this.purposeAdd = value;\r\n } else {\r\n this.purposeAdd = '';\r\n }\r\n });\r\n }\r\n}\r\n","export * from './groups-add.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\r\nimport { Store } from '@ngrx/store';\r\nimport * as $ from 'jquery';\r\nimport { fromEvent, ReplaySubject, Subject } from 'rxjs';\r\nimport {\r\n pairwise,\r\n startWith,\r\n take,\r\n takeWhile,\r\n tap,\r\n throttleTime\r\n} from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport * as fromShared from '../../shared';\r\nimport { getStatusIcon, Process } from '../../shared';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { TabulatorService } from '../../tabulator.service';\r\nimport { UserRoleEnum } from '../../user-info';\r\nimport {\r\n IGroup,\r\n IGroupElement,\r\n IGroupElementType,\r\n IGroupMember,\r\n IGroupType\r\n} from '../IGroups';\r\nimport { GroupsAddComponent } from './groups-add/groups-add.component';\r\n\r\n@Component({\r\n selector: 'ef-groups-presenters',\r\n templateUrl: './groups-presenters.component.html',\r\n styleUrls: ['./groups-presenters.component.scss']\r\n})\r\nexport class GroupsPresentersComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private _groupmembers: Array = [];\r\n assignColumnHeader: string;\r\n assignedEleColumnHeader: any;\r\n showSelectedEleRowsOnly: boolean;\r\n switchDesc: string;\r\n memSwitchDesc: string;\r\n eleSwitchDesc: string;\r\n elementSelected = true;\r\n @Input() set groupMembers(value: Array) {\r\n this._groupmembers = value.map(x => ({ ...x }));\r\n this.membersArraySort(this._groupmembers);\r\n\r\n if (this.groupMembers.length > 0) {\r\n this.groupMembers.forEach(v => {\r\n v.selected = v.IsGroupMember;\r\n });\r\n }\r\n if (this.tabGroupMembers) {\r\n this.tabGroupMembers.replaceData(this._groupmembers);\r\n\r\n if (this.showSelectedRowsOnly === true) {\r\n this.filterdata();\r\n }\r\n\r\n if (this.showSelectedEleRowsOnly === true) {\r\n this.filterEleData();\r\n }\r\n\r\n this.checkIndeterminate(\r\n this.tabGroupMembers,\r\n this.membersCbxColumnHeader,\r\n this._groupmembers,\r\n 0\r\n );\r\n }\r\n if (this.filterFormGroup.controls['purpose'].value) {\r\n this.purpose = this.filterFormGroup.controls['purpose']\r\n .value as string;\r\n }\r\n\r\n this.loadingData = false;\r\n }\r\n get groupMembers(): Array {\r\n return this._groupmembers;\r\n }\r\n\r\n private _groupmembersorig: Array;\r\n @Input() set groupMembersORIG(value: Array) {\r\n this._groupmembersorig = value.map(x => ({ ...x }));\r\n }\r\n get groupMembersORIG(): Array {\r\n return this._groupmembersorig;\r\n }\r\n\r\n private _grouptypes: Array;\r\n @Input() set groupTypes(value: Array) {\r\n this._grouptypes = value.map(x => ({ ...x }));\r\n if (this.process) {\r\n if (this.process.ProcessID === 73) {\r\n this._grouptypes = this._grouptypes.filter(\r\n type =>\r\n type.Categoryid ===\r\n 'SYS000000000000000000000000000000000'\r\n );\r\n this.selectGroupType.emit(this._grouptypes[0]);\r\n } else {\r\n this._grouptypes = this._grouptypes.filter(\r\n type =>\r\n type.Categoryid !==\r\n 'SYS000000000000000000000000000000000'\r\n );\r\n }\r\n }\r\n }\r\n get groupTypes(): Array {\r\n return this._grouptypes;\r\n }\r\n\r\n private _groupelementtypes: Array;\r\n @Input() set groupElementTypes(value: Array) {\r\n this._groupelementtypes = value.map(x => ({ ...x }));\r\n if (value.length > 0) {\r\n this.filterFormGroup.controls['elementTypes'].enable();\r\n } else {\r\n this.filterFormGroup.controls['elementTypes'].disable();\r\n }\r\n }\r\n get groupElementTypes(): Array {\r\n return this._groupelementtypes;\r\n }\r\n\r\n private _groupelements: Array = [];\r\n @Input() set groupElements(value: Array) {\r\n this._groupelements = value.map(x => ({ ...x }));\r\n this.elementsArraySort(this._groupelements);\r\n if (this.groupElements.length > 0) {\r\n this.groupElements.forEach(v => {\r\n v.selected = v.IsGroupElement;\r\n });\r\n }\r\n if (this.tabElements) {\r\n this.tabElements.replaceData(this._groupelements);\r\n\r\n if (this.showSelectedEleRowsOnly === true) {\r\n this.filterEleData();\r\n }\r\n\r\n this.checkIndeterminate(\r\n this.tabElements,\r\n this.elementsCbxColumnHeader,\r\n this._groupelements,\r\n 0\r\n );\r\n }\r\n this.loadingData = false;\r\n }\r\n get groupElements(): Array {\r\n return this._groupelements;\r\n }\r\n\r\n private _groupelementsorig: Array;\r\n @Input('groupElementsORIG') set groupElementsORIG(\r\n value: Array\r\n ) {\r\n this._groupelementsorig = value.map(x => ({ ...x }));\r\n }\r\n get groupElementsORIG(): Array {\r\n return this._groupelementsorig;\r\n }\r\n\r\n private _groups: Array;\r\n @Input('group') set groups(value: Array) {\r\n this._groups = value.map(x => ({ ...x }));\r\n if (value && value.length > 0) {\r\n if (this.process.ProcessID == 141) {\r\n this.processToggleText = value.find(\r\n x => x.GroupID == 12029\r\n ).Purpose;\r\n this.setProcessRole(\r\n this.getProcessRole(this.process.ProcessID)\r\n );\r\n }\r\n }\r\n this.loadingData = false;\r\n this.createTabulatorForElements(this, [], []);\r\n }\r\n get groups(): Array {\r\n return this._groups;\r\n }\r\n\r\n private HighlightErrorSubject = new Subject();\r\n private _selectedError: IShowErrors;\r\n @Input() public set selectedError(value: IShowErrors) {\r\n this._selectedError = value;\r\n if (this.tabGroupMembers && this.process) {\r\n if (value.MsgProcessID === this.process.ProcessID) {\r\n this.HighlightErrorSubject.next(value);\r\n }\r\n }\r\n }\r\n public get selectedError(): IShowErrors {\r\n return this._selectedError;\r\n }\r\n\r\n @Input() public process: Process;\r\n public showAssignAdminPopup = false;\r\n public roleID: number;\r\n public rolefromShared;\r\n public dropdownPlaceholderText = '';\r\n public selectNotificationText = '';\r\n public IsSupervisor = false;\r\n public IsTaskManager = false;\r\n public HasElements = false;\r\n public IsManageRoles: boolean;\r\n public active = true;\r\n public showSelectedRowsOnly = false;\r\n public selectColumnWidth = 107;\r\n public memberColumnTitle;\r\n public elementColumnHeader;\r\n public purpose = '';\r\n public selectedGroup: IGroup;\r\n public supervisorListID = '';\r\n public membersSelectedRowsCheckbox = {\r\n checked: false,\r\n indeterminate: false\r\n };\r\n public elementsSelectedRowsCheckbox = {\r\n checked: false,\r\n indeterminate: false\r\n };\r\n public superUserCbx = { checked: false, indeterminate: false };\r\n public elementsCheckboxFlag = true;\r\n public superuserCbxFlag = false;\r\n public loadingData = true;\r\n\r\n public tabGroupMembers;\r\n public tabElements;\r\n\r\n public filterFormGroup: FormGroup;\r\n public maintenanceFormGroup: FormGroup;\r\n\r\n processToggle = false;\r\n processToggleText: string; // = 'Provides members of custom security groups access to all users/contracts within their assigned processes.';\r\n showProcessToggle = false;\r\n\r\n @ViewChild('selectAllMembers', { read: ElementRef, static: true })\r\n membersSelectAllButton: ElementRef;\r\n @ViewChild('dontSelectAllMembers', { read: ElementRef, static: true })\r\n membersDontSelectAllButton: ElementRef;\r\n @ViewChild('selectAllElements', { read: ElementRef, static: true })\r\n elementsSelectAllButton: ElementRef;\r\n @ViewChild('dontSelectAllElements', { read: ElementRef, static: true })\r\n elementsDontSelectAllButton: ElementRef;\r\n @ViewChild('membersCbxColumnHeader', { static: true })\r\n membersCbxColumnHeader: MatCheckbox;\r\n @ViewChild('superuserCbx', { static: true }) superuserCbx: MatCheckbox;\r\n @ViewChild('elementsCbxColumnHeader', { static: true })\r\n elementsCbxColumnHeader: MatCheckbox;\r\n @ViewChild('addGroup', { read: ElementRef, static: true })\r\n addGroupButton: ElementRef;\r\n @ViewChild('deleteGroup', { read: ElementRef, static: true })\r\n deleteGroupButton: ElementRef;\r\n\r\n @Output() selectGroupType = new EventEmitter();\r\n @Output() selectGroup = new EventEmitter();\r\n @Output() selectElement = new EventEmitter();\r\n @Output() toggleMode = new EventEmitter();\r\n @Output() toggleModeRoles = new EventEmitter();\r\n @Output() memberRowSelectUpdate = new EventEmitter>();\r\n @Output() elementRowSelectUpdate = new EventEmitter>();\r\n @Output() resetData = new EventEmitter();\r\n @Output() deleteGroup = new EventEmitter();\r\n @Output() public Cancel = new EventEmitter();\r\n @Output() public ShowError = new Subject();\r\n\r\n @Output() LoadMembers = new ReplaySubject(1);\r\n\r\n public assignAll = false;\r\n public unassignAll = false;\r\n\r\n rowsToUnassign: any[] = [];\r\n\r\n deleteDisabled = true;\r\n\r\n assignAreYouSureMsg: string;\r\n showAssignAreYouSure = false;\r\n rowDatafromAssign: IGroupMember;\r\n rowFromAssign: any;\r\n\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(TabulatorService) private tabService: TabulatorService,\r\n private errorStore: Store,\r\n private dialog: MatDialog,\r\n @Inject(UnsavedChangesService)\r\n private confirmservice: UnsavedChangesService\r\n ) {\r\n this.filterFormGroup = new FormGroup({\r\n reportadmin: new FormControl(this.processToggle),\r\n processadmin: new FormControl(this.processToggle),\r\n showSelectedToggle: new FormControl(null),\r\n showSelectedEleToggle: new FormControl(null),\r\n groupTypes: new FormControl(null),\r\n groups: new FormControl({\r\n Categoryid: '',\r\n GroupID: 0,\r\n GroupName: '',\r\n Purpose: ''\r\n }),\r\n purpose: new FormControl(null),\r\n elementTypes: new FormControl(null)\r\n });\r\n\r\n this.maintenanceFormGroup = new FormGroup({\r\n maintenanceToggle: new FormControl(null)\r\n });\r\n }\r\n ngOnInit() {\r\n if (this.process) {\r\n this.log.verbose(this.process);\r\n\r\n if (this.process.ProcessID === 63) {\r\n this.IsManageRoles = false;\r\n this.dropdownPlaceholderText = 'Group Name';\r\n $('#maintenancePanel').fadeIn(0);\r\n } else {\r\n this.IsManageRoles = true;\r\n this.dropdownPlaceholderText = 'Role';\r\n }\r\n }\r\n this.filterFormGroup.controls['reportadmin'].patchValue('reportadmin');\r\n fromEvent(this.addGroupButton.nativeElement, 'click')\r\n .pipe(\r\n tap(_ =>\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:addGroupButton:click'\r\n })\r\n ),\r\n takeWhile(_ => this.active)\r\n )\r\n .subscribe(button => {\r\n try {\r\n this.addPopup();\r\n } catch (e) {\r\n this.log.verbose(e);\r\n }\r\n });\r\n\r\n fromEvent(this.deleteGroupButton.nativeElement, 'click')\r\n .pipe(\r\n tap(_ =>\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:deleteGroupButton:click'\r\n })\r\n ),\r\n takeWhile(_ => this.active)\r\n )\r\n .subscribe(button => {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure you want to delete the selected group?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n this.deleteGroup.emit(this.selectedGroup);\r\n this.filterFormGroup.controls['groups'].reset();\r\n this.filterFormGroup.controls['elementTypes'].reset();\r\n this.filterFormGroup.controls['purpose'].reset();\r\n this.loadingData = false;\r\n })\r\n .catch(() => {});\r\n });\r\n }\r\n\r\n getProcessRole(processID: number): UserRoleEnum {\r\n switch (processID) {\r\n case 139:\r\n this.roleID = UserRoleEnum.Administrator;\r\n this.assignColumnHeader = `Assigned
Admin`;\r\n this.memSwitchDesc = 'Display Assigned Admins Only';\r\n this.selectColumnWidth = 90;\r\n this.HasElements = false;\r\n break;\r\n case 73:\r\n this.roleID = UserRoleEnum.Supervisor;\r\n this.HasElements = true;\r\n this.assignColumnHeader = `Assigned
Supervisor`;\r\n this.memSwitchDesc = 'Display Assigned Supervisors Only';\r\n this.selectColumnWidth = 87;\r\n break;\r\n case 140:\r\n this.roleID = UserRoleEnum.TaskManager;\r\n this.HasElements = true;\r\n this.assignColumnHeader = `Assigned
Project Manager`;\r\n this.memSwitchDesc = 'Display Assigned Managers Only';\r\n this.selectColumnWidth = 107;\r\n break;\r\n case 141:\r\n let group;\r\n this.showProcessToggle = true;\r\n if (this.processToggle == false) {\r\n if (this.groups.length > 0) {\r\n group = this.groups.find(x => x.GroupID == 12029);\r\n this.roleID = UserRoleEnum.ReportAdmin;\r\n\r\n this.assignColumnHeader = `Assigned
${group.GroupName}`;\r\n this.memSwitchDesc =\r\n 'Display Assigned Report Admins Only';\r\n this.selectColumnWidth = 105;\r\n }\r\n\r\n } else {\r\n if (this.groups.length > 0) {\r\n group = this.groups.find(x => x.GroupID == 12023);\r\n this.roleID = UserRoleEnum.ProcessAdmin;\r\n\r\n this.assignColumnHeader = `Assigned
${group.GroupName}`;\r\n this.memSwitchDesc =\r\n 'Display Assigned Process Admins Only';\r\n this.selectColumnWidth = 105;\r\n }\r\n\r\n }\r\n if (this.tabGroupMembers != null) {\r\n this.tabGroupMembers.updateColumnDefinition('selected', {\r\n title: this.assignColumnHeader\r\n });\r\n }\r\n this.HasElements = false;\r\n break;\r\n case 142:\r\n this.roleID = UserRoleEnum.Subcontractor;\r\n this.HasElements = true;\r\n this.assignColumnHeader = `Assigned
Subcontractor`;\r\n this.memSwitchDesc = 'Display Assigned Subcontractors Only';\r\n this.selectColumnWidth = 105;\r\n break;\r\n default:\r\n this.assignColumnHeader = `Assigned
Member`;\r\n this.assignedEleColumnHeader = `Assigned
Item`;\r\n this.memSwitchDesc = 'Display Assigned Members Only';\r\n this.eleSwitchDesc = 'Display Assigned Items Only';\r\n this.selectColumnWidth = 90;\r\n this.HasElements = true;\r\n\r\n break;\r\n }\r\n this.rolefromShared = this.roleID;\r\n return this.roleID;\r\n }\r\n\r\n setProcessRole(roleId) {\r\n if (roleId === 1) {\r\n this.selectedGroup = {\r\n Categoryid: 'SYS000000000000000000000000000000000',\r\n GroupID: 1,\r\n GroupName: 'Administration',\r\n Purpose: 'Full access to all eFAACT features.'\r\n };\r\n this.purpose = this.selectedGroup.Purpose;\r\n this.filterFormGroup.patchValue({ groups: this.selectedGroup });\r\n } else if (roleId === 12024) {\r\n this.selectedGroup = {\r\n Categoryid: 'SYS000000000000000000000000000000000',\r\n GroupID: 12024,\r\n GroupName: 'Supervisor',\r\n Purpose:\r\n 'Provides access to review and approve time and expenses for assigned direct reports.'\r\n };\r\n this.purpose = this.selectedGroup.Purpose;\r\n this.filterFormGroup.patchValue({ groups: this.selectedGroup });\r\n } else if (roleId === 12025) {\r\n this.selectedGroup = {\r\n Categoryid: 'SYS000000000000000000000000000000000',\r\n GroupID: 12025,\r\n GroupName: 'Task Manager',\r\n Purpose:\r\n 'Provides access to review and approve time and expenses for assigned tasks.'\r\n };\r\n this.purpose = this.selectedGroup.Purpose;\r\n this.filterFormGroup.patchValue({ groups: this.selectedGroup });\r\n } else if (roleId === 12029) {\r\n this.log.verbose('process: ' + this.process);\r\n this.selectedGroup = this.groups.find(x => x.GroupID == 12029);\r\n this.processToggleText = this.selectedGroup.Purpose;\r\n this.purpose = this.selectedGroup.Purpose;\r\n this.filterFormGroup.patchValue({ groups: this.selectedGroup });\r\n } else if (roleId === 12023) {\r\n this.selectedGroup = this.groups.find(x => x.GroupID == 12023);\r\n this.processToggleText = this.selectedGroup.Purpose;\r\n this.purpose = this.selectedGroup.Purpose;\r\n this.filterFormGroup.patchValue({ groups: this.selectedGroup });\r\n } else if (roleId === 12030) {\r\n this.selectedGroup = {\r\n Categoryid: 'SYS000000000000000000000000000000000',\r\n GroupID: 12030,\r\n GroupName: 'Subcontractor',\r\n Purpose:\r\n 'Identify vendors that are a subcontrator that can be assigned consultants'\r\n };\r\n this.purpose = this.selectedGroup.Purpose;\r\n this.filterFormGroup.patchValue({ groups: this.selectedGroup });\r\n } else {\r\n // Do nothing\r\n }\r\n }\r\n\r\n onProcessToggle(e: MatSlideToggleChange) {\r\n if (e.checked === true) {\r\n this.processToggle = true;\r\n } else {\r\n this.processToggle = false;\r\n }\r\n }\r\n\r\n onReportAdminRadioButtonClicked() {\r\n this.processToggle = false;\r\n }\r\n\r\n onCustomProcessAdminRadioButtonClicked() {\r\n this.processToggle = true;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.resetData.emit();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.groupElements == null) {\r\n this.groupElements = [];\r\n }\r\n\r\n this.tabService.tabulator = $('#tabGroupMembers');\r\n this.tabService.tabulator = $('#tabElements');\r\n\r\n if (this.process) {\r\n setTimeout(() => {\r\n this.setProcessRole(\r\n this.getProcessRole(this.process.ProcessID)\r\n );\r\n this.createTabulatorForGroupMembers(\r\n this,\r\n this.groupMembers,\r\n []\r\n );\r\n this.setupSubscriptions();\r\n }, 0);\r\n\r\n setTimeout(() => {\r\n this.createTabulatorForElements(this, this.groupElements, []);\r\n }, 1000);\r\n }\r\n }\r\n\r\n assignAdminWarningAccepted() {\r\n this.showAssignAdminPopup = false;\r\n }\r\n\r\n setupSubscriptions() {\r\n this.HighlightErrorSubject.pipe(\r\n takeWhile(() => this.active),\r\n startWith(null),\r\n pairwise()\r\n ).subscribe(([prev, next]) => {\r\n this.log.verbose({\r\n type: 'GroupsComponent:HighlightErrorSubject',\r\n prev,\r\n next\r\n });\r\n if (prev) {\r\n const prevRow = this.tabGroupMembers\r\n .getRows()\r\n .find(\r\n row => row.getData().EmployeeListID === prev.MsgEntityID\r\n );\r\n if (prevRow) {\r\n prevRow.getElement().classList.remove('highlight');\r\n }\r\n }\r\n if (next) {\r\n const theRow = this.tabGroupMembers\r\n .getRows()\r\n .find(\r\n row => row.getData().EmployeeListID === next.MsgEntityID\r\n );\r\n if (theRow) {\r\n theRow.getElement().classList.add('highlight');\r\n this.log.debug({\r\n type: 'GroupsComponent:selectedError:set',\r\n rowElement: theRow.getElement()\r\n });\r\n }\r\n }\r\n });\r\n\r\n this.filterFormGroup.controls['reportadmin'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value == 'reportadmin') {\r\n this.processToggle = false;\r\n this.filterFormGroup.controls['processadmin'].patchValue(\r\n null\r\n );\r\n } else {\r\n this.processToggle = true;\r\n }\r\n this.setProcessRole(\r\n this.getProcessRole(this.process.ProcessID)\r\n );\r\n });\r\n this.filterFormGroup.controls['processadmin'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value == 'processadmin') {\r\n this.processToggle = true;\r\n this.filterFormGroup.controls['reportadmin'].patchValue(\r\n null\r\n );\r\n } else {\r\n this.processToggle = false;\r\n }\r\n this.setProcessRole(\r\n this.getProcessRole(this.process.ProcessID)\r\n );\r\n });\r\n\r\n this.filterFormGroup.controls['groupTypes'].valueChanges\r\n .pipe(\r\n startWith(this.filterFormGroup.controls['groupTypes'].value),\r\n takeWhile(_ => this.active),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:groupTypes:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:groupTypes:valueChanges:subscribe',\r\n value\r\n });\r\n\r\n if (value != null) {\r\n if (\r\n value.Categoryid === '[users_listid]' ||\r\n value.Categoryid ===\r\n 'SYS000000000000000000000000000000000'\r\n ) {\r\n this.filterFormGroup.controls['elementTypes'].disable();\r\n } else {\r\n this.filterFormGroup.controls['elementTypes'].enable();\r\n }\r\n }\r\n if (this.filterFormGroup.controls['groups'].value != null) {\r\n this.filterFormGroup.controls['groups'].reset();\r\n }\r\n\r\n if (this.tabGroupMembers) {\r\n this.createTabulatorForGroupMembers(this, [], []);\r\n }\r\n this.purpose = '';\r\n\r\n this.selectGroupType.emit(value);\r\n\r\n this.membersCbxColumnHeader.indeterminate = false;\r\n this.membersCbxColumnHeader.checked = false;\r\n this.elementsCbxColumnHeader.indeterminate = false;\r\n this.elementsCbxColumnHeader.checked = false;\r\n });\r\n\r\n this.filterFormGroup.controls['groups'].valueChanges\r\n .pipe(\r\n startWith(this.selectedGroup),\r\n takeWhile(_ => this.active),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:groups:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:groups:valueChanges:subscribe',\r\n value\r\n });\r\n this.loadingData = true;\r\n this.filterFormGroup.controls['elementTypes'].reset();\r\n if (this.IsManageRoles === false) {\r\n this.selectedGroup = value;\r\n }\r\n\r\n this.memberColumnTitle = `${this.selectedGroup} Group Member`;\r\n if (value != null) {\r\n if (this.groupElementTypes.length > 0) {\r\n this.filterFormGroup.controls[\r\n 'elementTypes'\r\n ].patchValue(\r\n this.groupElementTypes[0].GroupElementType\r\n );\r\n }\r\n this.purpose = value.Purpose;\r\n\r\n if (value.GroupID === 12024) {\r\n this.elementsCheckboxFlag = false;\r\n this.IsSupervisor = true;\r\n this.tabGroupMembers.showColumn('IsAltSupervisorOnly');\r\n this.tabGroupMembers.showColumn('assign');\r\n this.tabGroupMembers.showColumn('alt');\r\n this.tabGroupMembers.showColumn('altFor');\r\n this.tabGroupMembers.showColumn('AllowSuperUser');\r\n this.tabGroupMembers.showColumn('Allowauths');\r\n this.tabGroupMembers.hideColumn(\r\n 'IsAltForAllSupervisors'\r\n );\r\n } else if (\r\n value.GroupID !== 12024 ||\r\n value.GroupID !== 12025\r\n ) {\r\n this.elementsCheckboxFlag = true;\r\n this.tabGroupMembers.hideColumn('IsAltSupervisorOnly');\r\n this.tabGroupMembers.hideColumn('assign');\r\n this.tabGroupMembers.hideColumn('alt');\r\n this.tabGroupMembers.hideColumn('altFor');\r\n if (value.GroupID !== 1) {\r\n this.tabGroupMembers.hideColumn('AllowSuperUser');\r\n this.tabGroupMembers.hideColumn('Allowauths');\r\n this.tabGroupMembers.hideColumn(\r\n 'IsAltForAllSupervisors'\r\n );\r\n }\r\n }\r\n if (value.GroupID === 1) {\r\n this.tabGroupMembers.hideColumn('IsAltSupervisorOnly');\r\n this.tabGroupMembers.showColumn('AllowSuperUser');\r\n // this.tabGroupMembers.showColumn('Allowauths');\r\n // this.tabGroupMembers.showColumn('assign');\r\n this.tabGroupMembers.showColumn(\r\n 'IsAltForAllSupervisors'\r\n );\r\n }\r\n\r\n if (value.GroupID === 12025) {\r\n this.elementsCheckboxFlag = false;\r\n this.IsTaskManager = true;\r\n this.tabGroupMembers.hideColumn('IsAltSupervisorOnly');\r\n this.tabGroupMembers.showColumn('assign');\r\n this.tabGroupMembers.hideColumn(\r\n 'IsAltForAllSupervisors'\r\n );\r\n }\r\n if (value.GroupID === 12030) {\r\n this.elementsCheckboxFlag = false;\r\n this.tabGroupMembers.hideColumn('IsAltSupervisorOnly');\r\n this.tabGroupMembers.showColumn('assign');\r\n this.tabGroupMembers.hideColumn(\r\n 'IsAltForAllSupervisors'\r\n );\r\n }\r\n }\r\n this.groupMembersORIG = [];\r\n this.groupElementsORIG = [];\r\n\r\n if (this.showSelectedRowsOnly === true) {\r\n this.filterdata();\r\n }\r\n\r\n this.membersCbxColumnHeader.indeterminate = false;\r\n this.membersCbxColumnHeader.checked = false;\r\n this.elementsCbxColumnHeader.indeterminate = false;\r\n this.elementsCbxColumnHeader.checked = false;\r\n this.selectGroup.emit(value);\r\n $('#purpose').fadeIn(500);\r\n });\r\n\r\n this.filterFormGroup.controls['elementTypes'].valueChanges\r\n .pipe(\r\n startWith([]),\r\n takeWhile(_ => this.active),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:elementTypes:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsPresentersComponent:elementTypes:valueChanges:subscribe',\r\n value\r\n });\r\n\r\n if (value != null) {\r\n this.elementsCheckboxFlag = false;\r\n this.selectElement.emit(value);\r\n this.elementColumnHeader = value.GroupElementType;\r\n }\r\n });\r\n\r\n // Click event for the select all members button\r\n fromEvent(this.membersSelectAllButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n throttleTime(500),\r\n tap(_ =>\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:selectAllMembers'\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:selectAllMembers',\r\n x\r\n });\r\n $('#divSelectAllMembers').hide();\r\n\r\n const headerFilters = this.tabGroupMembers.getHeaderFilters();\r\n if (headerFilters.length > 0) {\r\n const headerFilterValue = headerFilters[0].value;\r\n this.groupMembers.forEach(el => {\r\n if (el.GroupName.includes(headerFilterValue) === true) {\r\n el.selected = true;\r\n }\r\n });\r\n } else {\r\n this.groupMembers = this.groupMembers.map(z => ({\r\n ...z,\r\n selected: true\r\n }));\r\n }\r\n\r\n const numerOfRowsSelected =\r\n this.tabGroupMembers.getSelectedData().length;\r\n\r\n const rows = this.tabGroupMembers.getRows(true);\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n if (this.assignAll === true) {\r\n if (data.selected === false) {\r\n this.membersMultiUpdate(row);\r\n }\r\n } else {\r\n if (data.selected === true) {\r\n this.membersMultiUpdate(row);\r\n }\r\n }\r\n });\r\n const rowsData: Array = [];\r\n rows.forEach(row => {\r\n const rowData = row.getData();\r\n rowsData.push(rowData);\r\n });\r\n this.memberRowSelectUpdate.emit(rowsData);\r\n });\r\n\r\n fromEvent(this.membersDontSelectAllButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n throttleTime(500),\r\n tap(_ =>\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:dontSelectAllMembers'\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:dontSelectAllMembers',\r\n x\r\n });\r\n $('#divSelectAllMembers').hide();\r\n // reset header checkbox\r\n this.checkIndeterminate(\r\n this.tabGroupMembers,\r\n this.membersCbxColumnHeader,\r\n this.groupMembers,\r\n 0\r\n );\r\n });\r\n\r\n // Click event for the select all elements button\r\n fromEvent(this.elementsSelectAllButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n throttleTime(500),\r\n tap(_ =>\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:selectAllElements'\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:selectAllElements',\r\n x\r\n });\r\n $('#divSelectAllElements').hide();\r\n const headerFilters = this.tabElements.getHeaderFilters();\r\n if (headerFilters.length > 0) {\r\n const headerFilterValue = headerFilters[0].value;\r\n this.groupElements.forEach(el => {\r\n if (\r\n el.ElementName.includes(headerFilterValue) === true\r\n ) {\r\n el.selected = true;\r\n }\r\n });\r\n } else {\r\n this.groupElements = this.groupElements.map(z => ({\r\n ...z,\r\n selected: true\r\n }));\r\n }\r\n\r\n this.tabElements.selectRow();\r\n const numerOfRowsSelected =\r\n this.tabElements.getSelectedData().length;\r\n\r\n const rows = this.tabElements.getRows(true);\r\n if (this.unassignAll == true) {\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n if (data.selected == true) {\r\n this.elementsMultiUpdate(row);\r\n }\r\n });\r\n } else {\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n this.elementsMultiUpdate(row);\r\n });\r\n }\r\n\r\n const rowsData: Array = [];\r\n rows.forEach(row => {\r\n const rowData = row.getData();\r\n row.update({ ListID: this.supervisorListID });\r\n rowsData.push(rowData);\r\n });\r\n this.elementRowSelectUpdate.emit(rowsData);\r\n });\r\n\r\n fromEvent(this.elementsDontSelectAllButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n throttleTime(500),\r\n tap(_ =>\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:dontSelectAllElements'\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n this.log.verbose({\r\n type: 'GroupsPresentersComponent:dontSelectAllElements',\r\n x\r\n });\r\n $('#divSelectAllElements').hide();\r\n });\r\n }\r\n membersMultiUpdate(row) {\r\n row.update({ selected: true });\r\n const rowData = row.getData();\r\n const data = this.groupMembers.find(x => x.ListID === rowData.ListID);\r\n const rowIndex = row.getPosition(true);\r\n if (rowData.IsGroupMember !== rowData.selected) {\r\n if (rowData.IsGroupMember === true) {\r\n row.update({ IsGroupMember: false, selected: false });\r\n } else {\r\n row.update({ IsGroupMember: true, selected: true }); //potential issue here\r\n }\r\n } else {\r\n row.update({ IsGroupMember: false, selected: false });\r\n }\r\n }\r\n\r\n elementsMultiUpdate(row) {\r\n row.update({ selected: true });\r\n const rowData = row.getData();\r\n const data = this.groupElements.find(\r\n x => x.GroupElementID === rowData.GroupElementID\r\n );\r\n if (rowData.IsGroupElement !== rowData.selected) {\r\n if (rowData.IsGroupElement === true) {\r\n row.update({\r\n IsGroupElement: false,\r\n selected: false,\r\n ListID: this.supervisorListID\r\n });\r\n } else {\r\n row.update({\r\n IsGroupElement: true,\r\n selected: true,\r\n ListID: this.supervisorListID\r\n });\r\n }\r\n } else {\r\n if (rowData.IsGroupElement === true) {\r\n if (this.assignAll === true) {\r\n row.update({\r\n IsGroupElement: true,\r\n selected: true,\r\n ListID: this.supervisorListID\r\n });\r\n } else {\r\n row.update({\r\n IsGroupElement: false,\r\n selected: false,\r\n ListID: this.supervisorListID\r\n });\r\n }\r\n } else {\r\n row.update({\r\n IsGroupElement: true,\r\n selected: true,\r\n ListID: this.supervisorListID\r\n });\r\n }\r\n }\r\n }\r\n\r\n addPopup() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.data = {\r\n groupTypes: this.groupTypes,\r\n filterFormGroup: this.filterFormGroup\r\n };\r\n\r\n const addGroupsRef = this.dialog.open(GroupsAddComponent, dialogConfig);\r\n addGroupsRef\r\n .afterClosed()\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n this.log.verbose({\r\n type: 'GroupsAddComponent:afterClosed',\r\n data\r\n });\r\n });\r\n }\r\n\r\n elementsArraySort(array: Array) {\r\n array.sort((a, b) => {\r\n if (a.ElementName === b.ElementName) {\r\n return 0;\r\n }\r\n if (typeof a.ElementName === typeof b.ElementName) {\r\n return a.ElementName < b.ElementName ? -1 : 1;\r\n }\r\n return typeof a.ElementName < typeof b.ElementName ? -1 : 1;\r\n });\r\n }\r\n\r\n membersArraySort(array: Array) {\r\n array.sort((a, b) => {\r\n if (a.UserName === b.UserName) {\r\n return 0;\r\n }\r\n if (typeof a.UserName === typeof b.UserName) {\r\n return a.UserName < b.UserName ? -1 : 1;\r\n }\r\n return typeof a.UserName < typeof b.UserName ? -1 : 1;\r\n });\r\n }\r\n\r\n filterData(filters) {\r\n if (this.tabGroupMembers) {\r\n this.tabGroupMembers.clearFilter(true);\r\n }\r\n\r\n if (this.tabElements) {\r\n this.tabElements.clearFilter(true);\r\n }\r\n\r\n const filtersToApply: Array<\r\n Array<{\r\n field: string;\r\n type: string;\r\n value: any;\r\n }>\r\n > = [[], []];\r\n\r\n if (filters && filters.length > 0) {\r\n filtersToApply[0].push({\r\n field: 'IsGroupMember',\r\n type: '=',\r\n value: true\r\n });\r\n filtersToApply[1].push({\r\n field: 'IsGroupElement',\r\n type: '=',\r\n value: true\r\n });\r\n\r\n if (this.tabGroupMembers) {\r\n this.tabGroupMembers.setFilter(filtersToApply[0]);\r\n }\r\n\r\n if (this.tabElements) {\r\n this.tabElements.setFilter(filtersToApply[1]);\r\n }\r\n }\r\n }\r\n\r\n membersRowSelection(row, tab) {\r\n // clear elements when a new member is selected\r\n if (this.IsSupervisor || this.IsTaskManager) {\r\n this.tabElements.clearData();\r\n }\r\n const allRows = this.tabGroupMembers.getRows();\r\n\r\n // SAME AS CLICKING THE DIRECT REPORTS BUTTON\r\n const data = row.getData();\r\n this.elementSelected = false;\r\n if (data.GroupID === 12024) {\r\n this.assignedEleColumnHeader = `Assigned
Direct Report`;\r\n this.eleSwitchDesc = 'Display Assigned Direct Reports Only';\r\n this.elementColumnHeader = `${data.UserName}'s Direct Reports`;\r\n }\r\n if (data.GroupID === 12025) {\r\n this.assignedEleColumnHeader = `Assigned
Tasks`;\r\n this.eleSwitchDesc = 'Display Assigned Tasks Only';\r\n this.elementColumnHeader = `${data.UserName}'s Tasks`;\r\n }\r\n if (data.GroupID === 12030) {\r\n this.assignedEleColumnHeader = `Assigned
Consultants`;\r\n this.eleSwitchDesc = 'Display Assigned Consultants Only';\r\n this.elementColumnHeader = `${data.UserName}'s Consultants`;\r\n }\r\n\r\n this.supervisorListID = data.ListID;\r\n if (data.GroupID === 12024 || data.GroupID === 12030) {\r\n if (data.selected === true) {\r\n let index = 0;\r\n for (let i = 0; i < this.groupElementTypes.length; i++) {\r\n if (this.groupElementTypes[i].GroupElementTypeID === 6) {\r\n index = i;\r\n }\r\n }\r\n if (\r\n this.groupElementTypes[index].GroupElementType === 'Users'\r\n ) {\r\n this.groupElementTypes[index].GroupElementType =\r\n 'Direct Reports';\r\n }\r\n this.elementsCheckboxFlag = false;\r\n this.groupElementTypes[index].ListID = data.ListID;\r\n this.selectElement.emit(this.groupElementTypes[index]);\r\n }\r\n }\r\n if (data.GroupID === 12025) {\r\n if (data.selected === true) {\r\n let index = 0;\r\n for (let i = 0; i < this.groupElementTypes.length; i++) {\r\n if (data.GroupID === this.groupElementTypes[i].GroupID) {\r\n index = i;\r\n }\r\n }\r\n this.elementsCheckboxFlag = false;\r\n this.groupElementTypes[index].ListID = data.ListID;\r\n this.selectElement.emit(this.groupElementTypes[index]);\r\n }\r\n }\r\n }\r\n assignGroupMember() {\r\n const row = this.rowFromAssign;\r\n const rowData = this.rowDatafromAssign;\r\n row.update({ selected: true });\r\n const group = this.groupMembers.find(x => x.ListID === rowData.ListID);\r\n const rowIndex = row.getPosition(true);\r\n const allRows = this.tabGroupMembers.getRows();\r\n let selectedCount = 0;\r\n if (this.selectedGroup.GroupID === 1) {\r\n allRows.forEach(r => {\r\n const data = r.getData();\r\n if (data.IsGroupMember === true) {\r\n selectedCount++;\r\n }\r\n });\r\n }\r\n if (rowData.IsGroupMember !== rowData.selected) {\r\n if (rowData.IsGroupMember === true) {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n this.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n if (rowData.GroupID === 1) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `This will provide ${rowData.UserName} access to all features for all users and all contracts.`,\r\n okText: 'Confirm',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n row.update({\r\n IsGroupMember: true,\r\n selected: true\r\n });\r\n this.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n })\r\n .catch(() => {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n });\r\n } else {\r\n row.update({\r\n IsGroupMember: true,\r\n selected: true\r\n });\r\n this.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n }\r\n } else {\r\n if (this.rolefromShared === 1) {\r\n if (selectedCount <= 1) {\r\n this.showAssignAdminPopup = true;\r\n } else {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n this.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n } else {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n this.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n }\r\n\r\n this.showAssignAreYouSure = false;\r\n }\r\n cancelAssignGroupMember() {\r\n this.showAssignAreYouSure = false;\r\n }\r\n\r\n private createTabulatorForGroupMembers(\r\n fp: GroupsPresentersComponent,\r\n groupMembers: Array,\r\n errors: Array\r\n ) {\r\n const headerClicked = false;\r\n\r\n this.tabGroupMembers = new Tabulator('#tabGroupMembers', {\r\n placeholder: 'No Data Available',\r\n height: '45vh',\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n data: groupMembers,\r\n selectable: 1,\r\n columns: [\r\n {\r\n title: 'Id',\r\n field: 'ListID',\r\n frozen: true,\r\n visible: false\r\n },\r\n {\r\n title: '',\r\n titleFormatter: () =>\r\n document.getElementById('divStatusHeader'),\r\n field: 'Status',\r\n align: 'center',\r\n width: '3rem',\r\n formatter: (cell, params, onRendered) => {\r\n const status = cell.getValue();\r\n if (status) {\r\n if (status.StatusCode == 1) {\r\n return ``;\r\n }\r\n else if (status.StatusCode == 2) {\r\n return ``;\r\n } else if (status.StatusCode == 3) {\r\n return ``; \r\n } else {\r\n return getStatusIcon(status.StatusCode).iconText;\r\n } \r\n }\r\n },\r\n headerSort: false,\r\n cellClick: function (e, cell) {\r\n const status = cell.getValue();\r\n\r\n if (status) {\r\n switch (status.StatusCode) {\r\n case 2:\r\n fp.ShowError.next({\r\n open: true,\r\n MsgEntityID: status.MsgEntityID\r\n });\r\n case 3:\r\n case 4:\r\n case 5:\r\n fp.ShowError.next({\r\n open: true,\r\n MsgEntityID: status.MsgEntityID\r\n });\r\n }\r\n }\r\n }\r\n },\r\n // Selected\r\n {\r\n title: this.assignColumnHeader,\r\n field: 'selected',\r\n headerSort: false,\r\n align: 'center',\r\n width: this.selectColumnWidth,\r\n formatter: 'tickCross',\r\n formatterParams: { crossElement: false },\r\n editor: false,\r\n selectablePersistence: false,\r\n cellClick: (e, cell) => {\r\n const row = cell.getRow();\r\n fp.rowFromAssign = row;\r\n // row.toggleSelect();\r\n const rowData = row.getData();\r\n fp.rowDatafromAssign = rowData;\r\n if (\r\n rowData.GroupID == 12024 &&\r\n rowData.selected == true\r\n ) {\r\n fp.assignAreYouSureMsg = `This will remove Supervisor permissions for ${rowData.UserName}.\r\n Reassign or remove their direct reports assignments prior to this change.`;\r\n this.showAssignAreYouSure = true;\r\n } else if (\r\n rowData.GroupID == 12025 &&\r\n rowData.selected == true\r\n ) {\r\n fp.assignAreYouSureMsg = `This will remove ${rowData.UserName} from the Task Manager role.\r\n If ${rowData.UserName} has tasks assigned,\r\n tasks assigned to ${rowData.UserName} must be removed or re-assigned before Task Manager role is removed.`;\r\n this.showAssignAreYouSure = true;\r\n } else if (\r\n rowData.GroupID == 12030 &&\r\n rowData.selected == true\r\n ) {\r\n fp.assignAreYouSureMsg = `This will remove ${rowData.UserName} as a Subcontractor.\r\n Consultants assigned to ${rowData.UserName} must be removed or re-assigned before Subcontractor role is removed.`;\r\n this.showAssignAreYouSure = true;\r\n } else if (\r\n rowData.GroupID == 1 &&\r\n rowData.selected == true\r\n ) {\r\n fp.assignAreYouSureMsg = `This will remove ${rowData.UserName} from the Administrator role.`;\r\n this.showAssignAreYouSure = true;\r\n } else if (\r\n rowData.GroupID == 12029 &&\r\n rowData.selected == true\r\n ) {\r\n fp.assignAreYouSureMsg = `This will remove ${rowData.UserName} from the Report Admin role.`;\r\n this.showAssignAreYouSure = true;\r\n } else if (\r\n rowData.GroupID == 12023 &&\r\n rowData.selected == true\r\n ) {\r\n fp.assignAreYouSureMsg = `This will remove ${rowData.UserName} from the Process Admin role.`;\r\n this.showAssignAreYouSure = true;\r\n } else if (rowData.selected == true) {\r\n fp.assignAreYouSureMsg = `This will remove ${rowData.UserName} from this group.`;\r\n this.showAssignAreYouSure = true;\r\n }\r\n\r\n if (rowData.selected == false) {\r\n row.update({ selected: true });\r\n const group = fp.groupMembers.find(\r\n x => x.ListID === rowData.ListID\r\n );\r\n const rowIndex = row.getPosition(true);\r\n const allRows = this.tabGroupMembers.getRows();\r\n let selectedCount = 0;\r\n if (fp.selectedGroup.GroupID === 1) {\r\n allRows.forEach(r => {\r\n const data = r.getData();\r\n if (data.IsGroupMember === true) {\r\n selectedCount++;\r\n }\r\n });\r\n }\r\n if (rowData.IsGroupMember !== rowData.selected) {\r\n if (rowData.IsGroupMember === true) {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n if (rowData.GroupID === 1) {\r\n fp.confirmservice\r\n .confirmPromise({\r\n dialogText: `This will provide ${rowData.UserName} access to all features for all users and all contracts.`,\r\n okText: 'Confirm',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n row.update({\r\n IsGroupMember: true,\r\n selected: true\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n })\r\n .catch(() => {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n });\r\n } else {\r\n row.update({\r\n IsGroupMember: true,\r\n selected: true\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n }\r\n } else {\r\n if (fp.rolefromShared === 1) {\r\n if (selectedCount <= 1) {\r\n fp.showAssignAdminPopup = true;\r\n } else {\r\n fp.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure you want to remove this administrator?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n })\r\n .catch(() => {});\r\n }\r\n } else {\r\n row.update({\r\n IsGroupMember: false,\r\n selected: false\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...group,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Alternate
Only',\r\n field: 'IsAltSupervisorOnly',\r\n formatter: 'tickCross',\r\n formatterParams: {\r\n crossElement: false\r\n },\r\n width: this.selectColumnWidth,\r\n editor: false,\r\n headerSort: true,\r\n visible: false,\r\n align: 'center'\r\n },\r\n // 3 Page Specific Columns\r\n {\r\n title: '',\r\n titleFormatter: () =>\r\n document.getElementById('divMemberColumnHeader'),\r\n field: 'UserName',\r\n editor: false,\r\n headerSort: false,\r\n headerFilter: 'input',\r\n minWidth: 200\r\n },\r\n {\r\n title: '',\r\n field: 'assign',\r\n align: 'center',\r\n visible: false,\r\n headerSort: false,\r\n width: 100,\r\n formatter: cell => {\r\n const row = cell.getRow();\r\n const data = row.getData();\r\n if (data.selected === false) {\r\n } else {\r\n if (data.GroupID === 12024) {\r\n return \"Direct Reports\";\r\n }\r\n if (data.GroupID === 12025) {\r\n return \"Tasks\";\r\n }\r\n if (data.GroupID === 12030) {\r\n return \"Consultants\";\r\n }\r\n }\r\n },\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const data = row.getData();\r\n const allRows = this.getRows();\r\n\r\n fp.elementSelected = false;\r\n if (data.GroupID === 12024) {\r\n fp.assignedEleColumnHeader = `Assigned
Direct Report`;\r\n fp.eleSwitchDesc =\r\n 'Display Assigned Direct Reports Only';\r\n fp.elementColumnHeader = `${data.UserName}'s Direct Reports`;\r\n }\r\n if (data.GroupID === 12025) {\r\n fp.assignedEleColumnHeader = `Assigned
Tasks`;\r\n fp.eleSwitchDesc = 'Display Assigned Tasks Only';\r\n fp.elementColumnHeader = `${data.UserName}'s Tasks`;\r\n }\r\n if (data.GroupID === 12030) {\r\n fp.assignedEleColumnHeader = `Assigned
Consultants`;\r\n fp.eleSwitchDesc =\r\n 'Display Assigned Consultants Only';\r\n fp.elementColumnHeader = `${data.UserName}'s Consultants`;\r\n }\r\n fp.supervisorListID = data.ListID;\r\n if (data.GroupID === 12024 || data.GroupID === 12030) {\r\n if (data.selected === true) {\r\n let index = 0;\r\n\r\n for (\r\n let i = 0;\r\n i < fp.groupElementTypes.length;\r\n i++\r\n ) {\r\n if (\r\n fp.groupElementTypes[i]\r\n .GroupElementTypeID === 6\r\n ) {\r\n index = i;\r\n }\r\n }\r\n\r\n if (\r\n fp.groupElementTypes[index]\r\n .GroupElementType === 'Users'\r\n ) {\r\n fp.groupElementTypes[\r\n index\r\n ].GroupElementType = 'Direct Reports';\r\n }\r\n fp.elementsCheckboxFlag = false;\r\n fp.groupElementTypes[index].ListID =\r\n data.ListID;\r\n fp.selectElement.emit(\r\n fp.groupElementTypes[index]\r\n );\r\n }\r\n }\r\n if (data.GroupID === 12025) {\r\n if (data.selected === true) {\r\n let index = 0;\r\n for (\r\n let i = 0;\r\n i < fp.groupElementTypes.length;\r\n i++\r\n ) {\r\n if (\r\n data.GroupID ===\r\n fp.groupElementTypes[i].GroupID\r\n ) {\r\n index = i;\r\n }\r\n }\r\n fp.elementsCheckboxFlag = false;\r\n fp.groupElementTypes[index].ListID =\r\n data.ListID;\r\n fp.selectElement.emit(\r\n fp.groupElementTypes[index]\r\n );\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Assigned
Alt for all Supervisors',\r\n field: 'IsAltForAllSupervisors',\r\n headerSort: false,\r\n align: 'center',\r\n width: 125,\r\n formatter: 'tickCross',\r\n formatterParams: { crossElement: false },\r\n editor: false,\r\n visible: false,\r\n selectablePersistence: false,\r\n cellClick: (e, cell) => {\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n const data = fp.groupMembers.find(\r\n x => x.ListID === rowData.ListID\r\n );\r\n const status = cell.getValue();\r\n if (rowData.IsGroupMember === true) {\r\n if (rowData.IsAltForAllSupervisors == true) {\r\n fp.confirmservice\r\n .confirmPromise({\r\n headerText: 'Are you sure?',\r\n dialogText:\r\n 'This will remove Alternate Supervisor access.',\r\n okText: 'Ok',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n if (status === true) {\r\n row.update({\r\n IsAltForAllSupervisors: false\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n row.update({\r\n IsAltForAllSupervisors: true\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n })\r\n .catch(() => {});\r\n } else {\r\n if (status === true) {\r\n row.update({\r\n IsAltForAllSupervisors: false\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n row.update({\r\n IsAltForAllSupervisors: true\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n }\r\n } else {\r\n // Do nothing. Cell should be protected.\r\n }\r\n }\r\n },\r\n {\r\n title: '',\r\n field: 'alt',\r\n align: 'center',\r\n visible: false,\r\n headerSort: false,\r\n width: 100,\r\n formatter: cell => {\r\n const row = cell.getRow();\r\n const data = row.getData();\r\n if (data.selected === false) {\r\n } else {\r\n if (data.GroupID === 12024) {\r\n if (\r\n data.IsAltSupervisorOnly == false ||\r\n data.IsAltSupervisorOnly == null\r\n ) {\r\n return \"My Alternates\";\r\n }\r\n }\r\n }\r\n },\r\n cellClick: function (e, cell) {\r\n e.stopPropagation();\r\n const row = cell.getRow();\r\n row.toggleSelect();\r\n const data = row.getData();\r\n const allRows = this.getRows();\r\n if (\r\n data.IsAltSupervisorOnly == false ||\r\n data.IsAltSupervisorOnly == null\r\n ) {\r\n fp.assignedEleColumnHeader = `Assigned
Alternate`;\r\n fp.eleSwitchDesc =\r\n 'Display Assigned Alternates Only';\r\n fp.elementSelected = false;\r\n fp.supervisorListID = data.ListID;\r\n if (data.GroupID === 12024) {\r\n if (data.selected === true) {\r\n let index = 0;\r\n for (\r\n let i = 0;\r\n i < fp.groupElementTypes.length;\r\n i++\r\n ) {\r\n if (\r\n fp.groupElementTypes[i]\r\n .GroupElementTypeID === 9\r\n ) {\r\n index = i;\r\n }\r\n }\r\n fp.elementColumnHeader = `${data.UserName}'s ${fp.groupElementTypes[index].GroupElementType}s`;\r\n fp.groupElementTypes[index].ListID =\r\n data.ListID;\r\n fp.selectElement.emit(\r\n fp.groupElementTypes[index]\r\n );\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: '',\r\n field: 'altFor',\r\n align: 'center',\r\n visible: false,\r\n headerSort: false,\r\n width: 100,\r\n formatter: cell => {\r\n const row = cell.getRow();\r\n const data = row.getData();\r\n if (data.selected === false) {\r\n } else {\r\n if (data.GroupID === 12024) {\r\n return \"Alternate For\";\r\n }\r\n }\r\n },\r\n cellClick: function (e, cell) {\r\n e.stopPropagation();\r\n const row = cell.getRow();\r\n row.toggleSelect();\r\n const data = row.getData();\r\n const allRows = this.getRows();\r\n fp.assignedEleColumnHeader = `Assigned
Alternate For`;\r\n fp.eleSwitchDesc = 'Display Assigned Alternates Only';\r\n fp.elementSelected = false;\r\n fp.supervisorListID = data.ListID;\r\n if (data.GroupID === 12024) {\r\n if (data.selected === true) {\r\n let altForIndex = 0;\r\n for (\r\n let i = 0;\r\n i < fp.groupElementTypes.length;\r\n i++\r\n ) {\r\n if (\r\n fp.groupElementTypes[i]\r\n .GroupElementTypeID === 10\r\n ) {\r\n altForIndex = i;\r\n }\r\n }\r\n fp.elementColumnHeader = `${data.UserName} is an ${fp.groupElementTypes[altForIndex].GroupElementType}`;\r\n fp.groupElementTypes[altForIndex].ListID =\r\n data.ListID;\r\n fp.selectElement.emit(\r\n fp.groupElementTypes[altForIndex]\r\n );\r\n }\r\n }\r\n // this.createTabulatorForElements(this, this.groupElements, []);\r\n }\r\n },\r\n {\r\n title: 'Assigned
SuperUser',\r\n field: 'AllowSuperUser',\r\n formatter: 'tickCross',\r\n headerSort: false,\r\n formatterParams: { crossElement: false },\r\n width: fp.selectColumnWidth,\r\n align: 'center',\r\n visible: false,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n\r\n const data = fp.groupMembers.find(\r\n x => x.ListID === rowData.ListID\r\n );\r\n const status = cell.getValue();\r\n if (rowData.IsGroupMember === true) {\r\n if (rowData.AllowSuperUser == true) {\r\n fp.confirmservice\r\n .confirmPromise({\r\n headerText: 'Are you sure?',\r\n dialogText:\r\n 'This will remove Super User permissions.',\r\n okText: 'Ok',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n if (status === true) {\r\n row.update({\r\n AllowSuperUser: false\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n row.update({\r\n AllowSuperUser: true\r\n });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n })\r\n .catch(() => {});\r\n } else {\r\n if (status === true) {\r\n row.update({ AllowSuperUser: false });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n row.update({ AllowSuperUser: true });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n }\r\n } else {\r\n // Do nothing. Cell should be protected.\r\n }\r\n }\r\n },\r\n {\r\n title: 'Access to
Authorizations',\r\n field: 'Allowauths',\r\n formatter: 'tickCross',\r\n headerSort: false,\r\n formatterParams: { crossElement: false },\r\n width: fp.selectColumnWidth,\r\n align: 'center',\r\n visible: false,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n const data = fp.groupMembers.find(\r\n x => x.ListID === rowData.ListID\r\n );\r\n const status = cell.getValue();\r\n if (rowData.IsGroupMember === true) {\r\n if (rowData.Allowauths == true) {\r\n fp.confirmservice\r\n .confirmPromise({\r\n headerText: 'Are you sure?',\r\n dialogText:\r\n 'This will remove Access to Authorizations.',\r\n okText: 'Ok',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n if (status === true) {\r\n row.update({ Allowauths: false });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n row.update({ Allowauths: true });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n })\r\n .catch(() => {});\r\n } else {\r\n if (status === true) {\r\n row.update({ Allowauths: false });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n } else {\r\n row.update({ Allowauths: true });\r\n fp.memberRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n }\r\n } else {\r\n // Do nothing. Cell should be protected.\r\n }\r\n }\r\n },\r\n {\r\n title: '',\r\n field: 'Row_Version',\r\n visible: false\r\n }\r\n ],\r\n rowSelected: function (row) {\r\n fp.membersRowSelection(row, this);\r\n },\r\n rowDeselected: function (row) {},\r\n cellEdited: this.tabService.cellEdited,\r\n cellEditing: this.tabService.cellEditing,\r\n cellClick: this.tabService.cellMouseHandler,\r\n cellTap: this.tabService.cellMouseHandler,\r\n rowClick: this.tabService.rowMouseHandler,\r\n rowTap: this.tabService.rowMouseHandler\r\n });\r\n }\r\n\r\n assignAllElementsClicked() {\r\n this.assignAll = true;\r\n this.unassignAll = false;\r\n const rows = this.tabElements.getRows(true);\r\n let numOfNotSelectedRows = 0;\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n if (data.selected === false) {\r\n numOfNotSelectedRows++;\r\n }\r\n });\r\n if (numOfNotSelectedRows > 0) {\r\n if (this.process.ProcessID == 140) {\r\n this.selectNotificationText = `\"Assign All\" will impact all assignments, are you sure?`;\r\n } else {\r\n this.selectNotificationText = `\"Assign All\" will \"REPLACE ALL\" existing assignments. Are you sure?`;\r\n }\r\n\r\n $('#divSelectAllElements').fadeIn(500);\r\n }\r\n }\r\n\r\n unassignAllElementsClicked() {\r\n this.assignAll = false;\r\n this.unassignAll = true;\r\n const rows = this.tabElements.getRows(true);\r\n let numOfSelectedRows = 0;\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n if (data.selected === true) {\r\n numOfSelectedRows++;\r\n this.rowsToUnassign.push(row);\r\n }\r\n });\r\n if (numOfSelectedRows > 0) {\r\n if (this.process.ProcessID == 140) {\r\n this.selectNotificationText = `\"Unassign All\" will impact all assignments, are you sure?`;\r\n } else {\r\n this.selectNotificationText = `\"Unassign All\" will \"REPLACE ALL\" existing assignments. Are you sure?`;\r\n }\r\n $('#divSelectAllElements').fadeIn(500);\r\n } else {\r\n }\r\n }\r\n\r\n assignAllMembersClicked() {\r\n this.assignAll = true;\r\n const rows = this.tabGroupMembers.getRows(true);\r\n let numOfNotSelectedRows = 0;\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n if (data.selected === false) {\r\n numOfNotSelectedRows++;\r\n }\r\n });\r\n if (numOfNotSelectedRows > 0) {\r\n this.selectNotificationText = `\"Assign All\" will impact all assignments, are you sure?`;\r\n $('#divSelectAllMembers').fadeIn(500);\r\n }\r\n }\r\n\r\n unassignAllMembersClicked() {\r\n this.assignAll = false;\r\n const rows = this.tabGroupMembers.getRows(true);\r\n let numOfSelectedRows = 0;\r\n rows.forEach(row => {\r\n const data = row.getData();\r\n if (data.selected === true) {\r\n numOfSelectedRows++;\r\n }\r\n });\r\n if (numOfSelectedRows > 0) {\r\n this.selectNotificationText = `\"Unassign All\" will impact all assignments, are you sure?`;\r\n $('#divSelectAllMembers').fadeIn(500);\r\n } else {\r\n }\r\n }\r\n\r\n private createTabulatorForElements(\r\n fp: GroupsPresentersComponent,\r\n elements: Array,\r\n errors: Array\r\n ) {\r\n const headerClicked = false;\r\n\r\n this.tabElements = new Tabulator('#tabElements', {\r\n placeholder: 'No Data Available',\r\n height: '45vh',\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n // visible: fp.HasElements,\r\n data: elements,\r\n columns: [\r\n {\r\n title: 'Id',\r\n field: 'GroupElementID',\r\n frozen: true,\r\n visible: false\r\n },\r\n\r\n {\r\n title: this.assignedEleColumnHeader,\r\n field: 'selected',\r\n headerSort: false,\r\n editor: false,\r\n align: 'center',\r\n width: this.selectColumnWidth,\r\n formatter: 'tickCross',\r\n formatterParams: { crossElement: false },\r\n selectablePersistence: false,\r\n cellClick: (e, cell) => {\r\n const row = cell.getRow();\r\n row.toggleSelect();\r\n }\r\n },\r\n // 3 Page Specific Columns\r\n {\r\n title: '',\r\n titleFormatter: () =>\r\n document.getElementById('divElementColumnHeader'),\r\n field: 'ElementName',\r\n cssClass: 'tabulator-cell-readonly disabled',\r\n editor: false,\r\n headerFilter: 'input',\r\n minWidth: 200\r\n },\r\n {\r\n title: '',\r\n field: 'Row_Version',\r\n visible: false\r\n }\r\n ],\r\n rowSelected: function (row) {\r\n row.update({ selected: true });\r\n\r\n const rowData = row.getData();\r\n const rowIndex = row.getPosition(true);\r\n\r\n const data = fp.groupElements.find(\r\n x => x.GroupElementID === rowData.GroupElementID\r\n );\r\n\r\n if (rowData.IsGroupElement !== rowData.selected) {\r\n if (rowData.IsGroupElement === true) {\r\n row.update({\r\n IsGroupElement: false,\r\n selected: false,\r\n ListID: fp.supervisorListID\r\n });\r\n } else {\r\n row.update({\r\n IsGroupElement: true,\r\n selected: true,\r\n ListID: fp.supervisorListID\r\n });\r\n }\r\n\r\n if (fp.rolefromShared === 12030) {\r\n if (rowData.ElementName.includes('(')) {\r\n // var elementName = rowData.ElementName.split('(');\r\n // var name = elementName[0];\r\n fp.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure you want to remove ' +\r\n rowData.ElementName +\r\n ' from current assignment and add them to the new subcontractor group?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n IsGroupElement: true,\r\n selected: true\r\n });\r\n fp.elementRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n })\r\n .catch(() => {\r\n row.update({\r\n IsGroupElement: false,\r\n selected: false\r\n });\r\n });\r\n } else {\r\n fp.elementRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n } else {\r\n fp.elementRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n } else {\r\n row.update({\r\n IsGroupElement: false,\r\n selected: false,\r\n ListID: fp.supervisorListID\r\n });\r\n fp.elementRowSelectUpdate.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n }\r\n\r\n fp.LoadMembers.next({ GroupID: data.GroupID, IsGroupMember: null });\r\n },\r\n rowDeselected: function (row) {\r\n row.update({ selected: false });\r\n },\r\n cellEdited: this.tabService.cellEdited,\r\n cellEditing: this.tabService.cellEditing,\r\n cellClick: this.tabService.cellMouseHandler,\r\n cellTap: this.tabService.cellMouseHandler,\r\n rowClick: this.tabService.rowMouseHandler,\r\n rowTap: this.tabService.rowMouseHandler\r\n });\r\n }\r\n\r\n public onToggleShowSelected(e: MatSlideToggleChange) {\r\n this.log.debug({\r\n type: 'FixedPriceListComponent:onToggleShowSelected',\r\n e\r\n });\r\n\r\n if (e.checked === true) {\r\n this.showSelectedRowsOnly = true;\r\n this.filterdata();\r\n } else {\r\n this.showSelectedRowsOnly = false;\r\n this.tabGroupMembers.clearFilter();\r\n this.tabElements.clearFilter();\r\n }\r\n }\r\n public onToggleShowSelectedEle(e: MatSlideToggleChange) {\r\n this.log.debug({\r\n type: 'FixedPriceListComponent:onToggleShowSelectedEle',\r\n e\r\n });\r\n\r\n if (e.checked === true) {\r\n this.showSelectedEleRowsOnly = true;\r\n this.filterEleData();\r\n } else {\r\n this.showSelectedEleRowsOnly = false;\r\n this.tabElements.clearFilter();\r\n }\r\n }\r\n\r\n public checkIndeterminate(\r\n tab: any,\r\n cbxColumnHeader: any,\r\n list: Array,\r\n count: number\r\n ) {\r\n if (this.groupMembers.length > 0 || this.groupElements.length > 0) {\r\n if (tab) {\r\n const rows = tab.getRows(true);\r\n const selectedRows: Array = [];\r\n rows.forEach(row => {\r\n if (row._row.data.selected === true) {\r\n selectedRows.push(row);\r\n }\r\n });\r\n\r\n cbxColumnHeader.checked = rows.reduce(\r\n (a, c) => a && c.getData().selected,\r\n true\r\n );\r\n cbxColumnHeader.indeterminate =\r\n selectedRows.length > 0 &&\r\n !rows.reduce((a, c) => a && c.getData().selected, true);\r\n }\r\n }\r\n }\r\n\r\n filterdata() {\r\n this.tabGroupMembers.clearFilter();\r\n\r\n const membersFiltersToApply: Array<{\r\n field: string;\r\n type: string;\r\n value: any;\r\n }> = [];\r\n\r\n this.groupMembers.forEach(mem => {\r\n membersFiltersToApply.push({\r\n field: 'selected',\r\n type: '=',\r\n value: true\r\n });\r\n });\r\n\r\n this.tabGroupMembers.setFilter(membersFiltersToApply);\r\n }\r\n\r\n filterEleData() {\r\n this.tabElements.clearFilter();\r\n\r\n const elementsFiltersToApply: Array<{\r\n field: string;\r\n type: string;\r\n value: any;\r\n }> = [];\r\n\r\n this.groupElements.forEach(ele => {\r\n elementsFiltersToApply.push({\r\n field: 'selected',\r\n type: '=',\r\n value: true\r\n });\r\n });\r\n\r\n this.tabElements.setFilter(elementsFiltersToApply);\r\n }\r\n\r\n public clearFilters() {\r\n this.createTabulatorForElements(this, [], []);\r\n this.filterFormGroup.controls['groupTypes'].reset();\r\n this.filterFormGroup.controls['elementTypes'].reset();\r\n this.filterFormGroup.controls['groups'].reset();\r\n this.purpose = '';\r\n }\r\n}\r\n","export * from './groups-presenters.component';\r\nexport * from './groups-add';\r\n","import { Action } from '@ngrx/store';\r\nimport { IGroup, IGroupElement, IGroupMember, IGroupType, IGroupElementType } from '../IGroups';\r\nimport { ITask } from '../../lookups/ITask';\r\nimport { IGroupResponse, IGroupMemberResponse, IGroupElementResponse, IGroupDeleteResponse } from '../IGroupsResponse';\r\n\r\nexport enum ActionTypes {\r\n LoadGroups = '[groups] Load Groups',\r\n LoadGroupMembers = '[groups] Load Group Members',\r\n LoadGroupElements = '[groups] Load Group Elements',\r\n LoadGroupElementTypes = '[groups] Load Group Element Types',\r\n LoadGroupTypes = '[groups] Load Group Types',\r\n SetGroups = '[groups] Set Groups',\r\n SetGroupMembers = '[groups] Set Group Members',\r\n SetGroupElements = '[groups] Set Group Elements',\r\n SetGroupElementTypes = '[groups] Set Group Element Types',\r\n SetGroupTypes = '[groups] Set Group Types',\r\n UpdateGroups = '[groups] Update Groups',\r\n UpdateGroupMembers = '[groups] Update Group Members',\r\n UpdateGroupElements = '[groups] Update Group Elements',\r\n UpdateGroupsSuccess = '[groups] Update Groups Success',\r\n UpdateGroupMembersSuccess = '[groups] Update Group Members Success',\r\n UpdateGroupElementsSuccess = '[groups] Update Group Elements Success',\r\n DeleteGroup = '[groups] Delete Group',\r\n DeleteGroupSuccess = '[groups] Delete Group Success',\r\n Reset = '[groups] Reset'\r\n}\r\n\r\nexport class Reset implements Action {\r\n readonly type = ActionTypes.Reset;\r\n}\r\n\r\nexport class LoadGroups implements Action {\r\n constructor(public payload?: {\r\n Categoryid: string\r\n }) {\r\n }\r\n readonly type = ActionTypes.LoadGroups;\r\n}\r\n\r\nexport class LoadGroupMembers implements Action {\r\n constructor(public payload?: {\r\n GroupID: number,\r\n IsGroupMember?: boolean\r\n }) {\r\n }\r\n readonly type = ActionTypes.LoadGroupMembers;\r\n}\r\n\r\nexport class LoadGroupElementTypes implements Action {\r\n constructor(public payload?: {\r\n GroupID: number\r\n }) { }\r\n\r\n readonly type = ActionTypes.LoadGroupElementTypes;\r\n}\r\n\r\nexport class LoadGroupElements implements Action {\r\n constructor(public payload?: {\r\n GroupID: number,\r\n GroupElementTypeID: number,\r\n ListID: string,\r\n }) {\r\n }\r\n readonly type = ActionTypes.LoadGroupElements;\r\n}\r\n\r\nexport class LoadGroupTypes implements Action {\r\n constructor() { }\r\n readonly type = ActionTypes.LoadGroupTypes;\r\n}\r\n\r\nexport class SetGroups implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetGroups;\r\n}\r\n\r\nexport class SetGroupMembers implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetGroupMembers;\r\n}\r\n\r\nexport class SetGroupElements implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetGroupElements;\r\n}\r\n\r\nexport class SetGroupElementTypes implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetGroupElementTypes;\r\n}\r\n\r\nexport class SetGroupTypes implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetGroupTypes;\r\n}\r\n\r\nexport class UpdateGroups implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.UpdateGroups;\r\n}\r\n\r\nexport class UpdateGroupMembers implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.UpdateGroupMembers;\r\n}\r\n\r\nexport class UpdateGroupElements implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.UpdateGroupElements;\r\n}\r\n\r\nexport class UpdateGroupsSuccess implements Action {\r\n constructor(public payload: IGroupResponse) { }\r\n readonly type = ActionTypes.UpdateGroupsSuccess;\r\n}\r\n\r\nexport class UpdateGroupMembersSuccess implements Action {\r\n constructor(public payload: IGroupMemberResponse) { }\r\n readonly type = ActionTypes.UpdateGroupMembersSuccess;\r\n}\r\n\r\nexport class UpdateGroupElementsSuccess implements Action {\r\n constructor(public payload: IGroupElementResponse) { }\r\n readonly type = ActionTypes.UpdateGroupElementsSuccess;\r\n}\r\n\r\nexport class DeleteGroup implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.DeleteGroup;\r\n}\r\nexport class DeleteGroupSuccess implements Action {\r\n constructor(public payload: IGroupDeleteResponse) { }\r\n readonly type = ActionTypes.DeleteGroupSuccess;\r\n}\r\n\r\nexport type ActionsUnion = LoadGroups\r\n | LoadGroupMembers | LoadGroupElements | LoadGroupElementTypes | LoadGroupTypes | SetGroups | SetGroupMembers | SetGroupElements | SetGroupElementTypes\r\n | SetGroupTypes | UpdateGroups | UpdateGroupMembers | UpdateGroupElements | UpdateGroupsSuccess | UpdateGroupMembersSuccess | UpdateGroupElementsSuccess | DeleteGroup | DeleteGroupSuccess | Reset\r\n ;\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport * as fromGroups from './actions';\r\nimport { map, catchError, flatMap, tap, switchMap } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Store, select } from '@ngrx/store';\r\nimport * as fromLookups from '../../lookups';\r\nimport { GroupsService } from '../groups.service';\r\nimport {\r\n IStatusMessage,\r\n ResponseStatus,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Injectable()\r\nexport class GroupsEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private lookups: Store,\r\n @Inject(GroupsService) private service: GroupsService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n @Effect() LoadGroups$ = this.actions$.pipe(\r\n ofType(fromGroups.ActionTypes.LoadGroups),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'GroupsEffects:LoadGroups$:filtered',\r\n action\r\n })\r\n ),\r\n // , withLatestFrom(this.lookups.pipe(select(fromLookups.getTasksLookup)))\r\n switchMap(x =>\r\n this.service.postGroup(x.payload).pipe(\r\n map(exp => new fromGroups.SetGroups(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadGroupMembers$ = this.actions$.pipe(\r\n ofType(\r\n fromGroups.ActionTypes.LoadGroupMembers\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'GroupsEffects:LoadGroupMembers$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.postGroupMember(x.payload).pipe(\r\n flatMap(mem => [\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...mem\r\n .filter(\r\n m =>\r\n m.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(m => m.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n // new fromShared.Errors.RemoveErrors(\r\n // mem\r\n // .filter(\r\n // i =>\r\n // i.Status.StatusCode ===\r\n // ResponseStatus.Success\r\n // )\r\n // .map(i => i.GroupID.toString())\r\n // ),\r\n new fromGroups.SetGroupMembers(mem)\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadGroupElements$ = this.actions$.pipe(\r\n ofType(\r\n fromGroups.ActionTypes.LoadGroupElements\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'GroupsEffects:LoadGroupElements$:filtered',\r\n action\r\n })\r\n ),\r\n // , withLatestFrom(this.lookups.pipe(select(fromLookups.getTasksLookup)))\r\n switchMap(x =>\r\n this.service.postGroupElement(x.payload).pipe(\r\n map(exp => new fromGroups.SetGroupElements(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadGroupTypes$ = this.actions$.pipe(\r\n ofType(\r\n fromGroups.ActionTypes.LoadGroupTypes\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'GroupsEffects:LoadGroupTypess$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(() =>\r\n this.service.getGroupType().pipe(\r\n map(x => new fromGroups.SetGroupTypes(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadGroupElementTypes$ = this.actions$.pipe(\r\n ofType(\r\n fromGroups.ActionTypes.LoadGroupElementTypes\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'GroupsEffects:LoadGroupElementTypes$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.postGroupElementType(x.payload).pipe(\r\n map(exp => new fromGroups.SetGroupElementTypes(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() UpdateGroups$ = this.actions$.pipe(\r\n ofType(fromGroups.ActionTypes.UpdateGroups),\r\n tap(x => this.log.verbose({ type: 'GroupsEffects:UpdateGroups$', x })),\r\n switchMap(a =>\r\n this.service.putGroup([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromGroups.UpdateGroupsSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x => x.Status.StatusCode === ResponseStatus.Success\r\n ).map(x => x.GroupID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() UpdateGroupMembers$ = this.actions$.pipe(\r\n ofType(\r\n fromGroups.ActionTypes.UpdateGroupMembers\r\n ),\r\n tap(x =>\r\n this.log.verbose({ type: 'GroupsEffects:UpdateGroupMembers$', x })\r\n ),\r\n switchMap(a =>\r\n this.service.putGroupMember([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromGroups.UpdateGroupMembersSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x => x.Status.StatusCode === ResponseStatus.Success\r\n ).map(x => x.ListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n //new fromGroups.LoadGroupMembers({GroupID: a.payload[0].GroupID})\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() UpdateGroupElements$ = this.actions$.pipe(\r\n ofType(\r\n fromGroups.ActionTypes.UpdateGroupElements\r\n ),\r\n tap(x =>\r\n this.log.verbose({ type: 'GroupsEffects:UpdateGroupElements$', x })\r\n ),\r\n switchMap(a =>\r\n this.service.putGroupElement([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromGroups.UpdateGroupElementsSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x => x.Status.StatusCode === ResponseStatus.Success\r\n ).map(x => x.GroupElementID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n //new fromGroups.LoadGroupElements({GroupID: a.payload[0].GroupID, GroupElementTypeID: a.payload[0].GroupElementTypeID, ListID: a.payload[0].ListID})\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() DeleteGroup$ = this.actions$.pipe(\r\n ofType(fromGroups.ActionTypes.DeleteGroup),\r\n switchMap(a =>\r\n this.service.deleteGroup([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromGroups.DeleteGroupSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x => x.Status.StatusCode === ResponseStatus.Success\r\n ).map(x => x.EntityID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n}\r\n","export * from './actions';\r\nexport * from './reducer';\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport {\r\n IGroup,\r\n IGroupElement,\r\n IGroupMember,\r\n IGroupType,\r\n IGroupElementType\r\n} from '../IGroups';\r\nimport * as actions from './actions';\r\nimport { ResponseStatus, DisplayMessageMinimum } from '../../shared';\r\n\r\nexport interface State {\r\n groups: Array;\r\n groupMembers: Array;\r\n groupElements: Array;\r\n groupElementTypes: Array;\r\n groupTypes: Array;\r\n errors: Array;\r\n}\r\n\r\nexport const initialState: State = {\r\n groups: [],\r\n groupMembers: [],\r\n groupElements: [],\r\n groupElementTypes: [],\r\n groupTypes: [],\r\n errors: []\r\n};\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: actions.ActionsUnion\r\n): State {\r\n switch (action.type) {\r\n case actions.ActionTypes.Reset:\r\n return initialState;\r\n case actions.ActionTypes.SetGroups:\r\n return {\r\n ...state,\r\n groups: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetGroupMembers:\r\n return {\r\n ...state,\r\n groupMembers: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetGroupElements:\r\n return {\r\n ...state,\r\n groupElements: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetGroupTypes:\r\n return {\r\n ...state,\r\n groupTypes: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetGroupElementTypes:\r\n return {\r\n ...state,\r\n groupElementTypes: [...action.payload]\r\n };\r\n case actions.ActionTypes.UpdateGroupsSuccess:\r\n const gresp = action.payload;\r\n return {\r\n ...state,\r\n groups: state.groups\r\n // problem here when the dftid for multiple rows is -1\r\n .map(\r\n x =>\r\n gresp.Items.find(y => y.GroupID === x.GroupID) || {\r\n ...x\r\n }\r\n ) // update any existing\r\n .concat(\r\n gresp.Items.filter(\r\n x =>\r\n !state.groups.find(y => y.GroupID === x.GroupID)\r\n )\r\n ), // add any new\r\n errors: gresp.ErrorMessages\r\n };\r\n case actions.ActionTypes.UpdateGroupMembersSuccess:\r\n const gmresp = action.payload;\r\n return {\r\n ...state,\r\n groupMembers: state.groupMembers\r\n // problem here when the dftid for multiple rows is -1\r\n .map(\r\n x =>\r\n gmresp.Items.find(y => y.ListID === x.ListID) || {\r\n ...x\r\n }\r\n ) // update any existing\r\n .concat(\r\n gmresp.Items.filter(\r\n x =>\r\n !state.groupMembers.find(\r\n y => y.ListID === x.ListID\r\n )\r\n )\r\n ), // add any new\r\n errors: gmresp.ErrorMessages\r\n };\r\n case actions.ActionTypes.UpdateGroupElementsSuccess:\r\n const geresp = action.payload;\r\n return {\r\n ...state,\r\n groupElements: state.groupElements\r\n // problem here when the dftid for multiple rows is -1\r\n .map(\r\n x =>\r\n geresp.Items.find(\r\n y => y.GroupElementID === x.GroupElementID\r\n ) || {\r\n ...x,\r\n Status: {\r\n StatusCode: 0,\r\n Message: undefined,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n }\r\n }\r\n ) // update any existing\r\n .concat(\r\n geresp.Items.filter(\r\n x =>\r\n !state.groupElements.find(\r\n y => y.GroupElementID === x.GroupElementID\r\n )\r\n )\r\n ), // add any new\r\n errors: geresp.ErrorMessages\r\n };\r\n case actions.ActionTypes.DeleteGroupSuccess:\r\n const deleresp = action.payload;\r\n return {\r\n ...state,\r\n groups: state.groups, // need to remove the deleted group from the state\r\n errors: [\r\n ...deleresp.ErrorMessages,\r\n ...deleresp.Items.filter(\r\n x => x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status.Message)\r\n ]\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\nconst StateFeatureSelector = createFeatureSelector('groups');\r\n\r\nexport const getGroups = createSelector(StateFeatureSelector, x => x.groups);\r\nexport const getGroupMembers = createSelector(\r\n StateFeatureSelector,\r\n x => x.groupMembers\r\n);\r\nexport const getGroupElements = createSelector(\r\n StateFeatureSelector,\r\n x => x.groupElements\r\n);\r\nexport const getGroupElementTypes = createSelector(\r\n StateFeatureSelector,\r\n x => x.groupElementTypes\r\n);\r\nexport const getGroupTypes = createSelector(\r\n StateFeatureSelector,\r\n x => x.groupTypes\r\n);\r\nexport const getGroupsErrors = createSelector(\r\n StateFeatureSelector,\r\n x => x.errors\r\n);\r\n","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { Observable, concat, combineLatest, merge } from 'rxjs';\r\nimport * as fromUser from '../../user-info';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { ProcessCategory } from '../ProcessCategory.model';\r\nimport { reduce, map, withLatestFrom, mergeAll } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ef-help-desk-feature',\r\n templateUrl: './help-desk-feature.component.html',\r\n styleUrls: ['./help-desk-feature.component.scss']\r\n})\r\nexport class HelpDeskFeatureComponent implements OnInit, AfterViewInit {\r\n public processesCategories$: Observable>;\r\n constructor(private userStore: Store) {}\r\n\r\n ngOnInit() {\r\n this.setupObservables();\r\n }\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n setupObservables() {\r\n const userCategories = this.userStore.pipe(\r\n select(fromUser.getUserProcessesMain),\r\n map(processes =>\r\n processes.map(\r\n process =>\r\n ({\r\n CategoryId: 0,\r\n CategoryName: 'General',\r\n ...process\r\n } as ProcessCategory)\r\n )\r\n )\r\n );\r\n const mainCategories = this.userStore.pipe(\r\n select(fromUser.getUserProcessCategories),\r\n map(categories =>\r\n categories.reduce(\r\n (a, c) =>\r\n a.concat(\r\n c.UserProcesses.map(p => ({\r\n CategoryId: c.CategoryId,\r\n CategoryName: c.CategoryName,\r\n ...p\r\n }))\r\n ),\r\n [] as ProcessCategory[]\r\n )\r\n )\r\n );\r\n this.processesCategories$ = userCategories.pipe(\r\n withLatestFrom(mainCategories),\r\n map(([x, y]) => x.concat(y))\r\n );\r\n }\r\n}\r\n","export * from './help-desk-feature.component';\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HelpDeskFeatureComponent } from './feature/help-desk-feature.component';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { HelpDeskRoute } from './help-desk.route';\r\nimport { HelpDeskComponent } from './presenters';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [HelpDeskFeatureComponent, HelpDeskComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [HelpDeskRoute]\r\n })\r\n\r\n ]\r\n})\r\nexport class HelpDeskModule { }\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\nimport * as fromHelpDesk from './feature';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const HelpDeskRoute: Ng2StateDeclaration = {\r\n // name: 'HelpDesk.**'\r\n name: 'helpdesk',\r\n url: '/helpdesk',\r\n // , loadChildren: () => import('./leave-request.module').then(r => r.HelpDeskModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n component: fromHelpDesk.HelpDeskFeatureComponent\r\n};\r\n","import {\r\n Component,\r\n OnInit,\r\n ChangeDetectorRef,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ProcessCategory } from '../ProcessCategory.model';\r\nimport { SortEvent, Table } from '../../shared/efaact-primeng.module';\r\n\r\n@Component({\r\n selector: 'ef-help-desk',\r\n templateUrl: './help-desk.component.html',\r\n styleUrls: ['./help-desk.component.scss']\r\n})\r\nexport class HelpDeskComponent implements OnInit {\r\n constructor(\r\n private log: LoggingService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n public get processesCategories(): Array {\r\n return this._processesCategories;\r\n }\r\n @Input() public set processesCategories(value: Array) {\r\n this._processesCategories = value;\r\n this.updateRowGroupMetaData(value);\r\n }\r\n rowGroupMetadata: any;\r\n @ViewChild('dtGuide') guideTable: Table;\r\n\r\n private _processesCategories: Array;\r\n hasDocumentation() {\r\n return this._processesCategories.some(x => x.UrlDocumentation);\r\n }\r\n hasTraining() {\r\n return this._processesCategories.some(x => x.UrlTraining);\r\n }\r\n hasDemo() {\r\n return this._processesCategories.some(x => x.UrlDemo);\r\n }\r\n\r\n ngOnInit() {}\r\n customSort($event: SortEvent) {\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:customSort',\r\n $event\r\n });\r\n $event.data.sort((a: ProcessCategory, b: ProcessCategory) => {\r\n const result = a.CategoryName.toLocaleLowerCase().localeCompare(\r\n b.CategoryName.toLocaleLowerCase()\r\n );\r\n return (\r\n (result === 0\r\n ? a[$event.field]\r\n .toLocaleLowerCase()\r\n .localeCompare(b[$event.field].toLocaleLowerCase())\r\n : result) * $event.order\r\n );\r\n });\r\n }\r\n onSort($event) {\r\n this.log.verbose({\r\n type: 'HelpDeskComponent:onSort',\r\n $event\r\n });\r\n setTimeout(() => {\r\n this.onUpdateRowGroupMetaData(\r\n this.guideTable.filteredValue || this.guideTable.value\r\n );\r\n }, 50);\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'HelpDeskComponent:onFilter',\r\n $event\r\n });\r\n this.onUpdateRowGroupMetaData($event.filteredValue);\r\n }\r\n\r\n onUpdateRowGroupMetaData(data) {\r\n this.updateRowGroupMetaData(data);\r\n }\r\n\r\n updateRowGroupMetaData(data) {\r\n this.rowGroupMetadata = {};\r\n if (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n const rowData = data[i];\r\n const category = rowData.CategoryId;\r\n if (i === 0) {\r\n this.rowGroupMetadata[category] = { index: 0, size: 1 };\r\n } else {\r\n const previousRowData = data[i - 1];\r\n const previousRowGroup = previousRowData.CategoryId;\r\n if (category === previousRowGroup) {\r\n this.rowGroupMetadata[category].size++;\r\n } else {\r\n this.rowGroupMetadata[category] = { index: i, size: 1 };\r\n }\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'HelpDeskComponent:updateRowGroupMetaData',\r\n data,\r\n rowGroupMetadata: this.rowGroupMetadata\r\n });\r\n this.cdRef.markForCheck();\r\n }\r\n }\r\n}\r\n","export * from './help-desk.component';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { ImportService } from '../import.service';\r\nimport * as fromShared from '../../shared';\r\nimport { Observable } from 'rxjs';\r\nimport { Message } from '../../shared';\r\nimport { getSettingBooleanValue } from '../../company-setting';\r\nimport * as fromSettings from '../../company-setting';\r\n\r\n@Component({\r\n selector: 'ef-import-container',\r\n templateUrl: './import-container.component.html',\r\n styleUrls: ['./import-container.component.scss']\r\n})\r\nexport class ImportContainerComponent implements OnInit {\r\n constructor(\r\n private service: ImportService,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n public IsLoading = false;\r\n public message = '';\r\n public messages: Message[] = [];\r\n process$: Observable;\r\n public includeInactive$: Observable;\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.includeInactive$ = this.store.pipe(\r\n select(getSettingBooleanValue('GovConPayImportInactiveEmployees'))\r\n );\r\n //dispatch\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'GovConPayImportInactiveEmployees'\r\n })\r\n );\r\n }\r\n onStartImport(includeInactive: boolean): void {\r\n //log\r\n this.log.verbose({\r\n type: 'ImportContainerComponent',\r\n message: 'onStartImport',\r\n includeInactive\r\n });\r\n // call the import API\r\n this.IsLoading = true;\r\n this.message = 'Importing...';\r\n this.messages = [\r\n {\r\n severity: 'info',\r\n summary: 'Importing...'\r\n }\r\n ];\r\n this.service\r\n .LoadData(includeInactive)\r\n .then(() => {\r\n this.message = 'Import Complete';\r\n this.messages = [\r\n {\r\n severity: 'success',\r\n summary: 'Import Complete'\r\n }\r\n ];\r\n this.store.dispatch(\r\n fromSettings.putCompanySettings({\r\n settings: [\r\n {\r\n SettingType: 'GovConPayImportInactiveEmployees',\r\n SettingValue: false\r\n }\r\n ]\r\n })\r\n );\r\n })\r\n .catch(reason => {\r\n this.log.error({ type: 'ImportContainerComponent', reason });\r\n this.message = 'Import Failed';\r\n this.messages = [\r\n {\r\n severity: 'error',\r\n summary: 'Import Failed'\r\n }\r\n ];\r\n })\r\n .finally(() => (this.IsLoading = false));\r\n }\r\n onSetIncludeInactive(includeInactive: boolean): void {\r\n this.log.verbose({\r\n type: 'ImportContainerComponent',\r\n message: 'onSetIncludeInactive',\r\n includeInactive\r\n });\r\n this.store.dispatch(\r\n fromSettings.putCompanySettings({\r\n settings: [\r\n {\r\n SettingType: 'GovConPayImportInactiveEmployees',\r\n SettingValue: includeInactive\r\n }\r\n ]\r\n })\r\n );\r\n }\r\n}\r\n","export * from './import-container.component';\r\n","import { Component, Input, Output } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { Message } from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-import-presenter',\r\n templateUrl: './import-presenter.component.html',\r\n styleUrls: ['./import-presenter.component.scss']\r\n})\r\nexport class ImportPresenterComponent {\r\n @Input() public message: string;\r\n @Input() public messages: Message[];\r\n @Input() public includeInactive: boolean;\r\n @Output() public StartImport = new ReplaySubject(1);\r\n @Output() public SetIncludeInactive = new ReplaySubject(1);\r\n}\r\n","export * from './import-presenter.component';\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ImportContainerComponent } from './import-container';\r\nimport { ImportPresenterComponent } from './import-presenter';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { ImportRoute } from './import.route';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n declarations: [ImportContainerComponent, ImportPresenterComponent],\r\n imports: [\r\n CommonModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [ImportRoute]\r\n }),\r\n SharedModule\r\n ]\r\n})\r\nexport class ImportModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { ImportContainerComponent } from './import-container/import-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const ImportRoute: Ng2StateDeclaration = {\r\n // name: 'Import.**'\r\n name: 'importgovconpay',\r\n url: '/import',\r\n // , loadChildren: () => import('./import.module').then(r => r.ImportModule)\r\n data: { requiresAuth: true },\r\n\r\n component: ImportContainerComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ImportService {\r\n private uri = `${environment.apiLocation}/ExternalEmployee`;\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n public LoadData(includeInactive: boolean): Promise {\r\n return this.http\r\n .get(\r\n `${this.uri}/SyncExternalEmployees?includeInactive=${includeInactive}`\r\n )\r\n .toPromise()\r\n .then(() =>\r\n this.log.verbose({\r\n type: 'ImportService:LoadData:SyncExternalEmployees'\r\n })\r\n )\r\n .catch(reason => {\r\n this.log.error({\r\n type: 'ImportService:SyncExternalEmployees',\r\n reason\r\n });\r\n throw reason;\r\n });\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { IndirectJobsService } from './indirect-jobs.service';\r\nimport { IndirectJobsFeaturesComponent } from './features/indirect-jobs-features.component';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\nexport const IndirectJobsRoute: Ng2StateDeclaration = {\r\n name: 'indirectjobs',\r\n url: '/indirectjobs',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: IndirectJobsFeaturesComponent\r\n};\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n AfterViewInit,\r\n Inject,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { DatePipe } from '@angular/common';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromIJ_r from '../store/reducer';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport * as fromErrors from '../../shared';\r\nimport * as fromLookups from '../../lookups';\r\nimport { Process } from '../../shared';\r\nimport { IIndirectStructure } from '../IIndirectStructure';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { IndirectJobsPresentersComponent } from '../presenters/indirect-jobs-presenters.component';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport { LoadIndirectJobs, Reset, UpdateIndirectJobs } from '../store/actions';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport * as fromShared from '../../shared';\r\nimport { Account } from '../../account';\r\nimport * as fromAccount from '../../account';\r\nimport * as fromThirdPartyPayroll from '../../payroll/third-party/store';\r\nimport { PayrollCode } from '../../payroll/third-party';\r\n\r\n@Component({\r\n selector: 'ef-indirect-jobs-features',\r\n templateUrl: './indirect-jobs-features.component.html',\r\n styleUrls: ['./indirect-jobs-features.component.scss']\r\n})\r\nexport class IndirectJobsFeaturesComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n public active = true;\r\n process$: Observable;\r\n public accounts$: Observable>;\r\n public jobs$: Observable>;\r\n public jobs: Array = [];\r\n public indirectTypes$: Observable;\r\n public indirectTypes: Array = [];\r\n public userGroups$: Observable>;\r\n public userGroups: Array = [];\r\n\r\n\r\n @ViewChild(IndirectJobsPresentersComponent, { static: true })\r\n ijpc: IndirectJobsPresentersComponent;\r\n\r\n errors$: Observable;\r\n selectedError$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n paycodes$: Observable;\r\n constructor(\r\n private IndirectJobsStore: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private lookupsStore: Store,\r\n private store: Store,\r\n private errorStore: Store\r\n ) {}\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngOnInit() {\r\n this.store.dispatch(fromThirdPartyPayroll.getPayrollCodes());\r\n this.store.dispatch(\r\n fromAccount.getAccounts({ AccountType: '', LaborType: 'labor' })\r\n );\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.jobs$ = this.IndirectJobsStore.pipe(\r\n select(fromIJ_r.getIndirectJobs)\r\n );\r\n this.indirectTypes$ = this.lookupsStore.pipe(\r\n select(fromLookups.getIndirectTypes)\r\n );\r\n this.userGroups$ = this.lookupsStore.pipe(\r\n select(fromLookups.getUserGroupsLookup)\r\n );\r\n\r\n this.errors$ = this.store.pipe(select(fromIJ_r.getIndirectJobsErrors));\r\n\r\n this.selectedError$ = this.errorStore.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n }\r\n ngAfterViewInit() {\r\n this.IndirectJobsStore.dispatch(new LoadIndirectJobs());\r\n this.store.dispatch(new fromLookups.LoadIndirectTypes());\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n\r\n\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.jobs$.pipe(takeWhile(_ => this.active)).subscribe(_jobs => {\r\n this.jobs = _jobs;\r\n });\r\n\r\n this.paycodes$ = this.store.pipe(\r\n select(fromThirdPartyPayroll.selectPayrollCodes)\r\n );\r\n\r\n this.accounts$ = this.store.pipe(select(fromAccount.selectAll));\r\n\r\n this.ijpc.resetFilters\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.IndirectJobsStore.dispatch(new LoadIndirectJobs());\r\n });\r\n\r\n this.ijpc.rowUpdate\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.IndirectJobsStore.dispatch(\r\n new UpdateIndirectJobs(value)\r\n );\r\n }\r\n });\r\n\r\n this.ijpc.resetData\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.IndirectJobsStore.dispatch(new Reset());\r\n });\r\n }\r\n\r\n public onResetData() {\r\n this.IndirectJobsStore.dispatch(new Reset());\r\n }\r\n\r\n OnShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n\r\n OnGetAccounts(event) {\r\n this.store.dispatch(\r\n fromAccount.getAccounts({ AccountType: event.accountType, LaborType: event.laborType })\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IndirectJobsFeaturesComponent } from './features/indirect-jobs-features.component';\r\nimport { IndirectJobsPresentersComponent } from './presenters/indirect-jobs-presenters.component';\r\nimport { ExpensesModule } from '../expenses';\r\nimport {\r\n DropdownModule,\r\n MultiSelectModule,\r\n MenuModule,\r\n OverlayPanelModule,\r\n ToolbarModule,\r\n ButtonModule\r\n} from '../shared/efaact-primeng.module';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { IndirectJobsEffects } from './store/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromIJ from './store/reducer';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature('indirectjobs', fromIJ.reducer),\r\n EffectsModule.forFeature([IndirectJobsEffects]),\r\n EfaactMaterialModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MultiSelectModule,\r\n DropdownModule,\r\n ExpensesModule,\r\n MenuModule,\r\n OverlayPanelModule,\r\n ToolbarModule,\r\n ButtonModule\r\n ],\r\n declarations: [\r\n IndirectJobsFeaturesComponent,\r\n IndirectJobsPresentersComponent\r\n ]\r\n})\r\nexport class IndirectJobsModule {}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IIndirectStructure, IIndirectStructureResponse } from './IIndirectStructure';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IndirectJobsService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService) { }\r\n\r\n private uri = `${environment.apiLocation}/IndirectStructure`;\r\n\r\n public getIndirectJobs(): Observable> {\r\n return this.http.get>(this.uri)\r\n .pipe(res => {\r\n this.log.verbose({ type: 'IndirectJobsService:getIndirectJobs:reponse', res });\r\n return res;\r\n });\r\n }\r\n\r\n public putIndirectJobs (indirects: Array): Observable {\r\n this.log.debug({ type: 'IndirectJobsService:putContractStructure', indirects });\r\n this.log.verbose(JSON.stringify({ indirectsList: indirects }));\r\n return this.http.put(this.uri, { IndirectStructureList: indirects })\r\n .pipe(res => {\r\n this.log.verbose({ type: 'IndirectJobsService:putContractStructure:reponse', res });\r\n return res;\r\n });\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport Tabulator from 'tabulator-tables';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport { Process, ResponseStatus } from '../../shared';\r\nimport { MenuItem } from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { selectEditor } from '../../shared/selectEditor';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { TabulatorService } from '../../tabulator.service';\r\nimport { IIndirectStructure } from '../IIndirectStructure';\r\nimport { Account } from '../../account';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { PayrollCode } from '../../payroll/third-party';\r\n@Component({\r\n selector: 'ef-indirect-jobs-presenters',\r\n templateUrl: './indirect-jobs-presenters.component.html',\r\n styleUrls: ['./indirect-jobs-presenters.component.scss']\r\n})\r\nexport class IndirectJobsPresentersComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public tabIndirect: Tabulator;\r\n public errorHelpText = '';\r\n public active = true;\r\n public rowSelected: any;\r\n public parentID: any;\r\n public parentRow: any;\r\n public flattenedJobs = [];\r\n public ijpc: IndirectJobsPresentersComponent = this;\r\n public loadingData = true;\r\n public rowUpdated = false;\r\n public selectedRow: any;\r\n public selectColumnWidth = 50;\r\n public selectedRowsCheckbox = { checked: false, indeterminate: false };\r\n public downloadOptions: Array = [];\r\n public isVisible = true;\r\n\r\n @Input() public process: Process;\r\n @Input() public indirectTypes: Array;\r\n @Input() public userGroups: Array;\r\n\r\n @Output() public ShowError = new EventEmitter();\r\n @Output() rowUpdate = new EventEmitter>();\r\n @Output() resetData = new EventEmitter();\r\n @Output() resetFilters = new EventEmitter();\r\n @Output() GetAccounts = new ReplaySubject(1);\r\n\r\n @ViewChild('cbxColumnHeader', { static: true })\r\n cbxColumnHeader: MatCheckbox;\r\n\r\n private _jobs: Array;\r\n @Input('jobs') set jobs(value: Array) {\r\n if (value.length > 0) {\r\n this._jobs = clone(value);\r\n this.flattenedJobs = this.flattenNestedData(this._jobs);\r\n if (this.tabIndirect) {\r\n this._jobs = clone(value);\r\n if (this.rowUpdated === true) {\r\n this.parentRow.scrollTo();\r\n }\r\n this.tabIndirect.replaceData(this._jobs);\r\n\r\n this.rowUpdated = false;\r\n this.parentRow = null;\r\n } else {\r\n if (this.userGroups.length > 0) {\r\n this.userGroups = this.userGroups.filter(x =>\r\n x.PrefixedGroupID.includes('C')\r\n );\r\n this.userGroups.push({\r\n PrefixedGroupID: '',\r\n GroupID: null,\r\n GroupName: '',\r\n GroupPurpose: ''\r\n });\r\n }\r\n if (this.userGroups.length <= 2) {\r\n this.isVisible = false;\r\n }\r\n this.createTabulator(\r\n this.ijpc,\r\n this._jobs,\r\n this.indirectTypes,\r\n this.userGroups,\r\n []\r\n );\r\n }\r\n this.loadingData = false;\r\n }\r\n }\r\n get jobs(): Array {\r\n return this._jobs;\r\n }\r\n\r\n private _accounts: Array;\r\n @Input('accounts') set accounts(value: Array) {\r\n if (value.length > 0) {\r\n this._accounts = clone(value);\r\n // this.tabIndirect.columnManager.columns.forEach(col => {\r\n // if (col.definition.title == 'Account') {\r\n // col.definition.editorParams = {\r\n // values: this._accounts\r\n // .map(x => ({\r\n // value: x.AccountListID,\r\n // label: x.AccountCode\r\n // }))\r\n // .sort((a, b) => a.label.localeCompare(b.label))\r\n // };\r\n // console.log(col.definition.editorParams);\r\n // }\r\n // });\r\n }\r\n }\r\n get accounts(): Array {\r\n return this._accounts;\r\n }\r\n\r\n //paycodesSelectItem: fromShared.SelectItem[];\r\n private _paycodes: Array;\r\n @Input('paycodes') set paycodes(value: Array) {\r\n if (value.length > 0) {\r\n this._paycodes = clone(value);\r\n // this.paycodesSelectItem = this._paycodes\r\n // map(item => ({\r\n // label: `${item.Paycodedesc ?? item.Paycode} (${\r\n // item.Paycode\r\n // })`,\r\n // value: item.Paycode\r\n // })\r\n // );\r\n }\r\n }\r\n get paycodes(): Array {\r\n return this._paycodes;\r\n }\r\n\r\n private _errors: Array;\r\n @Input() public set errors(value: Array) {\r\n this.log.debug({\r\n type: 'IndirectJobsPresenterComponent:errors:set',\r\n value\r\n });\r\n this._errors = value;\r\n if (value && value.length) {\r\n this.errorHelpText = value\r\n .reduce((a, c) => a + c + '\\r\\n', '')\r\n .trim();\r\n } else {\r\n this.errorHelpText = '';\r\n }\r\n if (this.tabIndirect) {\r\n this.tabIndirect.redraw();\r\n }\r\n }\r\n public get errors(): Array {\r\n return this._errors;\r\n }\r\n private _selectedError: IShowErrors;\r\n @Input() public set selectedError(value: IShowErrors) {\r\n this.log.debug({\r\n type: 'IndirectJobsPresenterComponent:selectedError:set',\r\n value\r\n });\r\n if (this.process) {\r\n if (value.MsgProcessID === this.process.ProcessID) {\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const prevRow = this.findChild(\r\n this.tabIndirect.getRows(),\r\n this.rowSelected.QB_SubLevel,\r\n this.parentID,\r\n this._selectedError.MsgEntityID\r\n );\r\n if (prevRow) {\r\n prevRow.getElement().classList.remove('highlight');\r\n }\r\n }\r\n this._selectedError = value;\r\n this.rowSelected = this.flattenedJobs.find(\r\n job => job.QB_ListID === value.MsgEntityID\r\n );\r\n this.parentID = this.rowSelected.QB_ParentListID;\r\n const theRow = this.findChild(\r\n this.tabIndirect.getRows(),\r\n this.rowSelected.QB_SubLevel,\r\n this.parentID,\r\n value.MsgEntityID\r\n );\r\n if (theRow) {\r\n theRow.scrollTo();\r\n theRow.getElement().classList.add('highlight');\r\n // theRow.getElement().css({'background-color': 'green'});\r\n this.log.debug({\r\n type: 'IndirectJobsPresenterComponent:selectedError:set',\r\n rowElement: theRow.getElement()\r\n });\r\n }\r\n }\r\n }\r\n }\r\n public get selectedError(): IShowErrors {\r\n return this._selectedError;\r\n }\r\n\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(TabulatorService) private tabService: TabulatorService,\r\n private errorStore: Store,\r\n @Inject(UnsavedChangesService)\r\n private confirmservice: UnsavedChangesService,\r\n private datePipe: DatePipe\r\n ) {}\r\n\r\n public downloadTable(type) {\r\n this.tabIndirect.download(\r\n type,\r\n `${this.process.ProcessTitle}_${moment(new Date()).format(\r\n 'MM-DD-YYYY'\r\n )}.${type}`,\r\n { sheetName: 'Indirect Job Structure' }\r\n );\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.resetData.emit();\r\n }\r\n ngOnInit() {\r\n this.downloadOptions = [\r\n {\r\n label: 'CSV',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('csv')\r\n },\r\n {\r\n label: 'Excel',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('xlsx')\r\n }\r\n ];\r\n }\r\n ngAfterViewInit() {}\r\n getAccountList() {\r\n return this.accounts\r\n .map(x => ({\r\n value: x.AccountListID,\r\n label: x.AccountCode\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n }\r\n private createTabulator(\r\n ij: IndirectJobsPresentersComponent,\r\n jobs: Array,\r\n indirectTypes: Array,\r\n userGroups: Array,\r\n errors: Array\r\n ) {\r\n let xMark = '
check
';\r\n const comp = this;\r\n const accountEditCheck = function (cell) {\r\n const rowdata = cell.getRow().getData();\r\n let editable = true;\r\n if (rowdata.IsContract === true || rowdata.IsChargeNumber == true) {\r\n editable = true;\r\n } else {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n }\r\n return editable;\r\n }\r\n const editCheckStatus = function (cell) {\r\n const rowdata = cell.getRow().getData();\r\n let editable = true;\r\n\r\n if (rowdata.IsContract === true) {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n }\r\n if (\r\n cell._cell.column.field === 'AccruedLeave' ||\r\n cell._cell.column.field === 'LWOPIndicator' ||\r\n cell._cell.column.field === 'LeavePayout'\r\n ) {\r\n if (rowdata.IndirectType !== 'FRL') {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n }\r\n }\r\n if (cell._cell.column.field === 'CostCenterID') {\r\n if (rowdata.IndirectType !== 'OHL') {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n }\r\n }\r\n\r\n if (rowdata.IsChargeNumber === false) {\r\n editable = false;\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n return editable;\r\n };\r\n\r\n const headerClicked = false;\r\n const count = 0;\r\n function checkIndeterminate() {\r\n if (ij.tabIndirect) {\r\n const rows = ij.tabIndirect.getRows(true);\r\n const selectedRows: Array = [];\r\n rows.forEach(row => {\r\n if (row._row.data.selected === true) {\r\n selectedRows.push(row);\r\n }\r\n });\r\n\r\n ij.cbxColumnHeader.checked = rows.reduce(\r\n (a, c) => a && c.getData().selected,\r\n true\r\n );\r\n ij.cbxColumnHeader.indeterminate =\r\n selectedRows.length > 0 &&\r\n !rows.reduce((a, c) => a && c.getData().selected, true);\r\n }\r\n }\r\n\r\n this.tabIndirect = new Tabulator('#tabIndirect', {\r\n placeholder: 'No Data Available',\r\n height: '68vh',\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n scrollToRowPosition: 'top',\r\n scrollToRowIfVisible: false,\r\n data: jobs,\r\n dataTree: true,\r\n dataTreeStartExpanded: true,\r\n dataTreeExpandElement:\r\n \" \",\r\n dataTreeCollapseElement:\r\n \" \",\r\n dataTreeChildIndent: 15,\r\n dataTreeChildField: '_children',\r\n dataTreeElementColumn: 'QB_Name',\r\n printConfig: {\r\n dataTree: true\r\n },\r\n downloadConfig: {\r\n dataTree: true\r\n },\r\n dataTreeRowExpanded: function (row, level) {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n child.treeExpand();\r\n });\r\n },\r\n dataTreeRowCollapsed: function (row, level) {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n child.treeCollapse();\r\n });\r\n },\r\n // downloadDataFormatter: function(data) {\r\n // let tableData: Array = [];\r\n // tableData = data;\r\n // tableData.forEach(x => {\r\n // if (x.QB_IsActive === true) {\r\n // x.QB_IsActive = false;\r\n // } else {\r\n // x.QB_IsActive = true;\r\n // }\r\n // });\r\n // return tableData;\r\n // },\r\n resizableRows: false,\r\n columns: [\r\n {\r\n title: 'Id',\r\n field: 'QB_ListID',\r\n frozen: true,\r\n visible: false\r\n },\r\n {\r\n title: 'Contract',\r\n field: 'IsContract',\r\n visible: false\r\n },\r\n // 1 Status\r\n {\r\n title: '',\r\n width: ij.selectColumnWidth,\r\n field: 'Status',\r\n download: false,\r\n formatter: (cell, params, onRendered) => {\r\n ij.selectedRow = cell.getRow();\r\n const status = cell.getValue();\r\n if (status) {\r\n switch (status.StatusCode) {\r\n case 1:\r\n return '
check_circle
';\r\n case 2:\r\n return '
report_problem
';\r\n case 3:\r\n return '
highlight_off
';\r\n case 4:\r\n return '
highlight_off
';\r\n case 5:\r\n return '
highlight_off
';\r\n case 6:\r\n return '
highlight_off
';\r\n case 99:\r\n return '
';\r\n default:\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n },\r\n headerSort: false,\r\n cellClick: function (e, cell) {\r\n const status = cell.getValue();\r\n ij.log.verbose({\r\n type: 'IndirectJobsPresenterComponent:StatusCellClick',\r\n status\r\n });\r\n if (status) {\r\n switch (status.StatusCode) {\r\n case 2:\r\n case 3:\r\n case 4:\r\n case 5:\r\n ij.ShowError.emit({\r\n open: true,\r\n MsgEntityID: status.MsgEntityID\r\n });\r\n }\r\n }\r\n }\r\n },\r\n // 3 Page Specific Columns\r\n {\r\n title: 'QuickBooks
Level',\r\n downloadTitle: 'QuickBooks Level',\r\n field: 'QB_SubLevel',\r\n width: 85,\r\n editor: false,\r\n visible: false\r\n },\r\n {\r\n title: 'Job Name',\r\n field: 'QB_Name',\r\n editor: false,\r\n minWidth: 250\r\n },\r\n {\r\n title: 'Labor Type',\r\n field: 'IndirectType',\r\n width: 150,\r\n formatter: c => {\r\n const rowData = c.getRow().getData();\r\n const index = indirectTypes.findIndex(\r\n x => x.CalcType === c.getValue()\r\n );\r\n let indirectType = '';\r\n if (index < 0) {\r\n indirectType = c.getValue();\r\n } else {\r\n indirectType = indirectTypes.find(\r\n x => x.CalcType === c.getValue()\r\n ).CalcDesc;\r\n }\r\n if (\r\n rowData.QB_SubLevel > 1 ||\r\n rowData.QB_SubLevel == 0\r\n ) {\r\n c.getElement().classList.add('disabled');\r\n }\r\n return indirectType;\r\n // return indirectTypes.findIndex(x => x.CalcType === c.getValue() && x.CalcType === rowData.CalcType) < 0\r\n // ? c.getValue()\r\n // : indirectTypes.find(x => x.CalcType === c.getValue() && x.CalcType === rowData.CalcType).CalcDesc;\r\n },\r\n editable: editCheckStatus,\r\n editor: selectEditor,\r\n editorParams: {\r\n values:\r\n indirectTypes.length > 0\r\n ? indirectTypes\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }))\r\n .sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n )\r\n : ''\r\n // if (indirectTypes.length > 0) {\r\n\r\n // return values;\r\n // }\r\n },\r\n sortValuesList: 'asc',\r\n cellEditing: function (cell) {\r\n comp.log.verbose('LaborType cellEditing');\r\n },\r\n cellEdited: function (e, cell) {\r\n comp.log.verbose('LaborType cellEdited');\r\n const row = e.getRow();\r\n const iT = e._cell.value;\r\n const rowData = row.getData();\r\n const data = ij.flattenedJobs.find(\r\n job => job.QB_ListID === rowData.QB_ListID\r\n );\r\n\r\n if (data.FirstProcessDate != null) {\r\n ij.confirmservice\r\n // .confirmPromise(\r\n // 'Sessions (incl. Invoices) will be deleted! ' +\r\n // 'Changing a contract type invalidates all previous calculations for that contract. ' +\r\n // 'All periods processed from ' +\r\n // moment(\r\n // data.FirstProcessDate\r\n // ).format('MM/DD/YYYY') +\r\n // ' forward will be deleted and must be processed again. ' +\r\n // 'This affects all contracts. If you have questions, please enter a Help Desk ticket. Do you want to proceed with the contract type change?',\r\n // 'Yes',\r\n // 'No'\r\n // )\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure? Changing labor type requires synchronizing the fiscal year, this can take a few minutes.',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({\r\n IndirectType: iT,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading\r\n }\r\n });\r\n ij.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n IndirectType: data.IndirectType\r\n });\r\n });\r\n } else {\r\n row.update({\r\n IndirectType: iT,\r\n Status: { StatusCode: ResponseStatus.Loading }\r\n });\r\n ij.updateRow(row);\r\n }\r\n\r\n e._cell.focus();\r\n }\r\n },\r\n {\r\n title: 'Account',\r\n field: 'AccountListID',\r\n width: 150,\r\n formatter: c => {\r\n const rowData = c.getRow().getData();\r\n if (\r\n rowData.IsChargeNumber == true ||\r\n rowData.IsContract == true\r\n ) {\r\n //editable\r\n } else {\r\n c.getElement().classList.add('disabled');\r\n }\r\n if (ij.accounts) {\r\n if (ij.accounts.length > 0) {\r\n const index = ij.accounts.findIndex(\r\n x => x.AccountListID === c.getValue()\r\n );\r\n let account = '';\r\n if (index < 0) {\r\n account = c.getValue();\r\n } else {\r\n account = this.accounts.find(\r\n x => x.AccountListID === c.getValue()\r\n ).AccountCode;\r\n }\r\n return account;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n\r\n // if (\r\n // rowData.QB_SubLevel > 1 ||\r\n // rowData.QB_SubLevel == 0\r\n // ) {\r\n // c.getElement().classList.add('disabled');\r\n // }\r\n },\r\n editable: accountEditCheck,\r\n editor: selectEditor,\r\n // editorParams: {\r\n // values: ij.getAccountList()\r\n // },\r\n editorParams: {\r\n values:\r\n ij.accounts != null && ij.accounts.length > 0\r\n ? ij.accounts\r\n .map(x => ({\r\n value: x.AccountListID,\r\n label: x.AccountCode\r\n }))\r\n .sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n )\r\n : ''\r\n // if (indirectTypes.length > 0) {\r\n\r\n // return values;\r\n // }\r\n },\r\n sortValuesList: 'asc',\r\n cellEditing: function (cell) {\r\n comp.log.verbose('Account cellEditing');\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n // ij.GetAccounts.next({\r\n // accountType: '',\r\n // laborType: rowData.IndirectType\r\n // });\r\n },\r\n cellEdited: function (e, cell) {\r\n comp.log.verbose('Account cellEdited');\r\n const row = e.getRow();\r\n const account = e._cell.value;\r\n const rowData = row.getData();\r\n const data = ij.accounts.find(\r\n job => job.AccountListID === rowData.AccountListID\r\n );\r\n if (\r\n rowData.IsChargeNumber == true ||\r\n rowData.IsContract == true\r\n ) {\r\n row.update({\r\n AccountListID: account,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading\r\n }\r\n });\r\n ij.updateRow(row);\r\n }\r\n }\r\n },\r\n {\r\n title: 'Paycode',\r\n field: 'Paycodeid',\r\n visible: true,\r\n width: 150,\r\n formatter: c => {\r\n const rowData = c.getRow().getData();\r\n if (\r\n rowData.IsChargeNumber == true ||\r\n rowData.IsContract == true\r\n ) {\r\n //editable\r\n } else {\r\n c.getElement().classList.add('disabled');\r\n }\r\n if (ij.paycodes) {\r\n if (ij.paycodes.length > 0) {\r\n let paycode = '';\r\n var p = this.paycodes.find(\r\n x => x.Paycodeid === c.getValue()\r\n );\r\n if (p != null) {\r\n if (p.Paycodeid == 0) {\r\n paycode = '';\r\n } else {\r\n paycode = p.Paycode;\r\n }\r\n } else {\r\n paycode = ''\r\n }\r\n\r\n // if (index < 0) {\r\n // paycode = c.getValue();\r\n // } else {\r\n\r\n // }\r\n return paycode;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n },\r\n editable: accountEditCheck,\r\n editor: selectEditor,\r\n // editorParams: {\r\n // values: ij.getAccountList()\r\n // },\r\n editorParams: {\r\n values:\r\n ij.paycodes != null && ij.paycodes.length > 0\r\n ? ij.paycodes\r\n .map(x => ({\r\n value: x.Paycodeid,\r\n label: x.Paycode\r\n }))\r\n .sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n )\r\n : ''\r\n // if (indirectTypes.length > 0) {\r\n\r\n // return values;\r\n // }\r\n },\r\n sortValuesList: 'asc',\r\n cellEditing: function (cell) {\r\n comp.log.verbose('Paycode cellEditing');\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n // ij.GetAccounts.next({\r\n // accountType: '',\r\n // laborType: rowData.IndirectType\r\n // });\r\n },\r\n cellEdited: function (e, cell) {\r\n comp.log.verbose('PayCode cellEdited');\r\n const row = e.getRow();\r\n const paycode = e._cell.value;\r\n const rowData = row.getData();\r\n const data = ij.paycodes.find(\r\n p => p.Paycodeid === rowData.Paycodeid\r\n );\r\n if (\r\n rowData.IsChargeNumber == true ||\r\n rowData.IsContract == true\r\n ) {\r\n row.update({\r\n Paycodeid: paycode,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading\r\n }\r\n });\r\n ij.updateRow(row);\r\n }\r\n }\r\n },\r\n {\r\n title: 'Accrue
Leave',\r\n field: 'AccruedLeave',\r\n align: 'center',\r\n width: 100,\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n const rowdata = cell.getRow().getData();\r\n if (rowdata.IsContract === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IsChargeNumber === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return xMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n // editor:true,\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const status = cell.getValue();\r\n const rowdata = row.getData();\r\n if (rowdata.IndirectType !== 'FRL') {\r\n return editCheckStatus;\r\n }\r\n\r\n if (row._row.data.QB_IsActive === true) {\r\n if (row._row.data.IsChargeNumber == true) {\r\n if (row._row.data.FirstProcessDate != null) {\r\n ij.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure? Changing an accrue leave job requires synchronizing the fiscal year, this can take a few minutes.',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n if (status === true) {\r\n row.update({\r\n AccruedLeave: false,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n ij.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({\r\n AccruedLeave: true,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n ij.updateRow(row);\r\n }\r\n })\r\n .catch(() => {\r\n row.update({\r\n AccruedLeave:\r\n row._row.data.AccruedLeave\r\n });\r\n });\r\n } else {\r\n if (status === true) {\r\n row.update({\r\n AccruedLeave: false,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n ij.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({\r\n AccruedLeave: true,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.Loading\r\n }\r\n });\r\n ij.updateRow(row);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Sick',\r\n field: 'IsSickTask',\r\n align: 'center',\r\n width: 100,\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n\r\n const rowdata = cell.getRow().getData();\r\n if (rowdata.IsContract === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IsChargeNumber === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return xMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n // editor:true,\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const status = cell.getValue();\r\n const rowdata = row.getData();\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n return editCheckStatus;\r\n }\r\n\r\n if (row._row.data.QB_IsActive === true) {\r\n if (row._row.data.IsChargeNumber == true) {\r\n if (status === true) {\r\n // xMark = '';\r\n row.update({ IsSickTask: false });\r\n ij.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({ IsSickTask: true });\r\n ij.updateRow(row);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Holiday',\r\n field: 'IsHolidayTask',\r\n align: 'center',\r\n width: 100,\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n\r\n const rowdata = cell.getRow().getData();\r\n if (rowdata.IsContract === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IsChargeNumber === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return xMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n // editor:true,\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const status = cell.getValue();\r\n const rowdata = row.getData();\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n return editCheckStatus;\r\n }\r\n\r\n if (row._row.data.QB_IsActive === true) {\r\n if (row._row.data.IsChargeNumber == true) {\r\n if (status === true) {\r\n // xMark = '';\r\n row.update({ IsHolidayTask: false });\r\n ij.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({ IsHolidayTask: true });\r\n ij.updateRow(row);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Leave
Request',\r\n field: 'IsLeaveTask',\r\n align: 'center',\r\n width: 100,\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n const rowdata = cell.getRow().getData();\r\n if (rowdata.IsContract === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IsChargeNumber === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return xMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n // editor:true,\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const status = cell.getValue();\r\n const rowdata = row.getData();\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n return editCheckStatus;\r\n }\r\n\r\n if (row._row.data.QB_IsActive === true) {\r\n if (row._row.data.IsChargeNumber == true) {\r\n if (status === true) {\r\n // xMark = '';\r\n row.update({ IsLeaveTask: false });\r\n ij.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({ IsLeaveTask: true });\r\n ij.updateRow(row);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'LWOP',\r\n downloadTitle: 'LWOP',\r\n field: 'LWOPIndicator',\r\n align: 'center',\r\n width: 100,\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n\r\n const rowdata = cell.getRow().getData();\r\n if (rowdata.IsContract === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IsChargeNumber === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return xMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n editor: false,\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const rowData = row.getData();\r\n const status = cell.getValue();\r\n if (row._row.data.IndirectType !== 'FRL') {\r\n return editCheckStatus;\r\n }\r\n // const parent = ij.jobs.find(\r\n // x => x.QB_ListID === row._row.data.QB_ParentListID\r\n // );\r\n\r\n if (rowData.QB_IsActive == true) {\r\n if (rowData.IsChargeNumber == true) {\r\n if (status === true) {\r\n row.update({ LWOPIndicator: false });\r\n ij.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({ LWOPIndicator: true });\r\n ij.updateRow(row);\r\n }\r\n }\r\n }\r\n\r\n // if (row._row.data.QB_IsActive === true) {\r\n // if (row._row.data.QB_SubLevel === 1) {\r\n // if (parent.QB_SubLevel === 0) {\r\n // if (status === true) {\r\n // row.update({ LWOPIndicator: false });\r\n // ij.updateRow(row);\r\n // } else {\r\n // xMark =\r\n // '
check
';\r\n // row.update({ LWOPIndicator: true });\r\n // ij.updateRow(row);\r\n // }\r\n // }\r\n // }\r\n // if (row._row.data.QB_SubLevel === 2) {\r\n // if (parent.QB_SubLevel === 1) {\r\n // if (status === true) {\r\n // row.update({ LWOPIndicator: false });\r\n // ij.updateRow(row);\r\n // } else {\r\n // xMark =\r\n // '
check
';\r\n // row.update({ LWOPIndicator: true });\r\n // ij.updateRow(row);\r\n // }\r\n // }\r\n // }\r\n //}\r\n }\r\n },\r\n {\r\n title: 'Leave
Payout',\r\n downloadTitle: 'Leave Payout',\r\n field: 'LeavePayout',\r\n align: 'center',\r\n width: 100,\r\n formatter: cell => {\r\n const status = cell.getValue();\r\n const rowdata = cell.getRow().getData();\r\n if (rowdata.IsContract === true) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IndirectType !== 'FRL') {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n if (rowdata.IsChargeNumber === false) {\r\n cell.getElement().classList.add('disabled');\r\n }\r\n\r\n switch (status) {\r\n case true:\r\n return xMark;\r\n default:\r\n return '';\r\n }\r\n },\r\n sorter: 'boolean',\r\n editable: editCheckStatus,\r\n cellClick: function (e, cell) {\r\n const row = cell.getRow();\r\n const status = cell.getValue();\r\n if (row._row.data.IndirectType !== 'FRL') {\r\n return editCheckStatus;\r\n }\r\n if (row._row.data.QB_IsActive === true) {\r\n if (status === true) {\r\n row.update({ LeavePayout: false });\r\n ij.updateRow(row);\r\n } else {\r\n xMark =\r\n '
check
';\r\n row.update({ LeavePayout: true });\r\n ij.updateRow(row);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Cost Center
Override',\r\n downloadTitle: 'Cost Center
Override',\r\n field: 'CostCenterID',\r\n width: 150,\r\n editor: selectEditor,\r\n visible: ij.isVisible,\r\n formatter: c => {\r\n if (userGroups.length > 0) {\r\n const rowData = c.getRow().getData();\r\n let costCenter = '';\r\n const value = c.getValue();\r\n const index = userGroups.findIndex(\r\n x => x.GroupID === +value\r\n );\r\n if (index < 0) {\r\n costCenter = value;\r\n } else {\r\n costCenter = userGroups.find(\r\n x => x.GroupID === +value\r\n ).GroupName;\r\n }\r\n\r\n const rowdata = c.getRow().getData();\r\n\r\n if (rowdata.IndirectType !== 'OHL') {\r\n c.getElement().classList.add('disabled');\r\n }\r\n\r\n // var costCenter = userGroups.findIndex(x => x.GroupID === c.getValue()) < 0 ? c.getValue(): userGroups.find(x => x.GroupID === c.getValue()).GroupName;\r\n return costCenter;\r\n }\r\n },\r\n editorParams: {\r\n values:\r\n userGroups.length > 0\r\n ? userGroups\r\n .map(x => ({\r\n value: x.GroupID,\r\n label: x.GroupName\r\n }))\r\n .sort((a, b) =>\r\n a.label.localeCompare(b.label)\r\n )\r\n : ''\r\n },\r\n align: 'center',\r\n editable: editCheckStatus,\r\n cellEdited: function (e, cell) {\r\n const row = e.getRow();\r\n const ccID = e._cell.value;\r\n const rowData = row.getData();\r\n const data = ij.flattenedJobs.find(\r\n job => job.QB_ListID === rowData.QB_ListID\r\n );\r\n\r\n if (data.FirstProcessDate != null) {\r\n ij.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'Are you sure you want to change the Cost Center Override?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n row.update({ CostCenterID: ccID });\r\n ij.updateRow(row);\r\n })\r\n .catch(() => {\r\n row.update({\r\n CostCenterID: data.CostCenterID\r\n });\r\n });\r\n } else {\r\n row.update({ CostCenterID: ccID });\r\n ij.updateRow(row);\r\n }\r\n\r\n e._cell.focus();\r\n }\r\n },\r\n {\r\n title: 'First Process Date',\r\n field: 'FirstProcessDate',\r\n width: 140,\r\n visible: true,\r\n formatter: function (cell) {\r\n // Only show if the row is a charge number\r\n cell.getElement().classList.add('disabled');\r\n if (cell.getValue() != null) {\r\n const date = new Date(cell.getValue());\r\n const formattedDate = ij.transformDate(date);\r\n return formattedDate.toDateString();\r\n }\r\n }\r\n },\r\n {\r\n title: '',\r\n field: 'Row_Version',\r\n visible: false\r\n }\r\n ],\r\n rowSelected: function (row) {\r\n row.update({ selected: true });\r\n if (!headerClicked) {\r\n checkIndeterminate();\r\n }\r\n },\r\n rowDeselected: function (row) {\r\n row.update({ selected: false });\r\n if (!headerClicked) {\r\n checkIndeterminate();\r\n }\r\n },\r\n cellEdited: this.tabService.cellEdited,\r\n cellEditing: this.tabService.cellEditing,\r\n cellClick: this.tabService.cellMouseHandler,\r\n cellTap: this.tabService.cellMouseHandler,\r\n rowClick: this.tabService.rowMouseHandler,\r\n rowTap: this.tabService.rowMouseHandler\r\n });\r\n }\r\n\r\n public flattenNestedData(\r\n cs: Array\r\n ): Array {\r\n const flatten = cs => {\r\n return cs.reduce((r, { _children, ...rest }) => {\r\n r.push(rest);\r\n if (_children) {\r\n r.push(...flatten(_children));\r\n }\r\n return r;\r\n }, []);\r\n };\r\n // this.log.verbose(flatten(cs));\r\n return flatten(cs);\r\n }\r\n\r\n public findParent(rows, level, parentID, rowData?) {\r\n let selectedRow = null;\r\n const selectedChild = null;\r\n\r\n if (level === 1) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const rowData = row.getData();\r\n if (rowData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n } else if (level === 2) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n const childData = child.getData();\r\n if (childData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n });\r\n } else {\r\n selectedRow = rows.find(\r\n row => row.getData().QB_ListID === rowData.QB_ListID\r\n );\r\n }\r\n\r\n return selectedRow;\r\n }\r\n\r\n public findChild(rows, level, parentID, id) {\r\n let selectedRow = null;\r\n let selectedChild = null;\r\n\r\n if (level === 1) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const rowData = row.getData();\r\n if (rowData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n\r\n // FIND SELECTED CHILD\r\n const childRows = selectedRow.getTreeChildren();\r\n childRows.forEach(child => {\r\n const childData = child.getData();\r\n if (childData.QB_ListID === id) {\r\n selectedChild = child;\r\n }\r\n });\r\n } else if (level === 2) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n const childData = child.getData();\r\n if (childData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n });\r\n\r\n // FIND SELECTED CHILD\r\n const childRows = selectedRow.getTreeChildren();\r\n childRows.forEach(child => {\r\n if (child.getTreeChildren() !== false) {\r\n const children2 = child.getTreeChildren();\r\n children2.forEach(child2 => {\r\n const childData = child2.getData();\r\n if (childData.QB_ListID === id) {\r\n selectedChild = child2;\r\n }\r\n });\r\n }\r\n });\r\n } else if (level === 3) {\r\n // FIND LVL 0\r\n rows.forEach(row => {\r\n const children = row.getTreeChildren();\r\n children.forEach(child => {\r\n const children2 = child.getTreeChildren();\r\n children2.forEach(child2 => {\r\n const childData = child2.getData();\r\n if (childData.QB_ListID === parentID) {\r\n selectedRow = row;\r\n }\r\n });\r\n });\r\n });\r\n\r\n // FIND SELECTED CHILD\r\n const childRows = selectedRow.getTreeChildren();\r\n childRows.forEach(child => {\r\n if (child.getTreeChildren() !== false) {\r\n const children2 = child.getTreeChildren();\r\n children2.forEach(child2 => {\r\n if (child2.getTreeChildren() !== false) {\r\n const children3 = child2.getTreeChildren();\r\n children3.forEach(child3 => {\r\n const childData = child3.getData();\r\n if (childData.QB_ListID === id) {\r\n selectedChild = child3;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n selectedChild = rows.find(row => row.getData().QB_ListID === id);\r\n }\r\n\r\n return selectedChild;\r\n }\r\n\r\n transformDate(date): Date {\r\n return new Date(this.datePipe.transform(date, 'MM/dd/yyyy'));\r\n }\r\n\r\n public accessRow(row) {\r\n return row;\r\n }\r\n\r\n public updateRow(row) {\r\n const rowData: IIndirectStructure = row.getData();\r\n const rowDataForUpdate: IIndirectStructure = {\r\n Paycodeid: rowData.Paycodeid,\r\n AccountListID: rowData.AccountListID,\r\n QB_SubLevel: rowData.QB_SubLevel,\r\n QB_ListID: rowData.QB_ListID,\r\n QB_IsActive: rowData.QB_IsActive,\r\n QB_FullName: rowData.QB_FullName,\r\n QB_Name: rowData.QB_Name,\r\n QB_ParentListID: rowData.QB_ParentListID,\r\n QB_QBParentName: rowData.QB_QBParentName,\r\n IsContract: rowData.IsContract,\r\n IsChargeNumber: rowData.IsChargeNumber,\r\n ContractType: rowData.ContractType,\r\n IndirectType: rowData.IndirectType,\r\n IsHolidayTask: rowData.IsHolidayTask,\r\n IsSickTask: rowData.IsSickTask,\r\n IsLeaveTask: rowData.IsLeaveTask,\r\n AccruedLeave: rowData.AccruedLeave,\r\n LWOPIndicator: rowData.LWOPIndicator,\r\n CostCenterID: rowData.CostCenterID,\r\n FirstProcessDate: rowData.FirstProcessDate,\r\n LeavePayout: rowData.LeavePayout,\r\n Status: {\r\n StatusCode: null,\r\n Message: null,\r\n MsgProcessID: null,\r\n MsgEntityID: null\r\n },\r\n _children: []\r\n };\r\n const data = this.jobs.find(x => x.QB_ListID === rowData.QB_ListID);\r\n\r\n this.rowUpdate.emit([rowDataForUpdate]);\r\n this.rowUpdated = true;\r\n this.parentRow = this.accessRow(row);\r\n }\r\n\r\n public clearSelectedRows() {\r\n this.tabIndirect.deselectRow();\r\n const data = this.tabIndirect.getRows();\r\n data.forEach(d => {\r\n d.update({ selected: false });\r\n });\r\n this.cbxColumnHeader.checked = false;\r\n }\r\n\r\n public expandCollapse(action: string) {\r\n if (action === 'expand') {\r\n this.tabIndirect.options.dataTreeStartExpanded = true;\r\n } else {\r\n this.tabIndirect.options.dataTreeStartExpanded = false;\r\n }\r\n\r\n this.tabIndirect._create();\r\n this.tabIndirect.replaceData(this.jobs);\r\n }\r\n\r\n public clearFilters() {\r\n // this.filterFormGroup.controls['customers'].reset();\r\n // this.filterFormGroup.controls['jobListStatus'].reset();\r\n // this.resetFilters.emit([]);\r\n }\r\n\r\n public downloadCSV() {\r\n this.tabIndirect.download('csv', 'IndirectJobsData.csv');\r\n }\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport { IIndirectStructure, IIndirectStructureResponse } from '../IIndirectStructure';\r\n\r\n\r\nexport enum ActionTypes {\r\n Reset = '[indirectjobs] Reset',\r\n LoadIndirectJobs = '[indirectjobs] Load Indirect Jobs',\r\n SetIndirectJobs = '[indirectjobs] Set Indirect Jobs',\r\n UpdateIndirectJobs = '[indirectjobs] Update Indirect Jobs',\r\n UpdateIndirectJobsSuccess = '[indirectjobs] Update Indirect Jobs Success',\r\n}\r\n\r\nexport class Reset implements Action {\r\n readonly type = ActionTypes.Reset;\r\n}\r\n\r\nexport class LoadIndirectJobs implements Action {\r\n constructor() { }\r\n readonly type = ActionTypes.LoadIndirectJobs;\r\n}\r\n\r\nexport class SetIndirectJobs implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetIndirectJobs;\r\n}\r\n\r\nexport class UpdateIndirectJobs implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.UpdateIndirectJobs;\r\n}\r\n\r\nexport class UpdateIndirectJobsSuccess implements Action {\r\n constructor(public payload: IIndirectStructureResponse) { }\r\n readonly type = ActionTypes.UpdateIndirectJobsSuccess;\r\n}\r\n\r\nexport type ActionsUnion = LoadIndirectJobs | SetIndirectJobs | UpdateIndirectJobs | UpdateIndirectJobsSuccess | Reset;\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IIndirectStructure } from '../IIndirectStructure';\r\nimport { IndirectJobsService } from '../indirect-jobs.service';\r\nimport * as fromIJ from './actions';\r\n\r\n@Injectable()\r\nexport class IndirectJobsEffects {\r\n newIJ: Array = [];\r\n\r\n constructor(\r\n private actions$: Actions,\r\n @Inject(IndirectJobsService) private service: IndirectJobsService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n @Effect() LoadIndirectJobs$ = this.actions$.pipe(\r\n ofType(fromIJ.ActionTypes.LoadIndirectJobs),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'IndirectJobsEffects:LoadIndirectJobs$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .getIndirectJobs()\r\n // .pipe(cs => JSON.parse(cs))\r\n .pipe(\r\n flatMap(is => [\r\n new fromIJ.SetIndirectJobs(is),\r\n new fromShared.Errors.RemoveErrors(\r\n is\r\n .filter(\r\n i =>\r\n i.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(i => i.QB_ListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...this.flattenNestedData(is)\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() UpdateIndirectJobs$ = this.actions$.pipe(\r\n ofType(\r\n fromIJ.ActionTypes.UpdateIndirectJobs\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'IndirectJobsEffects:UpdateIndirectJobs$',\r\n x\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.putIndirectJobs([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromIJ.UpdateIndirectJobsSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n i => i.Status.StatusCode === ResponseStatus.Success\r\n ).map(i => i.QB_ListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...this.flattenNestedData(resp.Items)\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n public flattenNestedData(\r\n cs: Array\r\n ): Array {\r\n const flatten = cs => {\r\n return cs.reduce((r, { _children, ...rest }) => {\r\n r.push(rest);\r\n if (_children) {\r\n r.push(...flatten(_children));\r\n }\r\n return r;\r\n }, []);\r\n };\r\n // this.log.verbose(flatten(cs));\r\n const flatcs = flatten(cs);\r\n return flatcs;\r\n }\r\n}\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as actions from './actions';\r\nimport { IIndirectStructure } from '../IIndirectStructure';\r\n\r\nexport interface State {\r\n jobs: Array;\r\n errors: Array;\r\n}\r\n\r\nexport const initialState: State = {\r\n jobs: [],\r\n errors: []\r\n};\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: actions.ActionsUnion\r\n): State {\r\n switch (action.type) {\r\n case actions.ActionTypes.Reset:\r\n return initialState;\r\n case actions.ActionTypes.SetIndirectJobs:\r\n return {\r\n ...state,\r\n jobs: [...action.payload]\r\n };\r\n case actions.ActionTypes.UpdateIndirectJobsSuccess:\r\n const resp = action.payload;\r\n return {\r\n ...state,\r\n jobs: state.jobs\r\n .map(\r\n x =>\r\n resp.Items.find(\r\n y => y.QB_ListID === x.QB_ListID\r\n ) || {\r\n ...x\r\n }\r\n ) // update any existing\r\n .concat(\r\n resp.Items.filter(\r\n x =>\r\n !state.jobs.find(\r\n y => y.QB_ListID === x.QB_ListID\r\n )\r\n )\r\n ), // add any new\r\n errors: resp.ErrorMessages\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\nconst StateFeatureSelector = createFeatureSelector('indirectjobs');\r\nexport const getIndirectJobs = createSelector(\r\n StateFeatureSelector,\r\n x => x.jobs\r\n);\r\nexport const getIndirectJobsErrors = createSelector(\r\n StateFeatureSelector,\r\n x => x.errors\r\n);\r\n","export * from './indirect-rate';\r\nexport * from './indirect-rate-container';\r\nexport * from './indirect-rate-cost-center';\r\nexport * from './indirect-rate-history';\r\nexport * from './indirect-rate-management';\r\nexport * from './indirect-rate-review';\r\nexport * from './indirect-rate-rule';\r\nexport * from './indirect-rate-structure';\r\n","export * from './indirect-rate-container.component';\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n OnDestroy,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { map, takeWhile, tap, share, filter } from 'rxjs/operators';\r\nimport { Observable, ReplaySubject, combineLatest, fromEvent } from 'rxjs';\r\nimport { CalcType } from '../../lookups';\r\n\r\nimport * as fromStore from '../store';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n@Component({\r\n selector: 'ef-indirect-rate-container',\r\n templateUrl: './indirect-rate-container.component.html',\r\n styleUrls: ['./indirect-rate-container.component.scss']\r\n})\r\nexport class IndirectRateContainerComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(fromStore.Structure.getIndirectRateStructures({}));\r\n this.store.dispatch(fromStore.Structure.getIndirectRateTypes());\r\n }\r\n setupObservables() {\r\n this.setupObservables();\r\n\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'IndirectRateContainerComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'IndirectRateContainerComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'IndirectRateContainerComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n onShowError(event) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n}\r\n","export * from './indirect-rate-cost-center';\r\nexport * from './indirect-rate-cost-center-container';\r\n","export * from './indirect-rate-cost-center-container.component';\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IStatusMessage } from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../../store/indirect-rate-cost-center';\r\nimport * as fromStructure from '../../store/indirect-rate-structure';\r\n@Component({\r\n selector: 'ef-indirect-rate-cost-center-container',\r\n templateUrl: './indirect-rate-cost-center-container.component.html',\r\n styleUrls: ['./indirect-rate-cost-center-container.component.scss']\r\n})\r\nexport class IndirectRateCostCenterContainerComponent implements OnInit {\r\n costCenters$: Observable;\r\n rateStructures$: Observable;\r\n showAdd$: Observable;\r\n @Input() selectedError: IStatusMessage;\r\n @Output() public ShowError = new EventEmitter();\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(fromStore.getIndirectRateCostCenters());\r\n\r\n this.costCenters$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.rateStructures$ = this.store.pipe(select(fromStructure.selectAll));\r\n\r\n this.showAdd$ = this.rateStructures$.pipe(\r\n map(\r\n rates =>\r\n rates.filter(x => x.Calctype === 'GAR').length > 1 ||\r\n rates.filter(x => x.Calctype === 'FRR').length > 1\r\n )\r\n );\r\n }\r\n onSaveItem(items: fromStore.IndirectRateCostCenter[]) {\r\n this.log.verbose({\r\n type: 'IndirectRateCostCenterContainerComponent:onSaveItem',\r\n items\r\n });\r\n this.store.dispatch(\r\n fromStore.putIndirectRateCostCenters({\r\n indirectRateCostCenters: items\r\n })\r\n );\r\n }\r\n}\r\n","export * from './indirect-rate-cost-center.component';\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport * as moment from 'moment';\r\nimport * as fromShared from '../../../shared';\r\nimport { IndirectRateCostCenter } from '../../store/indirect-rate-cost-center';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { ResponseStatus, IStatusMessage } from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { IndirectRateStructure } from '../../store/indirect-rate-structure';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate-cost-center',\r\n templateUrl: './indirect-rate-cost-center.component.html',\r\n styleUrls: ['./indirect-rate-cost-center.component.scss']\r\n})\r\nexport class IndirectRateCostCenterComponent implements OnInit {\r\n @Input() rates: IndirectRateStructure[];\r\n @Input() costCenters: SelectItem[];\r\n @Input() showAdd: boolean;\r\n private _items: IndirectRateCostCenter[];\r\n @Input() public set items(value: IndirectRateCostCenter[]) {\r\n if (this.showAdd === true) {\r\n this._items = [\r\n {\r\n ...this.addTemplate,\r\n Status: {\r\n StatusCode: 0,\r\n Message: ''\r\n }\r\n }, // empty row for adding }, // empty row for adding\r\n ...value\r\n ];\r\n } else {\r\n this._items = [...value];\r\n }\r\n this.costCenters = value.map(x => ({\r\n label: x.Costcenterdesc,\r\n value: x.Costcenterid\r\n }));\r\n }\r\n public get items(): IndirectRateCostCenter[] {\r\n return this._items;\r\n }\r\n @Output() SaveItem = new ReplaySubject(1);\r\n public editing: IndirectRateCostCenter = {} as IndirectRateCostCenter;\r\n selected: IndirectRateCostCenter[];\r\n cloned: { [i: number]: IndirectRateCostCenter } = {};\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n moment: any;\r\n private addTemplate: IndirectRateCostCenter = {\r\n id: -1,\r\n Allocatefacility: null,\r\n Costcenterdesc: null,\r\n Costcenterid: -1,\r\n FRR: null,\r\n GAR: null,\r\n M2R: null,\r\n MHR: null,\r\n OHR: null,\r\n Row_Version: '0x0000000000000000',\r\n Status: {\r\n Message: '',\r\n MsgEntityID: null,\r\n MsgProcessID: null,\r\n StatusCode: 0\r\n }\r\n };\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'PostingAccountComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n @Output() public ShowError = new EventEmitter();\r\n constructor(private log: LoggingService) {\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n onRowEditInit(item: IndirectRateCostCenter) {\r\n this.cloned[item.id] = { ...item };\r\n this.editing = item;\r\n this.log.verbose({\r\n type: 'IndirectRateCostCenterComponent:onRowEditInit',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing\r\n });\r\n this.selected = fromShared.uniqBy(\r\n [...(this.selected || []), item],\r\n x => x.id\r\n );\r\n }\r\n onRowEditSave(item: IndirectRateCostCenter) {\r\n this.log.verbose({\r\n type: 'IndirectRateCostCenterComponent:onRowEditSave',\r\n item,\r\n cloned: this.cloned,\r\n selected: this.selected\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n item.FRR = item.FRR ? Number(item.FRR) : null;\r\n item.GAR = item.GAR ? Number(item.GAR) : null;\r\n item.M2R = item.M2R ? Number(item.M2R) : null;\r\n item.MHR = item.MHR ? Number(item.MHR) : null;\r\n item.OHR = item.OHR ? Number(item.OHR) : null;\r\n\r\n this.SaveItem.next([item]);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: IndirectRateCostCenter) {\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n\r\n if (item.id === -1) {\r\n this.items.splice(index, 1, { ...this.addTemplate } as any);\r\n } else {\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n }\r\n\r\n this.items = [...this.items];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n getRatesForCostCenter(\r\n item: IndirectRateCostCenter,\r\n calcType: string\r\n ): SelectItem[] {\r\n return (\r\n this.rates\r\n // .filter(x => x.Costcenterid === item.Costcenterid)\r\n .filter(x => x.Calctype === calcType)\r\n .map(x => ({\r\n label: x.Ratepercent.toFixed(2),\r\n value: x.Ratepercent\r\n }))\r\n );\r\n }\r\n findRate(rateType) {\r\n return this.rates.find(x => x.Calctype === rateType);\r\n }\r\n getRateColumns() {\r\n return fromShared.uniqBy(this.rates, x => x.Calctype).length + 3;\r\n }\r\n onStatusClick(item: IndirectRateCostCenter) {\r\n this.log.verbose({\r\n type: 'IndirectRateCostCenterComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.id.toString() });\r\n }\r\n}\r\n","export * from './indirect-rate-history-container';\r\nexport * from './indirect-rate-history-presenter';\r\n","export * from './indirect-rate-history-container.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, merge, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, startWith, take, takeWhile, tap } from 'rxjs/operators';\r\nimport { IColumn } from '../../../common';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromLookups from '../../../lookups/store';\r\nimport * as fromShared from '../../../shared';\r\nimport { flatDeep, getDynamicColumns } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromUserInfo from '../../../user-info';\r\n@Component({\r\n selector: 'ef-indirect-rate-history-container',\r\n templateUrl: './indirect-rate-history-container.component.html',\r\n styleUrls: ['./indirect-rate-history-container.component.scss']\r\n})\r\nexport class IndirectRateHistoryContainerComponent\r\n implements OnInit, OnDestroy\r\n{\r\n IndirectRateHistoryModelDS: EntityCollectionService;\r\n IndirectRateHistoryModel$: Observable<\r\n fromDataServices.IndirectRateHistory.IndirectRateHistoryModel[]\r\n >;\r\n fiscalYears$: Observable;\r\n RateChangeOnlySubject = new ReplaySubject(1);\r\n colGroups: IColumn[] = [];\r\n cols: IColumn[] = [];\r\n filterFormGroup: FormGroup;\r\n process$: Observable;\r\n private active = true;\r\n private userInfo$: Observable;\r\n userInfo: fromUserInfo.IUserInfo;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'IndirectRateHistoryContainerComponent::' });\r\n this.IndirectRateHistoryModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.IndirectRateHistory.entityName\r\n );\r\n\r\n this.filterFormGroup = new FormGroup({\r\n FiscalYear: new FormControl(null),\r\n startdate: new FormControl(null),\r\n enddate: new FormControl(null)\r\n });\r\n }\r\n ngOnInit(): void {\r\n this.userInfo$ = this.store.pipe(select(fromUserInfo.getUserInfo));\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.IndirectRateHistoryModel$ =\r\n this.IndirectRateHistoryModelDS.entities$.pipe(\r\n map(items => [...clone(items)])\r\n );\r\n\r\n this.userInfo$.pipe(takeWhile(() => this.active)).subscribe(userInfo => {\r\n this.userInfo = userInfo;\r\n });\r\n\r\n const FYChanged$ = merge(\r\n this.userInfo$.pipe(map(x => x.FYEndDate)),\r\n this.filterFormGroup.controls['FiscalYear'].valueChanges\r\n );\r\n const StartDateChanged$ = merge(\r\n this.userInfo$.pipe(map(x => x.FYStartDate)),\r\n this.filterFormGroup.controls['startdate'].valueChanges\r\n );\r\n const EndDateChanged$ = merge(\r\n this.userInfo$.pipe(map(x => x.FYEndDate)),\r\n this.filterFormGroup.controls['enddate'].valueChanges\r\n );\r\n\r\n if (this.userInfo != null) {\r\n this.filterFormGroup.controls['startdate'].setValue(this.userInfo.FYStartDate);\r\n this.filterFormGroup.controls['enddate'].setValue(this.userInfo.FYEndDate);\r\n }\r\n\r\n // combineLatest([\r\n // this.RateChangeOnlySubject.pipe(startWith(false)),\r\n // FYChanged$\r\n // ])\r\n // .pipe(takeWhile(() => this.active))\r\n // .subscribe(([Ratechangeonly, FYEndDate]) => {\r\n // this.IndirectRateHistoryModelDS.clearCache();\r\n // this.IndirectRateHistoryModelDS.getWithQuery({\r\n // FYEndDate: moment(FYEndDate).format('YYYY-MM-DD'),\r\n // Ratechangeonly: Ratechangeonly as any\r\n // });\r\n // });\r\n combineLatest([\r\n this.RateChangeOnlySubject.pipe(startWith(false)),\r\n StartDateChanged$,\r\n EndDateChanged$\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([Ratechangeonly, StartDate, EndDate]) => {\r\n this.IndirectRateHistoryModelDS.clearCache();\r\n if (moment(StartDate).isValid() && moment(EndDate).isValid()) {\r\n if (new Date(StartDate).getTime() < new Date(EndDate).getTime()) {\r\n this.IndirectRateHistoryModelDS.getWithQuery({\r\n StartDate: moment(StartDate).format('YYYY-MM-DD'),\r\n FYEndDate: moment(EndDate).format('YYYY-MM-DD'),\r\n Ratechangeonly: Ratechangeonly as any\r\n });\r\n }\r\n }\r\n });\r\n this.IndirectRateHistoryModel$.pipe(\r\n takeWhile(() => this.active),\r\n filter(items => items && items.length > 0),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'IndirectRateHistoryContainerComponent:IndirectRateHistoryModel$',\r\n items\r\n })\r\n )\r\n ).subscribe(items => this.mapColumns(items[0]));\r\n this.fiscalYears$ = this.store.pipe(\r\n select(\r\n fromLookups.ScheduledDateSelectors.selectScheduledDateType({\r\n ScheduledDateType: 'FYE'\r\n })\r\n ),\r\n filter(dates => !!dates && dates.length > 0),\r\n take(1),\r\n map(items =>\r\n items.map(item => ({\r\n label: moment(item.ScheduledEndDate).format('MM/DD/YYYY'),\r\n value: moment(item.ScheduledEndDate).format('MM/DD/YYYY')\r\n }))\r\n )\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n getColSpan(item, column) {\r\n // let keys = Object.keys(item[column]);\r\n const cols = Object.keys(item[column]);\r\n this.log.verbose({\r\n type: 'IndirectRateHistoryContainerComponent:getColSpan',\r\n cols,\r\n column,\r\n item\r\n });\r\n return cols.length;\r\n }\r\n\r\n mapColumns(\r\n item: fromDataServices.IndirectRateHistory.IndirectRateHistoryModel\r\n ) {\r\n // getBudgetDynamicColumns returns the dynamic column groups, i.e 01January or Week Ending XXX\r\n // each of these groups has data nested under it, i.e. hours, amounts, variance, etc\r\n const filterItems = ['Status', 'Row_Version', 'updates'];\r\n\r\n const dynCols = getDynamicColumns(item, filterItems);\r\n\r\n this.colGroups = dynCols.map(x => ({\r\n field: x,\r\n header: x,\r\n colspan: this.getColSpan(item, x), // apparently width 0 TD's don't count, also remove TxnID\r\n showColumn: true,\r\n group: null\r\n }));\r\n\r\n // this takes the column groups and sets up the columns under each group with an IColumn structure\r\n this.cols = flatDeep(\r\n this.colGroups.map(cg =>\r\n Object.keys(item[cg.field])\r\n .map(x => ({\r\n group: cg.field,\r\n field: x,\r\n header: x,\r\n exportable: x === 'TxnID' ? false : true,\r\n style:\r\n x === 'TxnID'\r\n ? 'width:0;display:none;'\r\n : 'width: 8em;',\r\n // style: 'width: 7em',\r\n class:\r\n x === 'Amount'\r\n ? 'currency'\r\n : x === 'Hours'\r\n ? 'hours'\r\n : `disabled ${\r\n x.includes('Amount') ? 'currency' : ''\r\n }`,\r\n // class: 'currency',\r\n showColumn: true\r\n }))\r\n .filter(x => x.showColumn)\r\n )\r\n );\r\n this.log.verbose({\r\n type: 'IndirectRateHistoryContainerComponent:mapColumns',\r\n cols: this.cols,\r\n colgroups: this.colGroups,\r\n item\r\n });\r\n }\r\n}\r\n","export * from './indirect-rate-history-presenter.component';\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { environment } from '../../../../environments/environment';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromShared from '../../../shared';\r\nimport { IColumn, SortEvent } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { ReplaySubject } from 'rxjs';\r\n//import * as FileSaver from 'file-saver';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate-history-presenter',\r\n templateUrl: './indirect-rate-history-presenter.component.html',\r\n styleUrls: ['./indirect-rate-history-presenter.component.scss']\r\n})\r\nexport class IndirectRateHistoryPresenter\r\n extends fromShared.EditGrid\r\n implements OnInit\r\n{\r\n @Input() loading: boolean;\r\n @Input() cols: IColumn[] = [];\r\n //@Input() colGroups: IColumn[] = [];\r\n\r\n private ColGroupsSubject = new ReplaySubject(1);\r\n private _colgroups: any;\r\n @Input() set colGroups(value: any) {\r\n if (value && value.length > 0) {\r\n this._colgroups = value;\r\n this.ColGroupsSubject.next(value);\r\n setTimeout(() => {\r\n this.setColGroupWidth(value);\r\n }, 100);\r\n }\r\n }\r\n get colGroups(): any {\r\n return this._colgroups;\r\n }\r\n\r\n @Output() RateChangeOnlyChanged = new EventEmitter();\r\n rateChangeOnly: boolean;\r\n\r\n numCols = 9;\r\n public dropdownItemHeight = environment.dropdownItemHeight;\r\n constructor(private log: LoggingService, private cdref: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n setColGroupWidth(colgroups) {\r\n const colGroupWidth = `${colgroups[0].colspan * 128}px`;\r\n colgroups.forEach(v => {\r\n const colGroupTH = document.getElementById(`${v.field}`);\r\n colGroupTH.style.minWidth = colGroupWidth;\r\n colGroupTH.style.maxWidth = colGroupWidth;\r\n });\r\n }\r\n\r\n customSort(event: SortEvent) {\r\n this.log.verbose({\r\n type: 'IndirectRateHistoryPresenter:customSort',\r\n event\r\n });\r\n event.data.sort((data1, data2) => {\r\n let value1: any;\r\n let value2: any;\r\n if (event.field.includes('-')) {\r\n const group = event.field.split('-')[0];\r\n const field = event.field.split('-')[1];\r\n value1 = data1[group][field];\r\n value2 = data2[group][field];\r\n } else {\r\n value1 = data1[event.field];\r\n value2 = data2[event.field];\r\n }\r\n let result = null;\r\n\r\n if (value1 == null && value2 != null) {\r\n result = -1;\r\n } else if (value1 != null && value2 == null) {\r\n result = 1;\r\n } else if (value1 == null && value2 == null) {\r\n result = 0;\r\n } else if (\r\n typeof value1 === 'string' &&\r\n typeof value2 === 'string'\r\n ) {\r\n result = value1.localeCompare(value2);\r\n } else {\r\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\r\n }\r\n\r\n return event.order * result;\r\n });\r\n }\r\n\r\n // exportExcel() {\r\n // import('xlsx').then(xlsx => {\r\n // const worksheet = xlsx.utils.json_to_sheet(this.items);\r\n // const workbook = {\r\n // Sheets: { data: worksheet },\r\n // SheetNames: ['data']\r\n // };\r\n // const excelBuffer: any = xlsx.write(workbook, {\r\n // bookType: 'xlsx',\r\n // type: 'array'\r\n // });\r\n // this.saveAsExcelFile(excelBuffer, 'indirect_rate_history_review');\r\n // });\r\n // }\r\n\r\n // saveAsExcelFile(buffer: any, fileName: string): void {\r\n // const EXCEL_TYPE =\r\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n // const EXCEL_EXTENSION = '.xlsx';\r\n // const data: Blob = new Blob([buffer], {\r\n // type: EXCEL_TYPE\r\n // });\r\n // FileSaver.saveAs(data, fileName + '_' + new Date().getTime() + EXCEL_EXTENSION);\r\n // }\r\n}\r\n","export * from './indirect-rate-management-container';\r\nexport * from './indirect-rate-management-presenter';\r\n","export * from './indirect-rate-management-container.component';\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n filter,\r\n map,\r\n startWith,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromLookups from '../../../lookups/store';\r\nimport * as fromShared from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromUser from '../../../user-info';\r\nimport * as fromUserInfo from '../../../user-info';\r\nimport * as fromStore from '../../store';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate-management-container',\r\n templateUrl: './indirect-rate-management-container.component.html',\r\n styleUrls: ['./indirect-rate-management-container.component.scss']\r\n})\r\nexport class IndirectRateManagementContainerComponent\r\n implements OnInit, OnDestroy\r\n{\r\n IndirectRateManagementModel$: Observable<\r\n fromStore.Structure.IndirectRateStructure[]\r\n >;\r\n process$: Observable;\r\n selectedError$: Observable;\r\n fiscalYears$: Observable;\r\n currentFY$: Observable; // Date formatted to MM/DD/YYYY\r\n userInfo$: Observable;\r\n\r\n selectedErrorWithStatus$: Observable;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n FiscalYearSelectedSubject = new ReplaySubject(1);\r\n CancelSubject = new ReplaySubject(1);\r\n private active = true;\r\n showTimer$: Observable;\r\n processingText = '';\r\n jobTimerDataService: EntityCollectionService;\r\n private jobTimerName = 'ef_indirectratesadjust_apply';\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n public store: Store\r\n ) {\r\n this.log.verbose({\r\n type: 'IndirectRateManagementContainerComponent::'\r\n });\r\n this.store.dispatch(fromStore.Structure.clearIndirectRateStructures());\r\n this.store.dispatch(fromStore.Structure.getIndirectRateStructures({}));\r\n\r\n this.jobTimerDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.JobTimer.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.store.dispatch(fromStore.Structure.getIndirectRateTypes());\r\n\r\n this.jobTimerDataService.getWithQuery({\r\n Jobdesc: sessionStorage.getItem('jobTimerName')//this.jobTimerName\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupSubscriptions() {\r\n this.showTimer$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x),\r\n debounceTime(5000)\r\n )\r\n .subscribe(() => { \r\n // if (sessionStorage.getItem('jobTimerName') != 'ef_indirectratesadjust_apply') {\r\n // this.processingText = 'Committing Rate Adjustment';\r\n // } else {\r\n // this.processingText = 'Processing Rate Adjustment';\r\n // } \r\n this.jobTimerDataService.getWithQuery({\r\n Jobdesc: sessionStorage.getItem('jobTimerName')//this.jobTimerName\r\n });\r\n });\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.FiscalYearSelectedSubject.pipe(\r\n takeWhile(() => this.active),\r\n tap(fiscalYear =>\r\n this.log.verbose({\r\n type: 'IndirectRateManagementContainerComponent:onFiscalYearSelected',\r\n fiscalYear\r\n })\r\n )\r\n ).subscribe(fiscalYear => {\r\n const param = fiscalYear ? { FiscalYear: fiscalYear } : {};\r\n this.store.dispatch(\r\n fromStore.Structure.getIndirectRateStructures(param)\r\n );\r\n });\r\n this.CancelSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(\r\n this.FiscalYearSelectedSubject.pipe(\r\n startWith(null as unknown as string)\r\n )\r\n )\r\n ).subscribe(([, fiscalYear]) => {\r\n this.store.dispatch(\r\n fromStore.Structure.clearIndirectRateStructures()\r\n );\r\n this.store.dispatch(\r\n fromStore.Structure.getIndirectRateStructures({\r\n FiscalYear: fiscalYear\r\n })\r\n );\r\n });\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(fromUserInfo.getUserInfo));\r\n\r\n this.IndirectRateManagementModel$ = this.store.pipe(\r\n select(fromStore.Structure.selectAll)\r\n );\r\n this.showTimer$ = this.jobTimerDataService.entities$.pipe(\r\n map(items =>\r\n items.find(item => item.Jobdesc === sessionStorage.getItem('jobTimerName'))//this.jobTimerName)\r\n ),\r\n map(item => (item ? item : { Timer: false })),\r\n map(item => item.Timer)\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$\r\n ]).pipe(\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n )\r\n );\r\n this.fiscalYears$ = this.store.pipe(\r\n select(\r\n fromLookups.ScheduledDateSelectors.selectScheduledDateType({\r\n ScheduledDateType: 'FYE'\r\n })\r\n ),\r\n filter(dates => !!dates && dates.length > 0),\r\n take(1),\r\n map(items =>\r\n items.map(item => ({\r\n label: moment(item.ScheduledEndDate).format('L'),\r\n value: moment(item.ScheduledEndDate).format('L')\r\n }))\r\n )\r\n );\r\n this.currentFY$ = this.store.pipe(\r\n select(fromUser.getUserInfo),\r\n filter(x => !!x),\r\n take(1),\r\n map(ui => moment(ui.FYEndDate).format('L'))\r\n );\r\n }\r\n onShowError(event) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n\r\n onSetProcessingText($event) {\r\n this.processingText = $event;\r\n }\r\n}\r\n","export * from './indirect-rate-management-presenter.component';\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { select, Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { filter, take, takeWhile, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { IStatusMessage, SelectItem } from '../../../shared';\r\nimport { DisplayErrors, IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromUserInfo from '../../../user-info';\r\nimport * as fromStore from '../../store';\r\n@Component({\r\n selector: 'ef-indirect-rate-management-presenter',\r\n templateUrl: './indirect-rate-management-presenter.component.html',\r\n styleUrls: ['./indirect-rate-management-presenter.component.scss']\r\n})\r\nexport class IndirectRateManagementPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, OnDestroy, OnChanges\r\n{\r\n @Input() FiscalYears: SelectItem[];\r\n @Input() CurrentFiscalYear: string;\r\n @Input() selectedErrorWithStatus: IStatusMessage;\r\n @Input() userInfo: fromUserInfo.IUserInfo;\r\n @Output() ShowError: EventEmitter =\r\n new EventEmitter();\r\n @Output() FiscalYearSelected = new EventEmitter();\r\n @Output() Cancel = new EventEmitter();\r\n @Output() SetProcessingText = new ReplaySubject();\r\n\r\n ShowAdjustments = new EventEmitter();\r\n public RefreshSubject = new ReplaySubject();\r\n userInfoSubject = new ReplaySubject(1);\r\n indirectManagementGroup: FormGroup;\r\n showReview = false;\r\n numCols = 9;\r\n private active = true;\r\n enableFYImpactButton = false;\r\n\r\n fyMessageDisplayed = true;\r\n // fyInfoMessage1 = `The FIRST time a period is processed in eFAACT, the transactions are burdened using the following current calendar year indirect rates.`;\r\n // fyInfoMessage2 = `Subsequent period re-processing recognizes the \"Reuse Indirect Rates\" checkbox.`;\r\n // fyInfoMessage3 = `To ensure proper rates are used during initial processing of a period, read the following note before entering new indirect rates.`;\r\n fyInfoMessage = `The initial processing for a period calculates using the current calendar year indirect rates (shown below). If periods are re-processed, the Period Processing \"Reuse Indirect Rates\" checkbox controls whether the previous rates (checked) or current rates (unchecked) are used.`;\r\n fyImportantNote = `IMPORTANT: Complete the initial period processing for all periods in the fiscal year BEFORE entering indirect rates for a new fiscal year.`;\r\n\r\n constructor(\r\n private log: LoggingService,\r\n public store: Store\r\n ) {\r\n super();\r\n this.indirectManagementGroup = new FormGroup({\r\n ShowAdjustments: new FormControl(false),\r\n FiscalYear: new FormControl(null, Validators.required)\r\n });\r\n this.indirectManagementGroup.controls['FiscalYear'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(fy =>\r\n this.log.verbose({\r\n type: 'IndirectRateManagementPresenterComponent:FiscalYear:valueChanges',\r\n fy\r\n })\r\n )\r\n )\r\n .subscribe(fy => {\r\n this.FiscalYearSelected.emit(fy);\r\n this.enableFYImpactButton = false;\r\n });\r\n }\r\n ngOnInit(): void {\r\n this.ShowAdjustments.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfoSubject),\r\n // filter(([value]) => !value),\r\n tap(([value, userInfo]) =>\r\n this.log.verbose({\r\n type: 'IndirectRateManagementPresenterComponent:showAdjustments',\r\n value,\r\n userInfo\r\n })\r\n )\r\n ).subscribe(([value, userInfo]) => {\r\n this.indirectManagementGroup.controls['FiscalYear'].setValue(\r\n value ? moment(userInfo.FYEndDate).format('MM/DD/YYYY') : null\r\n );\r\n if (value) {\r\n this.indirectManagementGroup.controls[\r\n 'FiscalYear'\r\n ].setValidators([Validators.required]);\r\n } else {\r\n this.indirectManagementGroup.controls[\r\n 'FiscalYear'\r\n ].clearValidators();\r\n }\r\n this.indirectManagementGroup.controls[\r\n 'FiscalYear'\r\n ].updateValueAndValidity();\r\n this.indirectManagementGroup.updateValueAndValidity();\r\n });\r\n this.Cancel.pipe(takeWhile(() => this.active)).subscribe(() => {\r\n this.enableFYImpactButton = false;\r\n });\r\n\r\n this.store\r\n .pipe(\r\n select(fromStore.Structure.selectAll),\r\n filter(x => !!x && x.length > 0),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'IndirectRateManagementPresenterComponent:IndirectRateStructures$:tap',\r\n x\r\n })\r\n ),\r\n // filter(rates => rates.some(rate => !!rate.FYenddate)),\r\n take(1)\r\n )\r\n .subscribe(rates => {\r\n if (rates.some(rate => !!rate.FYenddate)) {\r\n // TODO: select adjust full fiscal year\r\n // TODO: select year from the rate\r\n const rate = rates.find(x => !!x.FYenddate);\r\n this.log.verbose({\r\n type: 'IndirectRateManagementPresenterComponent:IndirectRateStructures$',\r\n rates\r\n });\r\n // this.onFiscalYearSelected(rate?.FYenddate);\r\n this.ShowAdjustments.next(true);\r\n this.indirectManagementGroup.controls[\r\n 'ShowAdjustments'\r\n ].setValue(true);\r\n this.indirectManagementGroup.controls[\r\n 'FiscalYear'\r\n ].patchValue(moment(rate?.FYenddate).format('L'));\r\n }\r\n });\r\n\r\n this.indirectManagementGroup.controls['FiscalYear'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.fyMessageDisplayed = false;\r\n } else {\r\n this.fyMessageDisplayed = true;\r\n }\r\n \r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.userInfo && changes.userInfo.currentValue) {\r\n this.userInfoSubject.next(changes.userInfo.currentValue);\r\n }\r\n }\r\n onShowReview(show: boolean) {\r\n this.log.verbose({\r\n type: 'IndirectRateManagementPresenterComponent:onShowReview',\r\n show\r\n });\r\n this.showReview = show;\r\n this.RefreshSubject.next(show);\r\n }\r\n\r\n onSaveRateStructure($event: fromStore.Structure.IndirectRateStructure[]) {\r\n this.enableFYImpactButton = true;\r\n }\r\n\r\n onSetProcessingText($event) {\r\n this.SetProcessingText.next($event);\r\n }\r\n}\r\n","export * from './indirect-rate-review-container';\r\nexport * from './indirect-rate-review-presenter';\r\n","export * from './indirect-rate-review-container.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport {\r\n catchError,\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n skip,\r\n take,\r\n takeWhile,\r\n tap\r\n} from 'rxjs/operators';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { Message } from '../../../shared';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { ToasterService } from '../../../toaster';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate-review-container',\r\n templateUrl: './indirect-rate-review-container.component.html',\r\n styleUrls: ['./indirect-rate-review-container.component.scss']\r\n})\r\nexport class IndirectRateReviewContainerComponent\r\n implements OnInit, AfterViewInit, OnChanges\r\n{\r\n IndirectRateReviewModelDS: EntityCollectionService;\r\n IndirectRateReviewModel$: Observable<\r\n fromDataServices.IndirectRateReview.IndirectRateReviewModel[]\r\n >;\r\n jobTimerDataService: EntityCollectionService;\r\n IndirectRateAdjustDataService: EntityCollectionService;\r\n private jobTimerName = 'ef_indirectratesadjust_apply';\r\n jobTimer$: Observable;\r\n @Input() fiscalYear;\r\n @Input() refresh: boolean;\r\n @Output() Cancel = new EventEmitter();\r\n MessagesSubject = new ReplaySubject(1);\r\n active = true;\r\n\r\n @Output() SetProcessingText = new ReplaySubject();\r\n\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private confirmService: UnsavedChangesService,\r\n private toaster: ToasterService\r\n ) {\r\n this.log.verbose({ type: 'IndirectRateReviewContainerComponent::' });\r\n this.IndirectRateReviewModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.IndirectRateReview.entityName\r\n );\r\n this.jobTimerDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.JobTimer.entityName\r\n );\r\n this.IndirectRateAdjustDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.IndirectRateAdjust.entityName\r\n );\r\n\r\n this.jobTimer$ = this.jobTimerDataService.entities$.pipe(\r\n map(items =>\r\n items.find(item => item.Jobdesc === sessionStorage.getItem('jobTimerName'))\r\n ),\r\n map(item => (item ? item : { Timer: false })),\r\n map(item => item.Timer),\r\n tap(jobTimer => {\r\n this.log.verbose({\r\n type: 'IndirectRateReviewContainerComponent:jobTimer$',\r\n jobTimer\r\n });\r\n }),\r\n distinctUntilChanged()\r\n );\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.log.verbose({\r\n type: 'IndirectRateReviewContainerComponent:ngOnChanges',\r\n changes\r\n });\r\n if (changes.refresh && changes.refresh.currentValue === true) { \r\n this.loadRateAdjustment(this.fiscalYear);\r\n // } else {\r\n // if (changes.fiscalYear && changes.fiscalYear.currentValue) {\r\n // this.loadRateAdjustment(changes.fiscalYear.currentValue);\r\n // }\r\n }\r\n }\r\n loadRateAdjustment(fiscalYear) {\r\n sessionStorage.setItem('jobTimerName', 'ef_indirectratesadjust_apply');\r\n this.SetProcessingText.next('Processing Rate Adjustment');\r\n this.IndirectRateReviewModelDS.clearCache();\r\n this.IndirectRateReviewModelDS.getWithQuery({\r\n FYenddate: fiscalYear,\r\n RateAdjustStep: 'RA'\r\n });\r\n this.IndirectRateReviewModel$ = this.IndirectRateReviewModelDS.entities$;\r\n this.jobTimer$\r\n .pipe(\r\n filter(x => !x),\r\n skip(1),\r\n take(1)\r\n )\r\n .subscribe(jobTimer => {\r\n this.log.verbose({\r\n type: 'IndirectRateReviewContainerComponent:loadRateAdjustment:jobTimer$',\r\n jobTimer\r\n });\r\n this.IndirectRateReviewModelDS.clearCache();\r\n this.IndirectRateReviewModelDS.getWithQuery({\r\n FYenddate: fiscalYear,\r\n RateAdjustStep: 'RA'\r\n }).pipe(take(1)).subscribe(items => { \r\n this.IndirectRateReviewModel$ =\r\n this.IndirectRateReviewModelDS.entities$;\r\n })\r\n });\r\n }\r\n\r\n commitRateAdjustment(fiscalYear) {\r\n this.IndirectRateReviewModel$ =\r\n this.IndirectRateReviewModelDS.entities$;\r\n this.SetProcessingText.next('Committing Rate Adjustment');\r\n sessionStorage.setItem('jobTimerName', 'ef_indirectrateadjust_rebuildYTD_andforward');\r\n this.IndirectRateReviewModelDS.clearCache();\r\n this.IndirectRateReviewModelDS.getWithQuery({\r\n FYenddate: fiscalYear,\r\n RateAdjustStep: 'A'\r\n });\r\n this.jobTimer$\r\n .pipe(\r\n filter(x => !x),\r\n skip(1),\r\n take(1)\r\n )\r\n .subscribe(jobTimer => {\r\n this.log.verbose({\r\n type: 'IndirectRateReviewContainerComponent:loadRateAdjustment:jobTimer$',\r\n jobTimer\r\n });\r\n this.IndirectRateAdjustDataService.clearCache();\r\n this.IndirectRateAdjustDataService.getWithQuery({\r\n FYenddate: fiscalYear,\r\n RateAdjustStep: 'A'\r\n })\r\n .pipe(\r\n take(1),\r\n catchError(err => {\r\n this.toaster.pop({\r\n type: 'error',\r\n title: 'Error',\r\n body: err.message\r\n });\r\n return of(null);\r\n })\r\n )\r\n .subscribe(items => {\r\n if (items) {\r\n this.IndirectRateReviewModel$ = this.IndirectRateAdjustDataService.entities$; \r\n this.MessagesSubject.next([\r\n {\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: 'Rate adjustment entries have been committed.'\r\n }\r\n ]);\r\n }\r\n });\r\n });\r\n }\r\n ngOnInit(): void {}\r\n ngAfterViewInit(): void {\r\n setTimeout(() => { \r\n \r\n \r\n // .pipe(\r\n // map(items => [{ id: 'add' }, ...clone(items)])\r\n // );\r\n }, 0);\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n onCancel(): void {\r\n this.IndirectRateReviewModelDS.getWithQuery({\r\n FYenddate: this.fiscalYear,\r\n RateAdjustStep: 'C'\r\n });\r\n this.Cancel.next();\r\n }\r\n onCommit(): void {\r\n this.commitRateAdjustment(this.fiscalYear);\r\n // this.IndirectRateReviewModelDS.getWithQuery({\r\n // FYenddate: this.fiscalYear,\r\n // RateAdjustStep: 'A'\r\n // })\r\n // .pipe(\r\n // take(1),\r\n // catchError(err => {\r\n // this.toaster.pop({\r\n // type: 'error',\r\n // title: 'Error',\r\n // body: err.message\r\n // });\r\n // return of(null);\r\n // })\r\n // )\r\n // .subscribe(items => {\r\n // if (items) {\r\n // this.MessagesSubject.next([\r\n // {\r\n // severity: 'success',\r\n // summary: 'Success',\r\n // detail: 'Rate adjustment entries have been committed.'\r\n // }\r\n // ]);\r\n // }\r\n // });\r\n }\r\n}\r\n","export * from './indirect-rate-review-presenter.component';\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { environment } from '../../../../environments/environment';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { Message } from '../../../shared';\r\nimport { DisplayErrors } from '../../../shared/errors-sidenav/DisplayErrors';\r\n@Component({\r\n selector: 'ef-indirect-rate-review-presenter',\r\n templateUrl: './indirect-rate-review-presenter.component.html',\r\n styleUrls: ['./indirect-rate-review-presenter.component.scss']\r\n})\r\nexport class IndirectRateReviewPresenter\r\n extends DisplayErrors\r\n implements OnInit {\r\n numCols = 9;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n moment: any;\r\n @Input() loading = false;\r\n @Input() messages: Message[];\r\n @Output() Cancel = new EventEmitter();\r\n @Output() Commit = new EventEmitter();\r\n\r\n cancelDisabled: boolean = false;\r\n commitDisabled: boolean = false;\r\n constructor() {\r\n super();\r\n this.moment = moment;\r\n }\r\n cols = [\r\n { field: 'Contract Type', header: 'Contract Type' },\r\n { field: 'Contract', header: 'Contract' },\r\n { field: 'Task', header: 'Task' },\r\n { field: 'PeriodStart', header: 'PeriodStart' },\r\n { field: 'PeriodEnd', header: 'PeriodEnd' },\r\n { field: 'Cost Center', header: 'Cost Center' },\r\n { field: 'Expense Type', header: 'Expense Type' },\r\n { field: 'Service Item', header: 'Service Item' },\r\n { field: 'TaskListID', header: 'TaskListID' },\r\n { field: 'Hours', header: 'Hours' },\r\n { field: 'Amount', header: 'Amount' },\r\n { field: 'FR Burden', header: 'FR Burden' },\r\n { field: 'OH Burden', header: 'OH Burden' },\r\n { field: 'Handling Burden', header: 'Handling Burden' },\r\n { field: 'GA Burden', header: 'GA Burden' },\r\n { field: 'Before Fee', header: 'Before Fee' },\r\n { field: 'Fee Burden', header: 'Fee Burden' },\r\n { field: 'Burdened Amount', header: 'Burdened Amount' }\r\n ];\r\n\r\n ngOnInit(): void {}\r\n onDownload(): void {\r\n this.dataTable.exportCSV();\r\n }\r\n}\r\n","export * from './indirect-rate-rule-container';\r\nexport * from './indirect-rate-rule-presenter';\r\n","export * from './indirect-rate-rule-container.component';\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\r\nimport {\r\n map,\r\n startWith,\r\n takeWhile,\r\n tap,\r\n distinctUntilChanged,\r\n filter\r\n} from 'rxjs/operators';\r\nimport * as fromStore from '../../store/indirect-rate-rule';\r\nimport * as fromStructure from '../../store/indirect-rate-structure';\r\nimport * as fromCostCenter from '../../store/indirect-rate-cost-center';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IndirectRateRule } from '../../store/indirect-rate-rule';\r\nimport { IStatusMessage } from '../../../shared';\r\nimport { IndirectRateCostCenter } from '../../store/indirect-rate-cost-center';\r\nimport { CalcType } from '../../../lookups';\r\nimport { IndirectRateStructure } from '../../store/indirect-rate-structure';\r\nimport { uniqBy } from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate-rule-container',\r\n templateUrl: './indirect-rate-rule-container.component.html',\r\n styleUrls: ['./indirect-rate-rule-container.component.scss']\r\n})\r\nexport class IndirectRateRuleContainerComponent implements OnInit, OnDestroy {\r\n rateTypes$: Observable;\r\n rateStructures$: Observable;\r\n costCenters$: Observable;\r\n rules$: Observable;\r\n SelectRate = new ReplaySubject(1);\r\n SelectCostCenter = new ReplaySubject(1);\r\n private active = true;\r\n @Input() selectedError: IStatusMessage;\r\n @Output() public ShowError = new EventEmitter();\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(fromStructure.getIndirectRateTypes());\r\n\r\n this.rateTypes$ = this.store.pipe(\r\n select(fromStructure.selectAll),\r\n startWith([{}] as IndirectRateStructure[]),\r\n filter(x => !!x && x.length > 0),\r\n map(rates =>\r\n uniqBy(rates, x => x.Calctype).map(x => ({\r\n label: x.Calcshortdesc,\r\n value: x.Calctype\r\n }))\r\n )\r\n );\r\n\r\n this.costCenters$ = this.store.pipe(\r\n select(fromCostCenter.selectAll),\r\n startWith([{}] as IndirectRateCostCenter[]),\r\n filter(x => !!x && x.length > 0),\r\n map(rates =>\r\n rates.map(x => ({\r\n label: x.Costcenterdesc,\r\n value: x.Costcenterid\r\n }))\r\n )\r\n );\r\n this.rules$ = this.store.pipe(select(fromStore.selectAll));\r\n\r\n combineLatest([this.SelectRate, this.SelectCostCenter])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(([x, y]) => !!x && !!y),\r\n distinctUntilChanged((x, y) => x[0] === y[0] && x[1] === y[1]),\r\n tap(([rateType, costCenter]) =>\r\n this.log.verbose({\r\n type: 'IndirectRateRuleContainerComponent:subscribe',\r\n rateType,\r\n costCenter\r\n })\r\n )\r\n )\r\n .subscribe(([rateType, costCenter]) => {\r\n this.store.dispatch(\r\n fromStore.getIndirectRateRules({ rateType, costCenter })\r\n );\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n}\r\n","export * from './indirect-rate-rule.component';\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { ReplaySubject, combineLatest } from 'rxjs';\r\nimport { takeWhile, take } from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { SelectItem, SortEvent } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport {\r\n IndirectRateRule,\r\n indirectRateRulesFeatureKey\r\n} from '../../store/indirect-rate-rule';\r\nimport { Table } from '../../../shared/efaact-primeng.module';\r\nimport { IStatusMessage, ResponseStatus } from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate-rule',\r\n templateUrl: './indirect-rate-rule.component.html',\r\n styleUrls: ['./indirect-rate-rule.component.scss']\r\n})\r\nexport class IndirectRateRuleComponent implements OnInit {\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n rowGroupMetadata: any;\r\n private _rates: SelectItem[];\r\n @Input() public set rates(value: SelectItem[]) {\r\n this._rates = value;\r\n setTimeout(() => {\r\n this.selectedRate = 'GAR';\r\n this.getRules(this.selectedRate, this.selectedCostCenter);\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:rates',\r\n value,\r\n selectedRate: this.selectedRate\r\n });\r\n }, 0);\r\n }\r\n public get rates(): SelectItem[] {\r\n return this._rates;\r\n }\r\n private _costCenters: SelectItem[];\r\n @Input() public set costCenters(value: SelectItem[]) {\r\n this._costCenters = value;\r\n setTimeout(() => {\r\n this.selectedCostCenter = value[0].value;\r\n this.getRules(this.selectedRate, this.selectedCostCenter);\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:costCenters',\r\n selectedRate: this.selectedRate\r\n });\r\n }, 0);\r\n }\r\n public get costCenters(): SelectItem[] {\r\n return this._costCenters;\r\n }\r\n selectedRate: string;\r\n selectedCostCenter: number;\r\n private _items: IndirectRateRule[];\r\n public get items(): IndirectRateRule[] {\r\n return this._items;\r\n }\r\n @Input() public set items(value: IndirectRateRule[]) {\r\n this._items = value;\r\n this.updateRowGroupMetaData(value);\r\n }\r\n @Output() SelectRate = new ReplaySubject(1);\r\n @Output() SelectCostCenter = new ReplaySubject(1);\r\n @ViewChild('dtIndirectRateStructure', { static: true })\r\n dtIndirectRateStructure: Table;\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'PostingAccountComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n @Output() public ShowError = new EventEmitter();\r\n constructor(\r\n private log: LoggingService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n combineLatest([this.SelectRate, this.SelectCostCenter])\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n $('#divIndirectRate').show();\r\n });\r\n }\r\n getRules(rateType: string, costCenter: number) {\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:getRules',\r\n rateType,\r\n costCenter\r\n });\r\n\r\n this.SelectRate.next(rateType);\r\n this.SelectCostCenter.next(costCenter);\r\n }\r\n updateRowGroupMetaData(data: IndirectRateRule[]) {\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:updateRowGroupMetaData',\r\n data\r\n });\r\n this.rowGroupMetadata = {};\r\n if (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n const rowData = data[i];\r\n const category = rowData.Pool_Base;\r\n if (i === 0) {\r\n this.rowGroupMetadata[category] = { index: 0, size: 1 };\r\n } else {\r\n const previousRowData = data[i - 1];\r\n const previousRowGroup = previousRowData.Pool_Base;\r\n if (category === previousRowGroup) {\r\n this.rowGroupMetadata[category].size++;\r\n } else {\r\n this.rowGroupMetadata[category] = { index: i, size: 1 };\r\n }\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:updateRowGroupMetaData',\r\n data,\r\n rowGroupMetadata: this.rowGroupMetadata\r\n });\r\n this.cdRef.markForCheck();\r\n }\r\n }\r\n onStatusClick(item: IndirectRateRule) {\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.id });\r\n }\r\n customSort($event: SortEvent) {\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:customSort',\r\n $event\r\n });\r\n $event.data.sort((a: IndirectRateRule, b: IndirectRateRule) => {\r\n const result = a.Pool_Base.toLocaleLowerCase().localeCompare(\r\n b.Pool_Base.toLocaleLowerCase()\r\n );\r\n return (\r\n (result === 0\r\n ? a[$event.field]\r\n .toLocaleLowerCase()\r\n .localeCompare(b[$event.field].toLocaleLowerCase())\r\n : result) * $event.order\r\n );\r\n });\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:onFilter',\r\n $event\r\n });\r\n // setTimeout(() => {\r\n this.updateRowGroupMetaData($event.filteredValue);\r\n // }, 50);\r\n }\r\n onSort($event) {\r\n this.log.verbose({\r\n type: 'IndirectRateRuleComponent:onSort',\r\n $event\r\n });\r\n setTimeout(() => {\r\n this.updateRowGroupMetaData(\r\n this.dtIndirectRateStructure.filteredValue ||\r\n this.dtIndirectRateStructure.value\r\n );\r\n }, 50);\r\n }\r\n}\r\n","export * from './indirect-rate-structure-container';\r\nexport * from './indirect-rate-structure-presenter';\r\n","export * from './indirect-rate-structure-container.component';\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ActionsSubject, select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { map, take, takeWhile, tap } from 'rxjs/operators';\r\nimport { IStatusMessage } from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { getUserInfo, IUserInfo } from '../../../user-info';\r\nimport * as fromStore from '../../store';\r\n@Component({\r\n selector: 'ef-indirect-rate-structure-container',\r\n templateUrl: './indirect-rate-structure-container.component.html',\r\n styleUrls: ['./indirect-rate-structure-container.component.scss']\r\n})\r\nexport class IndirectRateStructureContainerComponent\r\n implements OnInit, OnDestroy\r\n{\r\n rateStructures$: Observable;\r\n rateTypes$: Observable;\r\n userInfo$: Observable;\r\n // SaveItemSubject = new ReplaySubject(1);\r\n private active = true;\r\n @Input() selectedError: IStatusMessage;\r\n @Input() FiscalYearEndDate: Date;\r\n @Input() showAdjustments: boolean;\r\n @Input() disabled: boolean;\r\n @Output() Save = new ReplaySubject<\r\n fromStore.Structure.IndirectRateStructure[]\r\n >(1);\r\n @Output() ShowRateReview = new EventEmitter();\r\n @Output() public ShowError = new EventEmitter();\r\n private addTemplate: fromStore.Structure.IndirectRateStructure = {\r\n id: 'add',\r\n Adjusteddate: null,\r\n Adjustedrate: null,\r\n Calcshortdesc: '',\r\n Calctype: '',\r\n Costcenterid: -1,\r\n FYadjusted: null,\r\n FYenddate: null,\r\n Maintdate: null,\r\n Maintdate_pending: null,\r\n Modifiedby: null,\r\n Ratepercent_pending: null,\r\n Ratepercent: null,\r\n Row_Version: '0x0000000000000000',\r\n Status: {\r\n Message: '',\r\n MsgEntityID: null,\r\n MsgProcessID: null,\r\n StatusCode: 0\r\n }\r\n };\r\n constructor(\r\n private store: Store,\r\n private dispatcher: ActionsSubject,\r\n private log: LoggingService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupSubscriptions() {\r\n this.rateStructures$ = this.store.pipe(\r\n select(fromStore.Structure.selectAll),\r\n map(x => clone(x)),\r\n map(items => items.filter(x => x.id !== 'add')),\r\n map(items => [{ ...this.addTemplate }, ...items])\r\n );\r\n this.rateTypes$ = this.store.pipe(\r\n select(fromStore.Structure.selectIndirectRateTypes),\r\n map(rates =>\r\n rates.map(x => ({ label: x.CalcDesc, value: x.CalcType }))\r\n )\r\n );\r\n this.userInfo$ = this.store.pipe(select(getUserInfo));\r\n this.store\r\n .pipe(\r\n select(fromStore.Structure.selectAll),\r\n takeWhile(() => this.active),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'IndirectRateStructureContainerComponent:rateStructures$',\r\n items\r\n })\r\n )\r\n )\r\n .subscribe(items => {\r\n this.ShowRateReview.next(\r\n items.some(\r\n item =>\r\n item.FYadjusted &&\r\n item.FYadjusted.toLocaleLowerCase().includes(\r\n 'pending'\r\n )\r\n )\r\n );\r\n });\r\n }\r\n\r\n onSaveItem(items: fromStore.Structure.IndirectRateStructure[]) {\r\n this.log.verbose({\r\n type: 'IndirectRateStructureContainerComponent:onSaveItem',\r\n items\r\n });\r\n this.dispatcher\r\n .pipe(\r\n ofType(fromStore.Structure.upsertIndirectRateStructures),\r\n take(1)\r\n // , map(resp => resp.payload.Items[0])\r\n )\r\n .subscribe(resp => {\r\n this.log.verbose({\r\n type: 'IndirectRateStructureContainerComponent:upsertIndirectRateStructures',\r\n resp\r\n });\r\n this.Save.next(items);\r\n });\r\n this.store.dispatch(\r\n fromStore.Structure.putIndirectRateStructures({\r\n indirectRateStructures: items\r\n })\r\n );\r\n }\r\n onDeleteItem(items: fromStore.Structure.IndirectRateStructure[]) {\r\n this.log.verbose({\r\n type: 'IndirectRateStructureContainerComponent:onDeleteItem',\r\n items\r\n });\r\n this.Save.next(items);\r\n this.store.dispatch(\r\n fromStore.Structure.removeIndirectRateStructures({\r\n indirectRateStructures: items\r\n })\r\n );\r\n }\r\n}\r\n","export * from './indirect-rate-structure.component';\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { takeWhile, tap } from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { EditGrid, ResponseStatus } from '../../../shared';\r\nimport { Message, SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../../user-info';\r\nimport { IndirectRateStructure } from '../../store/indirect-rate-structure';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate-structure',\r\n templateUrl: './indirect-rate-structure.component.html',\r\n styleUrls: ['./indirect-rate-structure.component.scss']\r\n})\r\nexport class IndirectRateStructureComponent\r\n extends EditGrid\r\n implements OnInit, OnDestroy, OnChanges\r\n{\r\n @Input() userInfo: Partial;\r\n @Input() rates: SelectItem[];\r\n @Input() showAdjustments: boolean;\r\n @Input() FiscalYearEndDate: Date;\r\n @Input() disabled: boolean;\r\n private ratesSubject = new ReplaySubject(1);\r\n public filteredRates: SelectItem[];\r\n private itemsSubject = new ReplaySubject(1);\r\n public editing: IndirectRateStructure = null as IndirectRateStructure;\r\n selected: IndirectRateStructure[];\r\n cloned: { [i: number]: IndirectRateStructure } = {};\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n moment: any;\r\n messages: Message[];\r\n fyimpactEnabled = false;\r\n private active = true;\r\n constructor(\r\n public confirmservice: UnsavedChangesService,\r\n private log: LoggingService\r\n ) {\r\n super();\r\n this.moment = moment;\r\n }\r\n private addTemplate: any = {\r\n id: 'add',\r\n Adjusteddate: null,\r\n Adjustedrate: null,\r\n Calcshortdesc: '',\r\n Calctype: '',\r\n Costcenterid: -1,\r\n FYadjusted: null,\r\n FYenddate: null,\r\n Maintdate: null,\r\n Maintdate_pending: null,\r\n Modifiedby: null,\r\n Ratepercent_pending: null,\r\n Ratepercent: null,\r\n Row_Version: '0x0000000000000000',\r\n Status: {\r\n Message: '',\r\n MsgEntityID: null,\r\n MsgProcessID: null,\r\n StatusCode: 0\r\n }\r\n };\r\n ngOnInit() {\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.log.verbose({\r\n type: 'IndirectRateStructureComponent:ngOnChanges',\r\n changes\r\n });\r\n if (changes.items && changes.items.currentValue) {\r\n this.itemsSubject.next(changes.items.currentValue);\r\n this.fyimpactEnabled = false;\r\n }\r\n if (changes.rates && changes.rates.currentValue) {\r\n this.ratesSubject.next(changes.rates.currentValue);\r\n }\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.ratesSubject, this.itemsSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(([rates, items]) =>\r\n this.log.verbose({\r\n type: 'IndirectRateStructureComponent:setupSubscriptions',\r\n rates,\r\n items\r\n })\r\n )\r\n )\r\n .subscribe(([rates, items]) => {\r\n this.filteredRates = rates.filter(\r\n x =>\r\n !(\r\n (x.value === 'MHR' || x.value === 'M2R') &&\r\n items.some(y => y.Calctype === x.value)\r\n )\r\n );\r\n });\r\n\r\n this.SaveItem.pipe(takeWhile(() => this.active)).subscribe(() => {\r\n this.fyimpactEnabled = true;\r\n });\r\n }\r\n onRowEditSave(item: IndirectRateStructure) {\r\n // do not call super, this has a confirm popup\r\n // super.onRowEditSave(item);\r\n\r\n // this has to be changed to a number in case IsProcessing === true below, if it is, the .toFixed() in the template will fail\r\n // b/c it tries to do a tofixed on the input value, which comes through as a string. If isProcessing !== true, the result of the\r\n // saveItem is displayed, which comes through as a number.\r\n item.Ratepercent = Number(item.Ratepercent);\r\n item.Adjustedrate = Number(item.Adjustedrate);\r\n item.Status = {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n };\r\n this.items = this.items.filter(x => x.id !== 'add');\r\n this.items = [{ ...this.addTemplate }, ...this.items];\r\n this.log.verbose({\r\n type: 'IndirectRateStructureComponent:onRowEditSave',\r\n item,\r\n cloned: this.cloned,\r\n selected: this.selected,\r\n userInfo: this.userInfo,\r\n items: this.items\r\n });\r\n\r\n this.SaveItem.next([item]);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.messages = [\r\n {\r\n severity: 'info',\r\n summary: '',\r\n style: 'max-width: fit-content',\r\n detail: this.showAdjustments\r\n ? 'Click Review FY Impact to review results prior to committing the FY indirect rate adjustment'\r\n : 'Adjusted rate will be used for future processing, reprocess periods as necessary'\r\n } as any\r\n ];\r\n }\r\n onRowEditCancel(item: IndirectRateStructure) {\r\n super.onRowEditCancel(item);\r\n this.items = [{ ...this.addTemplate }, ...this.items];\r\n }\r\n onRowEditDelete(item: IndirectRateStructure, index: number) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to delete this rate?`\r\n })\r\n .then(() => {\r\n if (item.id === 'add') {\r\n this.items.splice(index, 1, { ...this.addTemplate } as any);\r\n } else {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n\r\n this.DeleteItem.next([item]);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n return;\r\n })\r\n .catch(e => {});\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { RatePlanningFeatureComponent } from '../rate-planning/rate-planning-feature/rate-planning-feature.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { IndirectRateContainerComponent } from './indirect-rate-container/indirect-rate-container.component';\r\nimport {\r\n IndirectRateCostCenterComponent,\r\n IndirectRateCostCenterContainerComponent\r\n} from './indirect-rate-cost-center';\r\nimport { IndirectRateHistoryContainerComponent } from './indirect-rate-history/indirect-rate-history-container/indirect-rate-history-container.component';\r\nimport { IndirectRateHistoryPresenter } from './indirect-rate-history/indirect-rate-history-presenter/indirect-rate-history-presenter.component';\r\nimport {\r\n IndirectRateManagementContainerComponent,\r\n IndirectRateManagementPresenterComponent\r\n} from './indirect-rate-management';\r\nimport {\r\n IndirectRateReviewContainerComponent,\r\n IndirectRateReviewPresenter\r\n} from './indirect-rate-review';\r\nimport {\r\n IndirectRateRuleComponent,\r\n IndirectRateRuleContainerComponent\r\n} from './indirect-rate-rule';\r\nimport {\r\n IndirectRateStructureComponent,\r\n IndirectRateStructureContainerComponent\r\n} from './indirect-rate-structure';\r\nimport {\r\n IndirectRateHistoryRoute,\r\n IndirectRateManagementRoute,\r\n IndirectRateRoute\r\n} from './indirect-rate.route';\r\nimport { IndirectRateComponent } from './indirect-rate/indirect-rate.component';\r\nimport { IndirectContainerComponent, IndirectRoute } from './indirect.route';\r\nimport { IndirectRateCostCenterEffects } from './store/indirect-rate-cost-center/indirect-rate-cost-center.effects';\r\nimport * as fromIndirectRateCostCenter from './store/indirect-rate-cost-center/indirect-rate-cost-center.reducer';\r\nimport { IndirectRateRuleEffects } from './store/indirect-rate-rule/indirect-rate-rule.effects';\r\nimport * as fromIndirectRateRule from './store/indirect-rate-rule/indirect-rate-rule.reducer';\r\nimport { IndirectRateStructureEffects } from './store/indirect-rate-structure/indirect-rate-structure.effects';\r\nimport * as fromIndirectRateStructure from './store/indirect-rate-structure/indirect-rate-structure.reducer';\r\n@NgModule({\r\n declarations: [\r\n IndirectRateContainerComponent,\r\n IndirectRateComponent,\r\n IndirectContainerComponent,\r\n IndirectRateCostCenterComponent,\r\n IndirectRateCostCenterContainerComponent,\r\n IndirectRateStructureContainerComponent,\r\n IndirectRateStructureComponent,\r\n IndirectRateRuleContainerComponent,\r\n IndirectRateRuleComponent,\r\n IndirectRateManagementContainerComponent,\r\n IndirectRateManagementPresenterComponent,\r\n IndirectRateReviewContainerComponent,\r\n IndirectRateReviewPresenter,\r\n IndirectRateHistoryContainerComponent,\r\n IndirectRateHistoryPresenter,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(\r\n fromIndirectRateCostCenter.indirectRateCostCentersFeatureKey,\r\n fromIndirectRateCostCenter.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromIndirectRateStructure.indirectRateStructuresFeatureKey,\r\n fromIndirectRateStructure.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromIndirectRateRule.indirectRateRulesFeatureKey,\r\n fromIndirectRateRule.reducer\r\n ),\r\n EffectsModule.forFeature([\r\n IndirectRateCostCenterEffects,\r\n IndirectRateStructureEffects,\r\n IndirectRateRuleEffects\r\n ]),\r\n UIRouterModule.forChild({\r\n states: [\r\n IndirectRoute,\r\n IndirectRateRoute,\r\n IndirectRateManagementRoute,\r\n IndirectRateHistoryRoute\r\n ]\r\n })\r\n ]\r\n})\r\nexport class IndirectRateModule {}\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport * as fromIndirectRate from '.';\r\nimport { RatePlanningFeatureComponent } from '../rate-planning/rate-planning-feature/rate-planning-feature.component';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const IndirectRateRoute: Ng2StateDeclaration = {\r\n // name: 'indirectrate.**'\r\n name: 'indirect.rate',\r\n // url: '/indirect/rate',\r\n url: '/rate',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: fromIndirectRate.IndirectRateContainerComponent\r\n};\r\nexport const IndirectRateManagementRoute: Ng2StateDeclaration = {\r\n // name: 'indirectrate.**'\r\n name: 'indirect.management',\r\n // url: '/indirect/rate',\r\n url: '/management',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: fromIndirectRate.IndirectRateManagementContainerComponent\r\n};\r\nexport const IndirectRateHistoryRoute: Ng2StateDeclaration = {\r\n // name: 'indirectrate.**'\r\n name: 'indirect.history',\r\n // url: '/indirect/rate',\r\n url: '/history',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: fromIndirectRate.IndirectRateHistoryContainerComponent\r\n};\r\n\r\nexport const RatePlanningRoute: Ng2StateDeclaration = {\r\n name: 'indirect.rateplanning',\r\n url: '/rateplanning',\r\n data: { requiresAuth: true },\r\n component: RatePlanningFeatureComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { CalcType } from '../lookups/CalcType';\r\nimport { IGenericResponse } from '../shared';\r\nimport { LoadingService } from '../shared/loading';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromRoot from '../store';\r\nimport { IndirectRateCostCenter } from './store/indirect-rate-cost-center';\r\nimport { IndirectRateRule } from './store/indirect-rate-rule';\r\nimport { IndirectRateStructure } from './store/indirect-rate-structure';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IndirectRateService extends LoadingService {\r\n private uri = `${environment.apiLocation}/IndirectRate`;\r\n private indirectRateTypeUri = `${environment.apiLocation}/IndirectRateType`;\r\n private indirectRateCostCenterUri = `${environment.apiLocation}/IndirectRateCostCenter`;\r\n private indirectRateRuleUri = `${environment.apiLocation}/IndirectRateRule`;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n\r\n public post(params: {\r\n FYenddate: string;\r\n Ratetype?: string;\r\n }): Observable {\r\n super.Load();\r\n return this.http.post(this.uri, params).pipe(\r\n tap(data => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'IndirectRateService:post',\r\n data\r\n });\r\n }),\r\n map(rates =>\r\n rates.map(x => ({\r\n ...x,\r\n id: this.getIndirectRateStructureId(x)\r\n }))\r\n )\r\n );\r\n }\r\n public put(\r\n items: IndirectRateStructure[]\r\n ): Observable> {\r\n // return getTestServiceError(20, items as IndirectRateStructure[], 'id');\r\n this.log.verbose({\r\n type: 'IndirectRateService:put',\r\n items\r\n });\r\n return this.http\r\n .put>(this.uri, {\r\n IndirectRateList: items\r\n })\r\n .pipe(\r\n tap(resp =>\r\n this.log.verbose({\r\n type: 'IndirectRateService:response',\r\n resp\r\n })\r\n ),\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(x => ({\r\n ...x,\r\n id: this.getIndirectRateStructureId(x)\r\n }))\r\n }))\r\n );\r\n }\r\n public delete(items): Observable> {\r\n // return getTestServiceError(20, items as IndirectRateStructure[], 'id');\r\n return this.put(items.map(x => ({ ...x, Ratepercent: 0 })));\r\n // return this.http.request>(\r\n // 'DELETE',\r\n // this.uri,\r\n // {\r\n // body: { EntityIDs: [...items.map(x => x.id)] }\r\n // }\r\n // );\r\n }\r\n public getIndirectRateTypes(): Observable {\r\n super.Load();\r\n return this.http.get(this.indirectRateTypeUri).pipe(\r\n tap(data => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'IndirectRateService:getIndirectRateTypes',\r\n data\r\n });\r\n })\r\n );\r\n }\r\n public getIndirectRateCostCenters(): Observable {\r\n super.Load();\r\n return this.http\r\n .get(this.indirectRateCostCenterUri)\r\n .pipe(\r\n tap(data => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'IndirectRateService:getIndirectRateCostCenters',\r\n data\r\n });\r\n }),\r\n map(rates =>\r\n rates.map(x => ({\r\n ...x,\r\n id: x.Costcenterid\r\n }))\r\n )\r\n );\r\n }\r\n public putIndirectRateCostCenters(\r\n items: IndirectRateCostCenter[]\r\n ): Observable> {\r\n // return getTestServiceError(20, items as IndirectRateCostCenter[], 'id');\r\n return this.http\r\n .put>(\r\n this.indirectRateCostCenterUri,\r\n {\r\n IndirectRateCostCenterList: items\r\n }\r\n )\r\n .pipe(\r\n tap(data => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'IndirectRateService:getIndirectRateCostCenters',\r\n data\r\n });\r\n }),\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(x => ({\r\n ...x,\r\n id: x.Costcenterid\r\n }))\r\n }))\r\n );\r\n }\r\n public getIndirectRateRules(\r\n rateType: string,\r\n costCenter: number\r\n ): Observable {\r\n this.log.verbose({\r\n type: 'IndirectRateService:getIndirectRateRules',\r\n rateType,\r\n costCenter\r\n });\r\n super.Load();\r\n return this.http\r\n .post(this.indirectRateRuleUri, {\r\n Calctype: rateType,\r\n Costcenterid: costCenter\r\n })\r\n .pipe(\r\n tap(data => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'IndirectRateService:getIndirectRateRules',\r\n data\r\n });\r\n }),\r\n map(rates =>\r\n rates.map(x => ({\r\n ...x,\r\n id: this.getIndirectRateRuleId(x)\r\n }))\r\n )\r\n );\r\n }\r\n private getIndirectRateStructureId(item: IndirectRateStructure) {\r\n return `${item.Costcenterid}${item.Calctype}`;\r\n }\r\n private getIndirectRateRuleId(item: IndirectRateRule) {\r\n return `${item.Costcenterid}-${item.Calctype}-${item.Ratecomponent}`;\r\n }\r\n}\r\n","export * from './indirect-rate.component';\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IStatusMessage } from '../../shared';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-indirect-rate',\r\n templateUrl: './indirect-rate.component.html',\r\n styleUrls: ['./indirect-rate.component.scss']\r\n})\r\nexport class IndirectRateComponent implements OnInit {\r\n @Input() selectedError: IStatusMessage;\r\n\r\n @Output() public ShowError = new EventEmitter();\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Ng2StateDeclaration } from '@uirouter/angular';\r\n\r\n@Component({ template: '' })\r\nexport class IndirectContainerComponent {}\r\nexport const IndirectRoute: Ng2StateDeclaration = {\r\n // name: 'indirectrate.**',\r\n name: 'indirect',\r\n url: '/indirect',\r\n redirectTo: 'indirect.rate',\r\n abstract: true,\r\n component: IndirectContainerComponent // apparently this is necessary to contain a :P\r\n // , loadChildren: () => import('./indirect-rate.module').then(r => r.IndirectRateModule)\r\n};\r\n","export * as CostCenter from './indirect-rate-cost-center';\r\nexport * as Rule from './indirect-rate-rule';\r\nexport * as Structure from './indirect-rate-structure';\r\n","export * from './indirect-rate-cost-center.model';\r\nexport * from './indirect-rate-cost-center.actions';\r\nexport * from './indirect-rate-cost-center.effects';\r\nexport * from './indirect-rate-cost-center.reducer';\r\nexport * from './indirect-rate-cost-center.selectors';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { IndirectRateCostCenter } from './indirect-rate-cost-center.model';\r\n\r\nexport const loadIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Load IndirectRateCostCenters',\r\n props<{ indirectRateCostCenters: IndirectRateCostCenter[] }>()\r\n);\r\n\r\nexport const addIndirectRateCostCenter = createAction(\r\n '[IndirectRateCostCenter/API] Add IndirectRateCostCenter',\r\n props<{ indirectRateCostCenter: IndirectRateCostCenter }>()\r\n);\r\n\r\nexport const upsertIndirectRateCostCenter = createAction(\r\n '[IndirectRateCostCenter/API] Upsert IndirectRateCostCenter',\r\n props<{ indirectRateCostCenter: IndirectRateCostCenter }>()\r\n);\r\n\r\nexport const addIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Add IndirectRateCostCenters',\r\n props<{ indirectRateCostCenters: IndirectRateCostCenter[] }>()\r\n);\r\n\r\nexport const upsertIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Upsert IndirectRateCostCenters',\r\n props<{ indirectRateCostCenters: IndirectRateCostCenter[] }>()\r\n);\r\n\r\nexport const updateIndirectRateCostCenter = createAction(\r\n '[IndirectRateCostCenter/API] Update IndirectRateCostCenter',\r\n props<{ indirectRateCostCenter: Update }>()\r\n);\r\n\r\nexport const updateIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Update IndirectRateCostCenters',\r\n props<{ indirectRateCostCenters: Update[] }>()\r\n);\r\n\r\nexport const deleteIndirectRateCostCenter = createAction(\r\n '[IndirectRateCostCenter/API] Delete IndirectRateCostCenter',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Delete IndirectRateCostCenters',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Clear IndirectRateCostCenters'\r\n);\r\n\r\nexport const getIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Get IndirectRateCostCenters'\r\n);\r\n\r\nexport const putIndirectRateCostCenters = createAction(\r\n '[IndirectRateCostCenter/API] Put IndirectRateCostCenters',\r\n props<{ indirectRateCostCenters: IndirectRateCostCenter[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport { concatMap, switchMap, map, catchError } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\n\r\nimport * as IndirectRateCostCenterActions from './indirect-rate-cost-center.actions';\r\nimport { IndirectRateService } from '../../indirect-rate.service';\r\nimport { ResponseStatus } from '../../../shared';\r\n\r\n@Injectable()\r\nexport class IndirectRateCostCenterEffects {\r\n getIndirectRateCostCenters$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateCostCenterActions.getIndirectRateCostCenters),\r\n switchMap(() =>\r\n this.service.getIndirectRateCostCenters().pipe(\r\n map(resp =>\r\n IndirectRateCostCenterActions.loadIndirectRateCostCenters(\r\n { indirectRateCostCenters: resp }\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putIndirectRateCostCentersStatusUpdate$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateCostCenterActions.putIndirectRateCostCenters),\r\n map(action =>\r\n IndirectRateCostCenterActions.upsertIndirectRateCostCenters({\r\n indirectRateCostCenters: action.indirectRateCostCenters.map(\r\n x => ({\r\n ...x,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Loading'\r\n }\r\n })\r\n )\r\n })\r\n )\r\n );\r\n });\r\n putIndirectRateCostCenters$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateCostCenterActions.putIndirectRateCostCenters),\r\n switchMap(action =>\r\n this.service\r\n .putIndirectRateCostCenters(action.indirectRateCostCenters)\r\n .pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n IndirectRateCostCenterActions.upsertIndirectRateCostCenters(\r\n {\r\n indirectRateCostCenters:\r\n resp.Items\r\n }\r\n ),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.id.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(\r\n resp\r\n )\r\n ),\r\n IndirectRateCostCenterActions.upsertIndirectRateCostCenters(\r\n {\r\n indirectRateCostCenters:\r\n resp.Items\r\n }\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: IndirectRateService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../../shared';\r\n\r\nexport interface IndirectRateCostCenter {\r\n id: number;\r\n Allocatefacility: boolean;\r\n Costcenterdesc: string;\r\n Costcenterid: number;\r\n FRR: number;\r\n GAR: number;\r\n M2R: number;\r\n MHR: number;\r\n OHR: number;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as IndirectRateCostCenterActions from './indirect-rate-cost-center.actions';\r\nimport { IndirectRateCostCenter } from './indirect-rate-cost-center.model';\r\n\r\nexport const indirectRateCostCentersFeatureKey = 'indirectRateCostCenters';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst indirectRateCostCenterReducer = createReducer(\r\n initialState,\r\n on(\r\n IndirectRateCostCenterActions.addIndirectRateCostCenter,\r\n (state, action) => adapter.addOne(action.indirectRateCostCenter, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.upsertIndirectRateCostCenter,\r\n (state, action) =>\r\n adapter.upsertOne(action.indirectRateCostCenter, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.addIndirectRateCostCenters,\r\n (state, action) =>\r\n adapter.addMany(action.indirectRateCostCenters, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.upsertIndirectRateCostCenters,\r\n (state, action) =>\r\n adapter.upsertMany(action.indirectRateCostCenters, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.updateIndirectRateCostCenter,\r\n (state, action) =>\r\n adapter.updateOne(action.indirectRateCostCenter, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.updateIndirectRateCostCenters,\r\n (state, action) =>\r\n adapter.updateMany(action.indirectRateCostCenters, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.deleteIndirectRateCostCenter,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.deleteIndirectRateCostCenters,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(\r\n IndirectRateCostCenterActions.loadIndirectRateCostCenters,\r\n (state, action) => adapter.setAll(action.indirectRateCostCenters, state)\r\n ),\r\n on(IndirectRateCostCenterActions.clearIndirectRateCostCenters, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return indirectRateCostCenterReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromIndirectRateCostCenter from './indirect-rate-cost-center.reducer';\r\n\r\nexport const selectIndirectRateCostCenterState = createFeatureSelector<\r\n fromIndirectRateCostCenter.State\r\n>(fromIndirectRateCostCenter.indirectRateCostCentersFeatureKey);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromIndirectRateCostCenter.adapter.getSelectors(\r\n selectIndirectRateCostCenterState\r\n);\r\n","export * from './indirect-rate-rule.model';\r\nexport * from './indirect-rate-rule.actions';\r\nexport * from './indirect-rate-rule.effects';\r\nexport * from './indirect-rate-rule.reducer';\r\nexport * from './indirect-rate-rule.selectors';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { IndirectRateRule } from './indirect-rate-rule.model';\r\n\r\nexport const loadIndirectRateRules = createAction(\r\n '[IndirectRateRule/API] Load IndirectRateRules',\r\n props<{ indirectRateRules: IndirectRateRule[] }>()\r\n);\r\n\r\nexport const addIndirectRateRule = createAction(\r\n '[IndirectRateRule/API] Add IndirectRateRule',\r\n props<{ indirectRateRule: IndirectRateRule }>()\r\n);\r\n\r\nexport const upsertIndirectRateRule = createAction(\r\n '[IndirectRateRule/API] Upsert IndirectRateRule',\r\n props<{ indirectRateRule: IndirectRateRule }>()\r\n);\r\n\r\nexport const addIndirectRateRules = createAction(\r\n '[IndirectRateRule/API] Add IndirectRateRules',\r\n props<{ indirectRateRules: IndirectRateRule[] }>()\r\n);\r\n\r\nexport const upsertIndirectRateRules = createAction(\r\n '[IndirectRateRule/API] Upsert IndirectRateRules',\r\n props<{ indirectRateRules: IndirectRateRule[] }>()\r\n);\r\n\r\nexport const updateIndirectRateRule = createAction(\r\n '[IndirectRateRule/API] Update IndirectRateRule',\r\n props<{ indirectRateRule: Update }>()\r\n);\r\n\r\nexport const updateIndirectRateRules = createAction(\r\n '[IndirectRateRule/API] Update IndirectRateRules',\r\n props<{ indirectRateRules: Update[] }>()\r\n);\r\n\r\nexport const deleteIndirectRateRule = createAction(\r\n '[IndirectRateRule/API] Delete IndirectRateRule',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteIndirectRateRules = createAction(\r\n '[IndirectRateRule/API] Delete IndirectRateRules',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearIndirectRateRules = createAction(\r\n '[IndirectRateRule/API] Clear IndirectRateRules'\r\n);\r\n\r\nexport const getIndirectRateRules = createAction(\r\n '[IndirectRateRule/API] Get IndirectRateRules',\r\n props<{ rateType: string, costCenter: number }>()\r\n\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport { concatMap, switchMap, map, catchError } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\n\r\nimport * as IndirectRateRuleActions from './indirect-rate-rule.actions';\r\nimport { IndirectRateService } from '../../indirect-rate.service';\r\n\r\n@Injectable()\r\nexport class IndirectRateRuleEffects {\r\n getIndirectRateRulesIndirectRateRules$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateRuleActions.getIndirectRateRules),\r\n switchMap(action =>\r\n this.service.getIndirectRateRules(action.rateType, action.costCenter).pipe(\r\n map(indirectRateRules =>\r\n IndirectRateRuleActions.loadIndirectRateRules({\r\n indirectRateRules\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: IndirectRateService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../../shared';\r\n\r\nexport interface IndirectRateRule {\r\n id: string;\r\n Costcenterid: number;\r\n Calctype: string;\r\n Pool_Base: string;\r\n Ratecomponent: string;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as IndirectRateRuleActions from './indirect-rate-rule.actions';\r\nimport { IndirectRateRule } from './indirect-rate-rule.model';\r\n\r\nexport const indirectRateRulesFeatureKey = 'indirectRateRules';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst indirectRateRuleReducer = createReducer(\r\n initialState,\r\n on(IndirectRateRuleActions.addIndirectRateRule, (state, action) =>\r\n adapter.addOne(action.indirectRateRule, state)\r\n ),\r\n on(IndirectRateRuleActions.upsertIndirectRateRule, (state, action) =>\r\n adapter.upsertOne(action.indirectRateRule, state)\r\n ),\r\n on(IndirectRateRuleActions.addIndirectRateRules, (state, action) =>\r\n adapter.addMany(action.indirectRateRules, state)\r\n ),\r\n on(IndirectRateRuleActions.upsertIndirectRateRules, (state, action) =>\r\n adapter.upsertMany(action.indirectRateRules, state)\r\n ),\r\n on(IndirectRateRuleActions.updateIndirectRateRule, (state, action) =>\r\n adapter.updateOne(action.indirectRateRule, state)\r\n ),\r\n on(IndirectRateRuleActions.updateIndirectRateRules, (state, action) =>\r\n adapter.updateMany(action.indirectRateRules, state)\r\n ),\r\n on(IndirectRateRuleActions.deleteIndirectRateRule, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(IndirectRateRuleActions.deleteIndirectRateRules, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(IndirectRateRuleActions.loadIndirectRateRules, (state, action) =>\r\n adapter.setAll(action.indirectRateRules, state)\r\n ),\r\n on(IndirectRateRuleActions.clearIndirectRateRules, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return indirectRateRuleReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromIndirectRateRule from './indirect-rate-rule.reducer';\r\n\r\nexport const selectIndirectRateRuleState = createFeatureSelector<\r\n fromIndirectRateRule.State\r\n>(fromIndirectRateRule.indirectRateRulesFeatureKey);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromIndirectRateRule.adapter.getSelectors(selectIndirectRateRuleState);\r\n","export * from './indirect-rate-structure.model';\r\nexport * from './indirect-rate-structure.actions';\r\nexport * from './indirect-rate-structure.effects';\r\nexport * from './indirect-rate-structure.reducer';\r\nexport * from './indirect-rate-structure.selectors';\r\n","import { Update } from '@ngrx/entity';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\nimport { IndirectRateStructure } from './indirect-rate-structure.model';\r\n\r\nexport const loadIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Load IndirectRateStructures',\r\n props<{ indirectRateStructures: IndirectRateStructure[] }>()\r\n);\r\n\r\nexport const addIndirectRateStructure = createAction(\r\n '[IndirectRateStructure/API] Add IndirectRateStructure',\r\n props<{ indirectRateStructure: IndirectRateStructure }>()\r\n);\r\n\r\nexport const upsertIndirectRateStructure = createAction(\r\n '[IndirectRateStructure/API] Upsert IndirectRateStructure',\r\n props<{ indirectRateStructure: IndirectRateStructure }>()\r\n);\r\n\r\nexport const addIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Add IndirectRateStructures',\r\n props<{ indirectRateStructures: IndirectRateStructure[] }>()\r\n);\r\n\r\nexport const upsertIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Upsert IndirectRateStructures',\r\n props<{ indirectRateStructures: IndirectRateStructure[] }>()\r\n);\r\n\r\nexport const updateIndirectRateStructure = createAction(\r\n '[IndirectRateStructure/API] Update IndirectRateStructure',\r\n props<{ indirectRateStructure: Update }>()\r\n);\r\n\r\nexport const updateIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Update IndirectRateStructures',\r\n props<{ indirectRateStructures: Update[] }>()\r\n);\r\n\r\nexport const deleteIndirectRateStructure = createAction(\r\n '[IndirectRateStructure/API] Delete IndirectRateStructure',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Delete IndirectRateStructures',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Clear IndirectRateStructures'\r\n);\r\n\r\nexport const getIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Get IndirectRateStructures',\r\n props<{ FiscalYear?: string; Ratetype?: string }>()\r\n);\r\nexport const getIndirectRateTypes = createAction(\r\n '[IndirectRateType/API] Get IndirectRateTypes'\r\n);\r\nexport const loadIndirectRateTypes = createAction(\r\n '[IndirectRateType/API] Load IndirectRateTypes',\r\n props<{ indirectRateTypes: CalcType[] }>()\r\n);\r\nexport const putIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Put IndirectRateStructure',\r\n props<{ indirectRateStructures: IndirectRateStructure[] }>()\r\n);\r\nexport const removeIndirectRateStructures = createAction(\r\n '[IndirectRateStructure/API] Remove IndirectRateStructure',\r\n props<{ indirectRateStructures: IndirectRateStructure[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport {\r\n catchError,\r\n concatMap,\r\n map,\r\n switchMap,\r\n tap,\r\n throttleTime\r\n} from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport { ResponseStatus } from '../../../shared';\r\nimport { IndirectRateService } from '../../indirect-rate.service';\r\nimport * as CostCenterActions from '../indirect-rate-cost-center/indirect-rate-cost-center.actions';\r\nimport * as IndirectRateStructureActions from './indirect-rate-structure.actions';\r\n\r\nconst log = new fromShared.Services.Logging.LoggingService();\r\n\r\n@Injectable()\r\nexport class IndirectRateStructureEffects {\r\n getIndirectRateStructures$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateStructureActions.getIndirectRateStructures),\r\n switchMap(action => {\r\n log.verbose({\r\n type: 'IndirectRateStructureEffects:getIndirectRateStructures$',\r\n action\r\n });\r\n // if (!!action.Ratetype) {\r\n return this.service\r\n .post({\r\n FYenddate: action.FiscalYear,\r\n Ratetype: action.Ratetype\r\n })\r\n .pipe(\r\n map(indirectRateStructures =>\r\n IndirectRateStructureActions.loadIndirectRateStructures(\r\n {\r\n indirectRateStructures\r\n }\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n // } else {\r\n // return this.service.get(action.FiscalYear).pipe(\r\n // map(indirectRateStructures =>\r\n // IndirectRateStructureActions.loadIndirectRateStructures(\r\n // {\r\n // indirectRateStructures\r\n // }\r\n // )\r\n // ),\r\n // catchError(fromShared.Errors.handleServiceError)\r\n // );\r\n // }\r\n })\r\n );\r\n });\r\n getIndirectRateTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateStructureActions.getIndirectRateTypes),\r\n throttleTime(5000), // multiple pieces of indirect rate structure use this, but only the first one in needs to make the API call\r\n switchMap(() => {\r\n return this.service.getIndirectRateTypes().pipe(\r\n map(indirectRateTypes =>\r\n IndirectRateStructureActions.loadIndirectRateTypes({\r\n indirectRateTypes\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n })\r\n );\r\n });\r\n putIndirectRateStructures$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateStructureActions.putIndirectRateStructures),\r\n tap(action =>\r\n log.verbose({\r\n type: 'IndirectRateStructureEffects:putIndirectRateStructures$',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service.put(action.indirectRateStructures).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n IndirectRateStructureActions.upsertIndirectRateStructures(\r\n {\r\n indirectRateStructures: resp.Items\r\n }\r\n ),\r\n IndirectRateStructureActions.deleteIndirectRateStructures(\r\n {\r\n ids: resp.Items.filter(\r\n x => x.Ratepercent === 0\r\n ).map(x => x.id)\r\n }\r\n ),\r\n CostCenterActions.getIndirectRateCostCenters(),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.id.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n IndirectRateStructureActions.upsertIndirectRateStructures(\r\n {\r\n indirectRateStructures: resp.Items\r\n }\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n removeIndirectRateStructures$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(IndirectRateStructureActions.removeIndirectRateStructures),\r\n switchMap(action =>\r\n this.service.delete(action.indirectRateStructures).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n IndirectRateStructureActions.deleteIndirectRateStructures(\r\n {\r\n ids: resp.Items.map(x => x.id)\r\n }\r\n ),\r\n CostCenterActions.getIndirectRateCostCenters(),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.id.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n IndirectRateStructureActions.upsertIndirectRateStructures(\r\n {\r\n indirectRateStructures: resp.Items\r\n }\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: IndirectRateService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../../shared';\r\n\r\nexport interface IndirectRateStructure {\r\n id: string;\r\n Adjusteddate: Date;\r\n Adjustedrate: number;\r\n Calcshortdesc: string;\r\n Calctype: string;\r\n Costcenterid: number;\r\n FYadjusted: string;\r\n FYenddate: Date;\r\n Maintdate_pending: boolean;\r\n Maintdate: Date;\r\n Modifiedby: string;\r\n Ratepercent_pending: boolean;\r\n Ratepercent: number;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\nimport * as IndirectRateStructureActions from './indirect-rate-structure.actions';\r\nimport { IndirectRateStructure } from './indirect-rate-structure.model';\r\n\r\nexport const indirectRateStructuresFeatureKey = 'indirectRateStructures';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n IndirectRateTypes: CalcType[];\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n IndirectRateTypes: []\r\n});\r\n\r\nconst indirectRateStructureReducer = createReducer(\r\n initialState,\r\n on(IndirectRateStructureActions.addIndirectRateStructure, (state, action) =>\r\n adapter.addOne(action.indirectRateStructure, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.upsertIndirectRateStructure,\r\n (state, action) =>\r\n adapter.upsertOne(action.indirectRateStructure, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.addIndirectRateStructures,\r\n (state, action) => adapter.addMany(action.indirectRateStructures, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.upsertIndirectRateStructures,\r\n (state, action) =>\r\n adapter.upsertMany(action.indirectRateStructures, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.updateIndirectRateStructure,\r\n (state, action) =>\r\n adapter.updateOne(action.indirectRateStructure, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.updateIndirectRateStructures,\r\n (state, action) =>\r\n adapter.updateMany(action.indirectRateStructures, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.deleteIndirectRateStructure,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.deleteIndirectRateStructures,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(\r\n IndirectRateStructureActions.loadIndirectRateStructures,\r\n (state, action) => adapter.setAll(action.indirectRateStructures, state)\r\n ),\r\n on(IndirectRateStructureActions.clearIndirectRateStructures, state =>\r\n adapter.removeAll(state)\r\n ),\r\n on(IndirectRateStructureActions.loadIndirectRateTypes, (state, action) => ({\r\n ...state,\r\n IndirectRateTypes: action.indirectRateTypes\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return indirectRateStructureReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromIndirectRateStructure from './indirect-rate-structure.reducer';\r\n\r\nexport const selectIndirectRateStructureState =\r\n createFeatureSelector(\r\n fromIndirectRateStructure.indirectRateStructuresFeatureKey\r\n );\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromIndirectRateStructure.adapter.getSelectors(\r\n selectIndirectRateStructureState\r\n );\r\n\r\nexport const selectIndirectRateTypes = createSelector(\r\n selectIndirectRateStructureState,\r\n x => x.IndirectRateTypes\r\n);\r\n","import { Component, OnInit } from '@angular/core';\r\nimport * as fromShared from '../../shared';\r\nimport { Observable, of } from 'rxjs';\r\nimport {\r\n Advisor,\r\n CompanyInfo\r\n} from '../../customer-admin/customer-admin.model';\r\nimport * as fromLookup from '../../lookups';\r\nimport * as fromUser from '../../user-info';\r\nimport * as fromCompanyInfoActions from '../../customer-admin/store/company-info/company-info.actions';\r\nimport * as fromCompanyInfoReducer from '../../customer-admin/store/company-info/company-info.reducer';\r\nimport * as fromeFAACTCustomerActions from '../store/efaact-customer/efaact-customer.actions';\r\nimport * as fromeFAACTCustomerReducer from '../store/efaact-customer/efaact-customer.reducer';\r\nimport * as fromJobsActions from '../store/jobs/jobs.actions';\r\nimport * as fromJobsReducer from '../store/jobs/jobs.reducer';\r\nimport * as fromQueueJobActions from '../store/queue-job/queue-job.actions';\r\nimport * as fromQueueJobReducer from '../store/queue-job/queue-job.reducer';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { map, take } from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport { Job } from '../store/jobs/jobs.model';\r\nimport { eFAACTCustomer } from '../store/efaact-customer/efaact-customer.model';\r\nimport * as fromAuth from '../../auth';\r\nimport * as fromAuthR from '../../auth/store/auth.reducer';\r\nimport { QueueJob } from '../store/queue-job/queue-job.model';\r\nimport * as fromAdvisorsActions from '../../customer-admin/store/advisors/advisor.actions';\r\nimport * as fromAdvisorsReducer from '../../customer-admin/store/advisors/advisor.reducer';\r\n@Component({\r\n selector: 'ef-internal-admin-feature',\r\n templateUrl: './internal-admin-feature.component.html',\r\n styleUrls: ['./internal-admin-feature.component.scss']\r\n})\r\nexport class InternalAdminFeatureComponent implements OnInit {\r\n process$: Observable;\r\n items$: Observable;\r\n userInfo$: Observable;\r\n states$: Observable>;\r\n jobs$: Observable>;\r\n customers$: Observable>;\r\n auth$: Observable;\r\n queueJob$: Observable>;\r\n advisors$: Observable;\r\n selectedCustomer: Observable;\r\n\r\n showUpdateMessage = false;\r\n showUpdateFailedMessage = false;\r\n\r\n employeeListID: string;\r\n\r\n constructor(private store: Store) {}\r\n\r\n ngOnInit(): void {\r\n this.auth$ = this.store.pipe(select(fromAuthR.getAuth));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n //this.store.dispatch(fromCompanyInfoActions.getCompanyInfo());\r\n this.store.dispatch(fromeFAACTCustomerActions.geteFAACTCustomer());\r\n this.store.dispatch(fromJobsActions.getJob());\r\n this.store.dispatch(fromAdvisorsActions.getAdvisor());\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.store.dispatch(fromCompanyInfoActions.clearCompanyInfos());\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.states$ = this.store.pipe(select(fromLookup.getStates));\r\n this.items$ = this.store.pipe(\r\n select(fromCompanyInfoReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.customers$ = this.store.pipe(\r\n select(fromeFAACTCustomerReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.jobs$ = this.store.pipe(\r\n select(fromJobsReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.queueJob$ = this.store.pipe(\r\n select(fromQueueJobReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.advisors$ = this.store.pipe(\r\n select(fromAdvisorsReducer.selectAll),\r\n map(z => clone(z))\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.auth$.pipe(take(1)).subscribe(auth => {\r\n this.selectedCustomer = of(auth.CustomerID);\r\n // this.store.dispatch(\r\n // fromCompanyInfoActions.getCompanyInfo({\r\n // customerid: auth.CustomerID\r\n // })\r\n // );\r\n });\r\n this.userInfo$.pipe(take(1)).subscribe(userInfo => {\r\n this.employeeListID = userInfo.EmployeeListID;\r\n });\r\n }\r\n\r\n onCustomerChanged(event) {\r\n this.store.dispatch(\r\n fromCompanyInfoActions.getCompanyInfo({\r\n customerid: event,\r\n IsInternal: true\r\n })\r\n );\r\n }\r\n\r\n onUpdateLicenseInfo(event) {\r\n this.store.dispatch(\r\n fromCompanyInfoActions.putCompanyInfo({ JsonString: event })\r\n );\r\n }\r\n onUpdateCustomerInfo(event) {\r\n this.store.dispatch(\r\n fromCompanyInfoActions.putCompanyInfo({ JsonString: event })\r\n );\r\n }\r\n onQueueJob(event) {\r\n this.store.dispatch(\r\n fromQueueJobActions.postQueueJob({\r\n employeelistid: this.employeeListID,\r\n customerid: event.customerid,\r\n jobid: event.jobid,\r\n storedproc: event.storedproc\r\n })\r\n );\r\n }\r\n onUpdateAdvisor(event) {\r\n this.store.dispatch(\r\n fromCompanyInfoActions.putCompanyInfo({ JsonString: event })\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService, SelectItem } from 'primeng/api';\r\nimport { IState } from '../../lookups';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { Advisor, CompanyInfo } from '../../customer-admin/customer-admin.model';\r\nimport moment from 'moment';\r\nimport { IUserInfo } from '../../user-info';\r\nimport { eFAACTCustomer } from '../store/efaact-customer/efaact-customer.model';\r\nimport { Job } from '../store/jobs/jobs.model';\r\nimport { QueueJob } from '../store/queue-job/queue-job.model';\r\nimport * as fromAuth from '../../auth';\r\n@Component({\r\n selector: 'ef-internal-admin-presenter',\r\n templateUrl: './internal-admin-presenter.component.html',\r\n providers: [MessageService],\r\n styleUrls: ['./internal-admin-presenter.component.scss']\r\n})\r\nexport class InternalAdminPresenterComponent implements OnInit {\r\n private ItemsSubject = new ReplaySubject>(1);\r\n private _items: Array;\r\n @Input() set items(value: Array) {\r\n if (value && value.length > 0) {\r\n this._items = value;\r\n this.ItemsSubject.next(value);\r\n if (value[0] != null) {\r\n this.customerID = value[0].CustomerID;\r\n this.customerPIN = value[0].PIN;\r\n this.productCode = value[0].ProductCode;\r\n this.adminCount = value[0].AdminCount;\r\n this.companyName = value[0].Name;\r\n this.address = value[0].Address1;\r\n this.address2 = value[0].Address2;\r\n this.address3 = value[0].Address3;\r\n this.city = value[0].City;\r\n this.selectedState = value[0].State;\r\n this.zip = value[0].ZipCode;\r\n this.installLink = value[0].efdinstallurl;\r\n this.selectedAdvisor = value[0].AdvisorID;\r\n this.modifiedBy = value[0].ModifiedBy;\r\n this.dbname = value[0].dbname;\r\n this.serverID = value[0].ServerID;\r\n this.serverName = value[0].ServerName;\r\n this.agentID = value[0].AgentID;\r\n this.crystalReportsLink = value[0].CRinstallurl;\r\n this.microsoftDriverLink = value[0].MSOLEDBinstallurl;\r\n this.isGCP = value[0].IsGCP;\r\n this.isQBO = value[0].IsQBO;\r\n this.taxID = value[0].TaxpayerID;\r\n this.hostName = value[0].HostName;\r\n this.hostProvider = value[0].HostProviderID;\r\n\r\n this.modified =\r\n (value[0].ModifiedBy != null && value[0].ModifiedDate != null)\r\n ? `Last modified on ${moment(\r\n value[0].ModifiedDate\r\n ).format('MM/DD/YYYY HH:mm:ss')} by ${\r\n value[0].ModifiedBy\r\n }`\r\n : 'No previous updates found.';\r\n\r\n value[0].Purchases.forEach(x => {\r\n x.PaidThruDate = new Date(x.MaintPaidThruDate);\r\n });\r\n }\r\n }\r\n }\r\n get items(): Array {\r\n return this._items;\r\n }\r\n\r\n private StatesSubject = new ReplaySubject>(1);\r\n private _states: Array;\r\n @Input() set states(value: Array) {\r\n if (value && value.length > 0) {\r\n this._states = value;\r\n this.StatesSubject.next(value);\r\n this.statesSelectItem = value.map(x => ({\r\n label: x.State,\r\n value: x.State\r\n }));\r\n }\r\n }\r\n get states(): Array {\r\n return this._states;\r\n }\r\n\r\n private CustomersSubject = new ReplaySubject>(1);\r\n private _customers: Array;\r\n @Input() set customers(value: Array) {\r\n if (value && value.length > 0) {\r\n this._customers = value;\r\n this.CustomersSubject.next(value);\r\n this.customersNoTest = value.filter(c => c.IsTest == false);\r\n this.customersSelectItem = this.customersNoTest.map(x => ({\r\n label: x.custname,\r\n value: x.custid\r\n }));\r\n this.allCustomersSelectItem = value.map(x => ({\r\n label: x.custname,\r\n value: x.custid\r\n }));\r\n this.hostProvidersSelectItem = value\r\n .filter(x => x.IsHostProvider == true)\r\n .map(x => ({\r\n label: x.custname,\r\n value: x.custid\r\n }));\r\n }\r\n }\r\n get customers(): Array {\r\n return this._customers;\r\n }\r\n\r\n private JobsSubject = new ReplaySubject>(1);\r\n private _jobs: Array;\r\n @Input() set jobs(value: Array) {\r\n if (value && value.length > 0) {\r\n this._jobs = value;\r\n this.JobsSubject.next(value);\r\n this.jobsSelectItem = value\r\n .map(x => ({\r\n label: x.jobtitle,\r\n value: x.jobid\r\n }))\r\n .filter(j => j.value != 47);\r\n }\r\n }\r\n get jobs(): Array {\r\n return this._jobs;\r\n }\r\n\r\n private QueueJobSubject = new ReplaySubject>(1);\r\n private _queue: Array;\r\n @Input() set queue(value: Array) {\r\n if (value && value.length > 0) {\r\n this._queue = value;\r\n this.QueueJobSubject.next(value);\r\n\r\n this.queueResp = value[0].responsemessage;\r\n if (this.queueJobAllCustomers == true) {\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'Success',\r\n detail: `Job ${value[0].jobid} queued for ${this.progress} customers`\r\n });\r\n this.progress = 0;\r\n } else {\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'Success',\r\n detail: value[0].responsemessage\r\n });\r\n this.progress = 0;\r\n }\r\n }\r\n }\r\n get queue(): Array {\r\n return this._queue;\r\n }\r\n\r\n private UserInfoSubject = new ReplaySubject(1);\r\n private _userinfo: IUserInfo;\r\n @Input() set userInfo(value: IUserInfo) {\r\n if (value) {\r\n this._userinfo = value;\r\n this.UserInfoSubject.next(value);\r\n this.employeeName = value.EmployeeName;\r\n }\r\n }\r\n get userInfo(): IUserInfo {\r\n return this._userinfo;\r\n }\r\n\r\n private SelectedCustomerSubject = new ReplaySubject(1);\r\n private _selectedcustomer: any;\r\n @Input() set selectedCustomer(value: any) {\r\n if (value) {\r\n this._selectedcustomer = value;\r\n this.SelectedCustomerSubject.next(value);\r\n this.CustomerChanged.next(value);\r\n }\r\n }\r\n get selectedCustomer(): any {\r\n return this._selectedcustomer;\r\n }\r\n\r\n private AdvisorSubject = new ReplaySubject>(1);\r\n private _advisors: Array;\r\n @Input() set advisors(value: Array) {\r\n if (value && value.length > 0) {\r\n this._advisors = value;\r\n this.AdvisorSubject.next(value);\r\n this.advisorsSelectItem = value.map(x => ({\r\n label: x.AdvisorName,\r\n value: x.AdvisorID\r\n }));\r\n }\r\n }\r\n get advisors(): Array {\r\n return this._advisors;\r\n }\r\n\r\n advisorsSelectItem: SelectItem[];\r\n selectedAdvisor: any;\r\n\r\n customersNoTest: eFAACTCustomer[];\r\n testCustomers: eFAACTCustomer[];\r\n\r\n jobsSelectItem: SelectItem[];\r\n selectedJob: any;\r\n customersSelectItem: SelectItem[];\r\n allCustomersSelectItem: SelectItem[];\r\n hostProvidersSelectItem: SelectItem[];\r\n //selectedCustomer: any;\r\n statesSelectItem: SelectItem[];\r\n selectedState: any;\r\n dbname: any;\r\n serverID: any;\r\n serverName: any;\r\n agentID: any;\r\n customerID: any;\r\n customerPIN: any;\r\n productCode: any;\r\n adminCount: any;\r\n companyName: any;\r\n address: any;\r\n address2: any;\r\n address3: any;\r\n city: any;\r\n zip: any;\r\n installLink: any;\r\n employeeName: any;\r\n modified: any;\r\n modifiedBy: any;\r\n hostName: any;\r\n hostProvider: any;\r\n queueJobAllCustomers = false;\r\n queueJobTestCustomers = false;\r\n storedProcedure: string;\r\n editingCustomer = false;\r\n editingLicense = false;\r\n editingAuthEntity = false;\r\n\r\n editCustomerBtnLabel = 'Edit';\r\n editLicenseBtnLabel = 'Edit';\r\n editLicenseBtnIcon = 'pi pi-pencil';\r\n editCustomerBtnIcon = 'pi pi-pencil';\r\n\r\n editAuthEntityBtnLabel = 'Edit';\r\n editAuthEntityBtnIcon = 'pi pi-pencil';\r\n\r\n editingCustomerDB = false;\r\n editCustomerDBBtnLabel = 'Edit';\r\n editCustomerDBBtnIcon = 'pi pi-pencil';\r\n\r\n @Output() CustomerChanged = new ReplaySubject(1);\r\n @Output() UpdateCustomerInfo = new ReplaySubject(1);\r\n @Output() UpdateLicenseInfo = new ReplaySubject(1);\r\n @Output() QueueJob = new ReplaySubject(1);\r\n @Output() UpdateAdvisor = new ReplaySubject(1);\r\n\r\n queueResp: string;\r\n queueRespMulti: string[] = [];\r\n\r\n areYouSureDialog = false;\r\n\r\n includeRecycleData = false;\r\n\r\n maintPaidThruDate: Date;\r\n\r\n progress = 0;\r\n percentComplete = 0;\r\n\r\n advisorMessage = `An authorized eFAACT Advisor is allowed access to the selected customer's eFAACT data.\r\n In order to open the customer's data, the eFAACT Advisor must also be setup as a QuickBooks Vendor and assigned a valid eFAACT userID and password.`;\r\n acknowledgedMessage = `I acknowledge the statement of understanding.`;\r\n\r\n microsoftDriverLink: any;\r\n crystalReportsLink: any;\r\n\r\n isGCP: boolean;\r\n isQBO: boolean;\r\n taxID: string;\r\n\r\n constructor(private messageService: MessageService) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n paidThruDateChanged(rowData) {\r\n const i = this.items[0].Purchases.findIndex(\r\n x => x.ProductID == rowData.ProductID\r\n );\r\n const purchase = this.items[0].Purchases.find(\r\n x => x.ProductID == rowData.ProductID\r\n );\r\n purchase.MaintPaidThruDate = moment(purchase.PaidThruDate).format(\r\n 'YYYY-MM-DD'\r\n );\r\n this.items[0].Purchases[i] = purchase;\r\n this.updatePaidThruDate();\r\n }\r\n\r\n customerChanged(event) {\r\n // this.selectedCustomer = event.value;\r\n // if (this.selectedCustomer) {\r\n // this.CustomerChanged.next(this.selectedCustomer);\r\n // }\r\n }\r\n editAuthEntity() {\r\n this.editingAuthEntity = !this.editingAuthEntity;\r\n this.editAuthEntityBtnLabel = this.editingAuthEntity ? 'Lock' : 'Edit';\r\n this.editAuthEntityBtnIcon = this.editingAuthEntity\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n editLicenseInfo() {\r\n this.editingLicense = !this.editingLicense;\r\n this.editLicenseBtnLabel = this.editingLicense ? 'Lock' : 'Edit';\r\n this.editLicenseBtnIcon = this.editingLicense\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n editCustomerInfo() {\r\n this.editingCustomer = !this.editingCustomer;\r\n this.editCustomerBtnLabel = this.editingCustomer ? 'Lock' : 'Edit';\r\n this.editCustomerBtnIcon = this.editingCustomer\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n editCustomerDB() {\r\n this.editingCustomerDB = !this.editingCustomerDB;\r\n this.editCustomerDBBtnLabel = this.editingCustomerDB ? 'Lock' : 'Edit';\r\n this.editCustomerDBBtnIcon = this.editingCustomerDB\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n\r\n updateAdvisor() {\r\n const data = JSON.stringify({\r\n CustomerID: this.customerID,\r\n Name: this.companyName,\r\n PIN: this.customerPIN,\r\n Address1: this.address,\r\n Address2: this.address2,\r\n Address3: this.address3,\r\n City: this.city,\r\n State: this.selectedState,\r\n ZipCode: this.zip,\r\n AdvisorName: '',\r\n AdvisorID: this.selectedAdvisor,\r\n ModifiedBy: this.employeeName,\r\n IsGCP: this.isGCP,\r\n IsQBO: this.isQBO,\r\n TaxpayerID: this.taxID,\r\n HostProviderID: this.hostProvider,\r\n IsInternal: true\r\n });\r\n\r\n this.UpdateAdvisor.next(data);\r\n this.editingAuthEntity = !this.editingAuthEntity;\r\n this.editAuthEntityBtnLabel = this.editingAuthEntity ? 'Lock' : 'Edit';\r\n this.editAuthEntityBtnIcon = this.editingAuthEntity\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n\r\n updateLicenseInfo() {\r\n const data = JSON.stringify({\r\n CustomerID: this.customerID,\r\n Name: this.companyName,\r\n PIN: this.customerPIN,\r\n Address1: this.address,\r\n Address2: this.address2,\r\n Address3: this.address3,\r\n City: this.city,\r\n State: this.selectedState,\r\n ZipCode: this.zip,\r\n AdvisorName: '',\r\n AdvisorID: this.selectedAdvisor,\r\n ModifiedBy: this.employeeName,\r\n IsGCP: this.isGCP,\r\n IsQBO: this.isQBO,\r\n TaxpayerID: this.taxID,\r\n HostProviderID: this.hostProvider,\r\n IsInternal: true\r\n });\r\n this.UpdateLicenseInfo.next(data);\r\n this.editingLicense = !this.editingLicense;\r\n this.editLicenseBtnLabel = this.editingLicense ? 'Lock' : 'Edit';\r\n this.editLicenseBtnIcon = this.editingLicense\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n updateCustomerInfo() {\r\n const data = JSON.stringify({\r\n CustomerID: this.customerID,\r\n Name: this.companyName,\r\n PIN: this.customerPIN,\r\n Address1: this.address,\r\n Address2: this.address2,\r\n Address3: this.address3,\r\n City: this.city,\r\n State: this.selectedState,\r\n ZipCode: this.zip,\r\n AdvisorName: '',\r\n AdvisorID: this.selectedAdvisor,\r\n ModifiedBy: this.employeeName,\r\n IsGCP: this.isGCP,\r\n IsQBO: this.isQBO,\r\n TaxpayerID: this.taxID,\r\n //HostName: this.hostName,\r\n HostProviderID: this.hostProvider,\r\n IsInternal: true\r\n });\r\n\r\n this.UpdateCustomerInfo.next(data);\r\n this.editingCustomer = !this.editingCustomer;\r\n this.editCustomerBtnLabel = this.editingCustomer ? 'Lock' : 'Edit';\r\n this.editCustomerBtnIcon = this.editingCustomer\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n\r\n updateCustomerDB() {\r\n const data = JSON.stringify({\r\n CustomerID: this.customerID,\r\n Name: this.companyName,\r\n PIN: this.customerPIN,\r\n Address1: this.address,\r\n Address2: this.address2,\r\n Address3: this.address3,\r\n City: this.city,\r\n State: this.selectedState,\r\n ZipCode: this.zip,\r\n AdvisorName: '',\r\n AdvisorID: this.selectedAdvisor,\r\n ModifiedBy: this.employeeName,\r\n IsGCP: this.isGCP,\r\n IsQBO: this.isQBO,\r\n TaxpayerID: this.taxID,\r\n HostProviderID: this.hostProvider,\r\n IsInternal: true\r\n });\r\n\r\n this.UpdateCustomerInfo.next(data);\r\n this.editingCustomerDB = !this.editingCustomerDB;\r\n this.editCustomerDBBtnLabel = this.editingCustomerDB ? 'Lock' : 'Edit';\r\n this.editCustomerDBBtnIcon = this.editingCustomerDB\r\n ? 'pi pi-lock'\r\n : 'pi pi-pencil';\r\n }\r\n\r\n updatePaidThruDate() {\r\n const data = JSON.stringify(this.items[0]);\r\n\r\n this.UpdateCustomerInfo.next(data);\r\n }\r\n\r\n queueForAllChanged(event) {\r\n if (event.checked == true) {\r\n this.selectedCustomer = null;\r\n }\r\n }\r\n\r\n queueForTestChanged(event) {\r\n if (event.checked == true) {\r\n this.selectedCustomer = null;\r\n this.testCustomers = this.customers.filter(c => c.IsTest == true);\r\n this.customersSelectItem = this.testCustomers\r\n .map(x => ({\r\n label: x.custname,\r\n value: x.custid\r\n }));\r\n } else {\r\n this.customersSelectItem = this.customersNoTest\r\n .map(x => ({\r\n label: x.custname,\r\n value: x.custid\r\n }));\r\n }\r\n }\r\n\r\n addRecycleDataToJobList(event) {\r\n //this.queueJobAllCustomers = false;\r\n if (event.checked == true) {\r\n this.jobsSelectItem = this.jobs.map(x => ({\r\n label: x.jobtitle,\r\n value: x.jobid\r\n }));\r\n } else {\r\n this.jobsSelectItem = this.jobs\r\n .map(x => ({\r\n label: x.jobtitle,\r\n value: x.jobid\r\n }))\r\n .filter(j => j.value != 47);\r\n }\r\n }\r\n\r\n queueJob() {\r\n this.percentComplete = 0;\r\n if (this.selectedJob == 47) {\r\n this.areYouSureDialog = true;\r\n } else {\r\n if (this.queueJobAllCustomers == true) {\r\n this.customersSelectItem.forEach(customer => {\r\n this.progress = this.progress + 1;\r\n this.queueJobsForAllCustomers(customer, this.progress);\r\n });\r\n } else {\r\n this.progress = this.customers.length - 1;\r\n this.percentComplete = this.calcPercentComplete(this.progress);\r\n this.QueueJob.next({\r\n employeelistid: null,\r\n customerid: this.selectedCustomer,\r\n jobid: this.selectedJob,\r\n storedproc:\r\n this.storedProcedure != null\r\n ? this.storedProcedure\r\n : null\r\n });\r\n }\r\n }\r\n }\r\n\r\n calcPercentComplete(progress) : number {\r\n let percent;\r\n if (this.queueJobTestCustomers == true) {\r\n percent = Math.round(progress / (this.testCustomers.length) * 100);\r\n } else {\r\n percent = Math.round(progress / (this.customersNoTest.length - 1) * 100);\r\n }\r\n return percent;\r\n }\r\n\r\n queueJobsForAllCustomers(customer, progress) {\r\n setTimeout(() => {\r\n this.percentComplete = this.calcPercentComplete(progress);\r\n this.QueueJob.next({\r\n employeelistid: null,\r\n customerid: customer.value,\r\n jobid: this.selectedJob,\r\n storedproc:\r\n this.storedProcedure != null ? this.storedProcedure : null\r\n });\r\n }, 0);\r\n\r\n }\r\n\r\n queueJob47() {\r\n this.areYouSureDialog = false;\r\n if (this.queueJobAllCustomers == true) {\r\n this.customersSelectItem.forEach(customer => {\r\n this.QueueJob.next({\r\n employeelistid: null,\r\n customerid: customer.value,\r\n jobid: this.selectedJob,\r\n storedproc:\r\n this.storedProcedure != null\r\n ? this.storedProcedure\r\n : null\r\n });\r\n });\r\n } else {\r\n this.QueueJob.next({\r\n employeelistid: null,\r\n customerid: this.selectedCustomer,\r\n jobid: this.selectedJob,\r\n storedproc:\r\n this.storedProcedure != null ? this.storedProcedure : null\r\n });\r\n }\r\n }\r\n\r\n clearQueueJobsForm() {\r\n this.storedProcedure = null;\r\n this.selectedJob = null;\r\n this.selectedCustomer = null;\r\n this.queueJobAllCustomers = false;\r\n this.queueJobTestCustomers = false;\r\n this.includeRecycleData = false;\r\n this.percentComplete = 0;\r\n this.progress = 0;\r\n\r\n this.jobsSelectItem = this.jobs\r\n .map(x => ({\r\n label: x.jobtitle,\r\n value: x.jobid\r\n }))\r\n .filter(j => j.value != 47);\r\n }\r\n\r\n isGCPChanged(event) {\r\n\r\n }\r\n isQBOChanged(event) {\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { InternalAdminRoute } from './internal-admin.route';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { JobEffects } from './store/jobs/jobs.effects';\r\nimport { eFAACTCustomerEffects } from './store/efaact-customer/efaact-customer.effects';\r\nimport * as jobreducer from './store/jobs/jobs.reducer';\r\nimport * as queuejobreducer from './store/queue-job/queue-job.reducer';\r\nimport * as efcustreducer from './store/efaact-customer/efaact-customer.reducer';\r\nimport { QueueJobEffects } from './store/queue-job/queue-job.effects';\r\n@NgModule({\r\n providers: [],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [InternalAdminRoute]\r\n }),\r\n StoreModule.forFeature(jobreducer.JobFeatureKey, jobreducer.reducer),\r\n StoreModule.forFeature(efcustreducer.eFAACTCustomerFeatureKey, efcustreducer.reducer),\r\n StoreModule.forFeature(queuejobreducer.queueJobFeatureKey, queuejobreducer.reducer),\r\n EffectsModule.forFeature([JobEffects, eFAACTCustomerEffects, QueueJobEffects])\r\n ]\r\n})\r\nexport class InternalAdminModule {\r\n constructor() {}\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { InternalAdminFeatureComponent } from './internal-admin-feature/internal-admin-feature.component';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const InternalAdminRoute: Ng2StateDeclaration = {\r\n name: 'admin',\r\n url: '/admin',\r\n data: { requiresAuth: true },\r\n\r\n component: InternalAdminFeatureComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IDeleteEntity, IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InternalAdminService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private juri = `${environment.apiLocation}/Jobs`;\r\n private ecuri = `${environment.apiLocation}/eFAACTCustomer`;\r\n private qjuri = `${environment.apiLocation}/QueueJob`;\r\n\r\n public geteFAACTCustomers(): Observable {\r\n this.log.verbose({\r\n type: 'InternalAdminService:geteFAACTCustomers',\r\n uri: this.ecuri\r\n });\r\n return this.http.get(this.ecuri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'InternalAdminService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getJobs(): Observable {\r\n this.log.verbose({\r\n type: 'InternalAdminService:getJobs',\r\n uri: this.juri\r\n });\r\n return this.http.get(this.juri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'InternalAdminService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public postQueueJob(\r\n employeelistid: string,\r\n customerid: string,\r\n jobid: string,\r\n storedproc?: string\r\n ): Observable {\r\n this.log.verbose({\r\n type: 'InternalAdminService:postQueueJob',\r\n uri: this.qjuri\r\n });\r\n return this.http\r\n .post(this.qjuri, {\r\n employeelistid: employeelistid,\r\n customerid: customerid,\r\n jobid: jobid,\r\n storedproc: storedproc\r\n })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'InternalAdminService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n // public put(jsonstring: string): Observable {\r\n // return this.http\r\n // .put(this.uri, {\r\n // JsonString: jsonstring\r\n // })\r\n // .pipe(\r\n // tap(data =>\r\n // this.log.verbose({\r\n // type: 'CompanyInfoService:put',\r\n // data\r\n // })\r\n // )\r\n // );\r\n // }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { eFAACTCustomer } from './efaact-customer.model';\r\n\r\nexport const geteFAACTCustomer = createAction('[eFAACTCustomer/API] GET eFAACTCustomer');\r\n\r\nexport const puteFAACTCustomer = createAction(\r\n '[eFAACTCustomer/API] PUT eFAACTCustomer',\r\n props<{ JsonString: any }>()\r\n);\r\n\r\nexport const loadeFAACTCustomers = createAction(\r\n '[eFAACTCustomer/API] Load eFAACTCustomers',\r\n props<{ eFAACTCustomers: any[] }>()\r\n);\r\n\r\nexport const addeFAACTCustomer = createAction(\r\n '[eFAACTCustomer/API] Add eFAACTCustomer',\r\n props<{ eFAACTCustomer: eFAACTCustomer }>()\r\n);\r\n\r\nexport const upserteFAACTCustomer = createAction(\r\n '[eFAACTCustomer/API] Upsert eFAACTCustomer',\r\n props<{ eFAACTCustomer: eFAACTCustomer }>()\r\n);\r\n\r\nexport const addeFAACTCustomers = createAction(\r\n '[eFAACTCustomer/API] Add eFAACTCustomers',\r\n props<{ eFAACTCustomers: eFAACTCustomer[] }>()\r\n);\r\n\r\nexport const upserteFAACTCustomers = createAction(\r\n '[eFAACTCustomer/API] Upsert eFAACTCustomers',\r\n props<{ eFAACTCustomers: eFAACTCustomer[] }>()\r\n);\r\n\r\nexport const updateeFAACTCustomer = createAction(\r\n '[eFAACTCustomer/API] Update eFAACTCustomer',\r\n props<{ eFAACTCustomer: Update }>()\r\n);\r\n\r\nexport const updateeFAACTCustomers = createAction(\r\n '[eFAACTCustomer/API] Update eFAACTCustomers',\r\n props<{ eFAACTCustomers: Update[] }>()\r\n);\r\n\r\nexport const deleteeFAACTCustomer = createAction(\r\n '[eFAACTCustomer/API] Delete eFAACTCustomer',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteeFAACTCustomers = createAction(\r\n '[eFAACTCustomer/API] Delete eFAACTCustomers',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const cleareFAACTCustomers = createAction('[eFAACTCustomer/API] Clear eFAACTCustomers');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport * as eFAACTCustomerActions from './efaact-customer.actions';\r\nimport { InternalAdminService } from '../../internal-admin.service';\r\n\r\n@Injectable()\r\nexport class eFAACTCustomerEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: InternalAdminService\r\n ) {}\r\n\r\n get$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(eFAACTCustomerActions.geteFAACTCustomer),\r\n switchMap(a =>\r\n this.service.geteFAACTCustomers().pipe(\r\n flatMap(resp => [\r\n eFAACTCustomerActions.loadeFAACTCustomers({\r\n eFAACTCustomers: JSON.parse(resp)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as eFAACTCustomerActions from './efaact-customer.actions';\r\nimport { eFAACTCustomer } from './efaact-customer.model';\r\n\r\nexport const eFAACTCustomerFeatureKey = 'eFAACTCustomer';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: eFAACTCustomer) => `${model.custid}`\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const eFAACTCustomerReducer = createReducer(\r\n initialState,\r\n on(eFAACTCustomerActions.addeFAACTCustomer, (state, action) =>\r\n adapter.addOne(action.eFAACTCustomer, state)\r\n ),\r\n on(eFAACTCustomerActions.upserteFAACTCustomer, (state, action) =>\r\n adapter.upsertOne(action.eFAACTCustomer, state)\r\n ),\r\n on(eFAACTCustomerActions.addeFAACTCustomers, (state, action) =>\r\n adapter.addMany(action.eFAACTCustomers, state)\r\n ),\r\n on(eFAACTCustomerActions.upserteFAACTCustomers, (state, action) =>\r\n adapter.upsertMany(action.eFAACTCustomers, state)\r\n ),\r\n on(eFAACTCustomerActions.updateeFAACTCustomer, (state, action) =>\r\n adapter.updateOne(action.eFAACTCustomer, state)\r\n ),\r\n on(eFAACTCustomerActions.updateeFAACTCustomers, (state, action) =>\r\n adapter.updateMany(action.eFAACTCustomers, state)\r\n ),\r\n on(eFAACTCustomerActions.deleteeFAACTCustomer, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(eFAACTCustomerActions.deleteeFAACTCustomers, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(eFAACTCustomerActions.loadeFAACTCustomers, (state, action) =>\r\n adapter.setAll(action.eFAACTCustomers, state)\r\n ),\r\n on(eFAACTCustomerActions.cleareFAACTCustomers, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return eFAACTCustomerReducer(state, action);\r\n}\r\n\r\nexport const selecteFAACTCustomerState = createFeatureSelector(\r\n eFAACTCustomerFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selecteFAACTCustomerState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Job } from './jobs.model';\r\n\r\nexport const getJob = createAction('[Job/API] GET Job');\r\n\r\nexport const putJob = createAction(\r\n '[Job/API] PUT Job',\r\n props<{ JsonString: any }>()\r\n);\r\n\r\nexport const loadJobs = createAction(\r\n '[Job/API] Load Jobs',\r\n props<{ Jobs: any[] }>()\r\n);\r\n\r\nexport const addJob = createAction(\r\n '[Job/API] Add Job',\r\n props<{ Job: Job }>()\r\n);\r\n\r\nexport const upsertJob = createAction(\r\n '[Job/API] Upsert Job',\r\n props<{ Job: Job }>()\r\n);\r\n\r\nexport const addJobs = createAction(\r\n '[Job/API] Add Jobs',\r\n props<{ Jobs: Job[] }>()\r\n);\r\n\r\nexport const upsertJobs = createAction(\r\n '[Job/API] Upsert Jobs',\r\n props<{ Jobs: Job[] }>()\r\n);\r\n\r\nexport const updateJob = createAction(\r\n '[Job/API] Update Job',\r\n props<{ Job: Update }>()\r\n);\r\n\r\nexport const updateJobs = createAction(\r\n '[Job/API] Update Jobs',\r\n props<{ Jobs: Update[] }>()\r\n);\r\n\r\nexport const deleteJob = createAction(\r\n '[Job/API] Delete Job',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteJobs = createAction(\r\n '[Job/API] Delete Jobs',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearJobs = createAction('[Job/API] Clear Jobs');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport * as JobActions from './jobs.actions';\r\nimport { InternalAdminService } from '../../internal-admin.service';\r\n\r\n@Injectable()\r\nexport class JobEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: InternalAdminService\r\n ) {}\r\n\r\n get$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(JobActions.getJob),\r\n switchMap(a =>\r\n this.service.getJobs().pipe(\r\n flatMap(resp => [\r\n JobActions.loadJobs({\r\n Jobs: JSON.parse(resp)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as JobActions from './jobs.actions';\r\nimport { Job } from './jobs.model';\r\n\r\nexport const JobFeatureKey = 'Jobs';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: Job) => `${model.jobid}`\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const JobReducer = createReducer(\r\n initialState,\r\n on(JobActions.addJob, (state, action) =>\r\n adapter.addOne(action.Job, state)\r\n ),\r\n on(JobActions.upsertJob, (state, action) =>\r\n adapter.upsertOne(action.Job, state)\r\n ),\r\n on(JobActions.addJobs, (state, action) =>\r\n adapter.addMany(action.Jobs, state)\r\n ),\r\n on(JobActions.upsertJobs, (state, action) =>\r\n adapter.upsertMany(action.Jobs, state)\r\n ),\r\n on(JobActions.updateJob, (state, action) =>\r\n adapter.updateOne(action.Job, state)\r\n ),\r\n on(JobActions.updateJobs, (state, action) =>\r\n adapter.updateMany(action.Jobs, state)\r\n ),\r\n on(JobActions.deleteJob, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(JobActions.deleteJobs, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(JobActions.loadJobs, (state, action) =>\r\n adapter.setAll(action.Jobs, state)\r\n ),\r\n on(JobActions.clearJobs, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return JobReducer(state, action);\r\n}\r\n\r\nexport const selectJobState = createFeatureSelector(\r\n JobFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectJobState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { QueueJob } from './queue-job.model';\r\n\r\nexport const postQueueJob = createAction(\r\n '[Job/API] POST QueueJob',\r\n props<{\r\n employeelistid: string;\r\n customerid: string;\r\n jobid: string;\r\n storedproc?: string;\r\n }>()\r\n);\r\n\r\nexport const loadQueueJobs = createAction(\r\n '[QueueJob/API] Load QueueJobs',\r\n props<{ QueueJobs: any[] }>()\r\n);\r\n\r\nexport const addQueueJob = createAction(\r\n '[QueueJob/API] Add QueueJob',\r\n props<{ QueueJob: QueueJob }>()\r\n);\r\n\r\nexport const upsertQueueJob = createAction(\r\n '[QueueJob/API] Upsert QueueJob',\r\n props<{ QueueJob: QueueJob }>()\r\n);\r\n\r\nexport const addQueueJobs = createAction(\r\n '[QueueJob/API] Add QueueJobs',\r\n props<{ QueueJobs: QueueJob[] }>()\r\n);\r\n\r\nexport const upsertQueueJobs = createAction(\r\n '[QueueJob/API] Upsert QueueJobs',\r\n props<{ QueueJobs: QueueJob[] }>()\r\n);\r\n\r\nexport const updateQueueJob = createAction(\r\n '[QueueJob/API] Update QueueJob',\r\n props<{ QueueJob: Update }>()\r\n);\r\n\r\nexport const updateQueueJobs = createAction(\r\n '[QueueJob/API] Update QueueJobs',\r\n props<{ QueueJobs: Update[] }>()\r\n);\r\n\r\nexport const deleteQueueJob = createAction(\r\n '[QueueJob/API] Delete QueueJob',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteQueueJobs = createAction(\r\n '[QueueJob/API] Delete QueueJobs',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearQueueJobs = createAction('[QueueJob/API] Clear QueueJobs');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport * as QueueJobActions from './queue-job.actions';\r\nimport { InternalAdminService } from '../../internal-admin.service';\r\n\r\n@Injectable()\r\nexport class QueueJobEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: InternalAdminService\r\n ) {}\r\n\r\n post$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(QueueJobActions.postQueueJob),\r\n switchMap(a =>\r\n this.service\r\n .postQueueJob(\r\n a.employeelistid,\r\n a.customerid,\r\n a.jobid,\r\n a.storedproc\r\n )\r\n .pipe(\r\n flatMap(resp => [\r\n QueueJobActions.loadQueueJobs({\r\n QueueJobs: [{\r\n jobid: a.jobid,\r\n customerid: a.customerid,\r\n responsemessage: resp\r\n }]\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as QueueJobActions from './queue-job.actions';\r\nimport { QueueJob } from './queue-job.model';\r\nimport { Guid } from '../../../shared';\r\n\r\nexport const queueJobFeatureKey = 'QueueJob';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: () => `${Math.random()}`\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const QueueJobReducer = createReducer(\r\n initialState,\r\n on(QueueJobActions.addQueueJob, (state, action) =>\r\n adapter.addOne(action.QueueJob, state)\r\n ),\r\n on(QueueJobActions.upsertQueueJob, (state, action) =>\r\n adapter.upsertOne(action.QueueJob, state)\r\n ),\r\n on(QueueJobActions.addQueueJobs, (state, action) =>\r\n adapter.addMany(action.QueueJobs, state)\r\n ),\r\n on(QueueJobActions.upsertQueueJobs, (state, action) =>\r\n adapter.upsertMany(action.QueueJobs, state)\r\n ),\r\n on(QueueJobActions.updateQueueJob, (state, action) =>\r\n adapter.updateOne(action.QueueJob, state)\r\n ),\r\n on(QueueJobActions.updateQueueJobs, (state, action) =>\r\n adapter.updateMany(action.QueueJobs, state)\r\n ),\r\n on(QueueJobActions.deleteQueueJob, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(QueueJobActions.deleteQueueJobs, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(QueueJobActions.loadQueueJobs, (state, action) =>\r\n adapter.setAll(action.QueueJobs, state)\r\n ),\r\n on(QueueJobActions.clearQueueJobs, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return QueueJobReducer(state, action);\r\n}\r\n\r\nexport const selectQueueJobState = createFeatureSelector(\r\n queueJobFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectQueueJobState);\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { InvoiceParentContainerComponent, InvoiceRoute } from './invoice.route';\r\nimport { InvoiceManagementModule } from './management/invoice-management.module';\r\nimport { InvoiceRegisterModule } from './register/invoice-register.module';\r\nimport { InvoiceRenumberingModule } from './renumbering/invoice-renumbering.module';\r\nimport { InvoiceSetupModule } from './setup/invoice-setup.module';\r\n\r\n@NgModule({\r\n declarations: [InvoiceParentContainerComponent],\r\n imports: [\r\n CommonModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [InvoiceRoute]\r\n }),\r\n InvoiceManagementModule,\r\n InvoiceSetupModule,\r\n InvoiceRenumberingModule,\r\n InvoiceRegisterModule,\r\n ]\r\n // exports: [InvoiceManagementModule]\r\n})\r\nexport class InvoiceModule {}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { Ng2StateDeclaration } from '@uirouter/angular';\r\n\r\n@Component({ template: '' })\r\nexport class InvoiceParentContainerComponent {}\r\n\r\nexport const InvoiceRoute: Ng2StateDeclaration = {\r\n // name: 'invoice.**'\r\n abstract: true,\r\n name: 'invoice',\r\n url: '/invoice',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.invoiceModule)\r\n data: { requiresAuth: true },\r\n // redirectTo: 'invoice.management',\r\n component: InvoiceParentContainerComponent\r\n};\r\n","export * from './invoice-management-container';\r\nexport * from './invoice-management';\r\nexport * from './store';\r\n","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { environment } from '../../../../environments/environment';\r\nimport * as fromShared from '../../../shared';\r\nimport {\r\n FilterService,\r\n SelectItem,\r\n Table\r\n} from '../../../shared/efaact-primeng.module';\r\nimport * as fromStore from '../store';\r\n\r\n@Component({\r\n selector: 'ef-invoice-charge-number',\r\n templateUrl: './invoice-charge-number.component.html',\r\n styleUrls: ['./invoice-charge-number.component.scss']\r\n})\r\nexport class InvoiceChargeNumberComponent\r\n extends fromShared.EditGrid\r\n implements OnInit\r\n{\r\n loading = true;\r\n moment: any;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n virtualItems: fromStore.ChargeNumber.InvoiceChargeNumber[];\r\n public get contracts(): SelectItem[] {\r\n if (this.items && this.items.length > 0) {\r\n return fromShared\r\n .uniqBy(\r\n this.items as fromStore.ChargeNumber.InvoiceChargeNumber[],\r\n x => x.ChargeNumber\r\n )\r\n .map(x => ({ label: x.ChargeNumber, value: x.ChargeNumber }));\r\n } else {\r\n return [];\r\n }\r\n }\r\n rowGroupMetadata: any = {};\r\n @ViewChild('dtChargeNumber') dataTable: Table;\r\n startDateFilter: any;\r\n endDateFilter: any;\r\n lastModifiedFilter: any;\r\n constructor(\r\n private log: fromShared.Services.Logging.LoggingService,\r\n private filterService: FilterService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n super();\r\n this.moment = moment;\r\n }\r\n ngOnInit() {\r\n this.addDateRangeFilter();\r\n // setTimeout(() => {\r\n // this.dataTable.sort({\r\n // data: this.items,\r\n // field: 'ContractDesc',\r\n // mode: 'single',\r\n // order: 1\r\n // });\r\n // }, 0);\r\n }\r\n addDateRangeFilter() {\r\n this.filterService.register(\r\n 'startChargeNumberDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceChargeNumberComponent:startDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.startDateFilter[0]),\r\n moment(this.startDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n this.filterService.register(\r\n 'endChargeNumberDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceChargeNumberComponent:endDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.endDateFilter[0]),\r\n moment(this.endDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IInvoiceCycle } from '../../../contract-management/IInvoiceCycle';\r\nimport { InvoiceContractCycleModel } from '../../../data-services/invoice-contract-cycle';\r\nimport { uniqBy } from '../../../shared';\r\nimport { EditGrid } from '../../../shared/EditGrid';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n@Component({\r\n selector: 'ef-invoice-cycle',\r\n templateUrl: './invoice-cycle.component.html',\r\n styleUrls: ['./invoice-cycle.component.scss']\r\n})\r\nexport class InvoiceCycleComponent\r\n extends EditGrid\r\n implements OnInit, OnChanges\r\n{\r\n moment: any;\r\n @Input() icSelectItem: SelectItem[] = [];\r\n @Input() icdSelectItem: SelectItem[] = [];\r\n @Input() icd2SelectItem: SelectItem[] = [];\r\n @Input() catSelectItem: SelectItem[] = [];\r\n @Input() effectiveDatesSelectItem: SelectItem[] = [];\r\n @Input() contractSelectItems: SelectItem[];\r\n @Input() invoiceCycleDaysSelectItems: SelectItem[];\r\n @Input() invoiceCycleDay2SelectItems: SelectItem[];\r\n u_contractSelectItems: SelectItem[] = [];\r\n @Input() contractSelectItemsD2: SelectItem[] = [];\r\n @Input() invoiceCycle24Selected = false;\r\n hasInvoiceCycle24 = false;\r\n @Input() invoiceCycle: IInvoiceCycle[];\r\n @Output() ResetContract = new ReplaySubject();\r\n endDateTooltip: string;\r\n invoiceCycleDays: IInvoiceCycle[];\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit(): void {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.log.verbose({\r\n type: 'InvoiceCycleComponent:ngOnChanges',\r\n changes\r\n });\r\n const value = changes.items && changes.items.currentValue;\r\n if (value && value.length > 0) {\r\n value.forEach(c => {\r\n if (c.InvoiceCycle != null) {\r\n if (c.InvoiceCycle.toString() === '24') {\r\n this.hasInvoiceCycle24 = true;\r\n // this.invoicingColSpan = 6;\r\n } else {\r\n if (this.hasInvoiceCycle24 === false) {\r\n // this.invoicingColSpan = 5;\r\n }\r\n }\r\n }\r\n if (c.ContractStartDate != null) {\r\n c.ContractStartDate = new Date(c.ContractStartDate);\r\n }\r\n if (c.ContractEndDate != null) {\r\n c.ContractEndDate = new Date(c.ContractEndDate);\r\n }\r\n if (c.CycleEffectiveDate != null) {\r\n c.CycleEffectiveDate = new Date(c.CycleEffectiveDate);\r\n }\r\n // this.effectiveDatesSelectItem.push({\r\n // value: c.CycleEffectiveDate,\r\n // label: moment(c.CycleEffectiveDate).format('MM/DD/YYYY')\r\n // });\r\n // this.effectiveDatesSelectItem =\r\n // this.effectiveDatesSelectItem.filter(\r\n // (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n // );\r\n\r\n if (c.InvoiceCycle != null) {\r\n this.icSelectItem.push({\r\n value: c.InvoiceCycle,\r\n label: c.InvoiceCycle\r\n });\r\n this.icSelectItem = this.icSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n\r\n if (c.InvoiceCycleDay != null) {\r\n const day = this.invoiceCycle.find(\r\n x =>\r\n x.CycleDayCode === c.InvoiceCycleDay &&\r\n x.InvoiceCycle === c.InvoiceCycle\r\n );\r\n this.icdSelectItem.push({\r\n value: c.InvoiceCycleDay,\r\n label: day ? day.InvoiceCycleDay : c.InvoiceCycleDay\r\n });\r\n this.icdSelectItem = this.icdSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n if (c.InvoiceCycleDay2 != null) {\r\n const day2 = this.invoiceCycle.find(\r\n x =>\r\n x.CycleDayCode === c.InvoiceCycleDay2 &&\r\n x.InvoiceCycle === c.InvoiceCycle\r\n );\r\n this.icd2SelectItem.push({\r\n value: c.InvoiceCycleDay2,\r\n label: day2 ? day2.InvoiceCycleDay : c.InvoiceCycleDay2\r\n });\r\n this.icd2SelectItem = this.icd2SelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n\r\n if (c.ContractCategory != null) {\r\n this.catSelectItem.push({\r\n value: c.ContractCategory,\r\n label: c.ContractCategory\r\n });\r\n this.catSelectItem = this.catSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n\r\n // if (c.ContractListID != null) {\r\n // this.contractsSelectItem.push({\r\n // value: c.ContractListID,\r\n // label: c.ContractDesc\r\n // });\r\n // this.contractsSelectItem = this.contractsSelectItem.filter(\r\n // (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n // );\r\n // }\r\n });\r\n\r\n if (!this.selected) {\r\n this.selected = value[0];\r\n this.log.verbose({\r\n type: 'InvoiceCycleComponent:ngOnChanges:items',\r\n items: value,\r\n selected: this.selected\r\n });\r\n\r\n this.onRowSelect({\r\n data: this.selected as InvoiceContractCycleModel\r\n });\r\n }\r\n }\r\n if (changes && changes.invoiceCycle) {\r\n const uniqueInvoiceCycles = uniqBy(\r\n this.invoiceCycle,\r\n x => x.InvoiceCycle\r\n );\r\n\r\n this.u_contractSelectItems = uniqueInvoiceCycles.map(x => ({\r\n label: x.InvoiceCycle == '0' ? '0' : x.InvoiceCycle,\r\n value: x.InvoiceCycle\r\n }));\r\n }\r\n }\r\n onRowEditInit(item: InvoiceContractCycleModel) {\r\n super.onRowEditInit(item);\r\n\r\n if (item.InvoiceCycle != null) {\r\n this.invoiceCycleDays = this.invoiceCycle.filter(\r\n x => x.InvoiceCycle === item.InvoiceCycle\r\n );\r\n this.invoiceCycleDaysSelectItems = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n this.selected = item;\r\n }\r\n }\r\n lessThanToday(endDate) {\r\n if (moment(endDate).toDate() < new Date()) {\r\n this.endDateTooltip = 'Invoicing not scheduled after Contract End';\r\n return true;\r\n } else {\r\n this.endDateTooltip = '';\r\n return false;\r\n }\r\n }\r\n invoiceCycleValueChanged(event) {\r\n // this.invoiceCycleHasBeenSelected = true;\r\n if (event.value === 24) {\r\n this.invoiceCycle24Selected = true;\r\n\r\n this.invoiceCycleDays = this.invoiceCycle.filter(\r\n x => x.InvoiceCycle === event.value\r\n );\r\n this.invoiceCycleDaysSelectItems = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n this.contractSelectItemsD2 = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n\r\n if (\r\n JSON.stringify(this.invoiceCycleDaysSelectItems.sort()) ===\r\n JSON.stringify(this.contractSelectItemsD2.sort())\r\n ) {\r\n this.contractSelectItemsD2 = this.contractSelectItemsD2.filter(\r\n x => x.value !== '15'\r\n );\r\n this.invoiceCycleDaysSelectItems =\r\n this.invoiceCycleDaysSelectItems.filter(\r\n x => x.value !== '99'\r\n );\r\n this.editing.InvoiceCycleDay =\r\n this.invoiceCycleDaysSelectItems[0].value;\r\n this.editing.InvoiceCycleDay2 =\r\n this.contractSelectItemsD2[0].value;\r\n }\r\n this.editing.InvoiceCycleDay =\r\n this.invoiceCycleDaysSelectItems[0].value;\r\n } else {\r\n this.invoiceCycle24Selected = false;\r\n this.invoiceCycleDays = this.invoiceCycle.filter(\r\n x => x.InvoiceCycle === event.value\r\n );\r\n this.invoiceCycleDaysSelectItems = this.invoiceCycleDays.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }));\r\n this.editing.InvoiceCycleDay =\r\n this.invoiceCycleDaysSelectItems[0].value;\r\n if (event.value === 12) {\r\n this.editing.InvoiceCycleDay = '99';\r\n }\r\n }\r\n // this.invoiceCycleSelected = event.value;\r\n }\r\n findInvoiceDayDesc(rowData: InvoiceContractCycleModel): string {\r\n if (rowData.InvoiceCycleDay != null) {\r\n if (this.invoiceCycle.length > 0) {\r\n const index = this.invoiceCycle.findIndex(\r\n x =>\r\n x.CycleDayCode === rowData.InvoiceCycleDay &&\r\n x.InvoiceCycle === rowData.InvoiceCycle\r\n );\r\n if (index !== -1) {\r\n const cc = this.invoiceCycle[index];\r\n return cc.InvoiceCycleDay;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n findInvoiceDay2Desc(rowData: InvoiceContractCycleModel): string {\r\n if (rowData.InvoiceCycleDay2 != null) {\r\n if (this.invoiceCycle.length > 0) {\r\n const index = this.invoiceCycle.findIndex(\r\n x =>\r\n x.CycleDayCode === rowData.InvoiceCycleDay2 &&\r\n x.InvoiceCycle === rowData.InvoiceCycle\r\n );\r\n if (index !== -1) {\r\n const cc = this.invoiceCycle[index];\r\n return cc.InvoiceCycleDay;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n tableFilter($event, type) {\r\n if (type == 'effectiveDate') {\r\n this.dataTable.filter($event.value, 'CycleEffectiveDate', 'in');\r\n }\r\n if (type == 'ic') {\r\n this.dataTable.filter($event.value, 'InvoiceCycle', 'in');\r\n }\r\n if (type == 'icd') {\r\n this.dataTable.filter($event.value, 'InvoiceCycleDay', 'in');\r\n }\r\n if (type == 'icd2') {\r\n this.dataTable.filter($event.value, 'InvoiceCycleDay2', 'in');\r\n }\r\n if (type == 'cat') {\r\n this.dataTable.filter($event.value, 'ContractCategory', 'in');\r\n }\r\n if (type == 'contract') {\r\n this.dataTable.filter($event.value, 'ContractListID', 'in');\r\n }\r\n }\r\n onContractFilterChange($event) {\r\n this.log.verbose({\r\n type: 'InvoiceCycleComponent:onContractFilterChange',\r\n $event\r\n });\r\n this.dataTable.filter($event.value, 'ContractListID', 'in');\r\n const contract = this.items.find(\r\n x => x.ContractListID === $event.value[0]\r\n );\r\n this.log.verbose({\r\n type: 'InvoiceCycleComponent:onContractFilterChange',\r\n contract\r\n });\r\n this.selected = [contract];\r\n this.onRowSelect({ data: contract });\r\n }\r\n}\r\n","export * from './invoice-management-container.component';\r\n","import { Component, ElementRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n skip,\r\n startWith,\r\n takeWhile,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { IInvoiceCycle } from '../../../contract-management/IInvoiceCycle';\r\nimport * as fromContract from '../../../contract-management/store';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { InvoiceContractCycleModel } from '../../../data-services/invoice-contract-cycle';\r\nimport * as fromLookups from '../../../lookups';\r\nimport * as fromShared from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport * as fromLoading from '../../../shared/loading/store';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../../user-info';\r\nimport * as fromStore from '../store';\r\nimport { Invoice } from '../store/invoice/invoice.model';\r\n// @fromShared.Decorators.withLogging()\r\n@Component({\r\n selector: 'ef-invoice-management-container',\r\n templateUrl: './invoice-management-container.component.html',\r\n styleUrls: ['./invoice-management-container.component.scss']\r\n})\r\nexport class InvoiceManagementContainerComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n contracts$: Observable<\r\n fromDataServices.InvoiceContractCycle.InvoiceContractCycleModel[]\r\n >;\r\n invoices$: Observable;\r\n userInfo$: Observable;\r\n contractsSelectItems$: Observable;\r\n chargeNumbers$: Observable;\r\n serviceLoading$: Observable;\r\n invoiceCycle$: Observable;\r\n invoiceCycleDaysSelectItems$: Observable;\r\n contractSelectItems$: Observable;\r\n invoiceCycleDay2SelectItems$: Observable;\r\n selectedInvoiceContractCycleModel: fromDataServices.InvoiceContractCycle.InvoiceContractCycleModel;\r\n filterFormGroup: FormGroup;\r\n startDate: Date;\r\n endDate: Date;\r\n selectedContracts: any = [];\r\n showInactiveContracts = false;\r\n showInvoicesOnly = false;\r\n showInactiveChargeNumbers = false;\r\n\r\n filterChangedSubject = new ReplaySubject<{\r\n startDate: Date;\r\n endDate: Date;\r\n contractList: string[];\r\n showInactive: boolean;\r\n showInvoicesOnly: boolean;\r\n }>(1);\r\n selectInvoiceSubject = new ReplaySubject(1);\r\n selectInvoiceCycleSubject = new ReplaySubject(1);\r\n resetInvoiceContract = new ReplaySubject(1);\r\n saveInvoiceSubject = new ReplaySubject(1);\r\n showInvoicesOnlySubject = new ReplaySubject(1);\r\n selectChargeNumberSubject =\r\n new ReplaySubject(1);\r\n private selectedInvoice: Invoice;\r\n maxDate: Date = new Date();\r\n yearRange: string;\r\n active = true;\r\n btnShowDocumentation: ElementRef;\r\n public tabHeight = '';\r\n activeState = [true, true, false];\r\n invoiceContractCycleDataService: EntityCollectionService;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private store: Store,\r\n private log: LoggingService\r\n ) {\r\n this.invoiceContractCycleDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.InvoiceContractCycle.entityName\r\n );\r\n this.invoiceContractCycleDataService.clearCache();\r\n this.invoiceContractCycleDataService.getWithQuery({\r\n activeOnly: true as any\r\n });\r\n\r\n this.startDate = moment(\r\n moment().add(-1, 'months').format('MM/01/YYYY')\r\n ).toDate();\r\n this.endDate = new Date();\r\n this.filterFormGroup = new FormGroup({\r\n startDate: new FormControl(this.startDate),\r\n endDate: new FormControl(this.endDate),\r\n contractList: new FormControl()\r\n });\r\n }\r\n ngOnInit() {\r\n // this.store.dispatch(fromContract.getContracts({ Activeonly: true }));\r\n this.store.dispatch(fromContract.getInvoiceCycle());\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.handleOnOpen([0, 1]);\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.serviceLoading$ = this.store.pipe(select(fromLoading.getLoading));\r\n this.contracts$ = this.invoiceContractCycleDataService.entities$.pipe(\r\n map(\r\n contracts =>\r\n clone(\r\n contracts\r\n ) as fromDataServices.InvoiceContractCycle.InvoiceContractCycleModel[]\r\n ),\r\n map(contracts =>\r\n contracts.map(contract => ({\r\n ...contract,\r\n ContractDesc: contract.ContractDesc\r\n ? contract.ContractDesc\r\n : contract.ContractListID\r\n }))\r\n ),\r\n map(contracts =>\r\n contracts.sort((a, b) =>\r\n a.ContractDesc && b.ContractDesc\r\n ? a.ContractDesc.localeCompare(b.ContractDesc)\r\n : 0\r\n )\r\n )\r\n );\r\n this.invoices$ = this.store.pipe(\r\n takeWhile(() => this.active),\r\n select(fromStore.Invoice.selectAll),\r\n // skip(1), // first one is [] from the store being initialized\r\n // take(1),\r\n // filter(x => !!x),\r\n map(x => clone(x))\r\n );\r\n this.chargeNumbers$ = this.store.pipe(\r\n select(fromStore.ChargeNumber.selectAll),\r\n skip(1) // first one is [] from the store being initialized\r\n );\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.invoiceCycle$ = this.store.pipe(\r\n select(fromContract.fromCycle.selectAll)\r\n );\r\n this.invoiceCycleDaysSelectItems$ = this.invoiceCycle$.pipe(\r\n map(items =>\r\n items.map(x => ({\r\n label: x.InvoiceCycleDay,\r\n value: x.CycleDayCode\r\n }))\r\n )\r\n );\r\n this.contractSelectItems$ = this.contracts$.pipe(\r\n map(items =>\r\n items.map(x => ({\r\n label: x.ContractDesc,\r\n value: x.ContractListID\r\n }))\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.store\r\n .pipe(\r\n takeWhile(() => this.active),\r\n select(fromLookups.ScheduledDateSelectors.selectMinFiscalYear),\r\n filter(x => !!x)\r\n )\r\n .subscribe(minDate => {\r\n this.yearRange = `${minDate.getFullYear()}:${moment(new Date())\r\n .add(1, 'year')\r\n .toDate()\r\n .getFullYear()}`;\r\n this.log.verbose({\r\n type: 'year range',\r\n yearRange: this.yearRange\r\n });\r\n });\r\n this.invoices$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(invoices => invoices && invoices.length > 0)\r\n )\r\n .subscribe(invoices => {\r\n // this.activeState[1] = true;\r\n // this.activeState[2] = true;\r\n // this.handleOnOpen(this.activeState);\r\n this.selectInvoiceSubject.next(invoices[0]);\r\n });\r\n\r\n this.showInvoicesOnlySubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.filtersChanged();\r\n });\r\n\r\n combineLatest([\r\n this.selectInvoiceCycleSubject,\r\n this.filterChangedSubject\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([invoiceCycle, filters]) => {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:selectInvoiceCycleSubject',\r\n invoiceCycle,\r\n filters\r\n });\r\n this.selectedInvoiceContractCycleModel = invoiceCycle;\r\n this.selectedContracts = invoiceCycle.ContractListID;\r\n this.store.dispatch(fromStore.Invoice.clearInvoices());\r\n this.store.dispatch(\r\n fromStore.ChargeNumber.clearInvoiceChargeNumbers()\r\n );\r\n this.store.dispatch(\r\n fromStore.SessionNumber.clearInvoiceSessionNumbers()\r\n );\r\n this.store.dispatch(\r\n fromStore.Invoice.postInvoices({\r\n startDate: filters.startDate,\r\n endDate: filters.endDate,\r\n contractList: [invoiceCycle.ContractListID],\r\n showInactive: filters.showInactive,\r\n showInvoicesOnly: filters.showInvoicesOnly\r\n })\r\n );\r\n this.store.dispatch(\r\n fromStore.Invoice.getActiveContracts({\r\n startDate: filters.startDate,\r\n endDate: filters.endDate,\r\n showInactive: filters.showInactive\r\n })\r\n );\r\n });\r\n this.saveInvoiceSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.filterChangedSubject)\r\n )\r\n .subscribe(([items, filters]) => {\r\n this.store.dispatch(\r\n fromStore.Invoice.putInvoices({\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n invoices: items\r\n })\r\n );\r\n this.store.dispatch(\r\n fromStore.Invoice.postInvoices({\r\n startDate: filters.startDate,\r\n endDate: filters.endDate,\r\n contractList: [items[0].ContractListID],\r\n showInactive: filters.showInactive,\r\n showInvoicesOnly: filters.showInvoicesOnly\r\n })\r\n );\r\n });\r\n combineLatest([this.selectInvoiceSubject, this.filterChangedSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([invoice, filters]) => {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:selectInvoiceSubject',\r\n invoice,\r\n filters\r\n });\r\n\r\n this.selectedInvoice = invoice;\r\n this.store.dispatch(\r\n fromStore.ChargeNumber.clearInvoiceChargeNumbers()\r\n );\r\n this.store.dispatch(\r\n fromStore.ChargeNumber.getInvoiceChargeNumbers({\r\n ScheduledStartDate: filters.startDate,\r\n ScheduledEndDate: filters.endDate,\r\n ContractListID: invoice.ContractListID,\r\n ContractDesc: '',\r\n showInactive: this.showInactiveChargeNumbers\r\n })\r\n );\r\n this.store.dispatch(\r\n fromStore.SessionNumber.clearInvoiceSessionNumbers()\r\n );\r\n this.store.dispatch(\r\n fromStore.SessionNumber.getInvoiceSessionNumbers({\r\n ScheduledStartDate: filters.startDate,\r\n ScheduledEndDate: filters.endDate,\r\n ContractListID: [invoice.ContractListID],\r\n ContractDesc: [],\r\n // showInactive: this.showInactiveChargeNumbers,\r\n showInvoicesOnly: filters.showInvoicesOnly,\r\n DateRangeView: false\r\n })\r\n );\r\n });\r\n combineLatest([\r\n this.selectChargeNumberSubject,\r\n this.showInvoicesOnlySubject.pipe(startWith(false))\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([item, invoicesOnly]) => {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:onSelectChargeNumber',\r\n item\r\n });\r\n this.store.dispatch(\r\n fromStore.SessionNumber.getInvoiceSessionNumbers({\r\n ScheduledStartDate: item.ScheduledStartDate,\r\n ScheduledEndDate: item.ScheduledEndDate,\r\n ContractListID: [item.CNListID],\r\n ContractDesc: [],\r\n // showInactive: this.showInactiveChargeNumbers,\r\n showInvoicesOnly: invoicesOnly,\r\n DateRangeView: false\r\n })\r\n );\r\n });\r\n\r\n this.filterFormGroup.controls['startDate'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (value) {\r\n if (\r\n value > this.filterFormGroup.controls['endDate'].value\r\n ) {\r\n this.filterFormGroup.controls['endDate'].patchValue(\r\n value\r\n );\r\n }\r\n this.maxDate = moment(value)\r\n .add(12, 'months')\r\n .subtract(1, 'days')\r\n .toDate();\r\n }\r\n });\r\n\r\n this.contractsSelectItems$ = this.contracts$.pipe(\r\n map(contracts =>\r\n contracts.map(contract => ({\r\n label: contract.ContractDesc,\r\n value: contract.ContractListID\r\n }))\r\n ),\r\n map(contracts =>\r\n contracts.sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.resetInvoiceContract\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.contracts$)\r\n )\r\n .subscribe(([id, invoices]) => {\r\n const invoice = invoices.find(x => x.ContractListID === id);\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:resetInvoiceContract',\r\n invoice\r\n });\r\n // this.selectInvoiceCycleSubject.next(invoice);\r\n this.store.dispatch(fromStore.Invoice.clearInvoices());\r\n this.store.dispatch(\r\n fromStore.Invoice.postUpdateInvoices({\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n contractList: [invoice.ContractListID],\r\n resetInvoiceSchedule: true\r\n })\r\n );\r\n });\r\n }\r\n datesChanged() {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:datesChanged',\r\n startDate: this.startDate,\r\n endDate: this.endDate\r\n });\r\n if (\r\n moment(this.startDate).isValid() &&\r\n moment(this.endDate).isValid()\r\n ) {\r\n this.filtersChanged();\r\n }\r\n }\r\n filtersChanged() {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:filtersChanged',\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n selectedContracts: this.selectedContracts,\r\n showInactiveContracts: this.showInactiveContracts,\r\n showInvoicesOnly: this.showInvoicesOnly\r\n });\r\n\r\n if (this.selectedContracts) {\r\n this.filterChangedSubject.next({\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n contractList: Array.isArray(this.selectedContracts)\r\n ? this.selectedContracts\r\n : [this.selectedContracts],\r\n showInactive: this.showInactiveContracts,\r\n showInvoicesOnly: this.showInvoicesOnly\r\n });\r\n }\r\n }\r\n onSaveInvoice(items: Invoice[]) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:onSaveItem',\r\n items\r\n });\r\n this.saveInvoiceSubject.next(items);\r\n }\r\n onSelectInvoiceCycle(item: InvoiceContractCycleModel) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:onSelectInvoiceCycle',\r\n item\r\n });\r\n this.store.dispatch(fromStore.Invoice.clearInvoices());\r\n this.selectInvoiceCycleSubject.next(item);\r\n }\r\n onSaveInvoiceCycle(item: InvoiceContractCycleModel[]) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:onSaveInvoiceCycle',\r\n item\r\n });\r\n this.invoiceContractCycleDataService.upsert(item[0]);\r\n }\r\n showAllContractsChecked($event) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:showAllContractsChecked',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromStore.Invoice.getActiveContracts({\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n showInactive: this.showInactiveContracts\r\n })\r\n );\r\n this.invoiceContractCycleDataService.clearCache();\r\n this.invoiceContractCycleDataService.getWithQuery({\r\n activeOnly: !$event.checked as any\r\n });\r\n this.filtersChanged();\r\n }\r\n showAllCNsChecked($event) {\r\n this.store.dispatch(\r\n fromStore.ChargeNumber.getInvoiceChargeNumbers({\r\n ScheduledStartDate: this.startDate,\r\n ScheduledEndDate: this.endDate,\r\n ContractListID: this.selectedInvoice.ContractListID,\r\n ContractDesc: '',\r\n showInactive: this.showInactiveChargeNumbers\r\n })\r\n );\r\n }\r\n handleOnOpen($event: number[]) {\r\n // this is the best way to handle accordion open/close\r\n // baseheight may need adjustment depending on anything outside the tabs\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:handleOnOpen',\r\n $event,\r\n activeState: this.activeState\r\n });\r\n const baseHeight = 73;\r\n this.tabHeight = `${\r\n baseHeight / ($event && $event.length ? $event.length : 1) - 1\r\n }vh`;\r\n }\r\n onSelectedChargeNumberTab($event) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:onSelectedChargeNumberTab',\r\n $event,\r\n activeState: this.activeState\r\n });\r\n if ($event === true) {\r\n this.activeState[1] = true;\r\n const event = [];\r\n if (this.activeState[0]) {\r\n event.push(0);\r\n }\r\n if (this.activeState[1]) {\r\n event.push(1);\r\n }\r\n if (this.activeState[2]) {\r\n event.push(2);\r\n }\r\n setTimeout(() => {\r\n this.handleOnOpen(event);\r\n }, 0);\r\n }\r\n }\r\n resetInvoiceSchedule() {\r\n this.log.verbose({\r\n type: 'InvoiceManagementContainerComponent:resetInvoiceSchedule'\r\n });\r\n this.resetInvoiceContract.next();\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport * as Management from '.';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { InvoiceChargeNumberComponent } from './invoice-charge-number/invoice-charge-number.component';\r\nimport { InvoiceCycleComponent } from './invoice-cycle/invoice-cycle.component';\r\nimport { InvoiceManagementContainerComponent } from './invoice-management-container/invoice-management-container.component';\r\nimport { InvoiceManagementRoute } from './invoice-management.route';\r\nimport { InvoiceManagementComponent } from './invoice-management/invoice-management.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n InvoiceManagementContainerComponent,\r\n InvoiceManagementComponent,\r\n InvoiceChargeNumberComponent,\r\n InvoiceCycleComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [InvoiceManagementRoute]\r\n }),\r\n EffectsModule.forFeature([\r\n Management.Invoice.InvoiceEffects,\r\n Management.ChargeNumber.InvoiceChargeNumberEffects,\r\n Management.SessionNumber.InvoiceSessionNumberEffects\r\n ]),\r\n StoreModule.forFeature(\r\n Management.Invoice.invoicesFeatureKey,\r\n Management.Invoice.reducer\r\n ),\r\n StoreModule.forFeature(\r\n Management.ChargeNumber.invoiceChargeNumbersFeatureKey,\r\n Management.ChargeNumber.reducer\r\n ),\r\n StoreModule.forFeature(\r\n Management.SessionNumber.invoiceSessionNumbersFeatureKey,\r\n Management.SessionNumber.reducer\r\n )\r\n ]\r\n})\r\nexport class InvoiceManagementModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromInvoice from '.';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const InvoiceManagementRoute: Ng2StateDeclaration = {\r\n // name: 'invoice.**'\r\n name: 'invoice.management',\r\n url: '/management',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.invoiceModule)\r\n data: { requiresAuth: true },\r\n component: fromInvoice.InvoiceManagementContainerComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport { IInvoiceCycle } from '../../contract-management/IInvoiceCycle';\r\nimport { Guid, IGenericResponse } from '../../shared';\r\nimport { LoadingService } from '../../shared/loading';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromRoot from '../../store';\r\nimport * as fromStore from './store';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvoiceManagementService extends LoadingService {\r\n private uri = `${environment.apiLocation}/ContractInvoiceMgmt`;\r\n private uriActiveContracts = `${environment.apiLocation}/ContractwithInvoiceActivity`;\r\n private uriSession = `${environment.apiLocation}/InvoiceVoucherNbr`;\r\n private uriChargeNumber = `${environment.apiLocation}/CNInvoiceMgmt`;\r\n private uriInvoiceCycle = `${environment.apiLocation}/InvoiceCycle`;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n get(): Observable {\r\n return this.http\r\n .get(this.uri)\r\n .pipe(map(res => this.mapInvoices(res)));\r\n }\r\n post(\r\n startDate?: Date,\r\n endDate?: Date,\r\n contractList?: string[],\r\n showInactive: boolean = false,\r\n showInvoicesOnly: boolean = false,\r\n resetInvoiceSchedule: boolean = false\r\n ): Observable {\r\n super.Load();\r\n const params = {\r\n Activeonly: !showInactive,\r\n InvoicesOnly: showInvoicesOnly,\r\n ResetInvoiceSchedule: resetInvoiceSchedule\r\n } as any;\r\n if (!!startDate) {\r\n params.ScheduledStartDate = moment(startDate).format('MM/DD/YYYY');\r\n }\r\n if (!!endDate) {\r\n params.ScheduledEndDate = moment(endDate).format('MM/DD/YYYY');\r\n }\r\n if (!!contractList && contractList.length > 0) {\r\n params.ContractList = contractList.map(x => ({\r\n ContractListID: x,\r\n ContractDesc: ''\r\n }));\r\n }\r\n this.log.verbose({\r\n type: 'InvoiceManagementService:post',\r\n startDate,\r\n endDate,\r\n contractList,\r\n params\r\n });\r\n return this.http\r\n .post(this.uri, params)\r\n .pipe(\r\n tap(() => super.Stop()),\r\n map(res => this.mapInvoices(res))\r\n );\r\n }\r\n put(\r\n Invoices: fromStore.Invoice.Invoice[]\r\n ): Observable> {\r\n return this.http\r\n .put>(this.uri, {\r\n ContractInvoiceMgmtList: Invoices\r\n })\r\n .pipe(\r\n map(res => ({\r\n ...res,\r\n Items: this.mapInvoices(res.Items)\r\n }))\r\n );\r\n }\r\n getInvoiceSessions(\r\n ScheduledStartDate: Date,\r\n ScheduledEndDate: Date,\r\n ContractListID: string[],\r\n ContractDesc: string[],\r\n // showInactive: boolean = false,\r\n showInvoicesOnly: boolean = false,\r\n DateRangeView?: boolean\r\n ): Observable {\r\n this.log.verbose({\r\n type: 'InvoiceManagementService:getInvoiceSessions',\r\n ScheduledStartDate,\r\n ScheduledEndDate,\r\n ContractListID,\r\n ContractDesc,\r\n // showInactive,\r\n showInvoicesOnly,\r\n DateRangeView\r\n });\r\n let contractList: Array<{\r\n ContractListID: string;\r\n ContractDesc: string;\r\n }> = [];\r\n if (ContractListID && ContractListID.length > 0) {\r\n // contractList: Array<{ContractListID: string, ContractDesc: string}> = [];\r\n for (let i = 0; i < ContractListID.length; i++) {\r\n contractList.push({\r\n ContractListID: ContractListID[i],\r\n ContractDesc: ''\r\n });\r\n }\r\n } else {\r\n contractList = [];\r\n }\r\n\r\n return this.http\r\n .post(\r\n this.uriSession,\r\n {\r\n ScheduledStartDate,\r\n ScheduledEndDate,\r\n ContractList: contractList,\r\n // Activeonly: !showInactive,\r\n Invoicesonly: showInvoicesOnly,\r\n DateRangeView: DateRangeView\r\n }\r\n )\r\n .pipe(\r\n map(x =>\r\n x.map(y => ({\r\n ...y,\r\n id: y.Ib_id,\r\n SessionEnd: moment(y.SessionEnd).format('MM/DD/YYYY'),\r\n SessionStart: y.SessionStart\r\n }))\r\n )\r\n );\r\n }\r\n putInvoiceSessions(\r\n sessions: fromStore.SessionNumber.InvoiceSessionNumber[]\r\n ) {\r\n return this.http\r\n .put<\r\n IGenericResponse\r\n >(this.uriSession, {\r\n InvoiceVoucherNbrList: sessions\r\n })\r\n .pipe(\r\n map(res => ({\r\n ...res,\r\n Items: res.Items.map(y => ({\r\n ...y,\r\n id: y.Ib_id\r\n }))\r\n }))\r\n );\r\n }\r\n public deleteInvoiceSessions(\r\n ids: Array\r\n ): Observable<\r\n IGenericResponse\r\n > {\r\n return (\r\n this.http\r\n // TODO: change to .delete when upgrading to NG7\r\n .request<\r\n IGenericResponse\r\n >('DELETE', this.uriSession, {\r\n body: { EntityIDs: ids }\r\n })\r\n .pipe(\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items\r\n })),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'InvoiceManagmentService:deleteInvoiceSessions:response',\r\n data\r\n })\r\n )\r\n )\r\n );\r\n }\r\n getChargeNumbers(\r\n ScheduledStartDate: Date,\r\n ScheduledEndDate: Date,\r\n ContractListID: string,\r\n ContractDesc: string,\r\n showInactive: boolean = false\r\n ): Observable {\r\n return this.http\r\n .post(\r\n this.uriChargeNumber,\r\n {\r\n ScheduledStartDate,\r\n ScheduledEndDate,\r\n ContractList: [{ ContractListID, ContractDesc }],\r\n Activeonly: !showInactive\r\n }\r\n )\r\n .pipe(\r\n map(x =>\r\n x.map(y => ({\r\n ...y,\r\n id: this.getChargeNumberId(y)\r\n }))\r\n )\r\n );\r\n }\r\n getActiveContract(\r\n startDate: Date,\r\n endDate: Date,\r\n showInactive: boolean\r\n ): Observable<{ ContractListID: string; ContractDesc: string }[]> {\r\n return this.http.post<\r\n { ContractListID: string; ContractDesc: string }[]\r\n >(this.uriActiveContracts, {\r\n StartDate: moment(startDate).format('MM/DD/YYYY'),\r\n EndDate: moment(endDate).format('MM/DD/YYYY'),\r\n Activeonly: !showInactive\r\n });\r\n }\r\n mapInvoices(\r\n invoices: fromStore.Invoice.Invoice[]\r\n ): fromStore.Invoice.Invoice[] {\r\n return invoices.map(x => ({\r\n id: this.getInvoiceId(x),\r\n ...x,\r\n InvoiceDate: x.InvoiceDate ? moment(x.InvoiceDate).toDate() : null,\r\n InvoiceEnd: x.InvoiceEnd ? moment(x.InvoiceEnd).toDate() : null,\r\n InvoiceStart: x.InvoiceStart\r\n ? moment(x.InvoiceStart).toDate()\r\n : null,\r\n LastModifiedDate: x.LastModifiedDate\r\n ? moment(x.LastModifiedDate).toDate()\r\n : null,\r\n ScheduledEndDate: x.ScheduledEndDate\r\n ? moment(x.ScheduledEndDate).toDate()\r\n : null,\r\n ScheduledStartDate: x.ScheduledStartDate\r\n ? moment(x.ScheduledStartDate).toDate()\r\n : null,\r\n ScheduledEndOverride: x.ScheduledEndOverride\r\n ? moment(x.ScheduledEndOverride).toDate()\r\n : null,\r\n ScheduledStartOverride: x.ScheduledStartOverride\r\n ? moment(x.ScheduledStartOverride).toDate()\r\n : null\r\n }));\r\n }\r\n private getChargeNumberId(\r\n item: fromStore.ChargeNumber.InvoiceChargeNumber\r\n ) {\r\n return item.Uniqueid;\r\n }\r\n private getInvoiceId(item: fromStore.Invoice.Invoice) {\r\n return item.Uniqueid || Guid.newGuid();\r\n }\r\n putInvoiceCycle(\r\n item: IInvoiceCycle\r\n ): Observable> {\r\n return this.http\r\n .put>(this.uriInvoiceCycle, {\r\n ...item\r\n })\r\n .pipe\r\n // map(res => ({\r\n // ...res,\r\n // Items: this.mapInvoices(res.Items)\r\n // }))\r\n ();\r\n }\r\n}\r\n","export * from './invoice-management.component';\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { IInvoiceCycle } from '../../../contract-management/IInvoiceCycle';\r\nimport { InvoiceContractCycleModel } from '../../../data-services/invoice-contract-cycle';\r\nimport * as fromShared from '../../../shared';\r\nimport {\r\n FilterService,\r\n SelectItem,\r\n Table\r\n} from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\n\r\n@Component({\r\n selector: 'ef-invoice-management',\r\n templateUrl: './invoice-management.component.html',\r\n styleUrls: ['./invoice-management.component.scss']\r\n})\r\nexport class InvoiceManagementComponent\r\n extends fromShared.EditGrid\r\n implements OnInit, OnChanges\r\n{\r\n loading = true;\r\n moment: any;\r\n @Input() invoiceCycle: IInvoiceCycle[];\r\n @Input() invoiceCycleDaysSelectItems: SelectItem[];\r\n @Output() SaveInvoiceCycle = new ReplaySubject(\r\n 1\r\n );\r\n\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n virtualItems: fromStore.Invoice.Invoice[];\r\n public get contractsSelectItems(): SelectItem[] {\r\n if (this.items && this.items.length > 0) {\r\n return fromShared\r\n .uniqBy(this.items, x => x.ContractDesc)\r\n .map(x => ({ label: x.ContractDesc, value: x.ContractDesc }));\r\n } else {\r\n return [];\r\n }\r\n }\r\n icd2SelectItem: SelectItem[] = [];\r\n rowGroupMetadata: any = {};\r\n @ViewChild('dtInvoiceManagement', { static: true, read: Table })\r\n dataTable: Table;\r\n startDateFilter: any;\r\n endDateFilter: any;\r\n startOverrideDateFilter: any;\r\n endOverrideDateFilter: any;\r\n numCols = 9;\r\n public editing?: fromStore.Invoice.Invoice =\r\n {} as fromStore.Invoice.Invoice;\r\n clonedInvoiceSchedules: { [i: string]: fromStore.Invoice.Invoice } = {};\r\n @Output() SaveInvoiceSchedule = new ReplaySubject<\r\n fromStore.Invoice.Invoice[]\r\n >(1);\r\n showDialog = false;\r\n rowData: fromStore.Invoice.Invoice;\r\n constructor(\r\n private log: LoggingService,\r\n private filterService: FilterService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n super();\r\n this.moment = moment;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.items && changes.items.currentValue) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:items:set',\r\n value: changes.items.currentValue\r\n });\r\n this.updateRowGroupMetaData(changes.items.currentValue);\r\n\r\n if (\r\n changes.items.currentValue &&\r\n changes.items.currentValue.length > 0\r\n ) {\r\n this.selected = [changes.items.currentValue[0]];\r\n }\r\n }\r\n }\r\n ngOnInit() {\r\n this.addDateRangeFilter();\r\n }\r\n updateRowGroupMetaData(data) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:updateRowGroupMetaData',\r\n data\r\n });\r\n // this.loading = true;\r\n // this.cdRef.markForCheck();\r\n this.rowGroupMetadata = {};\r\n if (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n const rowData = data[i];\r\n const field = 'ContractDesc';\r\n const category = rowData[field];\r\n if (i === 0) {\r\n this.rowGroupMetadata[category] = { index: 0, size: 1 };\r\n } else {\r\n const previousRowData = data[i - 1];\r\n const previousRowGroup = previousRowData[field];\r\n if (category === previousRowGroup) {\r\n this.rowGroupMetadata[category].size++;\r\n } else {\r\n this.rowGroupMetadata[category] = { index: i, size: 1 };\r\n }\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:updateRowGroupMetaData',\r\n data,\r\n rowGroupMetadata: this.rowGroupMetadata\r\n });\r\n this.cdRef.markForCheck();\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:updateRowGroupMetaData:after cdref'\r\n });\r\n }\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:onFilter',\r\n $event\r\n });\r\n // setTimeout(() => {\r\n this.updateRowGroupMetaData($event.filteredValue);\r\n // }, 50);\r\n }\r\n onSort($event: {\r\n data: fromStore.Invoice.Invoice[];\r\n field: string;\r\n mode: string;\r\n order: number;\r\n }) {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:onSort',\r\n $event\r\n });\r\n setTimeout(() => {\r\n this.updateRowGroupMetaData(\r\n this.dataTable.filteredValue || this.dataTable.value\r\n );\r\n }, 50);\r\n $event.data.sort((data1, data2) => {\r\n const group1 = data1.ContractDesc || '';\r\n const group2 = data2.ContractDesc || '';\r\n const field1 = data1[$event.field];\r\n const field2 = data2[$event.field];\r\n\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:onSort',\r\n $event,\r\n data1,\r\n data2,\r\n group1,\r\n group2\r\n });\r\n if ($event.field === 'ContractDesc') {\r\n return group1.localeCompare(group2) * $event.order;\r\n }\r\n if (group1.localeCompare(group2) === 0) {\r\n if (isNaN(field1) || isNaN(field2)) {\r\n return field1.localeCompare(field2) * $event.order;\r\n } else {\r\n return (field1 - field2) * $event.order;\r\n }\r\n } else {\r\n return group1.localeCompare(group2); // * $event.order;\r\n }\r\n });\r\n }\r\n addDateRangeFilter() {\r\n this.filterService.register(\r\n 'startDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:startDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.startDateFilter[0]),\r\n moment(this.startDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n this.filterService.register(\r\n 'endDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:endDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.endDateFilter[0]),\r\n moment(this.endDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n this.filterService.register(\r\n 'startOverrideDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:startDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.startDateFilter[0]),\r\n moment(this.startDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n this.filterService.register(\r\n 'endOverrideDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceManagementComponent:endDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.endDateFilter[0]),\r\n moment(this.endDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n }\r\n\r\n onEditInit($event: { data: fromStore.Invoice.Invoice }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: fromStore.Invoice.Invoice) {\r\n this.clonedInvoiceSchedules[rowData.Uniqueid] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: fromStore.Invoice.Invoice) {\r\n this.rowData = rowData;\r\n if (\r\n rowData.ScheduledEndDate.getTime() !=\r\n this.clonedInvoiceSchedules[\r\n rowData.Uniqueid\r\n ].ScheduledEndDate.getTime()\r\n ) {\r\n this.showDialog = true;\r\n } else {\r\n const dataArr = [] as fromStore.Invoice.Invoice[];\r\n dataArr.push(rowData);\r\n this.SaveInvoiceSchedule.next(dataArr);\r\n delete this.clonedInvoiceSchedules[rowData.Uniqueid];\r\n delete this.editing;\r\n }\r\n\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: fromStore.Invoice.Invoice) {\r\n delete this.clonedInvoiceSchedules[item.Uniqueid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n onRowSelect($event) {\r\n this.log.verbose({\r\n type: `EditGrid<${typeof this}>:onRowSelect`,\r\n $event,\r\n editing: this.editing,\r\n selected: this.selected\r\n });\r\n if (this.editing) {\r\n setTimeout(() => {\r\n this.selected = [this.editing];\r\n }, 0);\r\n } else {\r\n this.SelectItem.next($event.data);\r\n }\r\n }\r\n\r\n onSaveInvoiceSchedule(choice) {\r\n if (choice == 'yes') {\r\n this.rowData = {\r\n ...this.rowData,\r\n NewRow: true\r\n };\r\n const dataArr = [] as fromStore.Invoice.Invoice[];\r\n dataArr.push(this.rowData);\r\n this.SaveInvoiceSchedule.next(dataArr);\r\n delete this.clonedInvoiceSchedules[this.rowData.Uniqueid];\r\n delete this.editing;\r\n this.showDialog = false;\r\n } else {\r\n this.rowData = {\r\n ...this.rowData,\r\n NewRow: false\r\n };\r\n const dataArr = [] as fromStore.Invoice.Invoice[];\r\n dataArr.push(this.rowData);\r\n this.SaveInvoiceSchedule.next(dataArr);\r\n delete this.clonedInvoiceSchedules[this.rowData.Uniqueid];\r\n delete this.editing;\r\n this.showDialog = false;\r\n }\r\n }\r\n}\r\n","export * from './invoice-charge-number.model';\r\nexport * from './invoice-charge-number.actions';\r\nexport * from './invoice-charge-number.reducer';\r\nexport * from './invoice-charge-number.effects';\r\nexport * from './invoice-charge-number.selectors';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { InvoiceChargeNumber } from './invoice-charge-number.model';\r\n\r\nexport const loadInvoiceChargeNumbers = createAction(\r\n '[InvoiceChargeNumber/API] Load InvoiceChargeNumbers',\r\n props<{ invoiceChargeNumbers: InvoiceChargeNumber[] }>()\r\n);\r\n\r\nexport const addInvoiceChargeNumber = createAction(\r\n '[InvoiceChargeNumber/API] Add InvoiceChargeNumber',\r\n props<{ invoiceChargeNumber: InvoiceChargeNumber }>()\r\n);\r\n\r\nexport const upsertInvoiceChargeNumber = createAction(\r\n '[InvoiceChargeNumber/API] Upsert InvoiceChargeNumber',\r\n props<{ invoiceChargeNumber: InvoiceChargeNumber }>()\r\n);\r\n\r\nexport const addInvoiceChargeNumbers = createAction(\r\n '[InvoiceChargeNumber/API] Add InvoiceChargeNumbers',\r\n props<{ invoiceChargeNumbers: InvoiceChargeNumber[] }>()\r\n);\r\n\r\nexport const upsertInvoiceChargeNumbers = createAction(\r\n '[InvoiceChargeNumber/API] Upsert InvoiceChargeNumbers',\r\n props<{ invoiceChargeNumbers: InvoiceChargeNumber[] }>()\r\n);\r\n\r\nexport const updateInvoiceChargeNumber = createAction(\r\n '[InvoiceChargeNumber/API] Update InvoiceChargeNumber',\r\n props<{ invoiceChargeNumber: Update }>()\r\n);\r\n\r\nexport const updateInvoiceChargeNumbers = createAction(\r\n '[InvoiceChargeNumber/API] Update InvoiceChargeNumbers',\r\n props<{ invoiceChargeNumbers: Update[] }>()\r\n);\r\n\r\nexport const deleteInvoiceChargeNumber = createAction(\r\n '[InvoiceChargeNumber/API] Delete InvoiceChargeNumber',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteInvoiceChargeNumbers = createAction(\r\n '[InvoiceChargeNumber/API] Delete InvoiceChargeNumbers',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearInvoiceChargeNumbers = createAction(\r\n '[InvoiceChargeNumber/API] Clear InvoiceChargeNumbers'\r\n);\r\n\r\nexport const getInvoiceChargeNumbers = createAction(\r\n '[InvoiceChargeNumber/API] Get InvoiceChargeNumber',\r\n props<{\r\n ScheduledStartDate: Date;\r\n ScheduledEndDate: Date;\r\n ContractListID: string;\r\n ContractDesc: string;\r\n showInactive: boolean;\r\n }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../../shared';\r\nimport { InvoiceManagementService } from '../../../management/invoice-management.service';\r\nimport * as InvoiceChargeNumberActions from './invoice-charge-number.actions';\r\n\r\n@Injectable()\r\nexport class InvoiceChargeNumberEffects {\r\n getInvoiceChargeNumbers$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceChargeNumberActions.getInvoiceChargeNumbers),\r\n switchMap(action =>\r\n this.service\r\n .getChargeNumbers(\r\n action.ScheduledStartDate,\r\n action.ScheduledEndDate,\r\n action.ContractListID,\r\n action.ContractDesc,\r\n action.showInactive\r\n )\r\n .pipe(\r\n map(data =>\r\n InvoiceChargeNumberActions.loadInvoiceChargeNumbers(\r\n { invoiceChargeNumbers: data }\r\n )\r\n ),\r\n // retryBackoff({ initialInterval: 3000, maxRetries: 3 }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: InvoiceManagementService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../../../shared';\r\nexport interface InvoiceChargeNumber {\r\n id: string;\r\n Uniqueid: string;\r\n CNListID: string;\r\n ChargeNumber: string;\r\n FullName: string;\r\n Contracttype: string;\r\n ScheduledStartDate: Date;\r\n ScheduledEndDate: Date;\r\n CNScheduleId: number;\r\n ScheduledAmount: number;\r\n LastModifiedDate: Date;\r\n InvoiceNbr: number;\r\n InvoiceStart: Date;\r\n InvoiceEnd: Date;\r\n InvoiceDate: Date;\r\n InvoiceAmount: number;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as InvoiceChargeNumberActions from './invoice-charge-number.actions';\r\nimport { InvoiceChargeNumber } from './invoice-charge-number.model';\r\n\r\nexport const invoiceChargeNumbersFeatureKey = 'invoiceChargeNumbers';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst invoiceChargeNumberReducer = createReducer(\r\n initialState,\r\n on(InvoiceChargeNumberActions.addInvoiceChargeNumber, (state, action) =>\r\n adapter.addOne(action.invoiceChargeNumber, state)\r\n ),\r\n on(InvoiceChargeNumberActions.upsertInvoiceChargeNumber, (state, action) =>\r\n adapter.upsertOne(action.invoiceChargeNumber, state)\r\n ),\r\n on(InvoiceChargeNumberActions.addInvoiceChargeNumbers, (state, action) =>\r\n adapter.addMany(action.invoiceChargeNumbers, state)\r\n ),\r\n on(InvoiceChargeNumberActions.upsertInvoiceChargeNumbers, (state, action) =>\r\n adapter.upsertMany(action.invoiceChargeNumbers, state)\r\n ),\r\n on(InvoiceChargeNumberActions.updateInvoiceChargeNumber, (state, action) =>\r\n adapter.updateOne(action.invoiceChargeNumber, state)\r\n ),\r\n on(InvoiceChargeNumberActions.updateInvoiceChargeNumbers, (state, action) =>\r\n adapter.updateMany(action.invoiceChargeNumbers, state)\r\n ),\r\n on(InvoiceChargeNumberActions.deleteInvoiceChargeNumber, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(InvoiceChargeNumberActions.deleteInvoiceChargeNumbers, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(InvoiceChargeNumberActions.loadInvoiceChargeNumbers, (state, action) =>\r\n adapter.setAll(action.invoiceChargeNumbers, state)\r\n ),\r\n on(InvoiceChargeNumberActions.clearInvoiceChargeNumbers, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return invoiceChargeNumberReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromInvoiceChargeNumber from './invoice-charge-number.reducer';\r\n\r\nexport const selectInvoiceChargeNumberState = createFeatureSelector(\r\n fromInvoiceChargeNumber.invoiceChargeNumbersFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromInvoiceChargeNumber.adapter.getSelectors(\r\n selectInvoiceChargeNumberState\r\n);\r\n","export * as ChargeNumber from './charge-number';\r\nexport * as SessionNumber from './session-number';\r\nexport * as Invoice from './invoice';\r\n","export * from './invoice.model';\r\nexport * from './invoice.actions';\r\nexport * from './invoice.reducer';\r\nexport * from './invoice.effects';\r\nexport * from './invoice.selectors';\r\n","import { Update } from '@ngrx/entity';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { IInvoiceCycle } from '../../../../contract-management/IInvoiceCycle';\r\nimport { SelectItem } from '../../../../shared';\r\nimport { Invoice } from './invoice.model';\r\n\r\nexport const loadInvoices = createAction(\r\n '[Invoice/API] Load Invoices',\r\n props<{ invoices: Invoice[] }>()\r\n);\r\n\r\nexport const addInvoice = createAction(\r\n '[Invoice/API] Add Invoice',\r\n props<{ invoice: Invoice }>()\r\n);\r\n\r\nexport const upsertInvoice = createAction(\r\n '[Invoice/API] Upsert Invoice',\r\n props<{ invoice: Invoice }>()\r\n);\r\n\r\nexport const addInvoices = createAction(\r\n '[Invoice/API] Add Invoices',\r\n props<{ invoices: Invoice[] }>()\r\n);\r\n\r\nexport const upsertInvoices = createAction(\r\n '[Invoice/API] Upsert Invoices',\r\n props<{ invoices: Invoice[] }>()\r\n);\r\n\r\nexport const updateInvoice = createAction(\r\n '[Invoice/API] Update Invoice',\r\n props<{ invoice: Update }>()\r\n);\r\n\r\nexport const updateInvoices = createAction(\r\n '[Invoice/API] Update Invoices',\r\n props<{ invoices: Update[] }>()\r\n);\r\n\r\nexport const deleteInvoice = createAction(\r\n '[Invoice/API] Delete Invoice',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteInvoices = createAction(\r\n '[Invoice/API] Delete Invoices',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearInvoices = createAction('[Invoice/API] Clear Invoices');\r\n\r\nexport const getInvoices = createAction('[Invoice/API] Get Invoices');\r\n\r\nexport const postInvoices = createAction(\r\n '[Invoice/API] Post Invoices',\r\n props<{\r\n startDate?: Date;\r\n endDate?: Date;\r\n contractList?: string[];\r\n showInactive?: boolean;\r\n showInvoicesOnly?: boolean;\r\n }>()\r\n);\r\n\r\nexport const postUpdateInvoices = createAction(\r\n '[Invoice/API] Post Update Invoices',\r\n props<{\r\n startDate?: Date;\r\n endDate?: Date;\r\n contractList?: string[];\r\n showInactive?: boolean;\r\n showInvoicesOnly?: boolean;\r\n resetInvoiceSchedule?: boolean;\r\n }>()\r\n);\r\n\r\nexport const putInvoices = createAction(\r\n '[Invoice/API] Put Invoices',\r\n props<{ startDate: Date; endDate: Date; invoices: Invoice[] }>()\r\n);\r\n\r\nexport const getActiveContracts = createAction(\r\n '[Invoice/API] Get Active Contracts',\r\n props<{ startDate: Date; endDate: Date; showInactive: boolean }>()\r\n);\r\n\r\nexport const loadActiveContracts = createAction(\r\n '[Invoice/API] Load Active Contracts',\r\n props<{ contracts: SelectItem[] }>()\r\n);\r\n\r\nexport const putInvoiceCycle = createAction(\r\n '[Invoice/API] Put Invoice Cycle',\r\n props<{ item: IInvoiceCycle }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport {\r\n catchError,\r\n filter,\r\n flatMap,\r\n map,\r\n switchMap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromContract from '../../../../contract-management/store';\r\nimport * as fromShared from '../../../../shared';\r\nimport { LoggingService } from '../../../../shared/services/logging/logging.service';\r\nimport { InvoiceManagementService } from '../../../management/invoice-management.service';\r\nimport * as InvoiceActions from './invoice.actions';\r\nimport { Invoice } from './invoice.model';\r\nimport * as fromInvoice from './invoice.reducer';\r\nimport * as selectors from './invoice.selectors';\r\n\r\n@Injectable()\r\nexport class InvoiceEffects {\r\n getInvoices$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceActions.getInvoices),\r\n switchMap(() =>\r\n this.service.get().pipe(\r\n map(invoices => InvoiceActions.loadInvoices({ invoices })),\r\n // retryBackoff({ initialInterval: 3000, maxRetries: 3 }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n postInvoices$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceActions.postInvoices),\r\n // withLatestFrom(\r\n // this.store.pipe(select(selectors.selectAll))\r\n // ),\r\n // filter(([, items]) => items.length === 0),\r\n // switchMap(([action, ]) =>\r\n switchMap(action =>\r\n this.service\r\n .post(\r\n action.startDate,\r\n action.endDate,\r\n action.contractList,\r\n action.showInactive,\r\n action.showInvoicesOnly\r\n )\r\n .pipe(\r\n map(invoices =>\r\n InvoiceActions.loadInvoices({ invoices })\r\n ),\r\n // retryBackoff({ initialInterval: 3000, maxRetries: 3 }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n postUpdateInvoices$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceActions.postUpdateInvoices),\r\n switchMap(action =>\r\n this.service\r\n .post(\r\n action.startDate,\r\n action.endDate,\r\n action.contractList,\r\n action.showInactive,\r\n action.showInvoicesOnly,\r\n action.resetInvoiceSchedule\r\n )\r\n .pipe(\r\n map(invoices =>\r\n InvoiceActions.upsertInvoices({ invoices })\r\n ),\r\n // retryBackoff({ initialInterval: 3000, maxRetries: 3 }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putInvoices$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceActions.putInvoices),\r\n switchMap(action =>\r\n this.service.put(action.invoices).pipe(\r\n withLatestFrom(\r\n this.store.pipe(\r\n //TODO: move to the factory selector for selectInvoicesByContractId\r\n // select(selectors.selectInvoicesByContractId(action.invoices.map(x => x.ContractListID))),\r\n select(selectors.selectInvoicesByContractId, {\r\n ids: action.invoices.map(x => x.ContractListID)\r\n }),\r\n // map(invoices => invoices.reduce((a, c) => c)),\r\n map(\r\n invoices =>\r\n fromShared.uniqBy(\r\n invoices,\r\n x => x.ContractListID\r\n ) as Invoice[]\r\n ),\r\n map(invoices =>\r\n invoices.filter(i =>\r\n action.invoices.find(\r\n x =>\r\n x.ContractListID ===\r\n i.ContractListID &&\r\n (x.ScheduledStartDate.getTime() !==\r\n i.ScheduledStartDate.getTime() ||\r\n x.ScheduledEndDate.getTime() !==\r\n i.ScheduledEndDate.getTime())\r\n )\r\n )\r\n )\r\n )\r\n ),\r\n flatMap(([updating, existing]) => [\r\n InvoiceActions.upsertInvoices({\r\n invoices: updating.Items\r\n }),\r\n existing && existing.length > 0\r\n ? InvoiceActions.postUpdateInvoices({\r\n startDate: action.startDate,\r\n endDate: action.endDate,\r\n contractList: existing.map(\r\n y => y.ContractListID\r\n )\r\n })\r\n : { type: 'EMPTY' }\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putInvoiceCycle$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceActions.putInvoiceCycle),\r\n switchMap(action =>\r\n this.service.putInvoiceCycle(action.item).pipe(\r\n map(data => ({\r\n ...data,\r\n Items: data.Items.filter(x => !!x)\r\n })),\r\n filter(data => data && data.Items.length > 0),\r\n map(data =>\r\n fromContract.upsertContractManagement(\r\n data.Items[0] as any\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getActiveContracts$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceActions.getActiveContracts),\r\n switchMap(action =>\r\n this.service\r\n .getActiveContract(\r\n action.startDate,\r\n action.endDate,\r\n action.showInactive\r\n )\r\n .pipe(\r\n map(contracts =>\r\n InvoiceActions.loadActiveContracts({\r\n contracts: contracts.map(x => ({\r\n label: x.ContractDesc,\r\n value: x.ContractListID\r\n }))\r\n })\r\n ),\r\n // retryBackoff({ initialInterval: 3000, maxRetries: 3 }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: InvoiceManagementService,\r\n private store: Store,\r\n private log: LoggingService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../../../shared';\r\nexport interface Invoice {\r\n id: string;\r\n Uniqueid: string;\r\n ContractListID: string;\r\n ContractDesc: string;\r\n Contracttype: string;\r\n CNListID: string;\r\n ChargeNumber: string;\r\n FullName: string;\r\n ScheduledStartDate: Date;\r\n ScheduledEndDate: Date;\r\n ScheduledStartOverride: Date;\r\n ScheduledEndOverride: Date;\r\n ContractScheduleId: number;\r\n ScheduledAmount: number;\r\n LastModifiedDate: Date;\r\n InvoiceNbr: number;\r\n VoucherNbr: string;\r\n ContractTotal: number;\r\n InvoiceStart: Date;\r\n InvoiceEnd: Date;\r\n InvoiceDate: Date;\r\n InvoiceLevel: string;\r\n InvoiceAmount: number;\r\n InvoiceSentToQB: boolean;\r\n Status: IStatusMessage;\r\n NewRow: boolean;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { SelectItem } from '../../../../shared';\r\nimport * as InvoiceActions from './invoice.actions';\r\nimport { Invoice } from './invoice.model';\r\n\r\nexport const invoicesFeatureKey = 'invoices';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n ActiveContracts: SelectItem[];\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n ActiveContracts: []\r\n});\r\n\r\nconst invoiceReducer = createReducer(\r\n initialState,\r\n on(InvoiceActions.addInvoice, (state, action) =>\r\n adapter.addOne(action.invoice, state)\r\n ),\r\n on(InvoiceActions.upsertInvoice, (state, action) =>\r\n adapter.upsertOne(action.invoice, state)\r\n ),\r\n on(InvoiceActions.addInvoices, (state, action) =>\r\n adapter.addMany(action.invoices, state)\r\n ),\r\n on(InvoiceActions.upsertInvoices, (state, action) =>\r\n adapter.upsertMany(action.invoices, state)\r\n ),\r\n on(InvoiceActions.updateInvoice, (state, action) =>\r\n adapter.updateOne(action.invoice, state)\r\n ),\r\n on(InvoiceActions.updateInvoices, (state, action) =>\r\n adapter.updateMany(action.invoices, state)\r\n ),\r\n on(InvoiceActions.deleteInvoice, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(InvoiceActions.deleteInvoices, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(InvoiceActions.loadInvoices, (state, action) =>\r\n adapter.setAll(action.invoices, state)\r\n ),\r\n on(InvoiceActions.clearInvoices, state => adapter.removeAll(state)),\r\n on(InvoiceActions.loadActiveContracts, (state, action) => ({\r\n ...state,\r\n ActiveContracts: action.contracts\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return invoiceReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { Invoice } from '.';\r\nimport * as fromInvoice from './invoice.reducer';\r\n\r\nexport const selectInvoiceState = createFeatureSelector(\r\n fromInvoice.invoicesFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromInvoice.adapter.getSelectors(selectInvoiceState);\r\n\r\nexport const selectActiveContracts = createSelector(\r\n selectInvoiceState,\r\n (state: fromInvoice.State) => state.ActiveContracts\r\n);\r\n\r\n// props, deprectated\r\nexport const selectInvoicesByContractId = createSelector(\r\n selectAll,\r\n (invoices: Invoice[], props) =>\r\n invoices.filter(x => props.ids.find(y => x.ContractListID === y))\r\n);\r\n\r\n//example: factory selector: https://github.com/ngrx/platform/issues/2980\r\nexport const selectInvoicesByContractId2 = (ids: string[]) =>\r\n createSelector(selectAll, invoices =>\r\n invoices.filter(x => ids.find(y => x.ContractListID === y))\r\n );\r\n","export * from './invoice-session-number.model';\r\nexport * from './invoice-session-number.actions';\r\nexport * from './invoice-session-number.reducer';\r\nexport * from './invoice-session-number.effects';\r\nexport * from './invoice-session-number.selectors';\r\n","import { Update } from '@ngrx/entity';\r\nimport { Action, createAction, props } from '@ngrx/store';\r\nimport { InvoiceSessionNumber } from './invoice-session-number.model';\r\n\r\nexport const loadInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Load InvoiceSessionNumbers',\r\n props<{ invoiceSessionNumbers: InvoiceSessionNumber[] }>()\r\n);\r\n\r\nexport const addInvoiceSessionNumber = createAction(\r\n '[InvoiceSessionNumber/API] Add InvoiceSessionNumber',\r\n props<{ invoiceSessionNumber: InvoiceSessionNumber }>()\r\n);\r\n\r\nexport const upsertInvoiceSessionNumber = createAction(\r\n '[InvoiceSessionNumber/API] Upsert InvoiceSessionNumber',\r\n props<{ invoiceSessionNumber: InvoiceSessionNumber }>()\r\n);\r\n\r\nexport const addInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Add InvoiceSessionNumbers',\r\n props<{ invoiceSessionNumbers: InvoiceSessionNumber[] }>()\r\n);\r\n\r\nexport const upsertInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Upsert InvoiceSessionNumbers',\r\n props<{ invoiceSessionNumbers: InvoiceSessionNumber[] }>()\r\n);\r\n\r\nexport const updateInvoiceSessionNumber = createAction(\r\n '[InvoiceSessionNumber/API] Update InvoiceSessionNumber',\r\n props<{ invoiceSessionNumber: Update }>()\r\n);\r\n\r\nexport const updateInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Update InvoiceSessionNumbers',\r\n props<{ invoiceSessionNumbers: Update[] }>()\r\n);\r\n\r\nexport const deleteInvoiceSessionNumber = createAction(\r\n '[InvoiceSessionNumber/API] Delete InvoiceSessionNumber',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Delete InvoiceSessionNumbers',\r\n props<{ ids: number[] }>()\r\n);\r\n\r\nexport const removeInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Remove InvoiceSessionNumbers',\r\n props<{ ids: number[] }>()\r\n);\r\n\r\nexport const clearInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Clear InvoiceSessionNumbers'\r\n);\r\n\r\nexport const getInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Get InvoiceSessionNumbers',\r\n props<{\r\n ScheduledStartDate: Date;\r\n ScheduledEndDate: Date;\r\n ContractListID: string[];\r\n ContractDesc: string[];\r\n // showInactive: boolean;\r\n showInvoicesOnly: boolean;\r\n DateRangeView: boolean;\r\n }>()\r\n);\r\n\r\nexport const putInvoiceSessionNumbers = createAction(\r\n '[InvoiceSessionNumber/API] Put InvoiceSessionNumbers',\r\n props<{ sessions: InvoiceSessionNumber[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, concatMap, flatMap, map, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../../shared';\r\nimport { ResponseStatus } from '../../../../shared';\r\nimport { InvoiceManagementService } from '../../../management/invoice-management.service';\r\nimport * as InvoiceSessionNumberActions from './invoice-session-number.actions';\r\n\r\n@Injectable()\r\nexport class InvoiceSessionNumberEffects {\r\n getInvoiceSessionNumbers$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceSessionNumberActions.getInvoiceSessionNumbers),\r\n switchMap(action =>\r\n this.service\r\n .getInvoiceSessions(\r\n action.ScheduledStartDate,\r\n action.ScheduledEndDate,\r\n action.ContractListID,\r\n action.ContractDesc,\r\n // action.showInactive,\r\n action.showInvoicesOnly,\r\n action.DateRangeView\r\n )\r\n .pipe(\r\n map(data =>\r\n InvoiceSessionNumberActions.loadInvoiceSessionNumbers(\r\n { invoiceSessionNumbers: data }\r\n )\r\n ),\r\n // retryBackoff({ initialInterval: 3000, maxRetries: 3 }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putInvoiceSessionNumbers$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceSessionNumberActions.putInvoiceSessionNumbers),\r\n switchMap(action =>\r\n this.service.putInvoiceSessions(action.sessions).pipe(\r\n map(resp =>\r\n InvoiceSessionNumberActions.upsertInvoiceSessionNumbers(\r\n { invoiceSessionNumbers: resp.Items }\r\n )\r\n ),\r\n // retryBackoff({ initialInterval: 3000, maxRetries: 3 }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n removeInvoiceSessions$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(InvoiceSessionNumberActions.removeInvoiceSessionNumbers),\r\n switchMap(a =>\r\n this.service.deleteInvoiceSessions(a.ids).pipe(\r\n flatMap(resp => {\r\n return fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n InvoiceSessionNumberActions.deleteInvoiceSessionNumbers({\r\n ids: a.ids\r\n })]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ];\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n constructor(\r\n private actions$: Actions,\r\n private service: InvoiceManagementService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../../../shared';\r\n\r\nexport interface InvoiceSessionNumber {\r\n CName: string;\r\n DeleteAllowed: boolean;\r\n Ib_id: string;\r\n id: string;\r\n InvoiceNbr: string;\r\n ListID: string;\r\n Row_Version: string;\r\n SessionEnd: string;\r\n SessionID: number;\r\n SessionStart: string;\r\n Status: IStatusMessage;\r\n VoucherNbr: number;\r\n VoucherNumber: number;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as InvoiceSessionNumberActions from './invoice-session-number.actions';\r\nimport { InvoiceSessionNumber } from './invoice-session-number.model';\r\n\r\nexport const invoiceSessionNumbersFeatureKey = 'invoiceSessionNumbers';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst invoiceSessionNumberReducer = createReducer(\r\n initialState,\r\n on(InvoiceSessionNumberActions.addInvoiceSessionNumber, (state, action) =>\r\n adapter.addOne(action.invoiceSessionNumber, state)\r\n ),\r\n on(\r\n InvoiceSessionNumberActions.upsertInvoiceSessionNumber,\r\n (state, action) => adapter.upsertOne(action.invoiceSessionNumber, state)\r\n ),\r\n on(InvoiceSessionNumberActions.addInvoiceSessionNumbers, (state, action) =>\r\n adapter.addMany(action.invoiceSessionNumbers, state)\r\n ),\r\n on(\r\n InvoiceSessionNumberActions.upsertInvoiceSessionNumbers,\r\n (state, action) =>\r\n adapter.upsertMany(action.invoiceSessionNumbers, state)\r\n ),\r\n on(\r\n InvoiceSessionNumberActions.updateInvoiceSessionNumber,\r\n (state, action) => adapter.updateOne(action.invoiceSessionNumber, state)\r\n ),\r\n on(\r\n InvoiceSessionNumberActions.updateInvoiceSessionNumbers,\r\n (state, action) =>\r\n adapter.updateMany(action.invoiceSessionNumbers, state)\r\n ),\r\n on(\r\n InvoiceSessionNumberActions.deleteInvoiceSessionNumber,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(\r\n InvoiceSessionNumberActions.deleteInvoiceSessionNumbers,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(InvoiceSessionNumberActions.loadInvoiceSessionNumbers, (state, action) =>\r\n adapter.setAll(action.invoiceSessionNumbers, state)\r\n ),\r\n on(InvoiceSessionNumberActions.clearInvoiceSessionNumbers, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return invoiceSessionNumberReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromInvoiceSessionNumber from './invoice-session-number.reducer';\r\n\r\nexport const selectInvoiceSessionNumberState = createFeatureSelector(\r\n fromInvoiceSessionNumber.invoiceSessionNumbersFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromInvoiceSessionNumber.adapter.getSelectors(\r\n selectInvoiceSessionNumberState\r\n);\r\n","export * from './invoice-register-container';\r\nexport * from './invoice-register-presenter';\r\n","export * from './invoice-register-container.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, startWith, take, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromShared from '../../../shared';\r\nimport { uniqBy } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromUser from '../../../user-info';\r\n@Component({\r\n selector: 'ef-invoice-register-container',\r\n templateUrl: './invoice-register-container.component.html',\r\n styleUrls: ['./invoice-register-container.component.scss']\r\n})\r\nexport class InvoiceRegisterContainerComponent implements OnInit, OnDestroy {\r\n InvoiceRegisterModelDS: EntityCollectionService;\r\n InvoiceRegisterModel$: Observable<\r\n fromDataServices.InvoiceRegister.InvoiceRegisterModel[]\r\n >;\r\n contractsSelectItems$: Observable;\r\n process$: Observable;\r\n userInfo$: Observable;\r\n SelectStartDate = new ReplaySubject(1);\r\n SelectEndDate = new ReplaySubject(1);\r\n SelectedContractsSubject = new ReplaySubject(1);\r\n FilterInvoiceNumberSubject = new ReplaySubject(1);\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store,\r\n public entityServices: EntityServices\r\n ) {\r\n this.log.verbose({ type: 'InvoiceRegisterContainerComponent::' });\r\n this.InvoiceRegisterModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.InvoiceRegister.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.InvoiceRegisterModelDS.clearCache();\r\n // this.InvoiceRegisterModelDS.getAll();\r\n this.InvoiceRegisterModel$ = this.InvoiceRegisterModelDS.entities$.pipe(\r\n map(items => [...clone(items)]),\r\n map(items =>\r\n items.map(item => ({\r\n ...item,\r\n groupIndex: `${item.FullName}-${item.InvoiceNbr}`\r\n }))\r\n )\r\n );\r\n this.contractsSelectItems$ = this.InvoiceRegisterModelDS.entities$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: item.FullName,\r\n value: item.listid\r\n }))\r\n ),\r\n map(items => uniqBy(items, x => x.value)),\r\n map(\r\n items =>\r\n (items = items.sort((a, b) =>\r\n a.label.localeCompare(b.label, 'en', { numeric: true })\r\n ))\r\n )\r\n );\r\n this.userInfo$.pipe(take(1)).subscribe(userInfo => {\r\n combineLatest([this.SelectStartDate, this.SelectEndDate])\r\n .pipe(\r\n startWith([\r\n userInfo.LastInvoiceStart,\r\n userInfo.LastInvoiceEnd\r\n ]),\r\n takeWhile(() => this.active),\r\n tap(([startDate, endDate]) =>\r\n this.log.verbose({\r\n type: 'InvoiceRegisterContainerComponent:StartDate,EndDate',\r\n startDate,\r\n endDate\r\n })\r\n ),\r\n filter(\r\n ([startDate, endDate]) =>\r\n moment.isDate(startDate) && moment.isDate(endDate)\r\n )\r\n )\r\n .subscribe(([startDate, endDate]) => {\r\n this.InvoiceRegisterModelDS.clearCache();\r\n this.InvoiceRegisterModelDS.getWithQuery({\r\n startDate: moment(startDate).format('YYYY-MM-DD'),\r\n endDate: moment(endDate).format('YYYY-MM-DD')\r\n });\r\n });\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile, tap } from 'rxjs/operators';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n@Component({\r\n selector: 'ef-invoice-register-filters-presenter',\r\n templateUrl: './invoice-register-filters-presenter.component.html',\r\n styleUrls: ['./invoice-register-filters-presenter.component.scss']\r\n})\r\nexport class InvoiceRegisterFiltersPresenterComponent\r\n implements OnInit, OnDestroy, OnChanges {\r\n @Input() StartDate: Date;\r\n @Input() EndDate: Date;\r\n @Input() Contracts: SelectItem[];\r\n @Output() SelectStartDate = new ReplaySubject(1);\r\n @Output() SelectEndDate = new ReplaySubject(1);\r\n @Output() SelectContracts = new ReplaySubject(1);\r\n @Output() FilterInvoiceNumber = new ReplaySubject(1);\r\n filterFormGroup: FormGroup;\r\n moment: any;\r\n private active = true;\r\n constructor(private log: LoggingService) {\r\n this.filterFormGroup = new FormGroup({\r\n startDate: new FormControl(),\r\n endDate: new FormControl(),\r\n contracts: new FormControl(),\r\n invoiceNumber: new FormControl()\r\n });\r\n this.moment = moment;\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n setTimeout(() => {\r\n if (changes.StartDate) {\r\n this.filterFormGroup.controls['startDate'].setValue(\r\n changes.StartDate.currentValue\r\n );\r\n }\r\n if (changes.EndDate) {\r\n this.filterFormGroup.controls['endDate'].setValue(\r\n changes.EndDate.currentValue\r\n );\r\n }\r\n }, 0);\r\n }\r\n ngOnInit(): void {\r\n const controls = this.filterFormGroup.controls;\r\n controls['startDate'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(startDate =>\r\n this.log.verbose({\r\n type: 'InvoiceRegisterFiltersPresenterComponent:startDate',\r\n startDate\r\n })\r\n )\r\n )\r\n .subscribe(value => this.SelectStartDate.next(value));\r\n controls['endDate'].valueChanges\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(endDate =>\r\n this.log.verbose({\r\n type: 'InvoiceRegisterFiltersPresenterComponent:endDate',\r\n endDate\r\n })\r\n )\r\n )\r\n .subscribe(value => this.SelectEndDate.next(value));\r\n controls['contracts'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => this.SelectContracts.next(value));\r\n controls['invoiceNumber'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => this.FilterInvoiceNumber.next(value));\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","export * from './invoice-register-presenter.component';\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromShared from '../../../shared';\r\nimport { FilterService } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n@Component({\r\n selector: 'ef-invoice-register-presenter',\r\n templateUrl: './invoice-register-presenter.component.html',\r\n styleUrls: ['./invoice-register-presenter.component.scss']\r\n}) // , OnChanges\r\nexport class InvoiceRegisterPresenter\r\n extends fromShared.EditGrid\r\n implements OnInit, OnChanges\r\n{\r\n @Input() SelectedContracts: string[] = [];\r\n @Input() InvoiceNumber: string;\r\n numCols = 10;\r\n cols = [\r\n { header: 'Start', field: 'InvoiceStart', class: 'date' },\r\n { header: 'End', field: 'InvoiceEnd', class: 'date' },\r\n { header: 'Contract', field: 'FullName' },\r\n { header: 'Invoice Number', field: 'InvoiceNbr' },\r\n { header: 'Cost/Calc Type', field: 'CalcType' },\r\n { header: 'Hours', field: 'ActualHours' },\r\n { header: 'Unloaded Amt', field: 'InvoiceAmount', class: 'currency' },\r\n { header: 'Loaded Amt', field: 'LoadedAmt', class: 'currency' },\r\n { header: 'Total Amt', field: 'PeriodTotal', class: 'currency' }\r\n ];\r\n rowGroupMetadata: any = {};\r\n dateFilters: any = null;\r\n moment: any;\r\n\r\n constructor(\r\n private log: LoggingService,\r\n private filterService: FilterService\r\n ) {\r\n super();\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.addDateRangeFilter();\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes && changes.items && changes.items.currentValue) {\r\n this.updateRowGroupMetaData(changes.items.currentValue);\r\n }\r\n if (changes && changes.SelectedContracts) {\r\n if (changes.SelectedContracts.currentValue) {\r\n this.dataTable.filter(\r\n changes.SelectedContracts.currentValue,\r\n 'listid',\r\n 'in'\r\n );\r\n } else {\r\n this.dataTable.filter('', 'listid', 'contains');\r\n }\r\n }\r\n if (changes && changes.InvoiceNumber) {\r\n if (changes.InvoiceNumber.currentValue) {\r\n this.dataTable.filter(\r\n changes.InvoiceNumber.currentValue,\r\n 'InvoiceNbr',\r\n 'contains'\r\n );\r\n } else {\r\n this.dataTable.filter('', 'InvoiceNbr', 'contains');\r\n }\r\n }\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'InvoiceRegisterPresenter:onFilter',\r\n $event\r\n });\r\n this.updateRowGroupMetaData($event.filteredValue);\r\n }\r\n updateRowGroupMetaData(\r\n items: fromDataServices.InvoiceRegister.InvoiceRegisterModel[]\r\n ) {\r\n this.rowGroupMetadata = {};\r\n if (items) {\r\n for (let i = 0; i < items.length; i++) {\r\n const rowData = items[i];\r\n const index = rowData.groupIndex;\r\n\r\n if (i === 0) {\r\n this.rowGroupMetadata[index] = {\r\n index: 0,\r\n indexEnd: 0,\r\n size: 1,\r\n contract: rowData.FullName,\r\n invoiceNumber: rowData.InvoiceNbr,\r\n fee: rowData.FeeCost,\r\n hours: rowData.ActualHours,\r\n unloaded: rowData.InvoiceAmount,\r\n loaded: rowData.LoadedAmt,\r\n total: rowData.PeriodTotal\r\n };\r\n } else {\r\n const previousRowData = items[i - 1];\r\n const previousRowGroupIndex = previousRowData.groupIndex;\r\n if (index === previousRowGroupIndex) {\r\n this.rowGroupMetadata[index].size++;\r\n this.rowGroupMetadata[index].indexEnd++;\r\n this.rowGroupMetadata[index].fee += rowData.FeeCost;\r\n this.rowGroupMetadata[index].hours +=\r\n rowData.ActualHours;\r\n this.rowGroupMetadata[index].unloaded +=\r\n rowData.InvoiceAmount;\r\n this.rowGroupMetadata[index].loaded +=\r\n rowData.LoadedAmt;\r\n this.rowGroupMetadata[index].total +=\r\n rowData.PeriodTotal;\r\n } else {\r\n this.rowGroupMetadata[index] = {\r\n index: i,\r\n indexEnd: i,\r\n size: 1,\r\n contract: rowData.FullName,\r\n invoiceNumber: rowData.InvoiceNbr,\r\n fee: rowData.FeeCost,\r\n hours: rowData.ActualHours,\r\n unloaded: rowData.InvoiceAmount,\r\n loaded: rowData.LoadedAmt,\r\n total: rowData.PeriodTotal\r\n };\r\n }\r\n }\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'InvoiceRegisterPresenter:updateRowGroupMetaData',\r\n rowGroupMetadata: this.rowGroupMetadata\r\n });\r\n }\r\n addDateRangeFilter() {\r\n this.filterService.register(\r\n 'dateRangeFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceRegisterPresenter:addDateRangeFilter',\r\n value,\r\n filter,\r\n dateFilters: this.dateFilters,\r\n result: moment(value).isBetween(\r\n moment(this.dateFilters[0]),\r\n moment(this.dateFilters[1])\r\n )\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.dateFilters[0]),\r\n moment(this.dateFilters[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { InvoiceRegisterContainerComponent } from '.';\r\nimport { InvoiceRegisterPresenter } from './invoice-register-presenter';\r\nimport { InvoiceRegisterRoute } from './invoice-register.route';\r\nimport { InvoiceRegisterFiltersPresenterComponent } from './invoice-register-filters-presenter/invoice-register-filters-presenter.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n InvoiceRegisterContainerComponent,\r\n InvoiceRegisterPresenter,\r\n InvoiceRegisterFiltersPresenterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [InvoiceRegisterRoute]\r\n })\r\n ]\r\n})\r\nexport class InvoiceRegisterModule {}\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { InvoiceRegisterContainerComponent } from './invoice-register-container/invoice-register-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const InvoiceRegisterRoute: Ng2StateDeclaration = {\r\n // name: 'InvoiceRegister.**'\r\n name: 'invoice.register',\r\n url: '/register',\r\n // , loadChildren: () => import('./invoice-register.module').then(r => r.InvoiceRegisterModule)\r\n data: { requiresAuth: true },\r\n\r\n component: InvoiceRegisterContainerComponent\r\n};\r\n","export * from './invoice-session-number';\r\nexport * from './invoice-session-number-container';\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport * as fromInvoice from '.';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const InvoiceDateRangeRoute: Ng2StateDeclaration = {\r\n // name: 'invoice.**'\r\n name: 'invoice.daterange',\r\n url: '/daterange',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.invoiceModule)\r\n data: { requiresAuth: true },\r\n component: fromInvoice.InvoiceSessionNumberContainerComponent\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { Transition, UIRouterModule } from '@uirouter/angular';\r\nimport { InvoiceSessionNumberContainerComponent } from '.';\r\nimport { processResolver } from '../../efaact-routing/process-resolver';\r\nimport { CategoriesService } from '../../shared';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport * as Management from '../management';\r\nimport { InvoiceDateRangeRoute } from './invoice-date-range.route';\r\nimport { InvoiceRenumberingRoute } from './invoice-renumbering.route';\r\nimport { InvoiceSessionNumberComponent } from './invoice-session-number';\r\n\r\n@NgModule({\r\n declarations: [\r\n InvoiceSessionNumberContainerComponent,\r\n InvoiceSessionNumberComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [\r\n InvoiceRenumberingRoute,\r\n InvoiceDateRangeRoute\r\n ]\r\n }),\r\n EffectsModule.forFeature([\r\n Management.Invoice.InvoiceEffects,\r\n Management.ChargeNumber.InvoiceChargeNumberEffects,\r\n Management.SessionNumber.InvoiceSessionNumberEffects\r\n ]),\r\n StoreModule.forFeature(\r\n Management.Invoice.invoicesFeatureKey,\r\n Management.Invoice.reducer\r\n ),\r\n StoreModule.forFeature(\r\n Management.ChargeNumber.invoiceChargeNumbersFeatureKey,\r\n Management.ChargeNumber.reducer\r\n ),\r\n StoreModule.forFeature(\r\n Management.SessionNumber.invoiceSessionNumbersFeatureKey,\r\n Management.SessionNumber.reducer\r\n )\r\n ]\r\n})\r\nexport class InvoiceRenumberingModule {}\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport * as fromInvoice from '.';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const InvoiceRenumberingRoute: Ng2StateDeclaration = {\r\n // name: 'invoice.**'\r\n name: 'invoice.renumbering',\r\n url: '/renumbering',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.invoiceModule)\r\n data: { requiresAuth: true },\r\n component: fromInvoice.InvoiceSessionNumberContainerComponent\r\n};\r\n","export * from './invoice-session-number-container.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromShared from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { getUserInfo, IUserInfo } from '../../../user-info';\r\nimport * as fromStore from '../../management/store';\r\n@Component({\r\n selector: 'ef-invoice-session-number-container',\r\n templateUrl: './invoice-session-number-container.component.html',\r\n styleUrls: ['./invoice-session-number-container.component.scss']\r\n})\r\nexport class InvoiceSessionNumberContainerComponent\r\n implements OnInit, OnDestroy\r\n{\r\n sessions$: Observable;\r\n filterFormGroup: FormGroup;\r\n moment: any;\r\n maxDate: Date = new Date();\r\n startDate: Date;\r\n endDate: Date;\r\n selectedContracts: any;\r\n contracts$: Observable<\r\n fromDataServices.InvoiceContractCycle.InvoiceContractCycleModel[]\r\n >;\r\n filteredContracts$: Observable<\r\n fromDataServices.InvoiceContractCycle.InvoiceContractCycleModel[]\r\n >;\r\n\r\n filterChangedSubject = new ReplaySubject<{\r\n startDate: Date;\r\n endDate: Date;\r\n contractListID: string[];\r\n }>(1);\r\n contractsSelectItems$: Observable;\r\n invoiceContractCycleDataService: EntityCollectionService;\r\n selectInvoiceSubject = new ReplaySubject(1);\r\n process$: Observable;\r\n process: fromShared.Process;\r\n private active = true;\r\n contractListIds: string[] = [];\r\n userInfo$: Observable;\r\n userInfo: IUserInfo;\r\n modifiedItem: fromStore.SessionNumber.InvoiceSessionNumber;\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store,\r\n public entityServices: EntityServices\r\n ) {\r\n this.moment = moment;\r\n this.invoiceContractCycleDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.InvoiceContractCycle.entityName\r\n );\r\n\r\n // this.startDate = moment(\r\n // moment().add(-1, 'months').format('MM/01/YYYY')\r\n // ).toDate();\r\n // this.endDate = new Date();\r\n this.filterFormGroup = new FormGroup({\r\n startDate: new FormControl(null, Validators.required),\r\n endDate: new FormControl(null, Validators.required),\r\n ContractListID: new FormControl(null)\r\n // invoicesOnly: new FormControl(false)\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(\r\n fromStore.SessionNumber.clearInvoiceSessionNumbers()\r\n );\r\n this.invoiceContractCycleDataService.clearCache();\r\n this.invoiceContractCycleDataService.getAll();\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n if (this.userInfo) {\r\n if (\r\n moment(new Date(this.userInfo.LastInvoiceStart)).isValid() &&\r\n moment(new Date(this.userInfo.LastInvoiceEnd)).isValid()\r\n ) {\r\n this.startDate = new Date(this.userInfo.LastInvoiceStart);\r\n this.endDate = new Date(this.userInfo.LastInvoiceEnd);\r\n }\r\n // if (this.process.ProcessID == 121) {\r\n // this.store.dispatch(\r\n // fromStore.SessionNumber.getInvoiceSessionNumbers({\r\n // ScheduledStartDate: this.userInfo.LastInvoiceStart,\r\n // ScheduledEndDate: this.userInfo.LastInvoiceEnd,\r\n // ContractListID: [],\r\n // ContractDesc: [],\r\n // //showInactive: true,\r\n // showInvoicesOnly: true,\r\n // DateRangeView: false\r\n // })\r\n // );\r\n // } else {\r\n // this.store.dispatch(\r\n // fromStore.SessionNumber.getInvoiceSessionNumbers({\r\n // ScheduledStartDate: this.userInfo.LastInvoiceStart,\r\n // ScheduledEndDate: this.userInfo.LastInvoiceEnd,\r\n // ContractListID: [],\r\n // ContractDesc: [],\r\n // //showInactive: true,\r\n // showInvoicesOnly: true,\r\n // DateRangeView: true\r\n // })\r\n // );\r\n // }\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.log.verbose('InvoiceSessionNumberContainerComponent:destroy');\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(getUserInfo));\r\n this.sessions$ = this.store.pipe(\r\n select(fromStore.SessionNumber.selectAll),\r\n // skip(1), // first one is [] from the store being initialized\r\n map(x => clone(x)),\r\n map(items =>\r\n items.map(item => ({\r\n ...item,\r\n VoucherNumber:\r\n item.VoucherNumber !== null\r\n ? parseFloat(`${item.VoucherNumber}`)\r\n : null,\r\n InvoiceNbr:\r\n item.InvoiceNbr !== null ? item.InvoiceNbr : null\r\n }))\r\n )\r\n );\r\n this.contracts$ = this.invoiceContractCycleDataService.entities$.pipe(\r\n map(\r\n contracts =>\r\n clone(\r\n contracts\r\n ) as fromDataServices.InvoiceContractCycle.InvoiceContractCycleModel[]\r\n )\r\n );\r\n this.contractsSelectItems$ = this.contracts$.pipe(\r\n map(contracts =>\r\n contracts.map(contract => ({\r\n label: contract.ContractDesc,\r\n value: contract.ContractListID\r\n }))\r\n ),\r\n map(contracts =>\r\n contracts.sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.sessions$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(sessions => {\r\n const arr = [];\r\n if (this.modifiedItem != null) {\r\n sessions.forEach(session => {\r\n if (session.ListID == this.modifiedItem.ListID) {\r\n arr.push(session);\r\n }\r\n });\r\n const sessionEnd = moment(\r\n this.modifiedItem.SessionEnd\r\n ).format('MM/DD/YYYY');\r\n let index;\r\n let newRow;\r\n if (arr.length > 0) {\r\n arr.forEach(ele => {\r\n if (\r\n new Date(ele.SessionStart).getTime() ==\r\n new Date(\r\n this.modifiedItem.SessionStart\r\n ).getTime() &&\r\n new Date(ele.SessionEnd).getTime() ==\r\n new Date(sessionEnd).getTime() &&\r\n +ele.Ib_id > +this.modifiedItem.Ib_id\r\n ) {\r\n newRow = ele;\r\n this.log.verbose('new combined row', ele);\r\n }\r\n });\r\n arr.forEach(ele => {\r\n if (\r\n new Date(ele.SessionStart) >=\r\n new Date(newRow.SessionStart) &&\r\n new Date(ele.SessionEnd) <=\r\n new Date(newRow.SessionEnd)\r\n ) {\r\n if (ele != newRow) {\r\n index = sessions.findIndex(x => x == ele);\r\n this.store.dispatch(\r\n fromStore.SessionNumber.deleteInvoiceSessionNumbers(\r\n { ids: [+sessions[index].Ib_id] }\r\n )\r\n );\r\n sessions.splice(index, 1);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n this.modifiedItem = null;\r\n });\r\n this.process$.pipe(takeWhile(() => this.active)).subscribe(process => {\r\n this.process = process;\r\n });\r\n this.userInfo$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(userInfo => {\r\n this.userInfo = userInfo;\r\n });\r\n this.filterFormGroup.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(filter => {\r\n if (this.filterFormGroup.valid) {\r\n this.log.verbose({\r\n type: 'InvoiceRenumberingContainerComponent:filterFormGroup.valueChanges',\r\n filter\r\n });\r\n if (this.process.ProcessID == 121) {\r\n this.store.dispatch(\r\n fromStore.SessionNumber.getInvoiceSessionNumbers({\r\n ScheduledStartDate: filter.startDate,\r\n ScheduledEndDate: filter.endDate,\r\n ContractListID: filter.ContractListID,\r\n ContractDesc: [],\r\n // showInactive: true,\r\n showInvoicesOnly: true,\r\n DateRangeView: false\r\n })\r\n );\r\n } else {\r\n this.store.dispatch(\r\n fromStore.SessionNumber.getInvoiceSessionNumbers({\r\n ScheduledStartDate: filter.startDate,\r\n ScheduledEndDate: filter.endDate,\r\n ContractListID: filter.ContractListID,\r\n ContractDesc: [],\r\n // showInactive: true,\r\n showInvoicesOnly: true,\r\n DateRangeView: true\r\n })\r\n );\r\n }\r\n }\r\n });\r\n }\r\n onSaveSession(items: fromStore.SessionNumber.InvoiceSessionNumber[]) {\r\n this.log.verbose({\r\n type: 'InvoiceRenumberingContainerComponent:onSaveSession',\r\n items\r\n });\r\n this.modifiedItem = items[0];\r\n this.store.dispatch(\r\n fromStore.SessionNumber.putInvoiceSessionNumbers({\r\n sessions: items\r\n })\r\n );\r\n }\r\n onDeleteInvoiceSessions($event) {\r\n this.store.dispatch(\r\n fromStore.SessionNumber.removeInvoiceSessionNumbers({ ids: $event })\r\n );\r\n }\r\n}\r\n","export * from './invoice-session-number.component';\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { environment } from '../../../../environments/environment';\r\nimport * as fromShared from '../../../shared';\r\nimport { Process } from '../../../shared';\r\nimport { EditGrid } from '../../../shared/EditGrid';\r\nimport {\r\n FilterService,\r\n SelectItem,\r\n Table\r\n} from '../../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../../user-info';\r\nimport * as fromStore from '../../management/store';\r\n\r\n@Component({\r\n selector: 'ef-invoice-session-number',\r\n templateUrl: './invoice-session-number.component.html',\r\n styleUrls: ['./invoice-session-number.component.scss']\r\n})\r\nexport class InvoiceSessionNumberComponent\r\n extends EditGrid\r\n implements OnInit, OnChanges\r\n{\r\n loading = true;\r\n moment: any;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n virtualItems: fromStore.SessionNumber.InvoiceSessionNumber[];\r\n @Input() userInfo: IUserInfo;\r\n LastInvoiceEnd: Date;\r\n LastInvoiceStart: Date;\r\n sessionEndSelectItem: SelectItem[];\r\n public get contracts(): SelectItem[] {\r\n if (this.items && this.items.length > 0) {\r\n return fromShared\r\n .uniqBy(this.items, x => x.CName)\r\n .map(x => ({ label: x.CName, value: x.CName }));\r\n } else {\r\n return [];\r\n }\r\n }\r\n @Output() public ShowError = new EventEmitter();\r\n rowGroupMetadata: any = {};\r\n @ViewChild('dtSessionNumber') dataTable: Table;\r\n startDateFilter: any;\r\n endDateFilter: any;\r\n @Input() process: Process;\r\n @Output() DeleteInvoiceSessions = new ReplaySubject(1);\r\n\r\n displayDeleteDialog = false;\r\n rowData: fromStore.SessionNumber.InvoiceSessionNumber;\r\n invoiceDeleteMessage: string;\r\n constructor(\r\n private log: LoggingService,\r\n private filterService: FilterService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n super();\r\n this.moment = moment;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.items.currentValue) {\r\n this.updateRowGroupMetaData(changes.items.currentValue);\r\n }\r\n }\r\n ngOnInit() {\r\n if (this.userInfo) {\r\n if (\r\n moment(new Date(this.userInfo.LastInvoiceStart)).isValid() &&\r\n moment(new Date(this.userInfo.LastInvoiceEnd)).isValid()\r\n ) {\r\n this.LastInvoiceStart = new Date(\r\n this.userInfo.LastInvoiceStart\r\n );\r\n this.LastInvoiceEnd = new Date(this.userInfo.LastInvoiceEnd);\r\n }\r\n }\r\n\r\n this.addDateRangeFilter();\r\n // setTimeout(() => {\r\n // this.dataTable.sort({\r\n // data: this.items,\r\n // field: 'ContractDesc',\r\n // mode: 'single',\r\n // order: 1\r\n // });\r\n // }, 0);\r\n }\r\n onRowEditInit(item) {\r\n super.onRowEditInit(item);\r\n let arr = [];\r\n if (this.items && this.items.length > 0) {\r\n this.items.forEach(ele => {\r\n if (ele.ListID == item.ListID) {\r\n arr.push(ele);\r\n }\r\n });\r\n arr = arr.filter(\r\n x => new Date(x.SessionEnd) >= new Date(item.SessionStart)\r\n );\r\n this.sessionEndSelectItem = arr.map(x => ({\r\n value: x.SessionEnd,\r\n label: x.SessionEnd\r\n }));\r\n }\r\n }\r\n onRowEditSave(item) {\r\n const data = {\r\n ...item,\r\n VoucherNbr: +item.VoucherNbr\r\n };\r\n super.onRowEditSave(data);\r\n }\r\n deleteClicked(rowData) {\r\n this.rowData = rowData;\r\n this.invoiceDeleteMessage = `This will delete the selected invoice for ${rowData.CName}.`;\r\n this.displayDeleteDialog = true;\r\n }\r\n deleteInvoiceSession() {\r\n if (this.rowData != null) {\r\n this.DeleteInvoiceSessions.next([this.rowData.Ib_id]);\r\n this.rowData = null;\r\n }\r\n this.displayDeleteDialog = false;\r\n this.invoiceDeleteMessage = \"\";\r\n }\r\n updateRowGroupMetaData(data) {\r\n if (!(data && data.length > 0)) {\r\n return;\r\n }\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:updateRowGroupMetaData',\r\n data\r\n });\r\n // this.loading = true;\r\n // this.cdRef.markForCheck();\r\n this.rowGroupMetadata = {};\r\n if (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n const rowData = data[i];\r\n const field = 'ContractDesc';\r\n const category = rowData[field];\r\n if (i === 0) {\r\n this.rowGroupMetadata[category] = { index: 0, size: 1 };\r\n } else {\r\n const previousRowData = data[i - 1];\r\n const previousRowGroup = previousRowData[field];\r\n if (category === previousRowGroup) {\r\n this.rowGroupMetadata[category].size++;\r\n } else {\r\n this.rowGroupMetadata[category] = { index: i, size: 1 };\r\n }\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:updateRowGroupMetaData',\r\n data,\r\n rowGroupMetadata: this.rowGroupMetadata\r\n });\r\n this.cdRef.markForCheck();\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:updateRowGroupMetaData:after cdref'\r\n });\r\n setTimeout(() => {\r\n this.loading = false;\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:updateRowGroupMetaData:after timeout'\r\n });\r\n }, 0);\r\n }\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:onFilter',\r\n $event\r\n });\r\n // setTimeout(() => {\r\n this.updateRowGroupMetaData($event.filteredValue);\r\n // }, 50);\r\n }\r\n onSort($event: {\r\n data: fromStore.SessionNumber.InvoiceSessionNumber[];\r\n field: string;\r\n mode: string;\r\n order: number;\r\n }) {\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:onSort',\r\n $event\r\n });\r\n setTimeout(() => {\r\n this.updateRowGroupMetaData(\r\n this.dataTable.filteredValue || this.dataTable.value\r\n );\r\n }, 50);\r\n }\r\n addDateRangeFilter() {\r\n this.filterService.register(\r\n 'startInvoiceSessionDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:startDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.startDateFilter[0]),\r\n moment(this.startDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n this.filterService.register(\r\n 'endInvoiceSessionDateFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'InvoiceSessionNumberComponent:endDateFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.endDateFilter[0]),\r\n moment(this.endDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n }\r\n}\r\n","export * from './invoice-setup-container';\r\nexport * from './invoice';\r\nexport * from './invoice-address';\r\nexport * from './invoice-selections';\r\nexport * from './invoice-session';\r\n","export * from './invoice-address.component';\r\nexport * from './invoice-address-add';\r\n","export * from './invoice-address-add.component';\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\nimport * as fromInvoiceSetup from '../../../../data-services/invoice/setup';\r\nimport * as fromDataServices from '../../../../data-services';\r\nimport { SelectItem } from '../../../../shared';\r\n\r\n@Component({\r\n selector: 'ef-invoice-address-add',\r\n templateUrl: './invoice-address-add.component.html',\r\n styleUrls: ['./invoice-address-add.component.scss']\r\n})\r\nexport class InvoiceAddressAddComponent implements OnInit {\r\n @Input() addAddress: boolean;\r\n @Output() Cancel = new ReplaySubject();\r\n @Output() Save = new ReplaySubject();\r\n addAddressFormGroup: FormGroup;\r\n @Input() addressTypes: SelectItem[] = [];\r\n @Input() states: SelectItem[] = [];\r\n @Input() public set item(\r\n value: fromDataServices.Address.Address\r\n ) {\r\n this.log.verbose({\r\n type: 'InvoiceSelectionAddComponent:item:set',\r\n value\r\n });\r\n if (!!value) {\r\n this.addAddressFormGroup.setValue({\r\n id: value.id || -1,\r\n Addressid: value.Addressid || -1,\r\n AddressName: value.AddressName || null,\r\n Addr1: value.Addr1 || '',\r\n Addr2: value.Addr2 || '',\r\n Addr3: value.Addr3 || '',\r\n Addr4: value.Addr4 || '',\r\n City: value.City || '',\r\n State: value.State || '',\r\n PostalCode: value.PostalCode || '',\r\n AddressType: value.AddressType || null,\r\n Contact: value.Contact || null,\r\n AltContact: value.AltContact || null\r\n });\r\n }\r\n }\r\n constructor(private log: LoggingService) {\r\n this.addAddressFormGroup = new FormGroup({\r\n id: new FormControl(-1),\r\n Addressid: new FormControl(-1),\r\n AddressName: new FormControl(null),\r\n Addr1: new FormControl(null),\r\n Addr2: new FormControl(null),\r\n Addr3: new FormControl(null),\r\n Addr4: new FormControl(null),\r\n City: new FormControl(null),\r\n State: new FormControl(null),\r\n PostalCode: new FormControl(null),\r\n AddressType: new FormControl(null),\r\n Contact: new FormControl(null),\r\n AltContact: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport * as fromShared from '../../../shared';\r\nimport * as fromInvoiceSetup from '../../../data-services/invoice/setup';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice-address',\r\n templateUrl: './invoice-address.component.html',\r\n styleUrls: ['./invoice-address.component.scss']\r\n})\r\nexport class InvoiceAddressComponent\r\n extends fromShared.EditGrid\r\n implements OnInit {\r\n @Input() states: SelectItem[] = [];\r\n @Input() addressTypes: SelectItem[] = [];\r\n numCols = 14;\r\n addAddressReplaySubject = new ReplaySubject(1);\r\n editItemSubject = new ReplaySubject(1);\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n ngOnInit(): void {}\r\n onCancelAddress() {\r\n this.addAddressReplaySubject.next(false);\r\n this.editItemSubject.next({\r\n id: -1,\r\n Addressid: -1\r\n } as fromDataServices.Address.Address);\r\n }\r\n onSaveAddress(item: fromDataServices.Address.Address) {\r\n this.log.verbose({\r\n type: 'InvoiceAddressComponent:onSaveAddress',\r\n item\r\n });\r\n this.SaveItem.next([item]);\r\n this.addAddressReplaySubject.next(false);\r\n this.editItemSubject.next({\r\n id: -1,\r\n Addressid: -1\r\n } as fromDataServices.Address.Address);\r\n }\r\n onEditItem(item: fromDataServices.Address.Address) {\r\n this.log.verbose({\r\n type: 'InvoiceAddressComponent:onEditItem',\r\n item\r\n });\r\n this.editItemSubject.next(item);\r\n this.addAddressReplaySubject.next(true);\r\n }\r\n}\r\n","export * from './invoice-selections.component';\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport * as fromInvoiceSetup from '../../../../data-services/invoice/setup';\r\nimport { SelectItem } from '../../../../shared';\r\nimport { LoggingService } from '../../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice-selection-add',\r\n templateUrl: './invoice-selection-add.component.html',\r\n styleUrls: ['./invoice-selection-add.component.scss']\r\n})\r\nexport class InvoiceSelectionAddComponent implements OnInit {\r\n @Input() addSelection: boolean;\r\n @Input() invoiceProperties: SelectItem[] = [];\r\n @Output() Cancel = new ReplaySubject();\r\n @Output() Save = new ReplaySubject();\r\n addSelectionFormGroup: FormGroup;\r\n @Input() public set item(\r\n value: fromInvoiceSetup.Selections.InvoiceSelections\r\n ) {\r\n this.log.verbose({\r\n type: 'InvoiceSelectionAddComponent:item:set',\r\n value\r\n });\r\n if (!!value) {\r\n this.addSelectionFormGroup.setValue({\r\n id: value.id || -1,\r\n Invoicepropertysharedid: value.Invoicepropertysharedid || -1,\r\n Invoicepropertyid: value.Invoicepropertyid || null,\r\n Propertylabel: value.Propertylabel || null,\r\n Propertytext: value.Propertytext || null\r\n });\r\n }\r\n }\r\n constructor(private log: LoggingService) {\r\n this.addSelectionFormGroup = new FormGroup({\r\n id: new FormControl(-1),\r\n Invoicepropertysharedid: new FormControl(-1),\r\n Invoicepropertyid: new FormControl(null),\r\n Propertylabel: new FormControl(null),\r\n Propertytext: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport * as fromShared from '../../../shared';\r\nimport * as fromInvoiceSetup from '../../../data-services/invoice/setup';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice-selections',\r\n templateUrl: './invoice-selections.component.html',\r\n styleUrls: ['./invoice-selections.component.scss']\r\n})\r\nexport class InvoiceSelectionsComponent\r\n extends fromShared.EditGrid\r\n implements OnInit {\r\n numCols = 6;\r\n addSelectionReplaySubject = new ReplaySubject(1);\r\n editItemSubject =\r\n new ReplaySubject(1);\r\n @Input() invoiceProperties: SelectItem[] = [];\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {}\r\n onEditItem(item: fromInvoiceSetup.Selections.InvoiceSelections) {\r\n this.log.verbose({\r\n type: 'InvoiceSelectionsComponent:onEditItem',\r\n item\r\n });\r\n this.editItemSubject.next(item);\r\n this.addSelectionReplaySubject.next(true);\r\n }\r\n onSaveSelection($event) {\r\n this.SaveItem.next([$event]);\r\n this.addSelectionReplaySubject.next(false);\r\n this.editItemSubject.next({\r\n id: -1,\r\n Invoicepropertysharedid: -1\r\n } as fromInvoiceSetup.Selections.InvoiceSelections);\r\n }\r\n onCancelSelectionAdd() {\r\n this.addSelectionReplaySubject.next(false);\r\n this.editItemSubject.next({\r\n id: -1,\r\n Invoicepropertysharedid: -1\r\n } as fromInvoiceSetup.Selections.InvoiceSelections);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef,\r\n SelectItem\r\n} from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice-session-update-dialog',\r\n templateUrl: './invoice-session-update-dialog.component.html',\r\n styleUrls: ['./invoice-session-update-dialog.component.scss']\r\n})\r\nexport class InvoiceSessionUpdateDialogComponent implements OnInit {\r\n addresses: SelectItem[];\r\n bulkVoucherFormGroup: FormGroup;\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private log: LoggingService\r\n ) {\r\n this.bulkVoucherFormGroup = new FormGroup({\r\n Voucheraddrid: new FormControl(),\r\n Remitaddrid: new FormControl(),\r\n ShowCN: new FormControl(),\r\n Feeseparate: new FormControl(),\r\n Vouchercontractdesc: new FormControl()\r\n });\r\n this.addresses = config.data.addresses;\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","export * from './invoice-session.component';\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport * as fromInvoiceSetup from '../../../data-services/invoice/setup';\r\nimport * as fromShared from '../../../shared';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice-session',\r\n templateUrl: './invoice-session.component.html',\r\n styleUrls: ['./invoice-session.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class InvoiceSessionComponent\r\n extends fromShared.EditGrid\r\n implements OnInit, OnChanges {\r\n @Input() addresses: SelectItem[] = [];\r\n @Input() remitAddresses: SelectItem[] = [];\r\n @Input() billingAddresses: SelectItem[] = [];\r\n @Input() contracts: SelectItem[] = [];\r\n sessionTypes = [];\r\n numCols = 9;\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {}\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (\r\n changes.items &&\r\n changes.items.currentValue &&\r\n changes.items.currentValue.length > 0\r\n ) {\r\n this.log.verbose({\r\n type: 'InvoiceSessionComponent:ngOnChanges',\r\n changes\r\n });\r\n this.selected = [];\r\n }\r\n }\r\n}\r\n","export * from './invoice-setup-container.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeSetItem,\r\n changeSetItemFactory as cif, EntityCacheDispatcher,\r\n EntityCollectionService,\r\n EntityServices\r\n} from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n filter,\r\n map,\r\n share,\r\n startWith,\r\n take,\r\n takeWhile,\r\n tap\r\n} from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { AccountContract } from '../../../account/store';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { InvoiceSetup } from '../../../data-services/invoice/setup/invoice';\r\nimport { InvoiceSessionSetup } from '../../../data-services/invoice/setup/session';\r\nimport * as fromLookup from '../../../lookups';\r\nimport * as fromShared from '../../../shared';\r\nimport { Process, ResponseStatus, SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nexport enum InvoicePropertyType {\r\n AccountClass = 1,\r\n SignatureLine = 2,\r\n Disclaimer = 3,\r\n PaymentTerms = 4\r\n}\r\n@Component({\r\n selector: 'ef-invoice-setup-container',\r\n templateUrl: './invoice-setup-container.component.html',\r\n styleUrls: ['./invoice-setup-container.component.scss']\r\n})\r\nexport class InvoiceSetupContainerComponent implements OnInit, OnDestroy {\r\n invoiceSessionSetupDS: EntityCollectionService;\r\n invoiceDetailOptionsDS: EntityCollectionService;\r\n invoiceAddressSetupDS: EntityCollectionService;\r\n invoiceSelectionSetupDS: EntityCollectionService;\r\n invoiceSetupDS: EntityCollectionService;\r\n addressDS: EntityCollectionService;\r\n addressTypeDS: EntityCollectionService;\r\n invoicePropertyDS: EntityCollectionService;\r\n states$: Observable;\r\n process$: Observable;\r\n addressTypes$: Observable;\r\n invoiceProperties$: Observable;\r\n accountClassProperties$: Observable;\r\n signatureLineProperties$: Observable;\r\n invoiceViewOptions$: Observable;\r\n disclaimerProperties$: Observable;\r\n paymentTermsProperties$: Observable;\r\n chargeNumberSelectItems$: Observable;\r\n invoiceTypeSelectItems$: Observable;\r\n invoices$: Observable<\r\n fromDataServices.Invoice.Setup.Invoice.InvoiceSetup[]\r\n >;\r\n filteredInvoices$: Observable<\r\n fromDataServices.Invoice.Setup.Invoice.InvoiceSetup[]\r\n >;\r\n invoiceContractSelectItems$: Observable;\r\n sessions$: Observable<\r\n fromDataServices.Invoice.Setup.Session.InvoiceSessionSetup[]\r\n >;\r\n filteredSessions$: Observable<\r\n fromDataServices.Invoice.Setup.Session.InvoiceSessionSetup[]\r\n >;\r\n invoiceSessionSelectItems$: Observable;\r\n addressSetup$: Observable;\r\n addressSelectItems$: Observable;\r\n remitAddressSelectItems$: Observable;\r\n billingAddressSelectItems$: Observable;\r\n selections$: Observable<\r\n fromDataServices.Invoice.Setup.Selections.InvoiceSelections[]\r\n >;\r\n selectionSelectItems$: Observable;\r\n SelectContractsSubject = new ReplaySubject(1);\r\n private active = true;\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n public dispatcher: EntityCacheDispatcher\r\n ) {\r\n this.log.verbose({ type: 'InvoiceSetupContainerComponent::' });\r\n this.invoiceSessionSetupDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.Session.entityName\r\n );\r\n this.invoiceAddressSetupDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.Address.entityName\r\n );\r\n this.invoiceSelectionSetupDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.Selections.entityName\r\n );\r\n this.invoiceSetupDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.Invoice.entityName\r\n );\r\n this.addressDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Address.entityName\r\n );\r\n this.addressTypeDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.AddressType.entityName\r\n );\r\n this.invoicePropertyDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.InvoiceProperty.entityName\r\n );\r\n this.invoicePropertyDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.InvoiceProperty.entityName\r\n );\r\n this.invoiceDetailOptionsDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.Setup.InvoiceDetailOption.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.addressDS.clearCache();\r\n this.addressTypeDS.clearCache();\r\n this.invoicePropertyDS.clearCache();\r\n this.invoiceSetupDS.clearCache();\r\n this.invoiceSessionSetupDS.clearCache();\r\n this.invoiceAddressSetupDS.clearCache();\r\n this.invoiceSelectionSetupDS.clearCache();\r\n this.invoiceDetailOptionsDS.clearCache();\r\n\r\n this.addressDS.getAll().pipe(\r\n tap(addresses =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent.addressDS.getAll',\r\n addresses\r\n })\r\n )\r\n );\r\n this.addressTypeDS.getAll();\r\n this.invoicePropertyDS.getAll();\r\n this.invoiceAddressSetupDS.getAll();\r\n this.invoiceSelectionSetupDS.getAll();\r\n this.invoiceDetailOptionsDS.getAll();\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.addressTypes$ = this.addressTypeDS.entities$.pipe(\r\n filter(items => !!items),\r\n map(\r\n items =>\r\n clone(\r\n items\r\n ) as fromDataServices.Invoice.Setup.AddressType.InvoiceAddressType[]\r\n ),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Addressdesc,\r\n value: item.id\r\n }))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:addressTypes$',\r\n items\r\n })\r\n )\r\n );\r\n this.invoiceProperties$ = this.invoicePropertyDS.entities$.pipe(\r\n filter(items => !!items),\r\n map(items => clone(items)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Propertyname,\r\n value: item.id\r\n }))\r\n )\r\n );\r\n this.invoices$ = this.invoiceSetupDS.entities$.pipe(\r\n map(items => clone(items))\r\n );\r\n this.chargeNumberSelectItems$ = this.invoices$.pipe(\r\n map(items => fromShared.uniqBy(items, x => x.Chargenumber)),\r\n map(items => clone(items)),\r\n map(items =>\r\n items\r\n .filter(item => item.Chargenumber)\r\n .sort((a, b) =>\r\n a.Chargenumber.localeCompare(b.Chargenumber)\r\n )\r\n ),\r\n map(items =>\r\n items\r\n .filter(item => item.Chargenumber)\r\n .map(item => ({\r\n label: item.Chargenumber,\r\n value: item.Chargenumber\r\n }))\r\n )\r\n );\r\n this.invoiceTypeSelectItems$ = this.invoices$.pipe(\r\n map(items => fromShared.uniqBy(items, x => x.Contracttype)),\r\n map(items => clone(items)),\r\n map(items =>\r\n items.sort((a, b) =>\r\n a.Contracttype.localeCompare(b.Contracttype)\r\n )\r\n ),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Contracttype,\r\n value: item.Contracttype\r\n }))\r\n )\r\n );\r\n this.invoiceContractSelectItems$ = this.invoices$.pipe(\r\n map(items => fromShared.uniqBy(items, x => x.Contractdesc)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Contractdesc,\r\n value: item.Contractdesc\r\n }))\r\n )\r\n );\r\n this.sessions$ = this.invoiceSessionSetupDS.entities$.pipe(\r\n map(items => clone(items))\r\n );\r\n this.invoiceSessionSelectItems$ = this.sessions$.pipe(\r\n map(items => fromShared.uniqBy(items, x => x.Contractdesc)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Contractdesc,\r\n value: item.Contractdesc\r\n }))\r\n )\r\n );\r\n this.addressSetup$ = this.addressDS.entities$.pipe(\r\n share(),\r\n map(items => [{ id: -1, Addressid: -1 } as any, ...clone(items)])\r\n );\r\n this.addressSelectItems$ = this.addressDS.entities$.pipe(\r\n map(items => items.map(item => this.getAddressSelectItem(item)))\r\n );\r\n this.remitAddressSelectItems$ = this.addressDS.entities$.pipe(\r\n tap(addresses =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent.remitAddressSelectItems$',\r\n addresses\r\n })\r\n ),\r\n map(items =>\r\n items.filter(\r\n item =>\r\n item.AddressType &&\r\n item.AddressType.toLowerCase() === 'remit'\r\n )\r\n ),\r\n tap(addresses =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent.remitAddressSelectItems$:filtered',\r\n addresses\r\n })\r\n ),\r\n map(items => items.map(item => this.getAddressSelectItem(item))),\r\n tap(addresses =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent.remitAddressSelectItems$:mapped',\r\n addresses\r\n })\r\n )\r\n );\r\n this.billingAddressSelectItems$ = this.addressDS.entities$.pipe(\r\n map(items =>\r\n items.filter(\r\n item =>\r\n item.AddressType &&\r\n item.AddressType.toLowerCase() === 'billing'\r\n )\r\n ),\r\n map(items => items.map(item => this.getAddressSelectItem(item)))\r\n );\r\n this.selections$ = this.invoiceSelectionSetupDS.entities$.pipe(\r\n map(items => [\r\n {\r\n id: 'add',\r\n Status: { StatusCode: ResponseStatus.Adding, Message: '' }\r\n } as fromDataServices.Invoice.Setup.Selections.InvoiceSelections,\r\n ...(clone(\r\n items\r\n ) as fromDataServices.Invoice.Setup.Selections.InvoiceSelections[])\r\n ]),\r\n map(items =>\r\n // sort by status code, then by property type\r\n items.sort((a, b) =>\r\n a.Status.StatusCode === b.Status.StatusCode\r\n ? a.Invoicepropertyid - b.Invoicepropertyid\r\n : b.Status.StatusCode - a.Status.StatusCode\r\n )\r\n )\r\n );\r\n this.selectionSelectItems$ = this.selections$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: `${item.Propertylabel} - (${item.Propertytext})`,\r\n value: item.Invoicepropertysharedid\r\n }))\r\n )\r\n );\r\n this.accountClassProperties$ = this.selections$.pipe(\r\n filter(items => !!items),\r\n map(items => clone(items)),\r\n map(items =>\r\n items\r\n .filter(\r\n item =>\r\n item.Invoicepropertyid ===\r\n InvoicePropertyType.AccountClass\r\n )\r\n .map(item => ({\r\n label: `${item.Propertylabel} - (${item.Propertytext})`,\r\n value: item.Invoicepropertysharedid\r\n }))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:accountClassProperties$',\r\n items\r\n })\r\n )\r\n );\r\n this.signatureLineProperties$ = this.selections$.pipe(\r\n filter(items => !!items),\r\n map(items => clone(items)),\r\n map(items =>\r\n items\r\n .filter(\r\n item =>\r\n item.Invoicepropertyid ===\r\n InvoicePropertyType.SignatureLine\r\n )\r\n .map(item => ({\r\n label: `${item.Propertylabel} - (${item.Propertytext})`,\r\n value: item.Invoicepropertysharedid\r\n }))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:signatureLineProperties$',\r\n items\r\n })\r\n )\r\n );\r\n this.invoiceViewOptions$ = this.invoiceDetailOptionsDS.entities$.pipe(\r\n filter(items => !!items),\r\n // map(items => clone(items)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Invoiceviewoption ? item.Invoiceviewoption : '',\r\n value: item.Invoiceviewoptionid\r\n }))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:invoiceViewOptions$',\r\n items\r\n })\r\n )\r\n );\r\n this.disclaimerProperties$ = this.selections$.pipe(\r\n filter(items => !!items),\r\n map(items => clone(items)),\r\n map(items =>\r\n items\r\n .filter(\r\n item =>\r\n item.Invoicepropertyid ===\r\n InvoicePropertyType.Disclaimer\r\n )\r\n .map(item => ({\r\n label: `${item.Propertylabel} - (${item.Propertytext})`,\r\n value: item.Invoicepropertysharedid\r\n }))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:disclaimerProperties$',\r\n items\r\n })\r\n )\r\n );\r\n this.paymentTermsProperties$ = this.selections$.pipe(\r\n filter(items => !!items),\r\n map(items => clone(items)),\r\n map(items =>\r\n items\r\n .filter(\r\n item =>\r\n item.Invoicepropertyid ===\r\n InvoicePropertyType.PaymentTerms\r\n )\r\n .map(item => ({\r\n label: `${item.Propertylabel} - (${item.Propertytext})`,\r\n value: item.Invoicepropertysharedid\r\n }))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:paymentTermsProperties$',\r\n items\r\n })\r\n )\r\n );\r\n this.states$ = this.store.pipe(\r\n select(fromLookup.getStates),\r\n map(items =>\r\n items.map(item => ({ label: item.State, value: item.State }))\r\n )\r\n );\r\n this.SelectContractsSubject.pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.length > 0)\r\n ).subscribe(contracts => {\r\n this.invoiceSetupDS.clearCache();\r\n this.invoiceSetupDS.getWithQuery({\r\n ContractList: contracts.map(item => ({\r\n ContractListID: item.Contractlistid,\r\n ContractDesc: ''\r\n })) as any\r\n });\r\n });\r\n this.SelectContractsSubject.pipe(take(1)).subscribe(() => {\r\n this.invoiceSessionSetupDS.clearCache();\r\n this.invoiceSessionSetupDS.getAll();\r\n });\r\n this.filteredInvoices$ = combineLatest([\r\n this.SelectContractsSubject.pipe(\r\n startWith(null as AccountContract[])\r\n ),\r\n this.invoices$.pipe(debounceTime(500))\r\n ]).pipe(\r\n tap(([contracts, invoices]) =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:filteredInvoices$',\r\n invoices,\r\n contracts\r\n })\r\n ),\r\n map(([contracts, invoices]) =>\r\n contracts && contracts.length > 0\r\n ? invoices.filter(i =>\r\n contracts\r\n .map(x => x.Contractlistid)\r\n .includes(i.Contractlistid)\r\n )\r\n : []\r\n ),\r\n tap(invoices =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:filteredInvoices$',\r\n invoices\r\n })\r\n )\r\n );\r\n this.filteredSessions$ = combineLatest([\r\n this.SelectContractsSubject.pipe(\r\n startWith(null as AccountContract[])\r\n ),\r\n this.sessions$\r\n ]).pipe(\r\n tap(([contracts, sessions]) =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:filteredInvoices$',\r\n sessions,\r\n contracts\r\n })\r\n ),\r\n map(([contracts, sessions]) =>\r\n contracts && contracts.length > 0\r\n ? sessions.filter(i =>\r\n contracts\r\n .map(x => x.Contractlistid)\r\n .includes(i.Contractlistid)\r\n )\r\n : []\r\n ),\r\n tap(sessions =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:filteredInvoices$',\r\n sessions\r\n })\r\n )\r\n );\r\n }\r\n getAddressSelectItem = (\r\n item: fromDataServices.Address.Address\r\n ): SelectItem => ({\r\n label: this.formatAddressLabel(item),\r\n value: item.Addressid\r\n });\r\n formatAddressLabel(item: fromDataServices.Address.Address): string {\r\n let label = !!(item.AddressName && item.AddressName.trim())\r\n ? `${item.AddressName} - (`\r\n : '';\r\n label += !!(item.Addr1 && item.Addr1.trim())\r\n ? `${item.Addr1.trim()}`\r\n : '';\r\n label += !!(item.Addr2 && item.Addr2.trim())\r\n ? `, ${item.Addr2.trim()}`\r\n : '';\r\n label += !!(item.Addr3 && item.Addr3.trim())\r\n ? `, ${item.Addr3.trim()}`\r\n : '';\r\n label += !!(item.Addr4 && item.Addr4.trim())\r\n ? `, ${item.Addr4.trim()}`\r\n : '';\r\n label += !!(item.City && item.City.trim())\r\n ? `, ${item.City.trim()}`\r\n : '';\r\n label += !!(item.State && item.State.trim())\r\n ? `, ${item.State.trim()}`\r\n : '';\r\n label += !!(item.PostalCode && item.PostalCode.trim())\r\n ? `, ${item.PostalCode.trim()}`\r\n : '';\r\n label += !!(item.AddressName && item.AddressName.trim()) ? ')' : '';\r\n return label;\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n onSaveAddress($event: fromDataServices.Address.Address[]) {\r\n this.addressDS.upsert($event[0]);\r\n }\r\n onDeleteAddress($event: fromDataServices.Address.Address) {\r\n this.addressDS.delete($event);\r\n }\r\n onSaveSelection(\r\n $event: fromDataServices.Invoice.Setup.Selections.InvoiceSelections[]\r\n ) {\r\n this.invoiceSelectionSetupDS.upsert($event[0]);\r\n }\r\n onDeleteSelection(\r\n $event: fromDataServices.Invoice.Setup.Selections.InvoiceSelections\r\n ) {\r\n this.invoiceSelectionSetupDS.delete($event);\r\n }\r\n onSaveInvoiceOptions(\r\n $event: fromDataServices.Invoice.Setup.Invoice.InvoiceSetup[]\r\n ) {\r\n this.invoiceSetupDS.upsert($event[0]);\r\n }\r\n onSaveSession(\r\n $event: fromDataServices.Invoice.Setup.Session.InvoiceSessionSetup[]\r\n ) {\r\n this.invoiceSessionSetupDS.upsert($event[0]);\r\n }\r\n onSelectContract($event: AccountContract[]) {\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:onSelectContract',\r\n $event\r\n });\r\n this.SelectContractsSubject.next($event);\r\n }\r\n onUpdateBulkInvoiceSetups($event: InvoiceSetup[]) {\r\n const changeSet: ChangeSetItem[] = [\r\n cif.update(\r\n fromDataServices.Invoice.Setup.Invoice.entityName,\r\n $event.map(item => ({ id: item.id as string, changes: item }))\r\n )\r\n ];\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:onUpdateBulkInvoiceSetups',\r\n $event,\r\n changeSet\r\n });\r\n this.dispatcher\r\n .saveEntities(\r\n changeSet,\r\n `${environment.apiLocation}/${fromDataServices.Invoice.Setup.Invoice.entityName}s`\r\n )\r\n .pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:onUpdateBulkInvoiceSetups:tap',\r\n x\r\n })\r\n ),\r\n map(changeset => changeset)\r\n )\r\n .subscribe(changeset => {\r\n // this.invoiceSessionSetupDS.updateManyInCache(\r\n // changeset.changes.entries.\r\n // );\r\n });\r\n // this.ds.saveEntities(\r\n // { changes: changeSet },\r\n // `api/${fromDataServices.Invoice.Setup.Invoice.entityName}`\r\n // );\r\n // $event.forEach(invoice => {\r\n // this.invoiceSetupDS.update(invoice);\r\n // });\r\n }\r\n onUpdateBulkVouchers($event: InvoiceSessionSetup[]) {\r\n this.log.verbose({\r\n type: 'InvoiceSetupContainerComponent:onUpdateBulkVouchers',\r\n $event\r\n });\r\n $event.forEach(invoice => {\r\n this.invoiceSessionSetupDS.update(invoice);\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, withLatestFrom } from 'rxjs/operators';\r\nimport * as fromAccounts from '../../../account/store';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice-setup-filters-container',\r\n templateUrl: './invoice-setup-filters-container.component.html',\r\n styleUrls: ['./invoice-setup-filters-container.component.scss']\r\n})\r\nexport class InvoiceSetupFiltersContainerComponent\r\n implements OnInit, OnDestroy {\r\n contracts$: Observable;\r\n contractsSelectItems$: Observable;\r\n private SelectContractSubject = new ReplaySubject(1);\r\n private active = true;\r\n @Output() SelectContract = new EventEmitter<\r\n fromAccounts.AccountContract[]\r\n >();\r\n constructor(private store: Store, private log: LoggingService) {}\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(fromAccounts.getContractARAccounts());\r\n\r\n this.contracts$ = this.store.pipe(\r\n select(fromAccounts.selectContractARAccounts),\r\n filter(x => !!x && x.length > 0)\r\n // tap(contracts => this.SelectContract.next([contracts[0]]))\r\n );\r\n this.contractsSelectItems$ = this.contracts$.pipe(\r\n filter(x => !!x && x.length > 0),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Contractdesc,\r\n value: item.Contractlistid\r\n }))\r\n )\r\n );\r\n\r\n this.SelectContractSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.contracts$)\r\n ).subscribe(([selected, contracts]) => {\r\n this.log.verbose({\r\n type: 'InvoiceSetupFiltersContainerComponent:SelectContractSubject',\r\n selected,\r\n contracts\r\n });\r\n const selectedContract = contracts.filter(c =>\r\n selected.includes(c.Contractlistid)\r\n );\r\n this.SelectContract.next(selectedContract);\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n onSelectContract($event: string[]) {\r\n this.log.verbose({\r\n type: 'InvoiceSetupFiltersContainerComponent:onSelectContract',\r\n $event\r\n });\r\n this.SelectContractSubject.next($event);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { SelectItem } from '../../../shared';\r\n\r\n@Component({\r\n selector: 'ef-invoice-setup-filters-presenter',\r\n templateUrl: './invoice-setup-filters-presenter.component.html',\r\n styleUrls: ['./invoice-setup-filters-presenter.component.scss']\r\n})\r\nexport class InvoiceSetupFiltersPresenterComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n private _contracts: SelectItem[];\r\n @Input() public set contracts(value: SelectItem[]) {\r\n this._contracts = value;\r\n // if (value && value.length > 0) {\r\n // this.filterFormGroup.controls['Contracts'].setValue([value[0].value]);\r\n // }\r\n }\r\n public get contracts(): SelectItem[] {\r\n return this._contracts;\r\n }\r\n @Output() SelectContract = new EventEmitter();\r\n filterFormGroup: FormGroup;\r\n private active = true;\r\n constructor() {\r\n this.filterFormGroup = new FormGroup({\r\n Contracts: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterFormGroup.controls['Contracts'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => this.SelectContract.next(value));\r\n }\r\n ngAfterViewInit(): void {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { fromEvent, ReplaySubject, Subject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromInvoiceSetup from '../../../data-services/invoice/setup';\r\nimport {\r\n Accordion,\r\n DialogService,\r\n DynamicDialogRef,\r\n ResponseStatus,\r\n SelectItem,\r\n uniqFilter\r\n} from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { InvoiceSessionUpdateDialogComponent } from '../invoice-session-update-dialog/invoice-session-update-dialog.component';\r\nimport { InvoiceSetupUpdateDialogComponent } from '../invoice-setup-update-dialog/invoice-setup-update-dialog.component';\r\n\r\n@Component({\r\n selector: 'ef-invoice-setup-presenter',\r\n templateUrl: './invoice-setup-presenter.component.html',\r\n styleUrls: ['./invoice-setup-presenter.component.scss']\r\n})\r\nexport class InvoiceSetupPresenterComponent\r\n implements OnInit, OnDestroy, OnChanges\r\n{\r\n constructor(\r\n private log: LoggingService,\r\n private cdRef: ChangeDetectorRef,\r\n private dialogService: DialogService\r\n ) {}\r\n @Input() invoiceProperties: SelectItem[] = [];\r\n @Input() accountClassProperties: SelectItem[] = [];\r\n @Input() signatureLineProperties: SelectItem[] = [];\r\n @Input() invoiceViewOptions: SelectItem[] = [];\r\n @Input() disclaimerProperties: SelectItem[] = [];\r\n @Input() paymentTermsProperties: SelectItem[] = [];\r\n @Input() selections: fromInvoiceSetup.Selections.InvoiceSelections[];\r\n @Input() states: SelectItem[];\r\n @Input() addressTypes: SelectItem[];\r\n @Input() addressSetup: fromDataServices.Address.Address[];\r\n @Input() invoices: fromInvoiceSetup.Invoice.InvoiceSetup[];\r\n @Input() addresses: SelectItem[];\r\n @Input() remitAddresses: SelectItem[];\r\n @Input() billingAddresses: SelectItem[];\r\n @Input() invoiceSelections: SelectItem[];\r\n @Input() invoiceContracts: SelectItem[];\r\n @Input() chargeNumbers: SelectItem[];\r\n @Input() invoiceTypes: SelectItem[];\r\n @Input() sessions: fromInvoiceSetup.Session.InvoiceSessionSetup[];\r\n @Input() invoiceSessions: SelectItem[];\r\n @Output() SaveSelection = new EventEmitter();\r\n @Output() DeleteSelection = new EventEmitter();\r\n @Output() SaveAddress = new EventEmitter();\r\n @Output() DeleteAddress = new EventEmitter();\r\n @Output() SaveInvoiceOptions = new EventEmitter();\r\n @Output() SelectInvoiceOptionsSubject = new ReplaySubject<\r\n fromInvoiceSetup.Invoice.InvoiceSetup[]\r\n >(1);\r\n @Output() SelectVoucherOptionsSubject = new ReplaySubject<\r\n fromInvoiceSetup.Session.InvoiceSessionSetup[]\r\n >(1);\r\n @Output() SaveSession = new EventEmitter();\r\n @Output() UpdateBulkInvoiceSetups = new Subject<\r\n fromInvoiceSetup.Invoice.InvoiceSetup[]\r\n >();\r\n @Output() UpdateBulkVouchers = new Subject<\r\n fromInvoiceSetup.Session.InvoiceSessionSetup[]\r\n >();\r\n @Output() ApplyBulkUpdates = new ReplaySubject(1);\r\n @Output() ApplyBulkVoucherUpdates = new ReplaySubject(1);\r\n\r\n @ViewChild('accordion', { static: true }) accordion: Accordion;\r\n @ViewChild('updateMultiple', { static: true })\r\n updateMultipleButton: ElementRef;\r\n @ViewChild('updateMultipleSessions', { static: true })\r\n updateMultipleSessionsButton: ElementRef;\r\n\r\n public tabHeight = '15vh';\r\n private active = true;\r\n activeIndex: number[] = [];\r\n bulkVoucherOpen;\r\n tabsDisabled = true;\r\n displayAddress = false;\r\n displayFooter = false;\r\n elements: HTMLCollectionOf;\r\n private updateDialogRef: DynamicDialogRef;\r\n ngOnInit(): void {\r\n this.handleOnOpen([2]);\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n onGetElements(event: HTMLCollectionOf) {\r\n this.elements = event;\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.log.verbose({\r\n type: 'InvoiceSetupPresenterComponent:ngOnChanges',\r\n changes\r\n });\r\n if (changes.invoices && changes.invoices.currentValue) {\r\n if (changes.invoices.currentValue.length > 0) {\r\n this.log.verbose({\r\n type: 'InvoiceSetupPresenterComponent:ngOnChanges:invoices',\r\n invoices: changes.invoices,\r\n activeIndex: this.activeIndex\r\n });\r\n this.activeIndex =\r\n // uniqBy([...this.activeIndex, 0, 1], x => x);\r\n [...this.activeIndex, 0].filter(uniqFilter);\r\n this.handleOnOpen(this.activeIndex);\r\n this.log.verbose({\r\n type: 'InvoiceSetupPresenterComponent:ngOnChanges:invoices',\r\n invoices: changes.invoices,\r\n activeIndex: this.activeIndex\r\n });\r\n this.tabsDisabled = false;\r\n } else {\r\n this.activeIndex = [];\r\n this.handleOnOpen(this.activeIndex);\r\n this.tabsDisabled = true;\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n }\r\n setupSubscriptions() {\r\n this.SelectVoucherOptionsSubject.pipe(\r\n takeWhile(() => this.active)\r\n ).subscribe(x =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupPresenterComponent:SelectVoucherOptions',\r\n x\r\n })\r\n );\r\n this.ApplyBulkUpdates.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.SelectInvoiceOptionsSubject),\r\n tap(([updates, invoices]) =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupPresenterComponent:ApplyBulkUpdates',\r\n updates,\r\n invoices\r\n })\r\n ),\r\n filter(([updates, invoices]) => invoices?.length > 0)\r\n ).subscribe(([updates, invoices]) => {\r\n this.invoices = this.invoices.map(invoice => ({\r\n ...invoice,\r\n Status: {\r\n Message: 'Saving...',\r\n StatusCode: ResponseStatus.Loading\r\n }\r\n }));\r\n this.UpdateBulkInvoiceSetups.next(\r\n invoices.map(invoice => ({\r\n ...invoice,\r\n Accountclass: updates.Accountclass || invoice.Accountclass,\r\n Billaddrid: updates.Billaddrid || invoice.Billaddrid,\r\n Disclaimerid: updates.Disclaimerid || invoice.Disclaimerid,\r\n Remitaddrid: updates.Remitaddrid || invoice.Remitaddrid,\r\n Invprefix: updates.Invprefix || invoice.Invprefix,\r\n Levelspent: updates.Levelspent || invoice.Levelspent,\r\n Invoiceviewoptionid:\r\n updates.Invoiceviewoptionid ||\r\n invoice.Invoiceviewoptionid,\r\n Showcosttypesummaryburden:\r\n updates.Showcosttypesummaryburden !== null\r\n ? updates.Showcosttypesummaryburden\r\n : invoice.Showcosttypesummaryburden,\r\n Showcosttypesummary:\r\n updates.Showcosttypesummary !== null\r\n ? updates.Showcosttypesummary\r\n : invoice.Showcosttypesummary,\r\n Showcontractbalance:\r\n updates.Showcontractbalance !== null\r\n ? updates.Showcontractbalance\r\n : invoice.Showcontractbalance,\r\n Showburdens:\r\n updates.Showburdens !== null\r\n ? updates.Showburdens\r\n : invoice.Showburdens,\r\n Showcurrentactivityonly:\r\n updates.Showcurrentactivityonly !== null\r\n ? updates.Showcurrentactivityonly\r\n : invoice.Showcurrentactivityonly,\r\n Showfundingbalance:\r\n updates.Showfundingbalance !== null\r\n ? updates.Showfundingbalance\r\n : invoice.Showfundingbalance,\r\n ShowEIN:\r\n updates.ShowEIN === null\r\n ? invoice.ShowEIN\r\n : updates.ShowEIN,\r\n Showindirectrates:\r\n updates.Showindirectrates === null\r\n ? invoice.Showindirectrates\r\n : updates.Showindirectrates,\r\n Showlaborrates:\r\n updates.Showlaborrates === null\r\n ? invoice.Showlaborrates\r\n : updates.Showlaborrates,\r\n Siglineid: updates.Siglineid || invoice.Siglineid\r\n }))\r\n );\r\n this.SelectInvoiceOptionsSubject.next([]);\r\n });\r\n this.ApplyBulkVoucherUpdates.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.SelectVoucherOptionsSubject),\r\n tap(([updates, vouchers]) =>\r\n this.log.verbose({\r\n type: 'InvoiceSetupPresenterComponent:ApplyBulkVoucherUpdates',\r\n updates,\r\n vouchers\r\n })\r\n )\r\n ).subscribe(([updates, vouchers]) => {\r\n this.UpdateBulkVouchers.next(\r\n vouchers.map(voucher => ({\r\n ...voucher,\r\n Remitaddrid: updates.Remitaddrid || voucher.Remitaddrid,\r\n Voucheraddrid:\r\n updates.Voucheraddrid || voucher.Voucheraddrid,\r\n Contractdesc: updates.Contractdesc || voucher.Contractdesc,\r\n Feeseparate:\r\n updates.Feeseparate === null\r\n ? voucher.Feeseparate\r\n : updates.Feeseparate,\r\n ShowCN:\r\n updates.ShowCN === null\r\n ? voucher.ShowCN\r\n : updates.ShowCN\r\n }))\r\n );\r\n });\r\n fromEvent(this.updateMultipleButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(\r\n this.SelectInvoiceOptionsSubject.pipe(\r\n map(items => items.length)\r\n )\r\n )\r\n )\r\n .subscribe(([click, count]) => {\r\n this.updateDialogRef = this.dialogService.open(\r\n InvoiceSetupUpdateDialogComponent,\r\n {\r\n header: 'Update Multiple Invoice Format Rows',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: false,\r\n modal: true,\r\n data: {\r\n addresses: this.addresses,\r\n disclaimerProperties: this.disclaimerProperties,\r\n signatureLineProperties:\r\n this.signatureLineProperties,\r\n accountClassProperties: this.accountClassProperties,\r\n invoiceViewOptions: this.invoiceViewOptions,\r\n count\r\n }\r\n }\r\n );\r\n this.updateDialogRef.onClose.subscribe(value => {\r\n this.log.verbose({\r\n type: 'InvoiceSetupUpdateDialogComponent:afterClosed',\r\n value\r\n });\r\n if (value) {\r\n this.ApplyBulkUpdates.next(value);\r\n }\r\n });\r\n });\r\n fromEvent(this.updateMultipleSessionsButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.updateDialogRef = this.dialogService.open(\r\n InvoiceSessionUpdateDialogComponent,\r\n {\r\n header: 'Update Multiple Voucher Records',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: false,\r\n modal: true,\r\n data: {\r\n addresses: this.addresses\r\n }\r\n }\r\n );\r\n this.updateDialogRef.onClose.pipe(take(1)).subscribe(value => {\r\n this.log.verbose({\r\n type: 'InvoiceSessionUpdateDialogComponent:afterClosed',\r\n value\r\n });\r\n if (value) {\r\n this.ApplyBulkVoucherUpdates.next(value);\r\n }\r\n });\r\n });\r\n }\r\n handleOnOpen($event) {\r\n // this is the best way to handle accordion open/close\r\n // baseheight may need adjustment depending on anything outside the tabs\r\n this.log.verbose({\r\n type: 'InvoiceSetupPresenterComponent:handleOnOpen',\r\n $event,\r\n activeIndex: this.activeIndex\r\n });\r\n const baseHeight = 59;\r\n\r\n this.tabHeight = `${\r\n baseHeight / ($event && $event.length ? $event.length : 1) - 1\r\n }vh`;\r\n }\r\n\r\n invoiceHeight = () => `calc(${this.tabHeight} - 2.5em)`;\r\n voucherHeight = () => `calc(${this.tabHeight} - 2.5em)`;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef,\r\n Message,\r\n SelectItem\r\n} from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice-setup-update-dialog',\r\n templateUrl: './invoice-setup-update-dialog.component.html',\r\n styleUrls: ['./invoice-setup-update-dialog.component.scss']\r\n})\r\nexport class InvoiceSetupUpdateDialogComponent implements OnInit {\r\n addresses: SelectItem[];\r\n disclaimerProperties: SelectItem[];\r\n signatureLineProperties: SelectItem[];\r\n accountClassProperties: SelectItem[];\r\n LevelspentSelectItems: SelectItem[];\r\n invoiceViewOptions: SelectItem[];\r\n count: number;\r\n bulkFormGroup: FormGroup;\r\n moment: any;\r\n messages: Message[];\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private log: LoggingService\r\n ) {\r\n this.bulkFormGroup = new FormGroup({\r\n ShowEIN: new FormControl(),\r\n Showindirectrates: new FormControl(),\r\n Showlaborrates: new FormControl(),\r\n Remitaddrid: new FormControl(),\r\n Billaddrid: new FormControl(),\r\n Accountclass: new FormControl(),\r\n Siglineid: new FormControl(),\r\n Invprefix: new FormControl(),\r\n Levelspent: new FormControl(),\r\n Showfundingbalance: new FormControl(),\r\n Showcontractbalance: new FormControl(),\r\n Showcosttypesummary: new FormControl(),\r\n Showcosttypesummaryburden: new FormControl(),\r\n Showburdens: new FormControl(),\r\n Showcurrentactivityonly: new FormControl(),\r\n Invoiceviewoptionid: new FormControl(),\r\n Disclaimerid: new FormControl()\r\n });\r\n\r\n this.addresses = config.data.addresses;\r\n this.disclaimerProperties = config.data.disclaimerProperties;\r\n this.signatureLineProperties = config.data.signatureLineProperties;\r\n this.accountClassProperties = config.data.accountClassProperties;\r\n this.LevelspentSelectItems = config.data.LevelspentSelectItems;\r\n this.invoiceViewOptions = config.data.invoiceViewOptions;\r\n this.count = config.data.count;\r\n this.moment = moment;\r\n this.messages = [\r\n {\r\n severity: 'info',\r\n summary: '',\r\n style: 'max-width: fit-content',\r\n detail: 'Fill in options below to update all selected rows. Options not updated here will remain unchanged. For checkboxes, select \"X\" to remove the checkmark, a blank indicates no change.'\r\n } as any\r\n ];\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n InvoiceSetupContainerComponent,\r\n InvoiceSelectionsComponent,\r\n InvoiceAddressComponent,\r\n InvoiceSessionComponent,\r\n InvoiceComponent,\r\n InvoiceAddressAddComponent\r\n} from './';\r\nimport { InvoiceSetupRoute } from './invoice-setup.route';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { InvoiceSelectionAddComponent } from './invoice-selections/invoice-selection-add/invoice-selection-add.component';\r\nimport { InvoiceSetupPresenterComponent } from './invoice-setup-presenter/invoice-setup-presenter.component';\r\nimport { InvoiceSetupFiltersPresenterComponent } from './invoice-setup-filters-presenter/invoice-setup-filters-presenter.component';\r\nimport { InvoiceSetupFiltersContainerComponent } from './invoice-setup-filters-container/invoice-setup-filters-container.component';\r\nimport { InvoiceSetupUpdateDialogComponent } from './invoice-setup-update-dialog/invoice-setup-update-dialog.component';\r\nimport { InvoiceSessionUpdateDialogComponent } from './invoice-session-update-dialog/invoice-session-update-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n InvoiceSetupContainerComponent,\r\n InvoiceSelectionsComponent,\r\n InvoiceAddressComponent,\r\n InvoiceSessionComponent,\r\n InvoiceComponent,\r\n InvoiceAddressAddComponent,\r\n InvoiceSelectionAddComponent,\r\n InvoiceSetupPresenterComponent,\r\n InvoiceSetupFiltersPresenterComponent,\r\n InvoiceSetupFiltersContainerComponent,\r\n InvoiceSetupUpdateDialogComponent,\r\n InvoiceSessionUpdateDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [InvoiceSetupRoute]\r\n })\r\n ]\r\n})\r\nexport class InvoiceSetupModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { InvoiceSetupContainerComponent } from './invoice-setup-container/invoice-setup-container.component';\r\n// import * as fromInvoice from '.';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const InvoiceSetupRoute: Ng2StateDeclaration = {\r\n // name: 'invoice.**'\r\n name: 'invoice.setup',\r\n url: '/setup',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.invoiceModule)\r\n data: { requiresAuth: true },\r\n component: InvoiceSetupContainerComponent\r\n};\r\n","export * from './invoice.component';\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport * as fromInvoiceSetup from '../../../data-services/invoice/setup';\r\nimport * as fromShared from '../../../shared';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-invoice',\r\n templateUrl: './invoice.component.html',\r\n styleUrls: ['./invoice.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class InvoiceComponent\r\n extends fromShared.EditGrid\r\n implements OnInit, OnDestroy, OnChanges\r\n{\r\n public get numCols(): number {\r\n let ret = 22;\r\n if (!this.displayAddress) {\r\n ret -= 3;\r\n }\r\n if (!this.displayFooter) {\r\n ret -= 2;\r\n }\r\n return ret;\r\n }\r\n frozenCols = [{ field: 'EmployeeName', header: 'Person' }];\r\n cols = [\r\n // \r\n { field: 'IsConsultant', header: 'Consultant?' },\r\n { field: 'AccountNumber', header: 'Account #' },\r\n { field: 'EUserID', header: 'User ID' },\r\n { field: '', header: 'Password' },\r\n { field: 'SupervisorName', header: 'Supervisor' },\r\n { field: 'WeekStartName', header: 'Week Start' },\r\n { field: 'DefaultServiceItemName', header: 'Default SI' },\r\n { field: 'DefaultPayrollItemName', header: 'Default PI' },\r\n { field: 'AuthorizedHolidays', header: 'Holiday Auths' },\r\n { field: 'LockDate', header: 'Lock out' },\r\n { field: 'Mobile_provider', header: 'Mobile Provider' },\r\n { field: 'Mobilewithprovider', header: 'Mobile #' },\r\n { field: 'SplitDayName', header: 'Split Day' },\r\n { field: 'ExpenseAllowed', header: 'Expense Entry' },\r\n { field: 'CreditCardName', header: 'Credit Card' },\r\n { field: 'EmailAddr', header: 'Email' },\r\n { field: 'Expectedhrsperday', header: 'Expected Hrs Per Day' },\r\n { field: 'Expectedhrsperweek', header: 'Expected Hrs Per Week' },\r\n { field: 'IsPartTime', header: 'Part Time?' },\r\n { field: 'EmpTimeZone', header: 'Time Zone' },\r\n { field: 'ReminderDeliveryName', header: 'Reminder Delivery' },\r\n { field: 'CostCenterName', header: 'Cost Center' },\r\n { field: 'PayrollFrequency', header: 'Unique Pay Cycle' },\r\n { field: 'Usertype', header: 'Usertype' },\r\n { field: 'HireDate', header: 'Hire Date' },\r\n { field: 'ReleaseDate', header: 'Release Date' }\r\n ];\r\n @Input() types: SelectItem[] = [];\r\n @Input() displayAddress: boolean;\r\n @Input() displayFooter: boolean;\r\n @Input() addresses: SelectItem[] = [];\r\n @Input() remitAddresses: SelectItem[] = [];\r\n @Input() billingAddresses: SelectItem[] = [];\r\n @Input() signatures: SelectItem[] = [];\r\n @Input() accountClassProperties: SelectItem[] = [];\r\n @Input() signatureLineProperties: SelectItem[] = [];\r\n @Input() invoiceViewOptions: SelectItem[] = [];\r\n @Input() disclaimerProperties: SelectItem[] = [];\r\n @Input() paymentTermsProperties: SelectItem[] = [];\r\n @Input() contracts: SelectItem[] = [];\r\n @Input() chargeNumbers: SelectItem[] = [];\r\n contractChargeOptions: SelectItem[] = [\r\n { label: 'Contract', value: 'contract' },\r\n { label: 'Charge Number', value: 'chargeNumber' }\r\n ];\r\n private active = true;\r\n\r\n @Output() PassElements = new ReplaySubject>(1);\r\n\r\n elements: HTMLCollection;\r\n\r\n constructor(private log: LoggingService, private cdRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.elements = document.getElementsByClassName('p-header-cell');\r\n this.PassElements.next(this.elements);\r\n }, 0);\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (\r\n changes.items &&\r\n changes.items.currentValue &&\r\n changes.items.currentValue.length > 0\r\n ) {\r\n this.log.verbose({ type: 'InvoiceComponent:ngOnChanges', changes });\r\n this.selected = [];\r\n }\r\n }\r\n onRowEditInit(item: fromInvoiceSetup.Invoice.InvoiceSetup) {\r\n super.onRowEditInit(item);\r\n if (item.Invoicelevel?.toLocaleLowerCase() === 'contract') {\r\n this.contractChargeOptions = [\r\n { label: 'None', value: 'none' },\r\n { label: 'Contract', value: 'contract' }\r\n ];\r\n } else {\r\n this.contractChargeOptions = [\r\n { label: 'None', value: 'none' },\r\n { label: 'Contract', value: 'contract' },\r\n { label: 'Charge Number', value: 'chargeNumber' }\r\n ];\r\n }\r\n }\r\n}\r\n","export * from './job-audit-container.component';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n@Component({\r\n selector: 'ef-job-audit-container',\r\n templateUrl: './job-audit-container.component.html',\r\n styleUrls: ['./job-audit-container.component.scss']\r\n})\r\nexport class JobAuditContainerComponent implements OnInit {\r\n JobAuditModelDS: EntityCollectionService;\r\n JobAuditModel$: Observable;\r\n process$: Observable;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'JobAuditContainerComponent::' });\r\n this.JobAuditModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.JobAudit.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.JobAuditModelDS.clearCache();\r\n this.JobAuditModel$ = this.JobAuditModelDS.entities$.pipe(\r\n map(items => clone(items))\r\n );\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n }\r\n onDateFiltersChanged($event: { startDate: Date; endDate: Date }) {\r\n this.log.verbose({\r\n type: 'JobAuditContainerComponent:onDateFiltersChanged',\r\n $event\r\n });\r\n this.JobAuditModelDS.clearCache();\r\n this.JobAuditModelDS.getWithQuery({\r\n EndDate: moment(moment($event.endDate).format('L'))\r\n .add(1, 'day')\r\n .format('L'),\r\n StartDate: moment($event.startDate).format('YYYY-MM-DD')\r\n });\r\n }\r\n}\r\n","export * from './job-audit-presenter.component';\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { combineLatest } from 'rxjs';\r\nimport { startWith, takeWhile } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-job-audit-presenter',\r\n templateUrl: './job-audit-presenter.component.html',\r\n styleUrls: ['./job-audit-presenter.component.scss']\r\n})\r\nexport class JobAuditPresenter\r\n extends fromShared.EditGrid\r\n implements OnInit, OnDestroy, OnChanges {\r\n @Input() loading = true;\r\n numCols = 3;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n moment: any;\r\n cols: { field: string; header: string }[] = [\r\n { field: 'StartTime', header: 'StartDate' },\r\n { field: 'EndTime', header: 'EndDate' },\r\n { field: 'Result', header: 'Result' }\r\n ];\r\n filterFormGroup: FormGroup;\r\n private active = true;\r\n @Output() DateFiltersChanged = new EventEmitter<{\r\n startDate: Date;\r\n endDate: Date;\r\n }>();\r\n constructor(private log: LoggingService, private cdRef: ChangeDetectorRef) {\r\n super();\r\n this.filterFormGroup = new FormGroup({\r\n endDate: new FormControl(new Date()),\r\n startDate: new FormControl(moment().add(-1, 'months').toDate())\r\n });\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit(): void {\r\n combineLatest([\r\n this.filterFormGroup.controls['startDate'].valueChanges.pipe(\r\n startWith(this.filterFormGroup.controls['startDate'].value)\r\n ),\r\n this.filterFormGroup.controls['endDate'].valueChanges.pipe(\r\n startWith(this.filterFormGroup.controls['endDate'].value)\r\n )\r\n ])\r\n .pipe(\r\n takeWhile(_ => this.active)\r\n // debounceTime(500)\r\n )\r\n .subscribe(x => {\r\n if (moment(x[0]).isValid() && moment(x[1]).isValid()) {\r\n this.DateFiltersChanged.emit({\r\n startDate: x[0],\r\n endDate: x[1]\r\n });\r\n }\r\n\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (\r\n changes.items &&\r\n changes.items.currentValue &&\r\n changes.items.currentValue.length > 0\r\n ) {\r\n this.log.verbose({\r\n type: 'JobAuditPresenter: ngOnChanges',\r\n changes\r\n });\r\n this.dataTable.multiSortMeta = [\r\n { field: 'StartTime desc', order: 1 }\r\n ];\r\n this.dataTable.sortMultiple();\r\n this.cdRef.detectChanges();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { JobAuditContainerComponent } from './job-audit-container';\r\nimport { JobAuditPresenter } from './job-audit-presenter';\r\nimport { JobAuditRoute } from './job-audit.route';\r\n\r\n@NgModule({\r\n declarations: [JobAuditContainerComponent, JobAuditPresenter],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [JobAuditRoute]\r\n })\r\n ]\r\n})\r\nexport class JobAuditModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { JobAuditContainerComponent } from './job-audit-container/job-audit-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const JobAuditRoute: Ng2StateDeclaration = {\r\n // name: 'JobAudit.**'\r\n name: 'jobaudit',\r\n url: '/jobaudit',\r\n // , loadChildren: () => import('./job-audit.module').then(r => r.JobAuditModule)\r\n data: { requiresAuth: true },\r\n\r\n component: JobAuditContainerComponent\r\n};\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\nimport { LeaveAdjustmentFeatureComponent } from './feature/leave-adjustment-feature.component';\r\n\r\nconst log = new LoggingService();\r\nexport const LeaveAdjustmentRoute: Ng2StateDeclaration = {\r\n name: 'employeeleave',\r\n url: '/employeeleave',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: LeaveAdjustmentFeatureComponent\r\n};\r\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, tap } from 'rxjs/operators';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport * as fromActions_CS from '../../company-setting/store/company-setting.actions';\r\nimport * as fromReducer_CS from '../../company-setting/store/company-setting.reducer';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ICurrentLeaveSummary } from '../ICurrentLeaveSummary';\r\nimport { LeaveAdjustment } from '../ILeaveAdjustment';\r\nimport { LeaveAdjustmentPresenterComponent } from '../presenter/leave-adjustment-presenter.component';\r\nimport * as fromActions_S from '../store/current-leave-summary.actions';\r\nimport * as fromReducer_S from '../store/current-leave-summary.reducer';\r\nimport * as fromActions from '../store/leave-adjustment.actions';\r\nimport * as fromReducer from '../store/leave-adjustment.reducer';\r\n@Component({\r\n selector: 'ef-leave-adjustment-feature',\r\n templateUrl: './leave-adjustment-feature.component.html',\r\n styleUrls: ['./leave-adjustment-feature.component.scss']\r\n})\r\nexport class LeaveAdjustmentFeatureComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n @ViewChild(LeaveAdjustmentPresenterComponent, { static: true })\r\n presenter: LeaveAdjustmentPresenterComponent;\r\n public adjustments$: Observable;\r\n public accrualPeriods$: Observable<\r\n fromDataServices.AccrualPeriod.AccrualPeriodModel[]\r\n >;\r\n public summary$: Observable;\r\n public lagDays$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n active = true;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n accrualPeriodDS: EntityCollectionService;\r\n\r\n constructor(\r\n private log: LoggingService,\r\n private entityServices: EntityServices,\r\n private store: Store,\r\n private store_S: Store,\r\n private store_CS: Store\r\n ) {\r\n this.accrualPeriodDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.AccrualPeriod.entityName\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.store_CS.dispatch(fromActions_CS.clearCompanySettings());\r\n this.store.dispatch(fromActions.getAdjustments(null));\r\n this.store_S.dispatch(fromActions_S.getSummary(null));\r\n this.store_CS.dispatch(\r\n fromActions_CS.getCompanySetting({\r\n SettingType: 'PayPeriodLagInDays'\r\n })\r\n );\r\n this.accrualPeriodDS.getAll();\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.store.dispatch(fromActions.clearLeaveAdjustments());\r\n this.store_S.dispatch(fromActions_S.clearCurrentLeaveSummarys());\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.adjustments$ = this.store.pipe(\r\n select(fromReducer.selectAll),\r\n map(adjustments => clone(adjustments))\r\n );\r\n\r\n this.summary$ = this.store_S.pipe(\r\n select(fromReducer_S.selectAll),\r\n map(summary => clone(summary))\r\n );\r\n\r\n this.lagDays$ = this.store_CS.pipe(\r\n select(fromReducer_CS.selectEntity('PayPeriodLagInDays')),\r\n map(lg => clone(lg))\r\n );\r\n\r\n this.accrualPeriods$ = this.accrualPeriodDS.entities$;\r\n\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.adjustments$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n\r\n onLoadAdjustments($event) {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:onLoadAdjustments'\r\n });\r\n if ($event != null) {\r\n if (moment($event[0]).isValid() && moment($event[1]).isValid()) {\r\n this.store.dispatch(\r\n fromActions.getAdjustments({\r\n PPS: $event[0],\r\n PPE: $event[1]\r\n })\r\n );\r\n }\r\n }\r\n }\r\n\r\n onSaveAdjustment($event) {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:onSaveAdjustment'\r\n });\r\n this.store.dispatch(\r\n fromActions.putAdjustments({ adjustments: [$event] })\r\n );\r\n }\r\n\r\n onRecalcAdjustment($event) {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:onRecalcAdjustment'\r\n });\r\n this.store.dispatch(\r\n fromActions.putRecalcAdjustments({ adjustments: [$event] })\r\n );\r\n }\r\n\r\n onSaveSummary($event) {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:onSaveSummary'\r\n });\r\n this.store_S.dispatch(fromActions_S.putSummary({ summary: [$event] }));\r\n }\r\n\r\n onSaveLagDays($event) {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:onSaveLagDays'\r\n });\r\n this.store_CS.dispatch(\r\n fromActions_CS.putCompanySettings({ settings: [$event] })\r\n );\r\n }\r\n\r\n onSaveAccrualPeriod($event) {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentFeatureComponent:onSaveAccrualPeriod'\r\n });\r\n this.accrualPeriodDS.update($event);\r\n }\r\n onShowError(event) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { LeaveAdjustmentFeatureComponent } from './feature/leave-adjustment-feature.component';\r\nimport { LeaveAdjustmentRoute } from './LeaveAdjustmentRoute';\r\nimport { LeaveAdjustmentPresenterComponent } from './presenter/leave-adjustment-presenter.component';\r\nimport { CurrentLeaveSummaryEffects } from './store/current-leave-summary.effects';\r\nimport * as fromCurrentLeaveSummary from './store/current-leave-summary.reducer';\r\nimport { LeaveAdjustmentEffects } from './store/leave-adjustment.effects';\r\nimport * as fromLeaveAdjustment from './store/leave-adjustment.reducer';\r\n\r\n@NgModule({\r\n declarations: [\r\n LeaveAdjustmentFeatureComponent,\r\n LeaveAdjustmentPresenterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [LeaveAdjustmentRoute]\r\n }),\r\n StoreModule.forFeature(\r\n fromLeaveAdjustment.leaveAdjustmentsFeatureKey,\r\n fromLeaveAdjustment.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromCurrentLeaveSummary.currentLeaveSummariesFeatureKey,\r\n fromCurrentLeaveSummary.reducer\r\n ),\r\n EffectsModule.forFeature([\r\n LeaveAdjustmentEffects,\r\n CurrentLeaveSummaryEffects\r\n ])\r\n ]\r\n})\r\nexport class LeaveAdjustmentModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { ICurrentLeaveSummary } from './ICurrentLeaveSummary';\r\nimport { LeaveAdjustment } from './ILeaveAdjustment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LeaveAdjustmentService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private uri = `${environment.apiLocation}/EmployeeLeave`;\r\n private summaryUri = `${environment.apiLocation}/EmployeeLeaveCurrent`;\r\n\r\n public getAdjustments(PPS, PPE): Observable> {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentService:getAdjustments',\r\n uri: this.uri\r\n });\r\n return this.http\r\n .post>(this.uri, { PPS: PPS, PPE: PPE })\r\n .pipe(\r\n map(items => items.map(item => this.mapAdjustments(item))),\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putAdjustments(\r\n adjustments: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.uri, {\r\n EmployeeLeaveList: adjustments\r\n })\r\n .pipe(\r\n map(resp => ({\r\n ...resp,\r\n Items: [...resp.Items.map(item => this.mapAdjustments(item))]\r\n })),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentService:putAdjustments',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getSummary(employeeListID: string): Observable> {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentService:getSummary',\r\n uri: this.uri\r\n });\r\n if (employeeListID != null) {\r\n return this.http\r\n .get>(`${this.summaryUri}?Employeelistid=${employeeListID}`)\r\n .pipe(\r\n map(items => items.map(item => this.mapSummary(item))),\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n } else {\r\n return this.http\r\n .get>(this.summaryUri)\r\n .pipe(\r\n map(items => items.map(item => this.mapSummary(item))),\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n }\r\n\r\n public putSummary(\r\n summary: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.summaryUri, {\r\n EmployeeLeaveCurrentList: summary\r\n })\r\n .pipe(\r\n map(resp => ({\r\n ...resp,\r\n Items: [...resp.Items.map(item => this.mapSummary(item))]\r\n })),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentService:putSummary',\r\n data\r\n })\r\n )\r\n\r\n );\r\n }\r\n\r\n mapSummary(items: ICurrentLeaveSummary): ICurrentLeaveSummary {\r\n if (!items) {\r\n return;\r\n }\r\n return {\r\n ...items,\r\n id: items.EmployeeListID,\r\n };\r\n }\r\n\r\n mapAdjustments(items: LeaveAdjustment): LeaveAdjustment {\r\n if (!items) {\r\n return;\r\n }\r\n return {\r\n ...items,\r\n id: items.Uniqueid,\r\n };\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { select, Store } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, takeWhile, tap } from 'rxjs/operators';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport { AccrualPeriodModel } from '../../data-services/accrual-period/accrual-period.model';\r\nimport { columnResize } from '../../shared/columnResize';\r\nimport { SelectItem, Table } from '../../shared/efaact-primeng.module';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUser, IUserInfo } from '../../user-info';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport { ICurrentLeaveSummary } from '../ICurrentLeaveSummary';\r\nimport { LeaveAdjustment } from '../ILeaveAdjustment';\r\n\r\n@Component({\r\n selector: 'ef-leave-adjustment-presenter',\r\n templateUrl: './leave-adjustment-presenter.component.html',\r\n styleUrls: ['./leave-adjustment-presenter.component.scss']\r\n})\r\nexport class LeaveAdjustmentPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, OnDestroy\r\n{\r\n currentLeaveSummaryElements: HTMLCollection;\r\n leaveHistoryElements: HTMLCollection;\r\n dateRangeFormGroup: FormGroup;\r\n selectedEmployeeListID: any;\r\n filteredAdjustments: LeaveAdjustment[];\r\n oldValue: any;\r\n usingIntuitPayroll: boolean;\r\n accrualPeriodsSelectItems: SelectItem[];\r\n leaveInfo: string | undefined;\r\n private AdjustmentsSubject = new ReplaySubject>(1);\r\n private _adjustments: Array;\r\n lagDaysErrorMessage: string | null;\r\n showAreYouSure = false;\r\n dataForAreYouSure: ICurrentLeaveSummary;\r\n commitAccrualHistoryAdjustmentsStatusMsg: string;\r\n showCommitErrorStatusMsg = false;\r\n showCommitWarningStatusMsg = false;\r\n showCommitSuccessStatusMsg = false;\r\n commitMsg: any[] = [];\r\n indexForAreYouSure: number;\r\n working = false;\r\n historyNameFilterSelectItem: SelectItem[];\r\n historyVacPeriodFilterSelectItem: SelectItem[];\r\n historySickPeriodFilterSelectItem: SelectItem[];\r\n historyPPSFilterSelectItem: SelectItem[];\r\n historyPPEFilterSelectItem: SelectItem[];\r\n historyUsersSelectItem: SelectItem[];\r\n filteredHistory: LeaveAdjustment[] = [];\r\n selectedUsers: any;\r\n defaultAdj: LeaveAdjustment[];\r\n @Input() set adjustments(value: Array) {\r\n if (value && value.length > 0) {\r\n this.defaultAdj = value;\r\n if (this.hideZeroCbxValue == true) {\r\n const filtered = [] as LeaveAdjustment[]; //value.filter(x => x.Vac_HoursEarned != 0 || x.Sick_HoursEarned != 0);\r\n //filtered = filtered.filter(x => x.Vac_HoursEarnedAdjust != null || x.Sick_HoursEarnedAdjust != null);\r\n\r\n value.forEach(x => {\r\n if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust == null\r\n ) {\r\n //do not display\r\n } else if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust != null\r\n ) {\r\n filtered.push(x);\r\n } else {\r\n filtered.push(x);\r\n }\r\n });\r\n this._adjustments = filtered;\r\n this.AdjustmentsSubject.next(filtered);\r\n } else {\r\n this._adjustments = value;\r\n this.AdjustmentsSubject.next(this._adjustments);\r\n }\r\n\r\n if (value[0].Status.Message != null) {\r\n this.commitMsg = [];\r\n // this.commitAccrualHistoryAdjustmentsStatusMsg = value[0].Status.Message;\r\n if (value[0].Status.Message.includes('Error')) {\r\n this.commitMsg.push({\r\n severity: 'error',\r\n detail: value[0].Status.Message\r\n });\r\n this.showCommitErrorStatusMsg = true;\r\n this.working = false;\r\n } else {\r\n this.showCommitErrorStatusMsg = false;\r\n }\r\n if (value[0].Status.Message.includes('Warning')) {\r\n this.commitMsg.push({\r\n severity: 'warn',\r\n detail: value[0].Status.Message\r\n });\r\n this.showCommitWarningStatusMsg = true;\r\n this.working = false;\r\n } else {\r\n this.showCommitWarningStatusMsg = false;\r\n }\r\n if (value[0].Status.Message.includes('Success')) {\r\n this.commitMsg.push({\r\n severity: 'success',\r\n detail: value[0].Status.Message\r\n });\r\n this.showCommitSuccessStatusMsg = true;\r\n this.working = false;\r\n } else {\r\n this.showCommitSuccessStatusMsg = false;\r\n }\r\n }\r\n this.historyNameFilterSelectItem = value.map(x => ({\r\n value: x.EmployeeName,\r\n label: x.EmployeeName\r\n }));\r\n this.historyNameFilterSelectItem =\r\n this.historyNameFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.historyVacPeriodFilterSelectItem = value.map(x => ({\r\n value: x.VacAccrualPeriod,\r\n label: x.VacAccrualPeriod\r\n }));\r\n this.historyVacPeriodFilterSelectItem =\r\n this.historyVacPeriodFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.historySickPeriodFilterSelectItem = value.map(x => ({\r\n value: x.SickAccrualPeriod,\r\n label: x.SickAccrualPeriod\r\n }));\r\n this.historySickPeriodFilterSelectItem =\r\n this.historySickPeriodFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.historyPPSFilterSelectItem = value.map(x => ({\r\n value: x.PPS,\r\n label: moment(x.PPS).format('MM/DD/YYYY')\r\n }));\r\n this.historyPPSFilterSelectItem =\r\n this.historyPPSFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.historyPPEFilterSelectItem = value.map(x => ({\r\n value: x.PPE,\r\n label: moment(x.PPE).format('MM/DD/YYYY')\r\n }));\r\n this.historyPPEFilterSelectItem =\r\n this.historyPPEFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.historyUsersSelectItem = value.map(x => ({\r\n value: x.EmployeeListID,\r\n label: x.EmployeeName\r\n }));\r\n this.historyUsersSelectItem = this.historyUsersSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n if (this.IsLoading == true) {\r\n this.displayRecalcText = true;\r\n this.IsLoading = false;\r\n }\r\n\r\n if (this.filteredHistory && this.filteredHistory.length > 0) {\r\n this.LATable.clear();\r\n this.filteredHistory = this._adjustments.filter(x =>\r\n this.selectedUsers.includes(x.EmployeeListID)\r\n );\r\n this.LATable.value = this.filteredHistory;\r\n }\r\n }\r\n }\r\n get adjustments(): Array {\r\n return this._adjustments;\r\n }\r\n\r\n summaryNameFilterSelectItem: SelectItem[];\r\n summarySickPeriodFilterSelectItem: SelectItem[];\r\n summaryVacPeriodFilterSelectItem: SelectItem[];\r\n private SummarySubject = new ReplaySubject>(1);\r\n private _summary: Array;\r\n @Input() set summary(value: Array) {\r\n if (value) {\r\n this._summary = value;\r\n // this._summary.map(x => x.id == x.EmployeeListID);\r\n this._summary.forEach(s => {\r\n if (s.Sick_Accrualperiod && s.Vac_Accrualperiod) {\r\n s.Sick_Accrualperiod = s.Sick_Accrualperiod.toLowerCase();\r\n s.Vac_Accrualperiod = s.Vac_Accrualperiod.toLowerCase();\r\n }\r\n });\r\n this.SummarySubject.next(this._summary);\r\n\r\n this.summaryNameFilterSelectItem = value.map(x => ({\r\n value: x.EmployeeName,\r\n label: x.EmployeeName\r\n }));\r\n this.summaryNameFilterSelectItem =\r\n this.summaryNameFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.summarySickPeriodFilterSelectItem = value.map(x => ({\r\n value: x.Sick_Accrualperiod,\r\n label: x.Sick_Accrualperiod\r\n }));\r\n this.summarySickPeriodFilterSelectItem =\r\n this.summarySickPeriodFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n this.summaryVacPeriodFilterSelectItem = value.map(x => ({\r\n value: x.Vac_Accrualperiod,\r\n label: x.Vac_Accrualperiod\r\n }));\r\n this.summaryVacPeriodFilterSelectItem =\r\n this.summaryVacPeriodFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n }\r\n get summary(): Array {\r\n return this._summary;\r\n }\r\n\r\n LagDaysSubject = new ReplaySubject(1);\r\n private _lagdays: CompanySetting;\r\n @Input() set lagDays(value: CompanySetting) {\r\n if (value) {\r\n this._lagdays = value;\r\n // this._lagdays.filter(x => x.SettingType == \"PayPeriodLagInDays\" && x.CatID == 4);\r\n this.lagDaysValue = this._lagdays.SettingValue;\r\n this.lagDaysLabel = this._lagdays.SettingTypeLabel;\r\n this.LagDaysSubject.next(this._lagdays);\r\n if (this._lagdays.Status.StatusCode == 3) {\r\n this.lagDaysErrorMessage = this._lagdays.Status.Message;\r\n } else {\r\n this.lagDaysErrorMessage = null;\r\n }\r\n }\r\n }\r\n get lagDays(): CompanySetting {\r\n return this._lagdays;\r\n }\r\n\r\n AccrualPeriodsSubject = new ReplaySubject>(1);\r\n private _accrualperiods: Array;\r\n @Input() set accrualPeriods(value: Array) {\r\n if (value && value.length > 0) {\r\n this._accrualperiods = value;\r\n\r\n this.accrualPeriodsSelectItems = this._accrualperiods.map(x => ({\r\n label: x.AccrueLeavePeriod,\r\n value: x.AccrueLeavePeriod\r\n }));\r\n\r\n this.AccrualPeriodsSubject.next(this._accrualperiods);\r\n }\r\n }\r\n get accrualPeriods(): Array {\r\n return this._accrualperiods;\r\n }\r\n\r\n public userInfoSubject = new ReplaySubject(1);\r\n public userSub$: Observable;\r\n @Output() SaveAccrualPeriod = new ReplaySubject(1);\r\n @Output() SaveLagDays = new ReplaySubject(1);\r\n @Output() SaveSummary = new ReplaySubject(1);\r\n @Output() SaveAdjustment = new ReplaySubject(1);\r\n @Output() RecalcAdjustment = new ReplaySubject(1);\r\n @Output() LoadAdjustments = new ReplaySubject>(1);\r\n public editing_LA?: LeaveAdjustment = {} as LeaveAdjustment;\r\n public editing_Summary?: ICurrentLeaveSummary = {} as ICurrentLeaveSummary;\r\n clonedAdjustments: { [i: string]: LeaveAdjustment } = {};\r\n clonedSummary: { [i: string]: ICurrentLeaveSummary } = {};\r\n active = true;\r\n moment: any;\r\n tableScrollHeight = '50em';\r\n prevPayPeriodStart: Date;\r\n prevPayPeriodEnd: Date;\r\n lagDaysValue: string;\r\n lagDaysLabel: string;\r\n PPE: Date;\r\n PPS: Date;\r\n displayRecalcText = false;\r\n recalcText: string;\r\n IsLoading: boolean;\r\n displayAreYouSure = false;\r\n cbxValue = false;\r\n hideZeroCbxValue = true;\r\n\r\n ppsFormGroup: FormGroup;\r\n ppeFormGroup: FormGroup;\r\n empFormGroup: FormGroup;\r\n apFormGroup: FormGroup;\r\n\r\n cols = [\r\n { field: 'PPS', header: 'Pay Period Start' },\r\n { field: 'PPE', header: 'Pay Period End' },\r\n { field: 'EmployeeName', header: 'Name' },\r\n { field: 'VacAccrualPeriod', header: 'Vac Accrual Period' },\r\n { field: 'Vac_HoursSetting', header: 'Vac Hours Setting' },\r\n { field: 'Vac_EarnedRate', header: 'Vac Earned Rate' },\r\n { field: 'Vac_HoursEarned', header: 'Vac Hours Earned' },\r\n { field: 'Vac_HoursEarnedAdjust', header: 'Vac Hours Earned Override' },\r\n { field: 'Vac_EarnedCost', header: 'Vac Earned Cost' },\r\n { field: 'Vac_EarnedCostAdjust', header: 'Vac Earned Cost Override' },\r\n { field: 'Vac_HoursTaken', header: 'Vac Taken' },\r\n { field: 'SickAccrualPeriod', header: 'Sick Accrual Period' },\r\n { field: 'Sick_HoursSetting', header: 'Sick Hours Setting' },\r\n { field: 'Sick_EarnedRate', header: 'Sick Earned Rate' },\r\n { field: 'Sick_HoursEarned', header: 'Sick Hours Earned' },\r\n {\r\n field: 'Sick_HoursEarnedAdjust',\r\n header: 'Sick Hours Earned Override'\r\n },\r\n { field: 'Sick_EarnedCost', header: 'Sick Earned Cost' },\r\n { field: 'Sick_EarnedCostAdjust', header: 'Sick Earned Cost Override' },\r\n { field: 'Sick_HoursTaken', header: 'Sick Taken' }\r\n ];\r\n\r\n @ViewChild('LATable', { static: true }) LATable: Table;\r\n @ViewChild('SummaryTable', { static: true }) SummaryTable: Table;\r\n\r\n activeState = [true, true];\r\n hTabHeight: any;\r\n sTabHeight: any;\r\n\r\n public currencyFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n });\r\n\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n private userStore: Store,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.dateRangeFormGroup = new FormGroup({\r\n dateRange: new FormControl(null)\r\n });\r\n this.ppsFormGroup = new FormGroup({\r\n PPS: new FormControl(null)\r\n });\r\n this.ppeFormGroup = new FormGroup({\r\n PPE: new FormControl(null)\r\n });\r\n this.empFormGroup = new FormGroup({\r\n Employee: new FormControl(null)\r\n });\r\n this.apFormGroup = new FormGroup({\r\n AccrualPeriod: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.handleOnOpen([0, 1]);\r\n this.currentLeaveSummaryElements =\r\n document.getElementsByClassName('p-header-cell');\r\n this.leaveHistoryElements =\r\n document.getElementsByClassName('p-header-cell');\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n onColumnResize_hist($event) {\r\n const table = document.querySelectorAll('table')[1];\r\n columnResize($event, 5, table);\r\n }\r\n onColumnResize_summary($event) {\r\n const table = document.querySelectorAll('table')[0];\r\n columnResize($event, 6, table);\r\n }\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentPresenterComponent:setupObservables'\r\n });\r\n this.userSub$ = this.userStore.pipe(\r\n takeWhile(_ => this.active),\r\n select(fromUser.getUser)\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n this.userSub$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentPresenterComponent:userSub$',\r\n x\r\n })\r\n ),\r\n filter(x => !!x)\r\n )\r\n .subscribe(user => {\r\n this.userInfoSubject.next(user.userInfo);\r\n this.usingIntuitPayroll =\r\n user.userInfo.UsingIntuitPayroll ?? false;\r\n this.prevPayPeriodStart = user.userInfo.PrevPayPeriodStart;\r\n this.prevPayPeriodEnd = user.userInfo.PrevPayPeriodEnd;\r\n this.dateRangeFormGroup.controls['dateRange'].patchValue([\r\n new Date(this.prevPayPeriodStart),\r\n new Date(this.prevPayPeriodEnd)\r\n ]);\r\n this.PPS = this.prevPayPeriodStart;\r\n this.PPE = this.prevPayPeriodEnd;\r\n this.leaveInfo = user.userInfo.LeaveAccrualInfo;\r\n });\r\n // this.AdjustmentsSubject.pipe(\r\n // takeWhile(() => this.active)\r\n // ).subscribe(adjustments => { });\r\n this.dateRangeFormGroup.controls['dateRange'].valueChanges\r\n .pipe(\r\n tap(value =>\r\n this.log.verbose({\r\n type: 'dateRangeFormGroup:valueChanges',\r\n value\r\n })\r\n ),\r\n takeWhile(_ => this.active)\r\n )\r\n .subscribe(value => {\r\n this.LoadAdjustments.next(value);\r\n if (moment(value[0]).isValid() && moment(value[1]).isValid()) {\r\n this.PPS = value[0];\r\n this.PPE = value[1];\r\n this.displayRecalcText = false;\r\n this.recalcText = '';\r\n }\r\n });\r\n }\r\n\r\n // vacAccrualPeriodValueChanged(value) {\r\n // this.SaveAccrualPeriod.next(value);\r\n // }\r\n\r\n // sickAccrualPeriodValueChanged(value) {\r\n // this.SaveAccrualPeriod.next(value);\r\n // }\r\n\r\n // findAccrualPeriod(rowData: ICurrentLeaveSummary): string {\r\n // if (rowData.Accr != null) {\r\n // if (rowData.CostCenterID === 0) {\r\n // return \"\";\r\n // } else {\r\n // const cc = this.userGroups.find(\r\n // x => x.GroupID === rowData.CostCenterID\r\n // );\r\n // return cc.GroupName;\r\n // }\r\n // } else {\r\n // return '';\r\n // }\r\n // }\r\n\r\n onUpdateLagDaysClicked() {\r\n this.lagDays.SettingValue = this.lagDaysValue;\r\n const data: CompanySetting = {\r\n CatID: this.lagDays.CatID,\r\n CatDescription: this.lagDays.CatDescription,\r\n SettingType: this.lagDays.SettingType,\r\n SettingTypeLabel: this.lagDays.SettingTypeLabel,\r\n SettingValue: this.lagDaysValue,\r\n CtrlType: this.lagDays.CtrlType,\r\n Validation: this.lagDays.Validation,\r\n Isconfirmrequired: this.lagDays.Isconfirmrequired,\r\n Isreadonly: this.lagDays.Isreadonly,\r\n Status: this.lagDays.Status,\r\n Row_Version: this.lagDays.Row_Version\r\n };\r\n this.SaveLagDays.next(data);\r\n }\r\n\r\n // ----------------------Current Leave Summary Table-------------------------------\r\n onEmployeeSelected(value) {\r\n this.selectedEmployeeListID = value.data.EmployeeListID;\r\n\r\n if (this.oldValue) {\r\n const s1_oldRow = document.getElementById(\r\n `row-1-${this.oldValue.data.EmployeeListID.toString()}`\r\n );\r\n if (s1_oldRow) {\r\n s1_oldRow.classList.remove('highlight');\r\n }\r\n const s_oldRow = document.getElementById(\r\n `row-${this.oldValue.data.EmployeeListID.toString()}`\r\n );\r\n if (s_oldRow) {\r\n s_oldRow.classList.remove('highlight');\r\n }\r\n }\r\n\r\n const s1_row = document.getElementById(\r\n `row-1-${value.data.EmployeeListID.toString()}`\r\n );\r\n if (!s1_row) {\r\n return;\r\n }\r\n s1_row.classList.add('highlight');\r\n\r\n const s_row = document.getElementById(\r\n `row-${value.data.EmployeeListID.toString()}`\r\n );\r\n if (!s_row) {\r\n return;\r\n }\r\n s_row.classList.add('highlight');\r\n this.oldValue = value;\r\n if (this.filteredAdjustments) {\r\n if (this.filteredAdjustments.length > 0) {\r\n const oldRow = document.getElementById(\r\n `row-${this.filteredAdjustments[0].Uniqueid.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n }\r\n const oldRow1 = document.getElementById(\r\n `row-1-${this.filteredAdjustments[0].Uniqueid.toString()}`\r\n );\r\n if (oldRow1) {\r\n oldRow1.classList.remove('highlight');\r\n }\r\n\r\n this.filteredAdjustments = this.adjustments.filter(\r\n x => x.EmployeeListID == this.selectedEmployeeListID\r\n );\r\n if (this.filteredAdjustments.length > 0) {\r\n const f_row = document.getElementById(\r\n `row-1-${this.filteredAdjustments[0].Uniqueid.toString()}`\r\n );\r\n if (!f_row) {\r\n return;\r\n }\r\n f_row.classList.add('highlight');\r\n const row = document.getElementById(\r\n `row-${this.filteredAdjustments[0].Uniqueid.toString()}`\r\n );\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n this.log.verbose(row);\r\n }\r\n }\r\n }\r\n\r\n this.filteredAdjustments = this.adjustments.filter(\r\n x => x.EmployeeListID == this.selectedEmployeeListID\r\n );\r\n if (this.filteredAdjustments.length > 0) {\r\n const f_row = document.getElementById(\r\n `row-1-${this.filteredAdjustments[0].Uniqueid.toString()}`\r\n );\r\n if (!f_row) {\r\n return;\r\n }\r\n f_row.classList.add('highlight');\r\n const row = document.getElementById(\r\n `row-${this.filteredAdjustments[0].Uniqueid.toString()}`\r\n );\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n this.log.verbose(row);\r\n }\r\n }\r\n\r\n confirmSave() {\r\n this.SaveSummary.next(this.dataForAreYouSure);\r\n delete this.clonedSummary[this.dataForAreYouSure.EmployeeListID];\r\n delete this.editing_Summary;\r\n this.log.verbose('onRowEditSave_Summary');\r\n this.showAreYouSure = false;\r\n }\r\n\r\n cancelSave() {\r\n this.summary.splice(\r\n this.indexForAreYouSure,\r\n 1,\r\n this.clonedSummary[this.dataForAreYouSure.EmployeeListID]\r\n );\r\n delete this.clonedSummary[this.dataForAreYouSure.EmployeeListID];\r\n delete this.editing_Summary;\r\n this.showAreYouSure = false;\r\n }\r\n\r\n onEditInit_Summary($event: { data: ICurrentLeaveSummary }) {\r\n this.editing_Summary = { ...$event.data };\r\n }\r\n\r\n onRowEditInit_Summary(rowData: ICurrentLeaveSummary) {\r\n this.clonedSummary[rowData.EmployeeListID] = { ...rowData };\r\n this.editing_Summary = rowData;\r\n this.log.verbose('onRowEditInit_Summary');\r\n }\r\n\r\n onRowEditSave_Summary(rowData: ICurrentLeaveSummary) {\r\n // let data = this.summary.find(x => x == rowData);\r\n if (rowData.PolicyTitle != null) {\r\n if (\r\n rowData.Vac_Accrualperiod !=\r\n this.clonedSummary[rowData.EmployeeListID]\r\n .Vac_Accrualperiod ||\r\n rowData.Vac_Accrualperiodvalue !=\r\n this.clonedSummary[rowData.EmployeeListID]\r\n .Vac_Accrualperiodvalue ||\r\n rowData.Vac_HoursMax !=\r\n this.clonedSummary[rowData.EmployeeListID].Vac_HoursMax ||\r\n rowData.Sick_Accrualperiod !=\r\n this.clonedSummary[rowData.EmployeeListID]\r\n .Sick_Accrualperiod ||\r\n rowData.Sick_Accrualperiodvalue !=\r\n this.clonedSummary[rowData.EmployeeListID]\r\n .Sick_Accrualperiodvalue ||\r\n rowData.Sick_HoursMax !=\r\n this.clonedSummary[rowData.EmployeeListID].Sick_HoursMax\r\n ) {\r\n this.showAreYouSure = true;\r\n this.dataForAreYouSure = rowData;\r\n this.indexForAreYouSure = this.summary.findIndex(\r\n x => x.EmployeeListID == rowData.EmployeeListID\r\n );\r\n } else {\r\n this.SaveSummary.next(rowData);\r\n delete this.clonedSummary[rowData.EmployeeListID];\r\n delete this.editing_Summary;\r\n this.log.verbose('onRowEditSave_Summary');\r\n }\r\n } else {\r\n this.SaveSummary.next(rowData);\r\n delete this.clonedSummary[rowData.EmployeeListID];\r\n delete this.editing_Summary;\r\n this.log.verbose('onRowEditSave_Summary');\r\n }\r\n }\r\n\r\n onRowEditCancel_Summary(rowData: ICurrentLeaveSummary, index: number) {\r\n this.summary.splice(\r\n index,\r\n 1,\r\n this.clonedSummary[rowData.EmployeeListID]\r\n );\r\n delete this.clonedSummary[rowData.EmployeeListID];\r\n delete this.editing_Summary;\r\n this.log.verbose('onRowEditCancel_Summary');\r\n }\r\n\r\n // downloadClicked() {\r\n // this.LATable.exportCSV();\r\n // }\r\n\r\n // exportExcel() {\r\n // import(\"xlsx\").then(xlsx => {\r\n // const worksheet = xlsx.utils.json_to_sheet(this.adjustments);\r\n // const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n // const excelBuffer: any = xlsx.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n // this.saveAsExcelFile(excelBuffer, \" LeaveHistory\");\r\n // });\r\n // }\r\n\r\n // saveAsExcelFile(buffer: any, fileName: string): void {\r\n // import(\"file-saver\").then(FileSaver => {\r\n // let EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n // let EXCEL_EXTENSION = '.xlsx';\r\n // const data: Blob = new Blob([buffer], {\r\n // type: EXCEL_TYPE\r\n // });\r\n // FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);\r\n // });\r\n // }\r\n\r\n // --------------------------LeaveAdjustment Table---------------------------------\r\n onEditInit($event: { data: LeaveAdjustment }) {\r\n this.editing_LA = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: LeaveAdjustment) {\r\n this.clonedAdjustments[rowData.Uniqueid] = { ...rowData };\r\n this.editing_LA = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: LeaveAdjustment) {\r\n this.SaveAdjustment.next(rowData);\r\n delete this.clonedAdjustments[rowData.Uniqueid];\r\n delete this.editing_LA;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: LeaveAdjustment) {\r\n const index = this.adjustments.findIndex(\r\n x => x.Uniqueid === item.Uniqueid\r\n );\r\n if (index >= 0) {\r\n this.adjustments.splice(\r\n index,\r\n 1,\r\n this.clonedAdjustments[item.Uniqueid]\r\n );\r\n }\r\n this.adjustments = [...this.adjustments];\r\n\r\n delete this.clonedAdjustments[item.Uniqueid];\r\n delete this.editing_LA;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n commitAccrualHistoryAdjustments() {\r\n this.SaveAdjustment.next({\r\n ...this.adjustments[0],\r\n RebuildEmployeeAccrual: true\r\n });\r\n this.working = true;\r\n }\r\n\r\n showOnlyAdjustedAccruals(event) {\r\n if (event.checked === true) {\r\n this.LATable.clear();\r\n this.ppsFormGroup.controls['PPS'].reset();\r\n this.ppeFormGroup.controls['PPE'].reset();\r\n this.empFormGroup.controls['Employee'].reset();\r\n this.apFormGroup.controls['AccrualPeriod'].reset();\r\n const filtered = [] as LeaveAdjustment[];\r\n const filteredbyusers = this.defaultAdj.filter(\r\n item1 =>\r\n !!this.selectedUsers.find(\r\n item2 => item1.EmployeeListID === item2\r\n )\r\n );\r\n const filteredadj = filteredbyusers.filter(\r\n x =>\r\n x.Vac_HoursEarnedAdjust != null ||\r\n x.Vac_EarnedCostAdjust != null ||\r\n x.Sick_HoursEarnedAdjust != null ||\r\n x.Sick_EarnedCostAdjust != null\r\n );\r\n if (this.hideZeroCbxValue == true) {\r\n filteredadj.forEach(x => {\r\n if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust == null\r\n ) {\r\n //do not display\r\n } else if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust != null\r\n ) {\r\n filtered.push(x);\r\n } else {\r\n filtered.push(x);\r\n }\r\n });\r\n\r\n this.LATable.value = filtered;\r\n } else {\r\n this.LATable.value = filteredadj;\r\n }\r\n } else {\r\n const filtered = [] as LeaveAdjustment[];\r\n const filteredbyusers = this.defaultAdj.filter(\r\n item1 =>\r\n !!this.selectedUsers.find(\r\n item2 => item1.EmployeeListID === item2\r\n )\r\n );\r\n if (this.hideZeroCbxValue == true) {\r\n filteredbyusers.forEach(x => {\r\n if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust == null\r\n ) {\r\n //do not display\r\n } else if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust != null\r\n ) {\r\n filtered.push(x);\r\n } else {\r\n filtered.push(x);\r\n }\r\n });\r\n this.LATable.value = filtered;\r\n } else {\r\n this.LATable.value = filteredbyusers;\r\n }\r\n //this.LATable.value = this.defaultAdj;\r\n }\r\n }\r\n\r\n hideZeroAccrualRecords(event) {\r\n if (event.checked === true) {\r\n this.LATable.clear();\r\n this.ppsFormGroup.controls['PPS'].reset();\r\n this.ppeFormGroup.controls['PPE'].reset();\r\n this.empFormGroup.controls['Employee'].reset();\r\n this.apFormGroup.controls['AccrualPeriod'].reset();\r\n\r\n let filtered = [] as LeaveAdjustment[];\r\n\r\n let filteredbyusers;\r\n if (this.selectedUsers) {\r\n filteredbyusers = this.defaultAdj.filter(\r\n item1 =>\r\n !!this.selectedUsers.find(\r\n item2 => item1.EmployeeListID === item2\r\n )\r\n );\r\n\r\n } else {\r\n filteredbyusers = this.defaultAdj;\r\n }\r\n\r\n // const filteredbyusers = this.defaultAdj.filter(\r\n // item1 =>\r\n // !!this.selectedUsers.find(\r\n // item2 => item1.EmployeeListID === item2\r\n // )\r\n // );\r\n\r\n // let filtered = this.defaultAdj.filter(\r\n // x => x.Vac_HoursEarned != 0 || x.Sick_HoursEarned != 0\r\n // );\r\n // filtered = filtered.filter(x => x.Vac_HoursEarnedAdjust != null || x.Sick_HoursEarnedAdjust != null);\r\n\r\n filteredbyusers.forEach(x => {\r\n if (x.Vac_HoursEarned == 0 && x.Vac_HoursEarnedAdjust == null) {\r\n //do not display\r\n } else if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust != null\r\n ) {\r\n filtered.push(x);\r\n } else {\r\n filtered.push(x);\r\n }\r\n });\r\n\r\n if (this.cbxValue == true) {\r\n filtered = filtered.filter(\r\n x =>\r\n x.Vac_HoursEarnedAdjust != null ||\r\n x.Vac_EarnedCostAdjust != null ||\r\n x.Sick_HoursEarnedAdjust != null ||\r\n x.Sick_EarnedCostAdjust != null\r\n );\r\n }\r\n if (this.selectedUsers) {\r\n var topFilter = this.adjustments.filter(\r\n x =>\r\n x.Vac_HoursEarnedAdjust != null ||\r\n x.Vac_EarnedCostAdjust != null ||\r\n x.Sick_HoursEarnedAdjust != null ||\r\n x.Sick_EarnedCostAdjust != null\r\n );\r\n this.historyUsersSelectItem = topFilter.map(x => ({\r\n value: x.EmployeeListID,\r\n label: x.EmployeeName\r\n }));\r\n } else {\r\n this.historyUsersSelectItem = filtered.map(x => ({\r\n value: x.EmployeeListID,\r\n label: x.EmployeeName\r\n }));\r\n }\r\n\r\n\r\n this.LATable.value = filtered;\r\n } else {\r\n let filteredbyusers;\r\n if (this.selectedUsers) {\r\n filteredbyusers = this.defaultAdj.filter(\r\n item1 =>\r\n !!this.selectedUsers.find(\r\n item2 => item1.EmployeeListID === item2\r\n )\r\n );\r\n\r\n } else {\r\n filteredbyusers = this.defaultAdj;\r\n }\r\n // let filteredbyusers = this.defaultAdj.filter(\r\n // item1 =>\r\n // !!this.selectedUsers.find(\r\n // item2 => item1.EmployeeListID === item2\r\n // )\r\n // );\r\n\r\n if (this.cbxValue == true) {\r\n filteredbyusers = filteredbyusers.filter(\r\n x =>\r\n x.Vac_HoursEarnedAdjust != null ||\r\n x.Vac_EarnedCostAdjust != null ||\r\n x.Sick_HoursEarnedAdjust != null ||\r\n x.Sick_EarnedCostAdjust != null\r\n );\r\n }\r\n\r\n this.historyUsersSelectItem = this.defaultAdj.map(x => ({\r\n value: x.EmployeeListID,\r\n label: x.EmployeeName\r\n }));\r\n\r\n this.LATable.value = filteredbyusers;\r\n }\r\n }\r\n\r\n recalcAccruals() {\r\n this.displayAreYouSure = true;\r\n }\r\n\r\n areYouSureConfirmed() {\r\n this.displayAreYouSure = false;\r\n this.IsLoading = true;\r\n this.RecalcAdjustment.next({\r\n id: null,\r\n Uniqueid: null,\r\n EmployeeName: null,\r\n EmployeeListID: null,\r\n PPS: this.PPS,\r\n PPE: this.PPE,\r\n VacAccrualPeriod: null,\r\n Vac_HoursSetting: null,\r\n Vac_EarnedRate: null,\r\n Vac_HoursEarned: null,\r\n Vac_EarnedCost: null,\r\n Vac_EarnedCostAdjust: null,\r\n Vac_HoursTaken: null,\r\n Vac_HoursEarnedAdjust: null,\r\n SickAccrualPeriod: null,\r\n Sick_HoursSetting: null,\r\n Sick_EarnedRate: null,\r\n Sick_HoursEarned: null,\r\n Sick_EarnedCost: null,\r\n Sick_EarnedCostAdjust: null,\r\n Sick_HoursTaken: null,\r\n Sick_HoursEarnedAdjust: null,\r\n RecalculateEmployeeLeave: true,\r\n RebuildEmployeeAccrual: null,\r\n Status: null\r\n } as unknown as LeaveAdjustment);\r\n this.recalcText = `Employee leave accruals recalculated for PPE between ${moment(\r\n this.PPS\r\n ).format('MM/DD/YYYY')} and ${moment(this.PPE).format('MM/DD/YYYY')}`;\r\n // this.displayRecalcText = true;\r\n }\r\n\r\n areYouSureCancelled() {\r\n this.displayAreYouSure = false;\r\n }\r\n\r\n filterLATable($event, filterType) {\r\n // use this for all table filters\r\n if (filterType == 'pps') {\r\n this.LATable.filter($event.value, 'PPS', 'in');\r\n } else if (filterType == 'ppe') {\r\n this.LATable.filter($event.value, 'PPE', 'in');\r\n } else if (filterType == 'name') {\r\n this.LATable.filter($event.value, 'EmployeeName', 'in');\r\n } else if (filterType == 'sickperiod') {\r\n this.LATable.filter($event.value, 'SickAccrualPeriod', 'in');\r\n } else if (filterType == 'vacperiod') {\r\n this.LATable.filter($event.value, 'VacAccrualPeriod', 'in');\r\n }\r\n }\r\n\r\n filterSummaryTable($event, filterType) {\r\n // use this for all table filters\r\n if (filterType == 'name') {\r\n this.SummaryTable.filter($event.value, 'EmployeeName', 'in');\r\n }\r\n }\r\n\r\n handleOnOpen($event) {\r\n const baseHeight = '36vh';\r\n let accHeight = 0;\r\n if ($event.length === 1) {\r\n accHeight += 36;\r\n } else {\r\n accHeight += 0;\r\n }\r\n\r\n if (this.activeState[0]) {\r\n this.sTabHeight = `calc(${baseHeight} + ${accHeight}vh)`;\r\n }\r\n if (this.activeState[1]) {\r\n this.hTabHeight = `calc(${baseHeight} + ${accHeight}vh)`;\r\n }\r\n\r\n // this.SummaryTable.scrollHeight = `calc(${baseHeight} + ${accHeight}em)`;\r\n this.log.verbose({\r\n type: 'LeaveAdjustmentComponent:handleOnOpen',\r\n $event,\r\n scrollHeight: this.SummaryTable.scrollHeight\r\n });\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n onSelectedChargeNumberTab($event) {\r\n if ($event === true) {\r\n const event = [] as number[];\r\n if (this.activeState[0]) {\r\n event.push(0);\r\n }\r\n if (this.activeState[1]) {\r\n event.push(1);\r\n }\r\n\r\n setTimeout(() => {\r\n this.handleOnOpen(event);\r\n }, 0);\r\n }\r\n }\r\n\r\n onChangeUser($event) {\r\n //need to filter for hide 0\r\n this.selectedUsers = $event.value;\r\n let filtered = [] as LeaveAdjustment[];\r\n if (this.hideZeroCbxValue == true) {\r\n this.filteredHistory = this.defaultAdj.filter(x =>\r\n $event.value.includes(x.EmployeeListID)\r\n );\r\n this.filteredHistory.forEach(x => {\r\n if (x.Vac_HoursEarned == 0 && x.Vac_HoursEarnedAdjust == null) {\r\n //do not display\r\n } else if (\r\n x.Vac_HoursEarned == 0 &&\r\n x.Vac_HoursEarnedAdjust != null\r\n ) {\r\n filtered.push(x);\r\n } else {\r\n filtered.push(x);\r\n }\r\n });\r\n if (this.cbxValue == true) {\r\n filtered = filtered.filter(\r\n x =>\r\n x.Vac_HoursEarnedAdjust != null ||\r\n x.Vac_EarnedCostAdjust != null ||\r\n x.Sick_HoursEarnedAdjust != null ||\r\n x.Sick_EarnedCostAdjust != null\r\n );\r\n }\r\n this.filteredHistory = filtered;\r\n //this.filteredHistory = this.filteredHistory.filter(x => x.Vac_HoursEarned != 0 || x.Sick_HoursEarned != 0);\r\n //this.filteredHistory = this.filteredHistory.filter(x => x.Vac_HoursEarnedAdjust == null || x.Sick_HoursEarnedAdjust == null);\r\n } else {\r\n this.filteredHistory = this.defaultAdj.filter(x =>\r\n $event.value.includes(x.EmployeeListID)\r\n );\r\n\r\n if (this.cbxValue == true) {\r\n this.filteredHistory = this.filteredHistory.filter(\r\n x =>\r\n x.Vac_HoursEarnedAdjust != null ||\r\n x.Vac_EarnedCostAdjust != null ||\r\n x.Sick_HoursEarnedAdjust != null ||\r\n x.Sick_EarnedCostAdjust != null\r\n );\r\n }\r\n }\r\n this.LATable.value = this.filteredHistory;\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { ICurrentLeaveSummary } from '../ICurrentLeaveSummary';\r\n\r\nexport const getSummary = createAction(\r\n '[CurrentLeaveSummary/API] Get Current Leave Summary',\r\n props<{ employeeListID: string }>()\r\n);\r\n\r\nexport const putSummary = createAction(\r\n '[CurrentLeaveSummary/API] PUT Current Leave Summary',\r\n props<{ summary: Array}>()\r\n);\r\n\r\nexport const loadCurrentLeaveSummarys = createAction(\r\n '[CurrentLeaveSummary/API] Load CurrentLeaveSummarys',\r\n props<{ currentLeaveSummarys: ICurrentLeaveSummary[] }>()\r\n);\r\n\r\nexport const addCurrentLeaveSummary = createAction(\r\n '[CurrentLeaveSummary/API] Add CurrentLeaveSummary',\r\n props<{ currentLeaveSummary: ICurrentLeaveSummary }>()\r\n);\r\n\r\nexport const upsertCurrentLeaveSummary = createAction(\r\n '[CurrentLeaveSummary/API] Upsert CurrentLeaveSummary',\r\n props<{ currentLeaveSummary: ICurrentLeaveSummary }>()\r\n);\r\n\r\nexport const addCurrentLeaveSummarys = createAction(\r\n '[CurrentLeaveSummary/API] Add CurrentLeaveSummarys',\r\n props<{ currentLeaveSummarys: ICurrentLeaveSummary[] }>()\r\n);\r\n\r\nexport const upsertCurrentLeaveSummarys = createAction(\r\n '[CurrentLeaveSummary/API] Upsert CurrentLeaveSummarys',\r\n props<{ currentLeaveSummarys: ICurrentLeaveSummary[] }>()\r\n);\r\n\r\nexport const updateCurrentLeaveSummary = createAction(\r\n '[CurrentLeaveSummary/API] Update CurrentLeaveSummary',\r\n props<{ currentLeaveSummary: Update }>()\r\n);\r\n\r\nexport const updateCurrentLeaveSummarys = createAction(\r\n '[CurrentLeaveSummary/API] Update CurrentLeaveSummarys',\r\n props<{ currentLeaveSummarys: Update[] }>()\r\n);\r\n\r\nexport const deleteCurrentLeaveSummary = createAction(\r\n '[CurrentLeaveSummary/API] Delete CurrentLeaveSummary',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteCurrentLeaveSummarys = createAction(\r\n '[CurrentLeaveSummary/API] Delete CurrentLeaveSummarys',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearCurrentLeaveSummarys = createAction(\r\n '[CurrentLeaveSummary/API] Clear CurrentLeaveSummarys'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { LeaveAdjustmentService } from '../leave-adjustment.service';\r\nimport * as CurrentLeaveSummaryActions from './current-leave-summary.actions';\r\nimport * as fromErrors from '../../shared';\r\nimport {\r\n ResponseStatus,\r\n IStatusMessage,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { catchError, concatMap, flatMap, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class CurrentLeaveSummaryEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: LeaveAdjustmentService\r\n ) {}\r\n\r\n getSummary$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(CurrentLeaveSummaryActions.getSummary),\r\n switchMap(a =>\r\n this.service.getSummary(a.employeeListID).pipe(\r\n flatMap(resp => [\r\n CurrentLeaveSummaryActions.upsertCurrentLeaveSummarys({\r\n currentLeaveSummarys: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.EmployeeListID)\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putSummary$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(CurrentLeaveSummaryActions.putSummary),\r\n switchMap(a =>\r\n this.service.putSummary(a.summary).pipe(\r\n flatMap(c => [\r\n CurrentLeaveSummaryActions.updateCurrentLeaveSummarys({\r\n currentLeaveSummarys: [\r\n {\r\n id: a.summary\r\n .map(x => x.EmployeeListID)\r\n .toString(),\r\n changes: c.Items[0]\r\n }\r\n ]\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.EmployeeListID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.Items\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n // [\r\n // ...c.ErrorMessages.map(\r\n // x =>\r\n // ({\r\n // StatusCode: -1,\r\n // Message: x,\r\n // MsgProcessID: 0,\r\n // MsgEntityID: ''\r\n // } as IStatusMessage)\r\n // ),\r\n // ...c.Items.filter(\r\n // x =>\r\n // x &&\r\n // x.Status.StatusCode >=\r\n // DisplayMessageMinimum\r\n // ).map(x => x.Status)\r\n // ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { ICurrentLeaveSummary } from '../ICurrentLeaveSummary';\r\nimport * as CurrentLeaveSummaryActions from './current-leave-summary.actions';\r\n\r\nexport const currentLeaveSummariesFeatureKey = 'currentLeaveSummaries';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: ICurrentLeaveSummary) => model.EmployeeListID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst currentLeaveSummaryReducer = createReducer(\r\n initialState,\r\n on(CurrentLeaveSummaryActions.addCurrentLeaveSummary, (state, action) =>\r\n adapter.addOne(action.currentLeaveSummary, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.upsertCurrentLeaveSummary, (state, action) =>\r\n adapter.upsertOne(action.currentLeaveSummary, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.addCurrentLeaveSummarys, (state, action) =>\r\n adapter.addMany(action.currentLeaveSummarys, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.upsertCurrentLeaveSummarys, (state, action) =>\r\n adapter.upsertMany(action.currentLeaveSummarys, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.updateCurrentLeaveSummary, (state, action) =>\r\n adapter.updateOne(action.currentLeaveSummary, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.updateCurrentLeaveSummarys, (state, action) =>\r\n adapter.updateMany(action.currentLeaveSummarys, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.deleteCurrentLeaveSummary, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.deleteCurrentLeaveSummarys, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.loadCurrentLeaveSummarys, (state, action) =>\r\n adapter.setAll(action.currentLeaveSummarys, state)\r\n ),\r\n on(CurrentLeaveSummaryActions.clearCurrentLeaveSummarys, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return currentLeaveSummaryReducer(state, action);\r\n}\r\n\r\nexport const selectCurrentLeaveSummaryState = createFeatureSelector(\r\n currentLeaveSummariesFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectCurrentLeaveSummaryState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { LeaveAdjustment } from '../ILeaveAdjustment';\r\n\r\nexport const getAdjustments = createAction(\r\n '[LeaveAdjustment/API] Get LeaveAdjustments',\r\n props<{ PPS?: string, PPE?: string }>()\r\n);\r\n\r\nexport const putRecalcAdjustments = createAction(\r\n '[LeaveAdjustment/API] PUT Recalc LeaveAdjustments',\r\n props<{ adjustments: Array}>()\r\n);\r\n\r\nexport const putAdjustments = createAction(\r\n '[LeaveAdjustment/API] PUT LeaveAdjustments',\r\n props<{ adjustments: Array}>()\r\n);\r\n\r\nexport const loadLeaveAdjustments = createAction(\r\n '[LeaveAdjustment/API] Load LeaveAdjustments',\r\n props<{ leaveAdjustments: LeaveAdjustment[] }>()\r\n);\r\n\r\nexport const addLeaveAdjustment = createAction(\r\n '[LeaveAdjustment/API] Add LeaveAdjustment',\r\n props<{ leaveAdjustment: LeaveAdjustment }>()\r\n);\r\n\r\nexport const upsertLeaveAdjustment = createAction(\r\n '[LeaveAdjustment/API] Upsert LeaveAdjustment',\r\n props<{ leaveAdjustment: LeaveAdjustment }>()\r\n);\r\n\r\nexport const addLeaveAdjustments = createAction(\r\n '[LeaveAdjustment/API] Add LeaveAdjustments',\r\n props<{ leaveAdjustments: LeaveAdjustment[] }>()\r\n);\r\n\r\nexport const upsertLeaveAdjustments = createAction(\r\n '[LeaveAdjustment/API] Upsert LeaveAdjustments',\r\n props<{ leaveAdjustments: LeaveAdjustment[] }>()\r\n);\r\n\r\nexport const updateLeaveAdjustment = createAction(\r\n '[LeaveAdjustment/API] Update LeaveAdjustment',\r\n props<{ leaveAdjustment: Update }>()\r\n);\r\n\r\nexport const updateLeaveAdjustments = createAction(\r\n '[LeaveAdjustment/API] Update LeaveAdjustments',\r\n props<{ leaveAdjustments: Update[] }>()\r\n);\r\n\r\nexport const deleteLeaveAdjustment = createAction(\r\n '[LeaveAdjustment/API] Delete LeaveAdjustment',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteLeaveAdjustments = createAction(\r\n '[LeaveAdjustment/API] Delete LeaveAdjustments',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearLeaveAdjustments = createAction(\r\n '[LeaveAdjustment/API] Clear LeaveAdjustments'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { LeaveAdjustmentService } from '../leave-adjustment.service';\r\nimport * as LeaveAdjustmentActions from './leave-adjustment.actions';\r\nimport * as CurrentLeaveSummaryActions from './current-leave-summary.actions';\r\nimport * as fromErrors from '../../shared';\r\nimport {\r\n ResponseStatus,\r\n IStatusMessage,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { catchError, concatMap, flatMap, switchMap } from 'rxjs/operators';\r\nimport { LeaveAdjustment } from '../ILeaveAdjustment';\r\n\r\n@Injectable()\r\nexport class LeaveAdjustmentEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: LeaveAdjustmentService\r\n ) {}\r\n\r\n getAdjustments$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(LeaveAdjustmentActions.getAdjustments),\r\n switchMap(a =>\r\n this.service.getAdjustments(a.PPS, a.PPE).pipe(\r\n flatMap(resp => [\r\n LeaveAdjustmentActions.loadLeaveAdjustments({\r\n leaveAdjustments: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.Uniqueid)\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putRecalcAdjustments$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(LeaveAdjustmentActions.putRecalcAdjustments),\r\n switchMap(a =>\r\n this.service.putAdjustments(a.adjustments).pipe(\r\n flatMap(c => [\r\n LeaveAdjustmentActions.upsertLeaveAdjustments({\r\n leaveAdjustments: c.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Uniqueid.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n putAdjustments$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(LeaveAdjustmentActions.putAdjustments),\r\n switchMap(a =>\r\n this.service.putAdjustments(a.adjustments).pipe(\r\n flatMap(c => [\r\n LeaveAdjustmentActions.updateLeaveAdjustments({\r\n leaveAdjustments: [\r\n {\r\n id: a.adjustments\r\n .map(x => x.Uniqueid)\r\n .toString(),\r\n changes: c.Items[0]\r\n }\r\n ]\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Uniqueid.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n CurrentLeaveSummaryActions.getSummary({employeeListID: a.adjustments[0].EmployeeListID})\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { LeaveAdjustment } from '../ILeaveAdjustment';\r\nimport * as LeaveAdjustmentActions from './leave-adjustment.actions';\r\n\r\nexport const leaveAdjustmentsFeatureKey = 'leaveAdjustments';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: LeaveAdjustment) => model.Uniqueid\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst leaveAdjustmentReducer = createReducer(\r\n initialState,\r\n on(LeaveAdjustmentActions.addLeaveAdjustment, (state, action) =>\r\n adapter.addOne(action.leaveAdjustment, state)\r\n ),\r\n on(LeaveAdjustmentActions.upsertLeaveAdjustment, (state, action) =>\r\n adapter.upsertOne(action.leaveAdjustment, state)\r\n ),\r\n on(LeaveAdjustmentActions.addLeaveAdjustments, (state, action) =>\r\n adapter.addMany(action.leaveAdjustments, state)\r\n ),\r\n on(LeaveAdjustmentActions.upsertLeaveAdjustments, (state, action) =>\r\n adapter.upsertMany(action.leaveAdjustments, state)\r\n ),\r\n on(LeaveAdjustmentActions.updateLeaveAdjustment, (state, action) =>\r\n adapter.updateOne(action.leaveAdjustment, state)\r\n ),\r\n on(LeaveAdjustmentActions.updateLeaveAdjustments, (state, action) =>\r\n adapter.updateMany(action.leaveAdjustments, state)\r\n ),\r\n on(LeaveAdjustmentActions.deleteLeaveAdjustment, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(LeaveAdjustmentActions.deleteLeaveAdjustments, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(LeaveAdjustmentActions.loadLeaveAdjustments, (state, action) =>\r\n adapter.setAll(action.leaveAdjustments, state)\r\n ),\r\n on(LeaveAdjustmentActions.clearLeaveAdjustments, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return leaveAdjustmentReducer(state, action);\r\n}\r\n\r\nexport const selectLeaveAdjustmentState = createFeatureSelector(\r\n leaveAdjustmentsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectLeaveAdjustmentState);\r\n","export * from './leave-request.feature';\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { LeaveRequest, LeaveRequestStatus } from '../store/leave-request.model';\r\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\r\nimport { Process } from '../../shared';\r\nimport {\r\n takeWhile,\r\n map,\r\n withLatestFrom,\r\n tap,\r\n filter,\r\n distinctUntilChanged\r\n} from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserInfo, UserRoleEnum, IUserColor } from '../../user-info';\r\nimport { IDirectReport } from '../../lookups';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport * as moment from 'moment';\r\nimport * as fromStore from '../store';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromErrors from '../../shared';\r\nimport * as fromUser from '../../user-info';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromCompanySetting from '../../company-setting';\r\nimport { PayrollItem } from '../../payroll/item';\r\n\r\n@Component({\r\n selector: 'ef-leave-request-feature',\r\n templateUrl: './leave-request.feature.html',\r\n styleUrls: ['./leave-request.feature.scss']\r\n})\r\nexport class LeaveRequestFeatureComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n\r\n leaverequests$: Observable;\r\n requestStatusSelectItems$: Observable;\r\n tasks$: Observable;\r\n payrollItems$: Observable;\r\n serviceItems$: Observable;\r\n companySettings$: Observable;\r\n reportRequests$: Observable;\r\n userInfo$: Observable;\r\n directReports$: Observable>;\r\n userWebColors$: Observable>;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n private userInfo: IUserInfo;\r\n private active = true;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n private DateRangeSubject = new ReplaySubject<{\r\n startDate: Date;\r\n endDate: Date;\r\n }>(1);\r\n private SetUserSubject = new ReplaySubject<{ roleId: number; EID: string }>(\r\n 1\r\n );\r\n private SetRoleSubject = new ReplaySubject(1);\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n\r\n this.store.dispatch(new fromUser.LoadUserInfo());\r\n this.store.dispatch(new fromLookups.LoadPayrollItems());\r\n this.store.dispatch(new fromLookups.LoadServiceItems());\r\n this.store.dispatch(\r\n fromCompanySetting.getCompanySetting({\r\n SettingType: 'LRCreateAuth'\r\n })\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n this.store\r\n .pipe(\r\n select(fromUser.getUserInfo),\r\n takeWhile(() => this.active),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(userInfo => {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:userInfo',\r\n userInfo\r\n });\r\n this.userInfo = userInfo;\r\n this.store.dispatch(new fromLookups.LoadDirectReports({user: userInfo, activeOnly: false }));\r\n this.SetUserSubject.next({\r\n roleId: userInfo.DefaultRoleGroupID,\r\n EID: userInfo.EmployeeListID\r\n });\r\n });\r\n this.DateRangeSubject.pipe(distinctUntilChanged())\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.SetUserSubject),\r\n withLatestFrom(this.process$.pipe(filter(x => !!x)))\r\n )\r\n .subscribe(([[dates, role], process]) => {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:(DateRangeSubject, SetRoleSubject, userInfo)',\r\n dates,\r\n role,\r\n process\r\n });\r\n this.store.dispatch(\r\n fromStore.getLeaveRequests({\r\n userId: role.EID,\r\n userRole:\r\n process.ProcessID === 69 ? 12028 : role.roleId,\r\n startDate: dates.startDate,\r\n endDate: dates.endDate\r\n })\r\n );\r\n });\r\n\r\n this.SetRoleSubject.pipe(\r\n takeWhile(() => this.active),\r\n distinctUntilChanged(),\r\n withLatestFrom(this.store.pipe(select(fromUser.getUserInfo)))\r\n ).subscribe(([role, user]) => {\r\n this.SetUserSubject.next({\r\n roleId: role,\r\n EID: user.EmployeeListID\r\n });\r\n });\r\n this.process$.pipe(takeWhile(() => this.active)).subscribe(process => {\r\n this.store.dispatch(\r\n new fromLookups.LoadUserTasks({\r\n ProcessID: process.ProcessID,\r\n AsOfDate: new Date()\r\n })\r\n );\r\n });\r\n\r\n this.ShowErrorSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.process$)\r\n ).subscribe(([event, process]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.leaverequests$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n withLatestFrom(this.process$),\r\n filter(([r, p]) => !!(r && p)),\r\n tap(([requests, process]) =>\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:leaverequests$',\r\n requests,\r\n process\r\n })\r\n ),\r\n map(([l, process]) =>\r\n l.map(r => ({\r\n ...r,\r\n dates: [\r\n new Date(r.EmpAuthStartDate),\r\n new Date(r.EmpAuthEndDate)\r\n ],\r\n IsReadOnly:\r\n process.ProcessID !== 69 ||\r\n !(\r\n r.RequestStatusID === LeaveRequestStatus.Saved ||\r\n r.RequestStatusID === LeaveRequestStatus.Signed ||\r\n r.RequestStatusID === LeaveRequestStatus.Disapproved\r\n )\r\n }))\r\n ),\r\n tap(requests =>\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:leaverequests$:mapped',\r\n requests\r\n })\r\n )\r\n );\r\n this.requestStatusSelectItems$ = this.leaverequests$.pipe(\r\n map(items =>\r\n fromShared.uniqBy(\r\n items.map(item => ({\r\n label: item.RequestStatus,\r\n value: item.RequestStatus\r\n })),\r\n x => x.value\r\n )\r\n )\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.leaverequests$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n this.companySettings$ = this.store.pipe(select(fromCompanySetting.selectAll));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.tasks$ = this.store.pipe(select(fromLookups.getUserTasks));\r\n this.payrollItems$ = this.store.pipe(select(fromLookups.getPayrollItemsLookup));\r\n this.serviceItems$ = this.store.pipe(select(fromLookups.getServiceItemsLookup));\r\n this.userWebColors$ = this.store.pipe(\r\n select(fromUser.getUserColors),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:userWebColors$',\r\n x\r\n })\r\n )\r\n );\r\n this.directReports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n map(a => a.filter(d => d.IsActive))\r\n );\r\n }\r\n onSave($event: LeaveRequest) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:onSave',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putLeaveRequests({ requests: [$event] }));\r\n }\r\n onApprove($event: LeaveRequest[]) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:onApprove',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putLeaveRequests({ requests: $event }));\r\n }\r\n onUnapprove($event: LeaveRequest[]) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:onUnapprove',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putLeaveRequests({ requests: $event }));\r\n }\r\n onDisapprove($event: LeaveRequest[]) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:onDisapprove',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putLeaveRequests({ requests: $event }));\r\n }\r\n\r\n onDelete($event: LeaveRequest) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:onDelete',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromStore.deleteLeaveRequests({ ids: [$event.AuthRequestID] })\r\n );\r\n }\r\n onSetRole($event: number) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:onSetRole',\r\n $event\r\n });\r\n this.SetRoleSubject.next($event);\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n onSetDateRange($event: { startDate: Date; endDate: Date }) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:onSetDateRange',\r\n $event\r\n });\r\n this.DateRangeSubject.next($event);\r\n }\r\n onShowError(event: fromShared.Errors.IShowErrors) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n}\r\n","export * from './feature';\r\nexport * from './store';\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromLeaveRequest from './store/leave-request.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { LeaveRequestEffects } from './store/leave-request.effects';\r\nimport { LeaveRequestFeatureComponent } from './feature/leave-request.feature';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { LeaveRequestRoute, LeaveRequestApprovalRoute } from './leave-request.route';\r\nimport { LeaveRequestComponent } from './presenters/leave-request.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n LeaveRequestFeatureComponent,\r\n LeaveRequestComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n StoreModule.forFeature(\r\n fromLeaveRequest.leaveRequestsFeatureKey,\r\n fromLeaveRequest.reducer\r\n ),\r\n EffectsModule.forFeature([LeaveRequestEffects]),\r\n UIRouterModule.forChild({\r\n states: [LeaveRequestRoute, LeaveRequestApprovalRoute]\r\n })\r\n ]\r\n})\r\nexport class LeaveRequestModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\nimport * as fromLeaveRequest from '.';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const LeaveRequestRoute: Ng2StateDeclaration = {\r\n // name: 'LeaveRequest.**'\r\n name: 'leaverequest',\r\n url: '/leaverequest',\r\n // , loadChildren: () => import('./leave-request.module').then(r => r.LeaveRequestModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromLeaveRequest.LeaveRequestFeatureComponent\r\n};\r\n\r\nexport const LeaveRequestApprovalRoute: Ng2StateDeclaration = {\r\n name: 'leaverequest.approval',\r\n url: '/approval',\r\n // , loadChildren: () => import('./leave-request.module').then(r => r.LeaveRequestModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromLeaveRequest.LeaveRequestFeatureComponent\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { LeaveRequest } from './store/leave-request.model';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { IGenericResponse } from '../shared';\r\nimport * as moment from 'moment';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LeaveRequestService {\r\n private uri = `${environment.apiLocation}/LeaveRequest`;\r\n\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n /*\r\n POST {{rootUrl}}/api/LeaveRequest\r\n{\r\n\"UserRole\": null,\r\n\"EmployeeListid\": \"80000018-1246815215\",\r\n\"EmpAuthStartDate\": \"1/1/20\",\r\n\"EmpAuthEndDate\": \"12/31/20\"\r\n}\r\n*/\r\n public get(\r\n userId: string,\r\n userRole: number,\r\n startDate: Date,\r\n endDate: Date\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'LeaveRequestService:get',\r\n userId,\r\n userRole,\r\n startDate,\r\n endDate\r\n });\r\n return this.http\r\n .post>(this.uri, {\r\n UserRole: userRole,\r\n EmployeeListid: userId,\r\n EmpAuthStartDate: startDate,\r\n EmpAuthEndDate: endDate\r\n })\r\n .pipe(\r\n map(x => x.map(lr => ({...lr, EmpAuthStartDate: moment(lr.EmpAuthStartDate).toDate(), EmpAuthEndDate: moment(lr.EmpAuthEndDate).toDate()}))),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'LeaveRequestService:get',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public put(\r\n requests: Array\r\n ): Observable> {\r\n this.log.verbose({ type: 'LeaveRequestService:put', requests });\r\n return this.http\r\n .put>(this.uri, {\r\n LeaveRequestList: requests\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'LeaveRequestService:put:resp',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n public delete(\r\n requests: Array>\r\n ): Observable> {\r\n this.log.verbose({ type: 'LeaveRequestService:delete', requests });\r\n return this.http.request>(\r\n 'DELETE',\r\n this.uri,\r\n {\r\n body: { EntityIDs: requests.map(x => x.AuthRequestID) }\r\n }\r\n );\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\r\nimport { View } from '@fullcalendar/core';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport interactionPlugin from '@fullcalendar/interaction';\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport clone from 'just-clone';\r\nimport compare from 'just-compare';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { IDirectReport, IServiceItem, ITask } from '../../lookups';\r\nimport { IStatusMessage, Process, ResponseStatus } from '../../shared';\r\nimport {\r\n Dialog,\r\n FilterService,\r\n FullCalendar,\r\n SelectItem\r\n} from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserColor, IUserInfo, UserRoleEnum } from '../../user-info';\r\nimport { LeaveRequest, LeaveRequestStatus } from '../store/leave-request.model';\r\nimport { PayrollItem } from '../../payroll/item';\r\nimport { CompanySetting } from '../../company-setting';\r\nlet lrc: LeaveRequestComponent;\r\n@Component({\r\n selector: 'ef-leave-request',\r\n templateUrl: './leave-request.component.html',\r\n styleUrls: ['./leave-request.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LeaveRequestComponent implements OnInit, OnDestroy {\r\n private TypeSubject = new ReplaySubject(1);\r\n private LeaveRequestsSubject = new ReplaySubject<\r\n Array>\r\n >(1);\r\n private _leaverequests: Array>;\r\n @Input() public set leaverequests(value: Array>) {\r\n if (!value) {\r\n return;\r\n }\r\n this._leaverequests = clone(value).map(l => ({\r\n ...l,\r\n selected: false\r\n }));\r\n this.LeaveRequestsSubject.next(this._leaverequests);\r\n }\r\n public get leaverequests(): Array> {\r\n if (Array.isArray(this._leaverequests)) {\r\n switch (this.leaveType) {\r\n case 0:\r\n return this._leaverequests;\r\n break;\r\n default:\r\n return this._leaverequests.filter(\r\n l => l.RequestStatusID === this.leaveType\r\n );\r\n break;\r\n }\r\n }\r\n // return this._leaverequests;\r\n }\r\n private _tasks: ITask[];\r\n @Input() public set tasks(value: ITask[]) {\r\n this._tasks = clone(value);\r\n this.taskSelectItems = value.map(t => ({\r\n label: t.TaskLongName,\r\n value: t.TaskListID\r\n }));\r\n }\r\n public get tasks(): ITask[] {\r\n return this._tasks;\r\n }\r\n private _payrollitems: PayrollItem[];\r\n @Input() public set payrollItems(value: PayrollItem[]) {\r\n this._payrollitems = clone(value);\r\n this.payrollItemSelectItems = value.map(t => ({\r\n label: t.PayrollItem,\r\n value: t.PIListID\r\n }));\r\n }\r\n public get payrollItems(): PayrollItem[] {\r\n return this._payrollitems;\r\n }\r\n private _serviceitems: IServiceItem[];\r\n @Input() public set serviceItems(value: IServiceItem[]) {\r\n this._serviceitems = clone(value);\r\n this.serviceItemSelectItems = value.map(t => ({\r\n label: t.ServiceItem,\r\n value: t.SIListID\r\n }));\r\n }\r\n public get serviceItems(): IServiceItem[] {\r\n return this._serviceitems;\r\n }\r\n payrollItemEditable: boolean;\r\n serviceItemEditable: boolean;\r\n private _settings: CompanySetting[];\r\n @Input() public set companySettings(value: CompanySetting[]) {\r\n this._settings = clone(value);\r\n this.createAuthSetting = value.find(x => x.SettingType == \"LRCreateAuth\").SettingValue == 1 ? true : false;\r\n if (this.createAuthSetting == true && this.process.ProcessID !== 69) {\r\n this.payrollItemEditable = true;\r\n this.serviceItemEditable = true;\r\n } else {\r\n this.payrollItemEditable = false;\r\n this.serviceItemEditable = false;\r\n }\r\n }\r\n public get companySettings(): CompanySetting[] {\r\n return this._settings;\r\n }\r\n public get AccrualInfo() {\r\n return this.selectedLeave\r\n ? this.selectedLeave.LeaveAccrualInfo\r\n : this.userInfo\r\n ? this.userInfo.LeaveAccrualInfo\r\n : '';\r\n }\r\n public get LeaveUser() {\r\n return this.selectedLeave\r\n ? this.directReports.find(\r\n x => x.EmployeeListID === this.selectedLeave.EmployeeListID\r\n ).EmployeeName\r\n : this.userInfo\r\n ? this.userInfo.EmployeeName\r\n : '';\r\n }\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.log.debug({\r\n type: 'LeaveRequestComponent:selectedError:set',\r\n value\r\n });\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n public get leaveSelectedCount(): number {\r\n return (\r\n this.leaverequests &&\r\n this.leaverequests.filter(x => x.selected).length\r\n );\r\n }\r\n public taskSelectItems: SelectItem[];\r\n @Input() userInfo: Partial;\r\n public directReportsSelectItems: SelectItem[];\r\n private DirectReportsSubject = new ReplaySubject(1);\r\n private _directReports: IDirectReport[];\r\n protected dateRange: Date[];\r\n @Input() public set directReports(value: IDirectReport[]) {\r\n this._directReports = value;\r\n this.DirectReportsSubject.next(this._directReports);\r\n this.directReportsSelectItems = value.map(d => ({\r\n label: d.EmployeeName,\r\n value: d.EmployeeListID\r\n }));\r\n }\r\n public get directReports(): IDirectReport[] {\r\n return this._directReports;\r\n }\r\n ProcessSubject = new ReplaySubject(1);\r\n @Input() public set process(value: Process) {\r\n this._process = value;\r\n if (!!value) {\r\n this.ProcessSubject.next(value);\r\n }\r\n }\r\n private WebColorsSubject = new ReplaySubject>(1);\r\n private _userWebColors: Array;\r\n @Input() public set userWebColors(value: Array) {\r\n this.log.verbose({\r\n type: 'LeaveRequestFeatureComponent:userWebColors:set',\r\n value\r\n });\r\n this._userWebColors = value;\r\n this.WebColorsSubject.next(this._userWebColors);\r\n }\r\n public get userWebColors(): Array {\r\n return this._userWebColors;\r\n }\r\n @ViewChild('calendar', { static: true }) fc: FullCalendar;\r\n\r\n private _process: Process;\r\n public get process(): Process {\r\n return this._process;\r\n }\r\n @Input() RequestStatusSelectItems: SelectItem[];\r\n createAuthSetting: boolean;\r\n payrollItemSelectItems: SelectItem[];\r\n serviceItemSelectItems: SelectItem[];\r\n events: Array>;\r\n options: any;\r\n urlDemo: string;\r\n urlTip: string;\r\n UrlDocumentation: string;\r\n showDisapprovePopup = false;\r\n disapproveComment: string;\r\n showPopup = false;\r\n newRequestForm: FormGroup;\r\n leaveTable: FormGroup;\r\n moment: any;\r\n dateFilters: any;\r\n dates: Date[] = [];\r\n public loading = true;\r\n public leaveType = 0;\r\n protected selectedLeave: LeaveRequest;\r\n selectedPayrollItem: string;\r\n private active = true;\r\n public UserRoleEnum = UserRoleEnum;\r\n @Output() public ShowError = new ReplaySubject(1);\r\n @Output() public Save = new ReplaySubject>(1);\r\n @Output() public Approve = new ReplaySubject>>(\r\n 1\r\n );\r\n @Output() public Unapprove = new ReplaySubject<\r\n Array>\r\n >(1);\r\n @Output() public Disapprove = new ReplaySubject<\r\n Array>\r\n >(1);\r\n @Output() public Delete = new ReplaySubject>(1);\r\n @Output() public SetRole = new ReplaySubject(1);\r\n @Output() public SetDateRange = new ReplaySubject<{\r\n startDate: Date;\r\n endDate: Date;\r\n }>(1);\r\n @ViewChild('leaveRequestDialog', { static: true })\r\n leaveRequestsDialog: Dialog;\r\n showAllButton: HTMLElement;\r\n showAll = false;\r\n private nrfc: {\r\n [key: string]: AbstractControl;\r\n };\r\n private _startDate: Date;\r\n private _endDate: Date;\r\n editing: LeaveRequest;\r\n cloned: { [i: number]: LeaveRequest } = {};\r\n constructor(\r\n private log: LoggingService,\r\n public confirmservice: UnsavedChangesService,\r\n private filterService: FilterService,\r\n protected cdRef: ChangeDetectorRef\r\n ) {\r\n this.newRequestForm = new FormGroup({\r\n task: new FormControl(),\r\n RequestHours: new FormControl(),\r\n AuthDesc: new FormControl(),\r\n EmpAuthStartDate: new FormControl(),\r\n EmpAuthEndDate: new FormControl(),\r\n AuthRequestID: new FormControl()\r\n });\r\n this.leaveTable = new FormGroup({\r\n task: new FormControl(),\r\n RequestHours: new FormControl(),\r\n AuthDesc: new FormControl(),\r\n EmpAuthStartDate: new FormControl(),\r\n EmpAuthEndDate: new FormControl(),\r\n AuthRequestID: new FormControl()\r\n });\r\n this.nrfc = this.newRequestForm.controls;\r\n lrc = this;\r\n this.options = {\r\n plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],\r\n defaultDate: moment().format('YYYY-MM-DD'),\r\n height: 500,\r\n customButtons: {\r\n showAll: {\r\n text: 'Show All',\r\n click: function () {\r\n lrc.showAllButton = this as HTMLElement;\r\n lrc.showAll = !lrc.showAll;\r\n if (lrc.showAll) {\r\n lrc.SetDateRange.next({\r\n startDate: null,\r\n endDate: null\r\n });\r\n lrc.showAllButton.classList.remove(\r\n 'fc-button-primary'\r\n );\r\n lrc.showAllButton.classList.add(\r\n 'fc-button-secondary'\r\n );\r\n lrc.showAllButton.textContent = 'Show Month';\r\n } else {\r\n lrc.SetDateRange.next({\r\n startDate: lrc._startDate,\r\n endDate: lrc._endDate\r\n });\r\n lrc.showAllButton.classList.remove(\r\n 'fc-button-secondary'\r\n );\r\n lrc.showAllButton.classList.add(\r\n 'fc-button-primary'\r\n );\r\n lrc.showAllButton.textContent = 'Show All';\r\n }\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:custombutton:click',\r\n button: this\r\n });\r\n }\r\n }\r\n },\r\n header: {\r\n left: '',\r\n center: 'prev,title,next',\r\n right: 'showAll'\r\n },\r\n // validRange: {\r\n // start: moment().format('YYYY-MM-DD'),\r\n // end: moment().add(90, 'd').format('YYYY-MM-DD')\r\n // },\r\n selectable: true,\r\n select: this.datesSelected.bind(this),\r\n eventClick: this.eventSelected.bind(this),\r\n datesRender: this.datesRender.bind(this),\r\n eventRender: this.eventRender.bind(this)\r\n };\r\n this.moment = moment;\r\n this.setupSubscriptions();\r\n // this.TypeSubject.next(0);\r\n }\r\n eventRender(info: { event: EventModel; el: any; view: View }) {\r\n info.el.setAttribute('data-toggle', 'tooltip');\r\n info.el.setAttribute('data-placement', 'top');\r\n info.el.setAttribute('title', info.event.title);\r\n }\r\n datesRender(info) {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent.fullCalendar.datesRender',\r\n info\r\n });\r\n // this._startDate = moment(info.view.currentStart)\r\n this._startDate = moment(info.view.activeStart).toDate();\r\n // this._endDate = moment(info.view.currentEnd)\r\n this._endDate = moment(info.view.activeEnd).add(-1, 'seconds').toDate();\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent.fullCalendar.datesRender',\r\n startDate: this._startDate,\r\n endDate: this._endDate\r\n });\r\n if (!this.showAll) {\r\n this.SetDateRange.next({\r\n startDate: this.showAll ? null : this._startDate,\r\n endDate: this.showAll ? null : this._endDate\r\n });\r\n }\r\n }\r\n datesSelected(selectInfo: SelectInfo) {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent.select',\r\n selectInfo\r\n });\r\n this.nrfc['EmpAuthStartDate'].setValue(selectInfo.start);\r\n this.nrfc['EmpAuthEndDate'].setValue(\r\n moment(selectInfo.end).add(-1, 'seconds').toDate()\r\n );\r\n this.dates = [\r\n selectInfo.start,\r\n moment(selectInfo.end).add(-1, 'seconds').toDate()\r\n ];\r\n this.nrfc['AuthRequestID'].setValue(-1);\r\n this.nrfc['task'].setValue(this.tasks[0]);\r\n this.showPopup = true;\r\n this.cdRef.detectChanges();\r\n }\r\n eventSelected(click: EventClickInfo) {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent.eventClick',\r\n event: click.event\r\n });\r\n // if (click.event.extendedProps.IsReadOnly) {\r\n // return;\r\n // }\r\n this.nrfc['AuthDesc'].setValue(click.event.title);\r\n this.nrfc['EmpAuthStartDate'].setValue(click.event.start);\r\n this.nrfc['EmpAuthEndDate'].setValue(\r\n moment(click.event.end).add(-1, 'seconds').toDate()\r\n );\r\n this.dates = [\r\n moment(click.event.start).toDate(),\r\n moment(click.event.end).add(-1, 'seconds').toDate()\r\n ];\r\n this.nrfc['AuthRequestID'].setValue(click.event.id);\r\n this.nrfc['RequestHours'].setValue(\r\n click.event.extendedProps.RequestHours\r\n );\r\n this.nrfc['task'].setValue(\r\n this.tasks.find(\r\n x => x.TaskListID === click.event.extendedProps.TaskListID\r\n )\r\n );\r\n if (this.leaveType != 2) {\r\n this.showPopup = true;\r\n } else {\r\n this.showPopup = false;\r\n }\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n setupSubscriptions() {\r\n this.TypeSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n t => (this.leaveType = t)\r\n );\r\n this.ProcessSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n process => {\r\n if (process.ProcessID !== 69) {\r\n this.setType(1);\r\n } else {\r\n this.setType(0);\r\n }\r\n if (process) {\r\n this.urlDemo = process.UrlDemo;\r\n this.urlTip = process.UrlTip;\r\n this.UrlDocumentation = process.UrlDocumentation;\r\n }\r\n }\r\n );\r\n combineLatest([\r\n this.LeaveRequestsSubject,\r\n this.DirectReportsSubject,\r\n this.WebColorsSubject,\r\n this.TypeSubject\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([requests, reports, colors, type]) => {\r\n this.events = this.mapDataToEvent(\r\n requests,\r\n reports,\r\n colors,\r\n type\r\n );\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:latest',\r\n requests,\r\n reports,\r\n colors,\r\n leavetype: type,\r\n events: this.events\r\n });\r\n this.cdRef.detectChanges();\r\n });\r\n this.SetRole.pipe(takeWhile(() => this.active)).subscribe(() => {\r\n this.loading = true;\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n ngOnInit() {\r\n this.addDateRangeFilter();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n mapDataToEvent(\r\n data: Array>,\r\n directReports: IDirectReport[],\r\n colors: IUserColor[],\r\n type: number\r\n ): Array> {\r\n this.cdRef.detectChanges();\r\n let filtered;\r\n this.log.verbose({\r\n name: 'LeaveRequestComponent:mapDataToEvent',\r\n data,\r\n directReports,\r\n colors,\r\n type\r\n });\r\n switch (type) {\r\n case 0:\r\n filtered = data;\r\n break;\r\n default:\r\n filtered = data.filter(\r\n l => l.RequestStatusID === this.leaveType\r\n );\r\n break;\r\n }\r\n const mapped = filtered.map(l => {\r\n const color = colors.find(x => x.StatusID === l.RequestStatusID);\r\n const event = {\r\n id: l.AuthRequestID ? l.AuthRequestID.toString() : -1,\r\n allDay: true,\r\n start: l.EmpAuthStartDate,\r\n end: moment(l.EmpAuthEndDate).add(1, 'second').toDate(),\r\n title: `${\r\n type !== 0\r\n ? directReports.find(\r\n x => x.EmployeeListID === l.EmployeeListID\r\n ).EmployeeName + ': '\r\n : ''\r\n }${l.AuthDesc || '(No Description)'}`,\r\n backgroundColor: (color && color.Backcolor_hex) || '#0000CC',\r\n textColor: (color && color.Forecolor_Hex) || '#000000',\r\n extendedProps: {\r\n RequestHours: l.RequestHours,\r\n TaskListID: l.TaskListID\r\n // IsReadOnly:\r\n // !(\r\n // l.RequestStatusID === LeaveRequestStatus.Saved ||\r\n // l.RequestStatusID === LeaveRequestStatus.Signed ||\r\n // l.RequestStatusID === LeaveRequestStatus.Disapproved\r\n // ) || this.process.ProcessID !== 69\r\n }\r\n } as EventModel;\r\n return event;\r\n });\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:mapData',\r\n data,\r\n mapped\r\n });\r\n this.loading = false;\r\n return mapped;\r\n }\r\n onDelete(event: LeaveRequest) {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:onDelete',\r\n event\r\n });\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to delete ${event.AuthDesc}?`\r\n })\r\n .then(() => {\r\n this.Delete.next(event);\r\n return;\r\n })\r\n .catch(e => {});\r\n }\r\n onRowEditInit(item: LeaveRequest) {\r\n this.editing = { ...item };\r\n this.cloned[item.AuthRequestID] = { ...item };\r\n this.payrollItemSelectItems = this.payrollItems.filter(x => x.EmployeeListID == item.EmployeeListID).map(t => ({\r\n label: t.PayrollItem,\r\n value: t.PIListID\r\n }));\r\n this.selectedPayrollItem = item.PIListID;\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:onEditInit',\r\n $event: item,\r\n editing: this.editing\r\n });\r\n }\r\n onRowEditSave(item: LeaveRequest) {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:onEditComplete',\r\n $event: item,\r\n editing: this.editing\r\n });\r\n // this.events = this.mapData(this.leaverequests);\r\n // this.cdRef.detectChanges();\r\n this.onSave({\r\n ...item,\r\n EmpAuthStartDate: item.dates[0],\r\n EmpAuthEndDate: item.dates[1],\r\n task: { TaskListID: item.TaskListID },\r\n PIListID: this.selectedPayrollItem\r\n });\r\n delete this.cloned[item.AuthRequestID];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: LeaveRequest) {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:onEditCancel',\r\n item\r\n });\r\n this.selectedPayrollItem = item.PIListID;\r\n const index = this.leaverequests.findIndex(\r\n x => x.AuthRequestID === item.AuthRequestID\r\n );\r\n if (index >= 0) {\r\n this.leaverequests.splice(\r\n index,\r\n 1,\r\n this.cloned[item.AuthRequestID]\r\n );\r\n }\r\n delete this.editing;\r\n delete this.cloned[item.AuthRequestID];\r\n }\r\n onTaskChanged(item) {\r\n this.selectedPayrollItem = 'SYSPI0000000000000000000000000000000';\r\n item = {\r\n ...item,\r\n PIListID: this.selectedPayrollItem\r\n };\r\n }\r\n onPayrollItemChanged($event) {\r\n this.selectedPayrollItem = $event.value;\r\n }\r\n onSave($event) {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:onSave',\r\n $event,\r\n dates: this.dates\r\n });\r\n const fc = this.newRequestForm.controls;\r\n\r\n const leave = {\r\n PIListID: $event.PIListID,\r\n SIListID: $event.SIListID,\r\n EmployeeListID: this.userInfo.EmployeeListID,\r\n AuthRequestID: Number($event.AuthRequestID),\r\n EmpAuthStartDate:\r\n this.dates && this.dates.length === 2\r\n ? moment(this.dates[0]).toDate()\r\n : $event.EmpAuthStartDate,\r\n EmpAuthEndDate:\r\n this.dates && this.dates.length === 2\r\n ? moment(this.dates[1]).toDate()\r\n : $event.EmpAuthEndDate,\r\n // EmpAuthStartDate: (!!$event.EmpAuthStartDate) ? $event.EmpAuthStartDate : moment(this.dates[0]).toDate(),\r\n // EmpAuthEndDate: (!!$event.EmpAuthEndDate) ? $event.EmpAuthEndDate : moment(this.dates[1]).toDate(),\r\n AuthDesc: $event.AuthDesc,\r\n RequestStatus: 'pending',\r\n TaskListID: $event.task.TaskListID,\r\n RequestStatusID: LeaveRequestStatus.Signed,\r\n RequestHours: Number($event.RequestHours),\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n }\r\n };\r\n this.dates = [];\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:onSave',\r\n leave,\r\n leaverequests: this.leaverequests\r\n });\r\n\r\n // this.leaverequests = [\r\n // ...this.leaverequests.filter(\r\n // x => x.AuthRequestID !== leave.AuthRequestID\r\n // ),\r\n // leave\r\n // ];\r\n this.Save.next(leave);\r\n this.showPopup = false;\r\n this.clearLeaveRequest();\r\n this.cdRef.detectChanges();\r\n }\r\n Cancel() {\r\n this.showPopup = false;\r\n this.clearLeaveRequest();\r\n this.cdRef.detectChanges();\r\n }\r\n clearLeaveRequest() {\r\n this.newRequestForm.reset();\r\n }\r\n onRowSelect($event) {\r\n const event: LeaveRequest = $event.data;\r\n this.selectedLeave = event;\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:onRowSelect',\r\n $event,\r\n event\r\n });\r\n this.fc.getCalendar().gotoDate(moment(event.EmpAuthStartDate).toDate());\r\n this.cdRef.detectChanges();\r\n }\r\n addDateRangeFilter() {\r\n this.filterService.register(\r\n 'dateRangeFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:dateRangeFilter',\r\n value,\r\n filter,\r\n dateFilters: this.dateFilters\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.dateFilters[0]).add(-1, 'second'),\r\n moment(this.dateFilters[1]).add(1, 'second')\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n }\r\n setType(t, e = null) {\r\n this.log.verbose({ type: 'LeaveRequestComponent:setType', t });\r\n const oldType = this.leaveType;\r\n this.leaveType = t;\r\n switch (t) {\r\n case 0:\r\n if (oldType !== 0) {\r\n this.SetRole.next(null);\r\n }\r\n break;\r\n case 1:\r\n if (oldType === 0) {\r\n this.SetRole.next(UserRoleEnum.Supervisor);\r\n }\r\n break;\r\n case 2:\r\n if (oldType === 0) {\r\n this.SetRole.next(UserRoleEnum.Supervisor);\r\n }\r\n break;\r\n case 3:\r\n if (oldType === 0) {\r\n this.SetRole.next(UserRoleEnum.Supervisor);\r\n }\r\n break;\r\n default:\r\n if (oldType !== 0) {\r\n }\r\n this.SetRole.next(null);\r\n break;\r\n }\r\n this.TypeSubject.next(t);\r\n }\r\n approveRequests() {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:approveRequests'\r\n });\r\n this.Approve.next(\r\n this.leaverequests\r\n .filter(x => x.selected)\r\n .map(x => ({\r\n ...x,\r\n RequestStatusID: LeaveRequestStatus.Approved\r\n }))\r\n );\r\n }\r\n unApproveRequests() {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:unApproveRequests'\r\n });\r\n this.Unapprove.next(\r\n this.leaverequests\r\n .filter(x => x.selected)\r\n .map(x => ({\r\n ...x,\r\n RequestStatusID: LeaveRequestStatus.Signed\r\n }))\r\n );\r\n }\r\n disApproveRequests() {\r\n this.log.verbose({\r\n type: 'LeaveRequestComponent:disApproveRequests'\r\n });\r\n this.Disapprove.next(\r\n this.leaverequests\r\n .filter(x => x.selected)\r\n .map(x => ({\r\n ...x,\r\n RequestStatusID: LeaveRequestStatus.Disapproved,\r\n AuthDesc: this.disapproveComment != null ? this.disapproveComment : x.AuthDesc\r\n }))\r\n );\r\n this.showDisapprovePopup = false;\r\n this.disapproveComment = null;\r\n }\r\n cancelDisapprove() {\r\n this.showDisapprovePopup = false;\r\n this.disapproveComment = null;\r\n }\r\n onStatusClick(item: LeaveRequest) {\r\n this.ShowError.next({\r\n open: true,\r\n MsgEntityID: item.AuthRequestID.toString()\r\n });\r\n }\r\n}\r\n\r\ninterface SelectInfo {\r\n // Date. A date indicating the beginning of the selection.\r\n start: Date;\r\n\r\n // Date. A date indicating the end of the selection.\r\n // In line with the discussion about the Event object, it is important to stress that the end date property is exclusive. For example, if the selection is all-day and the last day is a Thursday, end will be Friday.\r\n end: Date;\r\n // String. An ISO8601 string representation of the start date. It will have a timezone offset similar to the calendar’s timeZone e.g. 2018-09-01T12:30:00-05:00. If selecting all-day cells, it won’t have a time nor timezone part e.g. 2018-09-01.\r\n startStr: string;\r\n\r\n // String. An ISO8601 string representation of the end date. It will have a timezone offset similar to the calendar’s timeZone e.g. 2018-09-02T12:30:00-05:00. If selecting all-day cells, it won’t have a time nor timezone part e.g. 2018-09-02.\r\n endStr: string;\r\n // Boolean. true or false whether the selection happened on all-day cells.\r\n allDay: boolean;\r\n\r\n // The native JavaScript event with low-level information such as click coordinates.\r\n jsEvent: any;\r\n\r\n // View object. The current Calendar view.\r\n view: any;\r\n\r\n // Resource object. If the current view is a resource view, this is the Resource object that was selected. This is only available when using one of the resource plugins.\r\n resource: any;\r\n}\r\ninterface EventClickInfo {\r\n // The associated Event Object.\r\n event: EventModel;\r\n\r\n // The HTML element for this event.\r\n el: HTMLElement;\r\n\r\n // The native JavaScript event with low-level information such as click coordinates.\r\n jsEvent: any;\r\n\r\n view: any;\r\n}\r\ninterface EventModel {\r\n id: string;\r\n groupId: string;\r\n allDay: boolean;\r\n start: Date;\r\n end: Date;\r\n title: string;\r\n url: string;\r\n classNames: string[];\r\n editable: boolean;\r\n startEditable: boolean;\r\n durationEditable: boolean;\r\n resourceEditable: boolean;\r\n rendering: string;\r\n overlap: boolean;\r\n constraint: any;\r\n backgroundColor: string;\r\n borderColor: string;\r\n textColor: string;\r\n extendedProps: any;\r\n source: any;\r\n data: any;\r\n}\r\n","export * from './leave-request.actions';\r\nexport * from './leave-request.reducer';\r\nexport * from './leave-request.selectors';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { LeaveRequest } from './leave-request.model';\r\n\r\nexport const loadLeaveRequests = createAction(\r\n '[LeaveRequest/API] Load LeaveRequests',\r\n props<{ leaveRequests: LeaveRequest[] }>()\r\n);\r\n\r\nexport const addLeaveRequest = createAction(\r\n '[LeaveRequest/API] Add LeaveRequest',\r\n props<{ leaveRequest: LeaveRequest }>()\r\n);\r\n\r\nexport const upsertLeaveRequest = createAction(\r\n '[LeaveRequest/API] Upsert LeaveRequest',\r\n props<{ leaveRequest: LeaveRequest }>()\r\n);\r\n\r\nexport const addLeaveRequests = createAction(\r\n '[LeaveRequest/API] Add LeaveRequests',\r\n props<{ leaveRequests: LeaveRequest[] }>()\r\n);\r\n\r\nexport const upsertLeaveRequests = createAction(\r\n '[LeaveRequest/API] Upsert LeaveRequests',\r\n props<{ leaveRequests: LeaveRequest[] }>()\r\n);\r\n\r\nexport const updateLeaveRequest = createAction(\r\n '[LeaveRequest/API] Update LeaveRequest',\r\n props<{ leaveRequest: Update }>()\r\n);\r\n\r\nexport const updateLeaveRequests = createAction(\r\n '[LeaveRequest/API] Update LeaveRequests',\r\n props<{ leaveRequests: Update[] }>()\r\n);\r\n\r\nexport const deleteLeaveRequest = createAction(\r\n '[LeaveRequest/API] Delete LeaveRequest',\r\n props<{ id: number }>()\r\n);\r\n\r\nexport const deleteLeaveRequestSuccess = createAction(\r\n '[LeaveRequest/API] Delete LeaveRequest',\r\n props<{ id: number }>()\r\n);\r\n\r\nexport const deleteLeaveRequests = createAction(\r\n '[LeaveRequest/API] Delete LeaveRequests',\r\n props<{ ids: number[] }>()\r\n);\r\n\r\nexport const deleteLeaveRequestsSuccess = createAction(\r\n '[LeaveRequest/API] Delete LeaveRequests Success',\r\n props<{ ids: number[] }>()\r\n);\r\n\r\nexport const clearLeaveRequests = createAction(\r\n '[LeaveRequest/API] Clear LeaveRequests'\r\n);\r\n\r\nexport const getLeaveRequests = createAction(\r\n '[LeaveRequest/API] Get LeaveRequests',\r\n props<{\r\n userId: string;\r\n userRole: number;\r\n startDate?: Date;\r\n endDate?: Date;\r\n }>()\r\n);\r\n\r\nexport const putLeaveRequests = createAction(\r\n '[LeaveRequest/API] Put LeaveReqeusts',\r\n props<{ requests: Array }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, map, concatMap, switchMap, flatMap } from 'rxjs/operators';\r\n\r\nimport { LeaveRequestService } from '../leave-request.service';\r\nimport { ResponseStatus } from '../../shared';\r\nimport * as LeaveRequestActions from './leave-request.actions';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Injectable()\r\nexport class LeaveRequestEffects {\r\n getLeaveRequests$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(LeaveRequestActions.getLeaveRequests),\r\n switchMap(a =>\r\n this.service\r\n .get(a.userId, a.userRole, a.startDate, a.endDate)\r\n .pipe(\r\n map(data =>\r\n LeaveRequestActions.loadLeaveRequests({\r\n leaveRequests: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putLeaveRequests$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(LeaveRequestActions.putLeaveRequests),\r\n switchMap(a =>\r\n this.service.put(a.requests).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n LeaveRequestActions.upsertLeaveRequests({\r\n leaveRequests: resp.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n i =>\r\n i.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(i => i.AuthRequestID.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n LeaveRequestActions.upsertLeaveRequests({\r\n leaveRequests: resp.Items\r\n })\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n deleteLeaveRequests$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(LeaveRequestActions.deleteLeaveRequests),\r\n switchMap(a =>\r\n this.service\r\n .delete(a.ids.map(x => ({ AuthRequestID: x })))\r\n .pipe(\r\n flatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(\r\n resp.StatusCode\r\n )\r\n ? [\r\n LeaveRequestActions.deleteLeaveRequestsSuccess(\r\n { ids: a.ids }\r\n ),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n i =>\r\n i.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map((i: any) => i.EntityID)\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(\r\n resp\r\n )\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n },\r\n );\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: LeaveRequestService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nexport interface LeaveRequest {\r\n AuthRequestID: number;\r\n EmployeeListID: string;\r\n UserListID: string;\r\n RoleGroupID: string;\r\n TaskListID: string;\r\n EmpAuthStartDate: Date;\r\n EmpAuthEndDate: Date;\r\n MaxHours: number;\r\n RequestHours: number;\r\n AuthDesc: string;\r\n RequestStatusID: LeaveRequestStatus;\r\n ModifiedDateTime: Date;\r\n RequestStatus: string;\r\n LeaveAccrualInfo: string;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n dates: Date[];\r\n selected: boolean;\r\n IsReadOnly: boolean;\r\n PIListID?: string;\r\n SIListID?: string;\r\n}\r\n\r\n\r\nexport enum LeaveRequestStatus {\r\n Saved = 0.0,\r\n Signed = 1.0,\r\n Validated = 1.5,\r\n Approved = 2.0,\r\n Disapproved = 3.0\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as LeaveRequestActions from './leave-request.actions';\r\nimport { LeaveRequest } from './leave-request.model';\r\nexport const leaveRequestsFeatureKey = 'leaveRequests';\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n // [fromLeaveRequest.leaveRequestFeatureKey]: fromLeaveRequest.State;\r\n}\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: LeaveRequest) => model.AuthRequestID\r\n });\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\nconst leaveRequestReducer = createReducer(\r\n initialState,\r\n on(LeaveRequestActions.addLeaveRequest, (state, action) =>\r\n adapter.addOne(action.leaveRequest, state)\r\n ),\r\n on(LeaveRequestActions.upsertLeaveRequest, (state, action) =>\r\n adapter.upsertOne(action.leaveRequest, state)\r\n ),\r\n on(LeaveRequestActions.addLeaveRequests, (state, action) =>\r\n adapter.addMany(action.leaveRequests, state)\r\n ),\r\n on(LeaveRequestActions.upsertLeaveRequests, (state, action) =>\r\n adapter.upsertMany(action.leaveRequests, state)\r\n ),\r\n on(LeaveRequestActions.updateLeaveRequest, (state, action) =>\r\n adapter.updateOne(action.leaveRequest, state)\r\n ),\r\n on(LeaveRequestActions.updateLeaveRequests, (state, action) =>\r\n adapter.updateMany(action.leaveRequests, state)\r\n ),\r\n on(LeaveRequestActions.deleteLeaveRequestSuccess, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(LeaveRequestActions.deleteLeaveRequestsSuccess, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(LeaveRequestActions.loadLeaveRequests, (state, action) =>\r\n adapter.setAll(action.leaveRequests, state)\r\n ),\r\n on(LeaveRequestActions.clearLeaveRequests, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return leaveRequestReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromLeaveRequest from './leave-request.reducer';\r\n\r\nexport const selectLeaveRequestState = createFeatureSelector(\r\n fromLeaveRequest.leaveRequestsFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = fromLeaveRequest.adapter.getSelectors(selectLeaveRequestState);\r\n","import {\r\n Component,\r\n OnInit,\r\n Inject,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { AuthenticationService } from '../auth/authentication.service';\r\nimport { StateService } from '@uirouter/core';\r\n@Component({\r\n selector: 'ef-login',\r\n styles: [\r\n `\r\n .overlay {\r\n position: absolute;\r\n width: 100vw;\r\n height: 100vh;\r\n top: 0;\r\n left: 0;\r\n background-color: #333;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n }\r\n `\r\n ],\r\n template: `
`\r\n})\r\nexport class LoginComponent implements OnInit {\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(AuthenticationService) private auth: AuthenticationService,\r\n @Inject(StateService) private ss: StateService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.openDialog();\r\n }\r\n\r\n openDialog(): void {\r\n this.auth.openDialog();\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { filter, map, takeWhile, tap } from 'rxjs/operators';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { Logo } from '../store/logo.model';\r\nimport * as logoReducer from '../store/logo.reducer';\r\nimport * as logoActions from '../store/logo.actions';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-logo-feature',\r\n templateUrl: './logo-feature.component.html',\r\n styleUrls: ['./logo-feature.component.scss']\r\n})\r\nexport class LogoFeatureComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n SaveLogo = new ReplaySubject(1);\r\n public logo$: Observable;\r\n active = true;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(logoActions.getLogo({ UploadType: 'Web Logo' }));\r\n this.setupObservables();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.logo$ = this.store.pipe(\r\n select(logoReducer.selectAll),\r\n map(x => x[0])\r\n );\r\n\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'LogoFeatureComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.logo$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'LogoFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'LogoFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n\r\n onSaveLogo($event) {\r\n const logo: Logo = {\r\n Uploadfile: $event,\r\n Uploadtype: 'Web Logo'\r\n };\r\n this.store.dispatch(\r\n logoActions.putLogo({\r\n logo\r\n })\r\n );\r\n }\r\n onShowError(event) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { LogoEffects } from './store/logo.effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as store from './store/logo.reducer';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { LogoFeatureComponent } from './feature/logo-feature.component';\r\nimport { LogoPresenterComponent } from './presenter/logo-presenter.component';\r\n\r\n@NgModule({\r\n declarations: [LogoFeatureComponent, LogoPresenterComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(store.logoesFeatureKey, store.reducer),\r\n EffectsModule.forFeature([LogoEffects])\r\n ]\r\n})\r\nexport class LogoModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Logo } from './store/logo.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LogoService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private logoUri = `${environment.apiLocation}/Upload`;\r\n\r\n public getLogo(UploadType): Observable> {\r\n this.log.verbose({\r\n type: 'LogoService:getLogo',\r\n uri: this.logoUri\r\n });\r\n return this.http\r\n .post>(this.logoUri, { Uploadtype: UploadType })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'LogoService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putLogo(logo: Logo): Observable> {\r\n return this.http\r\n .put>(this.logoUri, { UploadList: [logo] })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'LogoService:putLogo',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { FileUpload, IStatusMessage, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Logo } from '../store/logo.model';\r\n\r\n@Component({\r\n selector: 'ef-logo-presenter',\r\n templateUrl: './logo-presenter.component.html',\r\n styleUrls: ['./logo-presenter.component.scss']\r\n})\r\nexport class LogoPresenterComponent implements OnInit {\r\n SelectedErrorSubject = new ReplaySubject(1);\r\n private _selectedError: IStatusMessage;\r\n selectedLogo: any;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.SelectedErrorSubject.next(value);\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n\r\n private LogoSubject = new ReplaySubject(1);\r\n private _logo: Logo;\r\n @Input() set logo(value: Logo) {\r\n if (value) {\r\n this._logo = value;\r\n this.selectedLogo =\r\n 'data:image/png;base64,' + this._logo.Uploadfile;\r\n this.LogoSubject.next(value);\r\n }\r\n }\r\n get logo(): Logo {\r\n return this._logo;\r\n }\r\n\r\n uploadedFiles: any[] = [];\r\n showUploadComplete = false;\r\n uploadCompleteMsg = '';\r\n @Output() SaveLogo = new ReplaySubject(1);\r\n @ViewChild('logoUploader', { static: true })\r\n logoUploader: FileUpload;\r\n\r\n constructor(@Inject(LoggingService) private log: LoggingService) {}\r\n\r\n ngOnInit() {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'LogoPresenterComponent:setupObservables'\r\n });\r\n }\r\n\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'LogoPresenterComponent:setupSubscriptions'\r\n });\r\n }\r\n\r\n onLogoSelect(event) {\r\n // const fileReader = new FileReader();\r\n // fileReader.onload = (e: any) => {\r\n // this.log.verbose({\r\n // type:\r\n // 'LogoPresenterComponent:onLogoSelect:onFileReaderLoad',\r\n // e\r\n // });\r\n // // Will print the base64 here.\r\n // const result = e.target.result as any;\r\n // this.selectedLogo = result;\r\n // };\r\n // fileReader.readAsDataURL(event.files[0]);\r\n }\r\n\r\n uploadLogo(event) {\r\n const fileReader = new FileReader();\r\n fileReader.onload = (e: any) => {\r\n this.log.verbose({\r\n type: 'LogoPresenterComponent:uploadLogo:onFileReaderLoad',\r\n e\r\n });\r\n // Will print the base64 here.\r\n const result = e.target.result as any;\r\n this.log.verbose('result: ' + result);\r\n // this.selectedLogo = result;\r\n this.SaveLogo.next(result.substring(result.indexOf(',') + 1));\r\n };\r\n fileReader.readAsDataURL(event.files[0]);\r\n this.logoUploader.clear();\r\n this.uploadCompleteMsg = 'Upload Complete';\r\n this.showUploadComplete = true;\r\n setTimeout(() => {\r\n this.uploadCompleteMsg = '';\r\n this.showUploadComplete = false;\r\n }, 3000);\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Logo } from './logo.model';\r\n\r\nexport const getLogo = createAction(\r\n '[Logo/API] Get Logo',\r\n props<{ UploadType: string }>()\r\n);\r\n\r\nexport const putLogo = createAction(\r\n '[Logo/API] PUT Logo',\r\n props<{ logo: Logo}>()\r\n);\r\n\r\nexport const loadLogos = createAction(\r\n '[Logo/API] Load Logos',\r\n props<{ logos: Logo[] }>()\r\n);\r\n\r\nexport const addLogo = createAction(\r\n '[Logo/API] Add Logo',\r\n props<{ logo: Logo }>()\r\n);\r\n\r\nexport const upsertLogo = createAction(\r\n '[Logo/API] Upsert Logo',\r\n props<{ logo: Logo }>()\r\n);\r\n\r\nexport const addLogos = createAction(\r\n '[Logo/API] Add Logos',\r\n props<{ logos: Logo[] }>()\r\n);\r\n\r\nexport const upsertLogos = createAction(\r\n '[Logo/API] Upsert Logos',\r\n props<{ logos: Logo[] }>()\r\n);\r\n\r\nexport const updateLogo = createAction(\r\n '[Logo/API] Update Logo',\r\n props<{ logo: Update }>()\r\n);\r\n\r\nexport const updateLogos = createAction(\r\n '[Logo/API] Update Logos',\r\n props<{ logos: Update[] }>()\r\n);\r\n\r\nexport const deleteLogo = createAction(\r\n '[Logo/API] Delete Logo',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteLogos = createAction(\r\n '[Logo/API] Delete Logos',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearLogos = createAction(\r\n '[Logo/API] Clear Logos'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport * as LogoActions from './logo.actions';\r\nimport {\r\n ResponseStatus,\r\n IStatusMessage,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { catchError, concatMap, flatMap, switchMap } from 'rxjs/operators';\r\nimport { LogoService } from '../logo.service';\r\n\r\n@Injectable()\r\nexport class LogoEffects {\r\n constructor(private actions$: Actions, private service: LogoService) {}\r\n\r\n getLogo$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(LogoActions.getLogo),\r\n switchMap(a =>\r\n this.service.getLogo(a.UploadType).pipe(\r\n flatMap(resp => [\r\n LogoActions.loadLogos({\r\n logos: resp\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.Uploadtype)\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putLogo$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(LogoActions.putLogo),\r\n switchMap(a =>\r\n this.service.putLogo(a.logo).pipe(\r\n flatMap(c => [\r\n LogoActions.updateLogo({\r\n logo: {\r\n id: a.logo.Uploadtype,\r\n changes: c.Items[0]\r\n }\r\n }),\r\n LogoActions.getLogo({ UploadType: 'Web Logo' }),\r\n new fromShared.Errors.RemoveErrors(\r\n c.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Uploadtype.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...c.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...c.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { Logo } from './logo.model';\r\nimport * as LogoActions from './logo.actions';\r\n\r\nexport const logoesFeatureKey = 'logoes';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({selectId: (model: Logo) => model.Uploadtype});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\n\r\nexport const logoReducer = createReducer(\r\n initialState,\r\n on(LogoActions.addLogo,\r\n (state, action) => adapter.addOne(action.logo, state)\r\n ),\r\n on(LogoActions.upsertLogo,\r\n (state, action) => adapter.upsertOne(action.logo, state)\r\n ),\r\n on(LogoActions.addLogos,\r\n (state, action) => adapter.addMany(action.logos, state)\r\n ),\r\n on(LogoActions.upsertLogos,\r\n (state, action) => adapter.upsertMany(action.logos, state)\r\n ),\r\n on(LogoActions.updateLogo,\r\n (state, action) => adapter.updateOne(action.logo, state)\r\n ),\r\n on(LogoActions.updateLogos,\r\n (state, action) => adapter.updateMany(action.logos, state)\r\n ),\r\n on(LogoActions.deleteLogo,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(LogoActions.deleteLogos,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(LogoActions.loadLogos,\r\n (state, action) => adapter.setAll(action.logos, state)\r\n ),\r\n on(LogoActions.clearLogos,\r\n state => adapter.removeAll(state)\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return logoReducer(state, action);\r\n}\r\n\r\nexport const selectLogoState = createFeatureSelector(\r\n logoesFeatureKey\r\n);\r\n\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors(selectLogoState);\r\n","export interface CalcType {\r\n CalcType: string;\r\n CalcDesc: string;\r\n CalcOrder?: number;\r\n CalcShortDesc: string;\r\n OnWhatIf: boolean;\r\n RatetypeCategory: string;\r\n CostType: string;\r\n CostSubType: string;\r\n InvSortOrder?: number;\r\n}\r\n","export interface IAuthorizationClass {\r\n ClassListID: string;\r\n ClassName: string;\r\n IsActive: boolean;\r\n}\r\n","export interface IAuthorizationType {\r\n AuthTypeId: number;\r\n AuthTypeDesc: string;\r\n AuthType: string;\r\n MaintDate: Date;\r\n}\r\n","export interface IContractType {\r\n ContractType: string;\r\n ContractTypeName: string;\r\n}\r\n","export interface IDayOfWeek {\r\n DayOfWeekID: number;\r\n DayOfWeekDesc: string;\r\n}\r\n","import { IModelWithId } from '../shared';\r\n\r\nexport interface IDirectReport extends IModelWithId {\r\n eUserID?: string;\r\n AccountNumber?: string;\r\n CostCenterID?: number;\r\n EmployeeListID: string;\r\n EmployeeName: string;\r\n IsActive?: boolean;\r\n IsValidUser?: boolean;\r\n LeaveAccrualInfo?: string;\r\n MaxWorkDate?: string;\r\n MinWorkDate?: string;\r\n SupervisorListID?: string;\r\n}\r\n","export interface IEntityFilter {\r\n FilterID: number;\r\n FilterDesc: string;\r\n FilterEntity: string;\r\n}\r\n","export interface IExpenseItem {\r\n AccountListID: string;\r\n APAccountListID: string;\r\n EIListID: string;\r\n ExpenseItem: string;\r\n ExpenseItemCost: number;\r\n ExpenseItemDesc: string;\r\n ExpenseItemParent: string;\r\n ExpenseItemPrice: number;\r\n ExpenseItemType: string;\r\n IsActive: boolean;\r\n}\r\n","import { LocaleEnum } from '../expenses/expense-enums';\r\n\r\nexport interface ILocale {\r\n LocaleID: LocaleEnum;\r\n LocaleDesc: string;\r\n}\r\n","export interface ILocation {\r\n LocaleID: number;\r\n CountryArea: string;\r\n Destination: string;\r\n}\r\n","export interface IPerDiemLocale {\r\n LocaleID: number;\r\n LocaleDesc: string;\r\n PerDiemTypeID: number;\r\n PerDiemTypeDesc: string;\r\n}\r\n","export interface IServiceItem {\r\n SIListID: string;\r\n DisplaySI: boolean;\r\n DisplaySIRate: boolean;\r\n ExpenseType: string;\r\n IsActive: boolean;\r\n Postingtype: string;\r\n ServiceItem: string;\r\n ServiceItemCost: number;\r\n ServiceItemDesc: string;\r\n ServiceItemPrice: number;\r\n ServiceItemType: string;\r\n}\r\n","export interface ISplitDay {\r\n SplitDayID: number;\r\n SplitDayDesc: string;\r\n}\r\n","export interface IState {\r\n State: string;\r\n}\r\n","export interface ITask {\r\n TaskListID: string;\r\n TaskLongName: string;\r\n IsActive: boolean;\r\n LaborType: string;\r\n CalcType: string;\r\n IsChargeNumber: boolean;\r\n ContractType: string;\r\n ContractListID: string;\r\n}\r\n","export interface ITimeZone {\r\n Id: string;\r\n DisplayName: string;\r\n StandardName: string;\r\n DaylightName: string;\r\n BaseUtcOffset: string;\r\n OffsetMinutes: number;\r\n AdjustmentRules: any;\r\n SupportsDaylightSavingTime: boolean;\r\n}\r\n","export interface ITravelType {\r\n TravelTypeID: number;\r\n TravelTypeDesc: string;\r\n}\r\n","export interface IUserGroup {\r\n PrefixedGroupID: string;\r\n GroupID: number;\r\n GroupName: string;\r\n GroupPurpose: string;\r\n}\r\n","import { CalcType } from './CalcType';\r\n\r\nexport interface IndirectType extends CalcType {}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { IAuthorizationClass } from './IAuthorizationClass';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthClassLookupService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService) {\r\n }\r\n uri = `${environment.apiLocation}/EFClass`;\r\n\r\n public get (): Observable> {\r\n this.log.verbose({ type: 'AuthClassLookupService:get', uri: this.uri });\r\n return this.http.get>(this.uri)\r\n .pipe(tap(res => this.log.verbose({ type: 'AuthClassLookupService:reponse', res }))\r\n )\r\n ;\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { CalcType } from './CalcType';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CalcTypeService {\r\n private url = `${environment.apiLocation}/CalcType`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n public getCalcType(calcType?: string): Observable {\r\n return !!calcType\r\n ? this.http.get(`${this.url}?costsubtype=${calcType}`)\r\n : this.http.get(`${this.url}`);\r\n }\r\n}\r\n","export interface Color {\r\n Colorname: string;\r\n Colorhex: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { Color } from './color.model';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ColorService {\r\n private uri = `${environment.apiLocation}/Colors`;\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n public get(): Observable> {\r\n this.log.verbose({ type: 'ColorService:get' });\r\n return this.http.get>(this.uri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ColorService:get:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { IContractType } from './IContractType';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContractTypeLookupService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n private contracttypeurl = `${environment.apiLocation}/ContractType`;\r\n public getContractTypes(): Observable> {\r\n return this.http\r\n .get>(this.contracttypeurl)\r\n .pipe(res => {\r\n this.log.verbose({\r\n type: 'CustomerJobComponent:getContractTypes:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { ILocation } from './ILocation';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CountryAreaLookupService {\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService) {\r\n }\r\n uri = `${environment.apiLocation}/CountryArea`;\r\n\r\n public get (type: number): Observable> {\r\n this.log.verbose({ type: 'CountryAreaLookupService:get', uri: `${this.uri}/${type}` });\r\n return this.http.get>(`${this.uri}/${type}`)\r\n .pipe(\r\n tap(res => this.log.verbose({ type: 'CountryAreaLookupService:reponse', res }))\r\n )\r\n ;\r\n }\r\n\r\n public getLocations (type: number, countryArea: string): Observable> {\r\n this.log.verbose({ type: 'CountryAreaLookupService:get', uri: `${this.uri}/${type}/${countryArea}` });\r\n return this.http.get>(`${this.uri}/${type}/${countryArea}`)\r\n .pipe(\r\n tap(res => this.log.verbose({ type: 'CountryAreaLookupService:reponse', res }))\r\n )\r\n ;\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { IDayOfWeek } from './IDayOfWeek';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DaysOfWeekService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n uri = `${environment.apiLocation}/eFDayOfWeek`;\r\n public get(): Observable> {\r\n\r\n this.log.verbose({\r\n type: 'DaysOfWeekService:get',\r\n uri: this.uri,\r\n });\r\n return this.http.get>(this.uri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'DaysOfWeekService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IDirectReport } from './IDirectReport';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DirectReportsLookupService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n uri = `${environment.apiLocation}/DirectReport`;\r\n\r\n public get(\r\n role: number,\r\n activeOnly: boolean = true,\r\n processId: number = null,\r\n MyDRsOnly?: boolean\r\n ): Observable> {\r\n const params = {\r\n UserRole: role,\r\n Groups: [],\r\n ActiveOnly: activeOnly,\r\n processId: processId,\r\n MyDRsOnly: MyDRsOnly\r\n };\r\n if (!processId) {\r\n delete params.processId;\r\n }\r\n this.log.verbose({\r\n type: 'DirectReportsLookupService:get',\r\n uri: this.uri,\r\n params\r\n });\r\n return this.http.post>(this.uri, params).pipe(\r\n map(items => this.mapItems(items)),\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'DirectReportsLookupService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n private mapItems(items: IDirectReport[]): IDirectReport[] {\r\n return items.map(item => ({\r\n ...item,\r\n id: item.EmployeeListID\r\n }));\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IEntityFilter } from './IEntityFilter';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityFilterService {\r\n uri = `${environment.apiLocation}/EntityFilter/?FilterEntity=`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n loadEntityFilter(filterType: string): Observable> {\r\n return this.http\r\n .get>(`${this.uri}${filterType}`)\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'DirectReportsLookupService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { IExpenseItem } from './IExpenseItem';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExpenseItemLookupService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService) {\r\n }\r\n uri = `${environment.apiLocation}/ExpenseItem`;\r\n\r\n public get (): Observable> {\r\n const params = {};\r\n\r\n this.log.verbose({ type: 'ExpenseItemLookupService:get', uri: this.uri });\r\n return this.http.get>(this.uri)\r\n .pipe(\r\n tap(res => this.log.verbose({ type: 'ExpenseItemLookupService:reponse', res }))\r\n );\r\n }\r\n}\r\n","export * from './store';\r\nexport * from './IAuthorizationClass';\r\nexport * from './IAuthorizationType';\r\nexport * from './IDirectReport';\r\nexport * from './IServiceItem';\r\nexport * from './ITask';\r\nexport * from './IUserGroup';\r\nexport * from './IPerDiemLocal';\r\nexport * from './IExpenseItem';\r\nexport * from './ITravelType';\r\nexport * from './ILocale';\r\nexport * from './IState';\r\nexport * from './IContractType';\r\nexport * from './IndirectType';\r\nexport * from './ILocation';\r\nexport * from './IEntityFilter';\r\nexport * from './ISplitDay';\r\nexport * from './iuser-id-format';\r\nexport * from './locale-lookup.service';\r\nexport * from './payroll-item-lookup.service';\r\nexport * from './per-diem-lookup.service';\r\nexport * from './service-item-lookup.service';\r\nexport * from './tasks-lookup.service';\r\nexport * from './travel-type-lookup.service';\r\nexport * from './user-authorization-type-lookup.service';\r\nexport * from './user-group-lookup.service';\r\nexport * from './expense-item-lookup.service';\r\nexport * from './country-area-lookup.service';\r\nexport * from './entity-filter.service';\r\nexport * from './split-day.service';\r\nexport * from './user-id-format.service';\r\nexport * from './IDayOfWeek';\r\nexport * from './ITimeZone';\r\nexport * from './days-of-week.service';\r\nexport * from './time-zone.service';\r\nexport * from './direct-reports-lookup.service';\r\nexport * from './auth-class-lookup.service';\r\nexport * from './state-lookup.service';\r\nexport * from './contract-types-lookup.service';\r\nexport * from './indirect-labor-types-lookup.service';\r\nexport * from './payroll-frequency.service';\r\nexport * from './color.model';\r\nexport * from './color.service';\r\nexport * from './posting-type.model';\r\nexport * from './CalcType';\r\nexport * from './mobile-provider.model';\r\nexport * from './message-delivery-type.model';\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { IndirectType } from './IndirectType';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IndirectLaborTypesLookupService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n private url = `${environment.apiLocation}/IndirectType/Labor`;\r\n public getIndirectTypes(): Observable> {\r\n return this.http.get>(this.url).pipe(res => {\r\n this.log.verbose({\r\n type:\r\n 'IndirectLaborTypesLookupService:getIndirectLaborTypes:reponse',\r\n res\r\n });\r\n return res;\r\n });\r\n }\r\n}\r\n","export interface IUserIdFormat {\r\n Useridformat_ID: number;\r\n Useridformat_Desc: string;\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ILocale } from './ILocale';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocaleLookupService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService\r\n ) { }\r\n uri = `${environment.apiLocation}/PerDiemLocale`;\r\n public get (): Observable> {\r\n this.log.verbose({ type: 'LocaleLookupService:get', uri: this.uri });\r\n return this.http.get>(this.uri)\r\n .pipe(\r\n tap(res => this.log.verbose({ type: 'LocaleLookupService:reponse', res }))\r\n )\r\n ;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { reducer } from './store/reducers';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { LookupEffects } from './store/effects';\r\nimport { ScheduledDateEffects } from './store/schedule-date.effects';\r\nimport {\r\n reducer as scheduledDateReducer,\r\n scheduledDatesFeatureKey\r\n} from './store/schedule-date.reducer';\r\nimport * as fromDataServices from '../data-services';\r\nimport { EntityDataService } from '@ngrx/data';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('lookups', reducer),\r\n StoreModule.forFeature(scheduledDatesFeatureKey, scheduledDateReducer),\r\n EffectsModule.forFeature([LookupEffects, ScheduledDateEffects])\r\n ],\r\n declarations: [],\r\n providers: [fromDataServices.Contract.ContractDataService]\r\n})\r\nexport class LookupsModule {}\r\n","export interface MessageDeliveryType {\r\n Messagedeliveryid: number;\r\n Messagedeliverydesc: string;\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable, of } from 'rxjs';\r\nimport { MessageDeliveryType } from './message-delivery-type.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageDeliveryTypeService {\r\n private uri = `${environment.apiLocation}/MessageDelivery`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n get(): Observable> {\r\n return this.http.get>(this.uri) || of([]);\r\n }\r\n}\r\n","export interface MobileProvider {\r\n MobileproviderID: number;\r\n MobileproviderName: string;\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { MobileProvider } from './mobile-provider.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MobileProviderService {\r\n uri = `${environment.apiLocation}/MobileProvider`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n get(): Observable> {\r\n return this.http.get>(this.uri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'MobileProviderService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PayrollFrequencyService {\r\n uri = `${environment.apiLocation}/PayrollFrequency`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n get(): Observable> {\r\n return this.http\r\n .get>(this.uri)\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'PayrollFrequencyService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { PayrollItem } from '../payroll/item/store/payroll-item.model';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PayrollItemLookupService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n uri = `${environment.apiLocation}/PayrollItem`;\r\n\r\n public get(reports?: Array): Observable> {\r\n const params = {};\r\n\r\n this.log.verbose({\r\n type: 'PayrollItemLookupService:get',\r\n uri: this.uri,\r\n reports\r\n });\r\n return this.http.post>(this.uri, reports).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'PayrollItemLookupService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { IPerDiemLocale } from './IPerDiemLocal';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PerDiemLookupService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService) {\r\n }\r\n uri = `${environment.apiLocation}/PerDiemTypeByLocale`;\r\n\r\n public get (): Observable> {\r\n const params = {};\r\n\r\n this.log.verbose({ type: 'PerDiemLookupService:get', uri: this.uri });\r\n return this.http.get>(this.uri)\r\n .pipe(\r\n tap(res => this.log.verbose({ type: 'PerDiemLookupService:reponse', res }))\r\n );\r\n }\r\n}\r\n","import { DataServiceEntity } from '../data-services/data-service.entity';\r\nimport { IStatusMessage } from '../shared';\r\n\r\nexport interface PostingType extends DataServiceEntity {\r\n // id: string;\r\n PostingType: string;\r\n Name?: string;\r\n ListID?: string;\r\n Description?: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { ScheduledDate } from './store/schedule-date.model';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport * as moment from 'moment';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScheduledDateService {\r\n uri = `${environment.apiLocation}/ScheduledDate`;\r\n\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n public get(ShowAll = true): Observable> {\r\n this.log.verbose({\r\n type: 'ScheduledDateService:get',\r\n uri: this.uri\r\n });\r\n return (\r\n this.http\r\n .get>(this.uri, {\r\n params: { ShowAll: ShowAll.toString() }\r\n })\r\n // .post(this.uri, {ShowAll})\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ScheduledDateService:reponse',\r\n res\r\n })\r\n ),\r\n map(dates => dates.map(d => this.mapScheduleDates(d)))\r\n )\r\n );\r\n }\r\n private mapScheduleDates(item: ScheduledDate): ScheduledDate {\r\n return {\r\n ...item,\r\n ScheduledStartDate: moment(item.ScheduledStartDate).isValid()\r\n ? moment(item.ScheduledStartDate).toDate()\r\n : null,\r\n ScheduledEndDate: moment(item.ScheduledEndDate).isValid()\r\n ? moment(item.ScheduledEndDate).toDate()\r\n : null\r\n };\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { IServiceItem } from './IServiceItem';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceItemLookupService {\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n uri: string; // = `${environment.apiLocation}/ServiceItem`;\r\n\r\n public get(activeOnly: boolean = true): Observable> {\r\n this.uri = `${environment.apiLocation}/ServiceItem?activeOnly=${activeOnly}`;\r\n this.log.verbose({\r\n type: 'ServiceItemLookupService:get',\r\n uri: this.uri // activeOnly ? `${this.uri}?activeOnly=${activeOnly}` : this.uri\r\n });\r\n return this.http.get>(this.uri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ServiceItemLookupService:get:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n public post(\r\n activeOnly: boolean = true,\r\n IncludeSystem: boolean = false,\r\n IncludeOtherChargeItem: boolean = false\r\n ): Observable> {\r\n this.uri = `${environment.apiLocation}/ServiceItem`;\r\n this.log.verbose({\r\n type: 'ServiceItemLookupService:post',\r\n uri: this.uri, // activeOnly ? `${this.uri}?activeOnly=${activeOnly}` : this.uri\r\n activeOnly,\r\n IncludeSystem,\r\n IncludeOtherChargeItem\r\n });\r\n return this.http\r\n .post>(this.uri, {\r\n activeOnly,\r\n IncludeSystem,\r\n IncludeOtherChargeItem\r\n })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'ServiceItemLookupService:post:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IEntityFilter } from './IEntityFilter';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { ISplitDay } from './ISplitDay';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SplitDayService {\r\n uri = `${environment.apiLocation}/SplitDay`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n loadSplitdays(): Observable> {\r\n return this.http\r\n .get>(this.uri)\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'SplitDayService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { IState } from './IState';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StateLookupService {\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService) {\r\n }\r\n uri = `${environment.apiLocation}/StatesUS`;\r\n\r\n public get (): Observable> {\r\n this.log.verbose({ type: 'StateLookupService:get', uri: this.uri });\r\n return this.http.get>(this.uri)\r\n .pipe(\r\n tap(res => this.log.verbose({ type: 'StateLookupService:reponse', res }))\r\n )\r\n ;\r\n }\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport { Account } from '../../account/store/account.model';\r\nimport { LocaleEnum } from '../../expenses/expense-enums';\r\nimport { PayrollItem } from '../../payroll/item/store/payroll-item.model';\r\nimport { IUserInfo } from '../../user-info/IUserInfo';\r\nimport { Color } from '../color.model';\r\nimport { IAuthorizationClass } from '../IAuthorizationClass';\r\nimport { IAuthorizationType } from '../IAuthorizationType';\r\nimport { IContractType } from '../IContractType';\r\nimport { IDayOfWeek } from '../IDayOfWeek';\r\nimport { IDirectReport } from '../IDirectReport';\r\nimport { IEntityFilter } from '../IEntityFilter';\r\nimport { IExpenseItem } from '../IExpenseItem';\r\nimport { ILocale } from '../ILocale';\r\nimport { ILocation } from '../ILocation';\r\nimport { IndirectType } from '../IndirectType';\r\nimport { IPerDiemLocale } from '../IPerDiemLocal';\r\nimport { IServiceItem } from '../IServiceItem';\r\nimport { ISplitDay } from '../ISplitDay';\r\nimport { IState } from '../IState';\r\nimport { ITask } from '../ITask';\r\nimport { ITimeZone } from '../ITimeZone';\r\nimport { ITravelType } from '../ITravelType';\r\nimport { IUserIdFormat } from '../iuser-id-format';\r\nimport { IUserGroup } from '../IUserGroup';\r\nimport { MessageDeliveryType } from '../message-delivery-type.model';\r\nimport { MobileProvider } from '../mobile-provider.model';\r\n\r\nexport enum LookupActionTypes {\r\n RESET = '[lookup] RESET',\r\n LoadAuthorizationTypes = '[lookup] Load Authorization Types',\r\n LoadDirectReports = '[lookup] Load Direct Reports',\r\n LoadTasks = '[lookup] Load Tasks',\r\n LoadUserTasks = '[lookup] Load User Tasks',\r\n LoadContractTasks = '[lookup] Load Contract Tasks',\r\n LoadServiceItems = '[lookup] Load Service Items',\r\n LoadUserGroups = '[lookup] Load User Groups',\r\n LoadAuthorizationClasses = '[lookup] Load Authorization Classes',\r\n LoadPayrollItems = '[lookup] Load Payroll Items',\r\n LoadPerDiemTypes = '[lookup] Load Per Diem Types',\r\n LoadLocales = '[lookup] Load Locales',\r\n LoadTravelTypes = '[lookup] Load Travel Types',\r\n LoadExpenseItems = '[lookup] Load Expense Items',\r\n LoadStates = '[lookup] Load States',\r\n LoadCountries = '[lookup] Load Countries',\r\n LoadAreas = '[lookup] Load Areas',\r\n LoadLocations = '[lookup] Load Locations',\r\n LoadContractTypes = '[lookup] Load Contract Types',\r\n LoadEntityFilter = '[lookup] Load Entity Filter',\r\n LoadSplitday = '[lookup] Load Splitday',\r\n LoadIndirectTypes = '[lookup] Load Indirect Types',\r\n LoadPayrollFrequency = '[lookup] Load Payroll Frequency',\r\n LoadUserIdFormats = '[lookup] Load User Id Formats',\r\n LoadDaysOfWeek = '[lookup] Load Days Of Week',\r\n LoadTimeZones = '[lookup] Load Time Zones',\r\n LoadUserTimeZones = '[lookup] Load User Time Zones',\r\n LoadColors = '[lookup] Load Colors',\r\n LoadMobileProviders = '[lookup] LoadMobileProviders',\r\n SetAuthorizationTypes = '[lookup] Set Authorization Types',\r\n SetDirectReports = '[lookup] Set Direct Reports',\r\n SetTasks = '[lookup] Set Tasks',\r\n SetUserTasks = '[lookup] Set User Tasks',\r\n SetContractTasks = '[lookup] Set Contract Tasks',\r\n SetServiceItems = '[lookup] Set Service Items',\r\n SetUserGroups = '[lookup] Set User Groups',\r\n SetAuthorizationClasses = '[lookup] Set Authorization Classes',\r\n SetPayrollItems = '[lookup] Set Payroll Items',\r\n SetPerDiemTypes = '[lookup] Set Per Diem Types',\r\n SetLocales = '[lookup] Set Locales',\r\n SetTravelTypes = '[lookup] Set Travel Types',\r\n SetExpenseItems = '[lookup] Set Expense Items',\r\n SetStates = '[lookup] Set States',\r\n SetCountries = '[lookup] Set Countries',\r\n SetAreas = '[lookup] Set Areas',\r\n SetLocations = '[lookup] Set Locations',\r\n SetContractTypes = '[lookup] Set Contract Types',\r\n SetIndirectTypes = '[lookup] Set Indirect Types',\r\n SetEntityFilter = '[lookup] Set Entity Filter',\r\n SetSplitday = '[lookup] Set Splitday',\r\n SetPayrollFrequency = '[lookup] Set Payroll Frequency',\r\n SetUserIdFormats = '[lookup] Set User Id Formats',\r\n SetDaysOfWeek = '[lookup] Set Days Of Week',\r\n SetTimeZones = '[lookup] Set Time Zones',\r\n SetUserTimeZones = '[lookup] Set User Time Zones',\r\n SetColors = '[lookup] Set Colors',\r\n SetMobileProviders = '[lookup] Set SetMobileProviders',\r\n GetCreditCards = '[lookup] Get Credit Cards',\r\n SetCreditCards = '[lookup] Set Credit Cards',\r\n GetMessageDeliveryTypes = '[lookup] Get Message Delivery Types',\r\n SetMessageDeliveryTypes = '[lookup] Set Message Delivery Types'\r\n}\r\nexport class Reset implements Action {\r\n readonly type = LookupActionTypes.RESET;\r\n}\r\nexport class LoadDirectReports implements Action {\r\n readonly type = LookupActionTypes.LoadDirectReports;\r\n constructor(\r\n public payload: {\r\n user: IUserInfo;\r\n activeOnly: boolean;\r\n processId?: number;\r\n MyDRsOnly?: boolean;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class SetDirectReports implements Action {\r\n readonly type = LookupActionTypes.SetDirectReports;\r\n constructor(public payload: Array) {}\r\n}\r\n\r\nexport class LoadAuthorizationTypes implements Action {\r\n readonly type = LookupActionTypes.LoadAuthorizationTypes;\r\n}\r\nexport class SetAuthorizationTypes implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetAuthorizationTypes;\r\n}\r\n\r\nexport class LoadTasks implements Action {\r\n readonly type = LookupActionTypes.LoadTasks;\r\n}\r\nexport class SetTasks implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetTasks;\r\n}\r\n\r\nexport class LoadUserTasks implements Action {\r\n readonly type = LookupActionTypes.LoadUserTasks;\r\n constructor(public payload: { ProcessID: number; AsOfDate: Date }) {}\r\n}\r\nexport class LoadContractTasks implements Action {\r\n readonly type = LookupActionTypes.LoadContractTasks;\r\n constructor(public payload: { contractlistid: string }) {}\r\n}\r\nexport class SetUserTasks implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetUserTasks;\r\n}\r\nexport class SetContractTasks implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetContractTasks;\r\n}\r\n\r\nexport class LoadServiceItems implements Action {\r\n constructor(\r\n public activeOnly?: boolean,\r\n public IncludeSystem: boolean = false,\r\n public IncludeOtherChargeItem: boolean = false\r\n ) {}\r\n readonly type = LookupActionTypes.LoadServiceItems;\r\n}\r\nexport class SetServiceItems implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetServiceItems;\r\n}\r\nexport class LoadUserGroups implements Action {\r\n readonly type = LookupActionTypes.LoadUserGroups;\r\n}\r\nexport class SetUserGroups implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetUserGroups;\r\n}\r\nexport class LoadEntityFilter implements Action {\r\n readonly type = LookupActionTypes.LoadEntityFilter;\r\n constructor(public filterEntity: string) {}\r\n}\r\nexport class SetEntityFilter implements Action {\r\n readonly type = LookupActionTypes.SetEntityFilter;\r\n constructor(public filterTypes: Array) {}\r\n}\r\nexport class LoadAuthorizationClasses implements Action {\r\n readonly type = LookupActionTypes.LoadAuthorizationClasses;\r\n}\r\nexport class SetAuthorizationClasses implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetAuthorizationClasses;\r\n}\r\n\r\nexport class LoadPayrollItems implements Action {\r\n constructor(public payload?: Array) {}\r\n readonly type = LookupActionTypes.LoadPayrollItems;\r\n}\r\nexport class SetPayrollItems implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetPayrollItems;\r\n}\r\nexport class LoadPerDiemTypes implements Action {\r\n readonly type = LookupActionTypes.LoadPerDiemTypes;\r\n}\r\nexport class SetPerDiemTypes implements Action {\r\n readonly type = LookupActionTypes.SetPerDiemTypes;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadLocales implements Action {\r\n readonly type = LookupActionTypes.LoadLocales;\r\n}\r\nexport class SetLocales implements Action {\r\n readonly type = LookupActionTypes.SetLocales;\r\n constructor(public payload: Array) {}\r\n}\r\n\r\nexport class LoadTravelTypes implements Action {\r\n readonly type = LookupActionTypes.LoadTravelTypes;\r\n}\r\nexport class SetTravelTypes implements Action {\r\n readonly type = LookupActionTypes.SetTravelTypes;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadExpenseItems implements Action {\r\n readonly type = LookupActionTypes.LoadExpenseItems;\r\n}\r\nexport class SetExpenseItems implements Action {\r\n readonly type = LookupActionTypes.SetExpenseItems;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadStates implements Action {\r\n readonly type = LookupActionTypes.LoadStates;\r\n}\r\nexport class SetStates implements Action {\r\n readonly type = LookupActionTypes.SetStates;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadLocations implements Action {\r\n readonly type = LookupActionTypes.LoadLocations;\r\n constructor(public payload: { locale: LocaleEnum; countryArea: string }) {}\r\n}\r\nexport class SetLocations implements Action {\r\n readonly type = LookupActionTypes.SetLocations;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadCountries implements Action {\r\n readonly type = LookupActionTypes.LoadCountries;\r\n}\r\nexport class SetCountries implements Action {\r\n readonly type = LookupActionTypes.SetCountries;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadAreas implements Action {\r\n readonly type = LookupActionTypes.LoadAreas;\r\n}\r\nexport class SetAreas implements Action {\r\n readonly type = LookupActionTypes.SetAreas;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadContractTypes implements Action {\r\n constructor() {}\r\n readonly type = LookupActionTypes.LoadContractTypes;\r\n}\r\nexport class SetContractTypes implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetContractTypes;\r\n}\r\nexport class LoadIndirectTypes implements Action {\r\n constructor() {}\r\n readonly type = LookupActionTypes.LoadIndirectTypes;\r\n}\r\nexport class SetIndirectTypes implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = LookupActionTypes.SetIndirectTypes;\r\n}\r\nexport class LoadSplitday implements Action {\r\n readonly type = LookupActionTypes.LoadSplitday;\r\n}\r\nexport class SetSplitday implements Action {\r\n readonly type = LookupActionTypes.SetSplitday;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadPayrollFrequency implements Action {\r\n readonly type = LookupActionTypes.LoadPayrollFrequency;\r\n}\r\nexport class SetPayrollFrequency implements Action {\r\n readonly type = LookupActionTypes.SetPayrollFrequency;\r\n constructor(public payload: Array<{ Payrollfrequency: number }>) {}\r\n}\r\nexport class LoadUserIdFormats implements Action {\r\n readonly type = LookupActionTypes.LoadUserIdFormats;\r\n}\r\nexport class SetUserIdFormats implements Action {\r\n readonly type = LookupActionTypes.SetUserIdFormats;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadDaysOfWeek implements Action {\r\n readonly type = LookupActionTypes.LoadDaysOfWeek;\r\n}\r\nexport class SetDaysOfWeek implements Action {\r\n readonly type = LookupActionTypes.SetDaysOfWeek;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadTimeZones implements Action {\r\n readonly type = LookupActionTypes.LoadTimeZones;\r\n}\r\nexport class SetTimeZones implements Action {\r\n readonly type = LookupActionTypes.SetTimeZones;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadUserTimeZones implements Action {\r\n readonly type = LookupActionTypes.LoadUserTimeZones;\r\n}\r\nexport class SetUserTimeZones implements Action {\r\n readonly type = LookupActionTypes.SetUserTimeZones;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadColors implements Action {\r\n readonly type = LookupActionTypes.LoadColors;\r\n}\r\nexport class SetColors implements Action {\r\n readonly type = LookupActionTypes.SetColors;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class LoadMobileProviders implements Action {\r\n readonly type = LookupActionTypes.LoadMobileProviders;\r\n}\r\nexport class SetMobileProviders implements Action {\r\n readonly type = LookupActionTypes.SetMobileProviders;\r\n constructor(public payload: Array) {}\r\n}\r\nexport class GetCreditCards implements Action {\r\n constructor(public payload: string) {}\r\n readonly type = LookupActionTypes.GetCreditCards;\r\n}\r\nexport class SetCreditCards implements Action {\r\n constructor(public payload: Account[]) {}\r\n readonly type = LookupActionTypes.SetCreditCards;\r\n}\r\nexport class GetMessageDeliveryTypes implements Action {\r\n readonly type = LookupActionTypes.GetMessageDeliveryTypes;\r\n}\r\nexport class SetMessageDeliveryTypes implements Action {\r\n constructor(public payload: MessageDeliveryType[]) {}\r\n readonly type = LookupActionTypes.SetMessageDeliveryTypes;\r\n}\r\nexport type LookupActionsUnion =\r\n | Reset\r\n | LoadDirectReports\r\n | LoadAuthorizationTypes\r\n | LoadTasks\r\n | LoadUserTasks\r\n | LoadContractTasks\r\n | LoadServiceItems\r\n | LoadUserGroups\r\n | LoadAuthorizationClasses\r\n | LoadPayrollItems\r\n | LoadPerDiemTypes\r\n | LoadLocales\r\n | LoadTravelTypes\r\n | LoadExpenseItems\r\n | LoadStates\r\n | LoadCountries\r\n | LoadAreas\r\n | LoadLocations\r\n | LoadContractTypes\r\n | LoadIndirectTypes\r\n | LoadEntityFilter\r\n | LoadSplitday\r\n | LoadPayrollFrequency\r\n | LoadUserIdFormats\r\n | LoadDaysOfWeek\r\n | LoadTimeZones\r\n | LoadUserTimeZones\r\n | LoadColors\r\n | LoadMobileProviders\r\n | SetAuthorizationTypes\r\n | SetDirectReports\r\n | SetTasks\r\n | SetUserTasks\r\n | SetContractTasks\r\n | SetServiceItems\r\n | SetUserGroups\r\n | SetAuthorizationClasses\r\n | SetPayrollItems\r\n | SetPerDiemTypes\r\n | SetLocales\r\n | SetTravelTypes\r\n | SetExpenseItems\r\n | SetStates\r\n | SetAreas\r\n | SetCountries\r\n | SetLocations\r\n | SetContractTypes\r\n | SetIndirectTypes\r\n | SetEntityFilter\r\n | SetSplitday\r\n | SetPayrollFrequency\r\n | SetUserIdFormats\r\n | SetDaysOfWeek\r\n | SetTimeZones\r\n | SetUserTimeZones\r\n | SetColors\r\n | SetMobileProviders\r\n | GetCreditCards\r\n | SetCreditCards\r\n | GetMessageDeliveryTypes\r\n | SetMessageDeliveryTypes;\r\n","// don't use createeffect if you're not using createaction for the action\r\n// do not mix the old (defining actions as classes) with the new (createeffect)\r\n// you end up with bad things happening (double calls, or no calls at all)\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, Effect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport {\r\n catchError,\r\n filter,\r\n map,\r\n switchMap,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { AccountService } from '../../account/account.service';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromRoot from '../../store';\r\nimport { AuthClassLookupService } from '../auth-class-lookup.service';\r\nimport { ColorService } from '../color.service';\r\nimport { ContractTypeLookupService } from '../contract-types-lookup.service';\r\nimport { DaysOfWeekService } from '../days-of-week.service';\r\nimport { DirectReportsLookupService } from '../direct-reports-lookup.service';\r\nimport { EntityFilterService } from '../entity-filter.service';\r\nimport { IndirectLaborTypesLookupService } from '../indirect-labor-types-lookup.service';\r\nimport { IUserGroup } from '../IUserGroup';\r\nimport { MessageDeliveryTypeService } from '../message-delivery-type.service';\r\nimport { MobileProviderService } from '../mobile-provider.service';\r\nimport { PayrollFrequencyService } from '../payroll-frequency.service';\r\nimport { PayrollItemLookupService } from '../payroll-item-lookup.service';\r\nimport { ServiceItemLookupService } from '../service-item-lookup.service';\r\nimport { SplitDayService } from '../split-day.service';\r\nimport { StateLookupService } from '../state-lookup.service';\r\nimport { TasksLookupService } from '../tasks-lookup.service';\r\nimport { TimeZoneService } from '../time-zone.service';\r\nimport { UserAuthorizationTypeLookupService } from '../user-authorization-type-lookup.service';\r\nimport { UserGroupLookupService } from '../user-group-lookup.service';\r\nimport { UserIdFormatService } from '../user-id-format.service';\r\nimport * as actions from './actions';\r\nimport * as fromLookups from './reducers';\r\n\r\n@Injectable()\r\nexport class LookupEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private store: Store,\r\n private log: LoggingService,\r\n private userAuthTypeService: UserAuthorizationTypeLookupService,\r\n private drService: DirectReportsLookupService,\r\n private tasksService: TasksLookupService,\r\n private siService: ServiceItemLookupService,\r\n private ugService: UserGroupLookupService,\r\n private authClassService: AuthClassLookupService,\r\n private payService: PayrollItemLookupService,\r\n private stateService: StateLookupService,\r\n private contractTypeService: ContractTypeLookupService, // can't load?\r\n private entityFilterService: EntityFilterService,\r\n private indirectTypeService: IndirectLaborTypesLookupService, // can't load?\r\n private splitdayService: SplitDayService,\r\n private payrollFrequencyService: PayrollFrequencyService,\r\n private userIdFormatService: UserIdFormatService,\r\n private daysOfWeekService: DaysOfWeekService,\r\n private timeZoneService: TimeZoneService,\r\n private colorService: ColorService,\r\n private mobileProviderService: MobileProviderService,\r\n private accountService: AccountService,\r\n private messageDeliveryTypeService: MessageDeliveryTypeService\r\n ) {}\r\n\r\n @Effect() LoadColors$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadColors),\r\n switchMap(() =>\r\n this.colorService.get().pipe(\r\n map(data => new actions.SetColors(data)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() TimeZone$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadTimeZones),\r\n switchMap(() =>\r\n this.timeZoneService.get().pipe(\r\n filter(data => !!data),\r\n map(data => new actions.SetTimeZones(data)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() UserTimeZone$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadUserTimeZones),\r\n switchMap(() =>\r\n this.timeZoneService.getUserTimeZones().pipe(\r\n filter(data => !!data),\r\n map(data => new actions.SetUserTimeZones(data)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() DaysOfWeek$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadDaysOfWeek),\r\n switchMap(() =>\r\n this.daysOfWeekService.get().pipe(\r\n tap(x => this.log.verbose({ type: 'DaysOfWeek$', x })),\r\n map(data => new actions.SetDaysOfWeek(data)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadSplitdays$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadSplitday),\r\n tap(x => this.log.verbose({ type: 'LoadSplitdays$', x })),\r\n switchMap(() =>\r\n this.splitdayService.loadSplitdays().pipe(\r\n tap(x => this.log.verbose({ type: 'LoadSplitdays$:resp', x })),\r\n map(x => new actions.SetSplitday(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadUserAuthorizationTypes$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadAuthorizationTypes),\r\n switchMap(_ =>\r\n this.userAuthTypeService.getAuthorizationTypes().pipe(\r\n map(auths => new actions.SetAuthorizationTypes(auths)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() DirectReports$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadDirectReports\r\n ),\r\n switchMap(action =>\r\n this.drService\r\n .get(\r\n action.payload.user.DefaultRoleGroupID || 1,\r\n action.payload.activeOnly,\r\n action.payload.processId,\r\n action.payload.MyDRsOnly\r\n )\r\n .pipe(\r\n map(drs => new actions.SetDirectReports(drs)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() Tasks$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadTasks),\r\n switchMap(() =>\r\n this.tasksService.get().pipe(\r\n map(tasks => new actions.SetTasks(tasks)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadUserTasks$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadUserTasks),\r\n switchMap(a =>\r\n this.tasksService\r\n .getUserTasks(a.payload.ProcessID, a.payload.AsOfDate)\r\n .pipe(\r\n map(tasks => new actions.SetUserTasks(tasks)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadContractTasks$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadContractTasks\r\n ),\r\n switchMap(a =>\r\n this.tasksService.getContractTasks(a.payload.contractlistid).pipe(\r\n map(tasks => new actions.SetContractTasks(tasks)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() ServiceItems$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadServiceItems\r\n ),\r\n switchMap(a => {\r\n if (a.IncludeOtherChargeItem || a.IncludeSystem) {\r\n return this.siService\r\n .post(\r\n a.activeOnly,\r\n a.IncludeSystem,\r\n a.IncludeOtherChargeItem\r\n )\r\n .pipe(\r\n map(si => new actions.SetServiceItems(si)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n } else {\r\n return this.siService.get(a.activeOnly).pipe(\r\n map(si => new actions.SetServiceItems(si)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n }\r\n })\r\n );\r\n\r\n @Effect() LoadUserGroups$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadUserGroups),\r\n switchMap(() =>\r\n this.ugService.get().pipe(\r\n map(x => new actions.SetUserGroups(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() AuthorizationClasses$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadAuthorizationClasses),\r\n switchMap(_ =>\r\n this.authClassService.get().pipe(\r\n map(x => new actions.SetAuthorizationClasses(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() PayrollItems$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadPayrollItems\r\n ),\r\n switchMap(a =>\r\n this.payService.get(a.payload).pipe(\r\n map(x => new actions.SetPayrollItems(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() States$ = this.actions$.pipe(\r\n ofType(actions.LookupActionTypes.LoadStates),\r\n switchMap(a =>\r\n this.stateService.get().pipe(\r\n map(x => new actions.SetStates(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadContractTypes$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadContractTypes\r\n ),\r\n switchMap(a =>\r\n this.contractTypeService.getContractTypes().pipe(\r\n map(x => new actions.SetContractTypes(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadIndirectTypes$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadIndirectTypes\r\n ),\r\n switchMap(a =>\r\n this.indirectTypeService.getIndirectTypes().pipe(\r\n map(x => new actions.SetIndirectTypes(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadEntityFilter$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadEntityFilter\r\n ),\r\n switchMap(a =>\r\n this.entityFilterService.loadEntityFilter(a.filterEntity).pipe(\r\n tap(x => this.log.verbose({ type: 'LoadEntityFilter$', x })),\r\n map(x => new actions.SetEntityFilter(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadPayrollFrequency$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadPayrollFrequency\r\n ),\r\n withLatestFrom(\r\n this.store.pipe(select(fromLookups.getPayrollFrequency))\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(() =>\r\n this.payrollFrequencyService.get().pipe(\r\n map(x => new actions.SetPayrollFrequency(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadUserIdFormats$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadUserIdFormats\r\n ),\r\n withLatestFrom(this.store.pipe(select(fromLookups.getUserIdFormats))),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(a =>\r\n this.userIdFormatService.get().pipe(\r\n map(x => new actions.SetUserIdFormats(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() LoadMobileProviders$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.LoadMobileProviders\r\n ),\r\n withLatestFrom(\r\n this.store.pipe(select(fromLookups.selectMobileProviders))\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(() =>\r\n this.mobileProviderService.get().pipe(\r\n map(x => new actions.SetMobileProviders(x)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() GetCreditCards$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.GetCreditCards\r\n ),\r\n withLatestFrom(this.store.pipe(select(fromLookups.getCreditCards))),\r\n filter(([, items]) => !items || items.length === 0),\r\n switchMap(([action]) =>\r\n this.accountService.get(action.payload).pipe(\r\n map(data => new actions.SetCreditCards(data)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect() GetMessageDeliveryTypes$ = this.actions$.pipe(\r\n ofType(\r\n actions.LookupActionTypes.GetMessageDeliveryTypes\r\n ),\r\n withLatestFrom(\r\n this.store.pipe(select(fromLookups.selectMessageDeliveryTypes))\r\n ),\r\n filter(([, items]) => !items || items.length === 0),\r\n switchMap(([action]) =>\r\n this.messageDeliveryTypeService.get().pipe(\r\n map(data => new actions.SetMessageDeliveryTypes(data)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n}\r\n","export * from './actions';\r\nexport * from './effects';\r\nexport * from './reducers';\r\nexport * from './schedule-date.model';\r\n\r\nimport * as ScheduledDateActions from './schedule-date.actions';\r\nimport * as ScheduledDateEffects from './schedule-date.effects';\r\nimport * as ScheduledDateReducer from './schedule-date.reducer';\r\nimport * as ScheduledDateSelectors from './schedule-date.selectors';\r\n\r\nexport {\r\n ScheduledDateActions,\r\n ScheduledDateEffects,\r\n ScheduledDateSelectors,\r\n ScheduledDateReducer\r\n};\r\n","import * as fromLookups from './actions';\r\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { IAuthorizationType } from '../IAuthorizationType';\r\nimport { ITask } from '../ITask';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IDirectReport } from '../IDirectReport';\r\nimport { IServiceItem } from '../IServiceItem';\r\nimport { IUserGroup } from '../IUserGroup';\r\nimport { IAuthorizationClass } from '../IAuthorizationClass';\r\nimport { PayrollItem } from '../../payroll/item/store/payroll-item.model';\r\nimport { IPerDiemLocale } from '../IPerDiemLocal';\r\nimport { ITravelType } from '../ITravelType';\r\nimport { IExpenseItem } from '../IExpenseItem';\r\nimport { ILocale } from '../ILocale';\r\nimport { IState } from '../IState';\r\nimport { IContractType } from '../IContractType';\r\nimport { ILocation } from '../ILocation';\r\nimport { IndirectType } from '../IndirectType';\r\nimport { IEntityFilter } from '../IEntityFilter';\r\nimport { ISplitDay } from '../ISplitDay';\r\nimport { stagger } from '@angular/animations';\r\nimport { IUser } from '../../user-info';\r\nimport { IUserIdFormat } from '../iuser-id-format';\r\nimport { IDayOfWeek } from '../IDayOfWeek';\r\nimport { ITimeZone } from '../ITimeZone';\r\nimport { Color } from '../color.model';\r\nimport { MobileProvider } from '../mobile-provider.model';\r\nimport { MessageDeliveryType } from '../message-delivery-type.model';\r\nimport { Account } from '../../account/store/account.model';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport interface LookupState {\r\n authorizationTypes: Array;\r\n directReports: Array;\r\n tasks: Array;\r\n userTasks: Array;\r\n contractTasks: Array;\r\n serviceItems: Array;\r\n userGroups: Array;\r\n authClasses: Array;\r\n payrollItems: Array;\r\n perDiemTypes: Array;\r\n locales: Array;\r\n travelTypes: Array;\r\n expenseItems: Array;\r\n contractTypes: Array;\r\n indirectTypes: Array;\r\n states: Array;\r\n countries: Array;\r\n areas: Array;\r\n locations: Array;\r\n entityFilters: Array;\r\n splitDays: Array;\r\n payrollFrequency: Array<{ Payrollfrequency: number }>;\r\n userIdFormats: Array;\r\n daysOfWeek: Array;\r\n timeZones: Array;\r\n userTimeZones: Array;\r\n colors: Array;\r\n mobileProviders: MobileProvider[];\r\n creditCards: Array;\r\n messageDeliveryTypes: MessageDeliveryType[];\r\n}\r\n\r\nexport const initialState: LookupState = {\r\n authorizationTypes: [],\r\n directReports: [],\r\n tasks: [],\r\n userTasks: [],\r\n contractTasks: [],\r\n serviceItems: [],\r\n userGroups: [],\r\n authClasses: [],\r\n payrollItems: [],\r\n perDiemTypes: [],\r\n locales: [],\r\n travelTypes: [],\r\n expenseItems: [],\r\n contractTypes: [],\r\n indirectTypes: [],\r\n states: [],\r\n countries: [],\r\n areas: [],\r\n locations: [],\r\n entityFilters: [],\r\n splitDays: [],\r\n payrollFrequency: [],\r\n userIdFormats: [],\r\n daysOfWeek: [],\r\n timeZones: [],\r\n userTimeZones: [],\r\n colors: [],\r\n mobileProviders: [],\r\n creditCards: [],\r\n messageDeliveryTypes: []\r\n};\r\n\r\nexport function reducer(\r\n state: LookupState = initialState,\r\n action: fromLookups.LookupActionsUnion\r\n): LookupState {\r\n switch (action.type) {\r\n case fromLookups.LookupActionTypes.SetAuthorizationTypes:\r\n return {\r\n ...state,\r\n authorizationTypes: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetTasks:\r\n return {\r\n ...state,\r\n tasks: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetUserTasks:\r\n return {\r\n ...state,\r\n userTasks: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetContractTasks:\r\n return {\r\n ...state,\r\n contractTasks: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetDirectReports:\r\n return {\r\n ...state,\r\n directReports: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetServiceItems:\r\n return {\r\n ...state,\r\n serviceItems: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetUserGroups:\r\n return {\r\n ...state,\r\n userGroups: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetAuthorizationClasses:\r\n return {\r\n ...state,\r\n authClasses: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetPayrollItems:\r\n return {\r\n ...state,\r\n payrollItems: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetPerDiemTypes:\r\n return {\r\n ...state,\r\n perDiemTypes: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetLocales:\r\n return {\r\n ...state,\r\n locales: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetTravelTypes:\r\n return {\r\n ...state,\r\n travelTypes: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetExpenseItems:\r\n return {\r\n ...state,\r\n expenseItems: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetContractTypes:\r\n return {\r\n ...state,\r\n contractTypes: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetIndirectTypes:\r\n return {\r\n ...state,\r\n indirectTypes: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetStates:\r\n return {\r\n ...state,\r\n states: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetCountries:\r\n return {\r\n ...state,\r\n countries: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetAreas:\r\n return {\r\n ...state,\r\n areas: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetLocations:\r\n return {\r\n ...state,\r\n locations: [...(action.payload || [])]\r\n };\r\n case fromLookups.LookupActionTypes.SetEntityFilter:\r\n return {\r\n ...state,\r\n entityFilters: [\r\n ...(state.entityFilters || []).filter(\r\n x =>\r\n !(action.filterTypes || []).some(\r\n y => y.FilterID === x.FilterID\r\n )\r\n ),\r\n ...(action.filterTypes || [])\r\n ]\r\n };\r\n case fromLookups.LookupActionTypes.SetSplitday:\r\n return {\r\n ...state,\r\n splitDays: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetPayrollFrequency:\r\n return {\r\n ...state,\r\n payrollFrequency: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetUserIdFormats:\r\n return {\r\n ...state,\r\n userIdFormats: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetDaysOfWeek:\r\n return {\r\n ...state,\r\n daysOfWeek: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetTimeZones:\r\n return {\r\n ...state,\r\n timeZones: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetUserTimeZones:\r\n return {\r\n ...state,\r\n userTimeZones: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.RESET:\r\n return {\r\n ...initialState\r\n };\r\n case fromLookups.LookupActionTypes.SetColors:\r\n return {\r\n ...state,\r\n colors: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetMobileProviders:\r\n return {\r\n ...state,\r\n mobileProviders: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetCreditCards:\r\n return {\r\n ...state,\r\n creditCards: action.payload\r\n };\r\n case fromLookups.LookupActionTypes.SetMessageDeliveryTypes:\r\n return {\r\n ...state,\r\n messageDeliveryTypes: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst lookupState = createFeatureSelector('lookups');\r\n\r\nexport const getIndirectTypes = createSelector(\r\n lookupState,\r\n x => x.indirectTypes\r\n);\r\nexport const getContractTypes = createSelector(\r\n lookupState,\r\n x => x.contractTypes\r\n);\r\nexport const getAuthorizationTypesLookup = createSelector(\r\n lookupState,\r\n x => x.authorizationTypes\r\n);\r\nexport const getTasksLookup = createSelector(lookupState, x => x.tasks);\r\nexport const getUserTasks = createSelector(lookupState, x => x.userTasks);\r\nexport const getContractTasks = createSelector(lookupState, x => x.contractTasks);\r\nexport const getDirectReportsLookup = createSelector(\r\n lookupState,\r\n x => x.directReports\r\n);\r\nexport const getActiveDirectReportsLookup = createSelector(lookupState, x =>\r\n x.directReports.filter(y => y.IsActive === true)\r\n);\r\nexport const getServiceItemsLookup = createSelector(\r\n lookupState,\r\n x => x.serviceItems\r\n);\r\nexport const getOtherChargeItemsLookup = createSelector(\r\n getServiceItemsLookup,\r\n x => x.filter(item => item.ServiceItemType === 'OtherChargeItem')\r\n);\r\nexport const getUserGroupsLookup = createSelector(\r\n lookupState,\r\n x => x.userGroups\r\n);\r\nexport const getAuthClassesLookup = createSelector(\r\n lookupState,\r\n x => x.authClasses\r\n);\r\nexport const getPayrollItemsLookup = createSelector(\r\n lookupState,\r\n x => x.payrollItems\r\n);\r\nexport const getLocalesLookup = createSelector(lookupState, x => x.locales);\r\nexport const getPerDiemTypesLookup = createSelector(\r\n lookupState,\r\n x => x.perDiemTypes\r\n);\r\nexport const getTravelTypesLookup = createSelector(\r\n lookupState,\r\n x => x.travelTypes\r\n);\r\nexport const getExpenseItems = createSelector(lookupState, x => x.expenseItems);\r\nexport const getStates = createSelector(lookupState, x => x.states);\r\nexport const getCountries = createSelector(lookupState, x => x.countries);\r\nexport const getAreas = createSelector(lookupState, x => x.areas);\r\nexport const getLocations = createSelector(lookupState, x => x.locations);\r\nexport const getCostCenters = createSelector(lookupState, x =>\r\n x.userGroups.filter(y => y.PrefixedGroupID[0].toLocaleUpperCase() === 'C')\r\n);\r\nexport const getEntityFilters = createSelector(\r\n lookupState,\r\n (x: LookupState, p): IEntityFilter[] =>\r\n x.entityFilters.filter(f => f.FilterEntity === p.EntityType)\r\n);\r\nexport const getSplitdays = createSelector(lookupState, x => x.splitDays);\r\nexport const getPayrollFrequency = createSelector(\r\n lookupState,\r\n x => x.payrollFrequency\r\n);\r\nexport const getUserIdFormats = createSelector(\r\n lookupState,\r\n x => x.userIdFormats\r\n);\r\nexport const getDaysOfWeek = createSelector(lookupState, x => x.daysOfWeek);\r\nexport const getTimeZones = createSelector(lookupState, x => x.timeZones);\r\nexport const getUserTimeZones = createSelector(\r\n lookupState,\r\n x => x.userTimeZones\r\n);\r\nexport const getColors = createSelector(lookupState, x => x.colors);\r\nexport const selectMobileProviders = createSelector(\r\n lookupState,\r\n x => x.mobileProviders\r\n);\r\nexport const getManageUsers = createSelector(lookupState, x => x);\r\nexport const getCreditCards = createSelector(lookupState, x => x.creditCards);\r\nexport const selectMessageDeliveryTypes = createSelector(\r\n lookupState,\r\n x => x.messageDeliveryTypes\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { ScheduledDate } from './schedule-date.model';\r\nimport { IGenericResponse, IDeleteEntity } from '../../shared';\r\n\r\nexport const loadScheduledDates = createAction(\r\n '[ScheduledDate/API] Load ScheduledDates',\r\n props<{ scheduledDates: ScheduledDate[] }>()\r\n);\r\n\r\nexport const addScheduledDate = createAction(\r\n '[ScheduledDate/API] Add ScheduledDate',\r\n props<{ scheduledDate: ScheduledDate }>()\r\n);\r\n\r\nexport const upsertScheduledDate = createAction(\r\n '[ScheduledDate/API] Upsert ScheduledDate',\r\n props<{ scheduledDate: ScheduledDate }>()\r\n);\r\n\r\nexport const addScheduledDates = createAction(\r\n '[ScheduledDate/API] Add ScheduledDates',\r\n props<{ scheduledDates: ScheduledDate[] }>()\r\n);\r\n\r\nexport const upsertScheduledDates = createAction(\r\n '[ScheduledDate/API] Upsert ScheduledDates',\r\n props<{ scheduledDates: ScheduledDate[] }>()\r\n);\r\n\r\nexport const updateScheduledDate = createAction(\r\n '[ScheduledDate/API] Update ScheduledDate',\r\n props<{ scheduledDate: Update }>()\r\n);\r\n\r\nexport const updateScheduledDates = createAction(\r\n '[ScheduledDate/API] Update ScheduledDates',\r\n props<{ scheduledDates: Update[] }>()\r\n);\r\n\r\nexport const deleteScheduledDate = createAction(\r\n '[ScheduledDate/API] Delete ScheduledDate',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteScheduledDates = createAction(\r\n '[ScheduledDate/API] Delete ScheduledDates',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearScheduledDates = createAction(\r\n '[ScheduledDate/API] Clear ScheduledDates'\r\n);\r\nexport const getScheduledDates = createAction(\r\n '[ScheduledDate/API] Get ScheduledDates',\r\n props<{ ShowAll: boolean }>()\r\n);\r\nexport const getScheduledDatesFailure = createAction(\r\n '[ScheduledDate/API] Get ScheduledDates Failure',\r\n props<{ error: IGenericResponse }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { switchMap, map, catchError, filter } from 'rxjs/operators';\r\nimport * as fromScheduledDateActions from './schedule-date.actions';\r\nimport { ScheduledDateService } from '../schedule-date.service';\r\nimport { of } from 'rxjs';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus } from '../../shared';\r\n\r\n@Injectable()\r\nexport class ScheduledDateEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ScheduledDateService\r\n ) {}\r\n\r\n getScheduledDates$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromScheduledDateActions.getScheduledDates),\r\n switchMap(action =>\r\n this.service.get(action.ShowAll).pipe(\r\n map(x => x || []),\r\n map(data =>\r\n fromScheduledDateActions.addScheduledDates({\r\n scheduledDates: data\r\n })\r\n ),\r\n catchError(error =>\r\n of(\r\n fromScheduledDateActions.getScheduledDatesFailure({\r\n error\r\n })\r\n )\r\n )\r\n )\r\n )\r\n );\r\n });\r\n\r\n getScheduledDatesFailure$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromScheduledDateActions.getScheduledDatesFailure),\r\n map(\r\n a =>\r\n new fromShared.Errors.SetErrors(\r\n a.error &&\r\n a.error.ErrorMessages &&\r\n Array.isArray(a.error.ErrorMessages) &&\r\n a.error.ErrorMessages.map(e => ({\r\n StatusCode: ResponseStatus.Failed,\r\n Message: e\r\n }))\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","export interface ScheduledDate {\r\n ScheduledDateID: string;\r\n ScheduledDateType: string;\r\n ScheduledDatePurpose: string;\r\n ScheduledStartDate: Date;\r\n ScheduledEndDate: Date;\r\n DateColor: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as ScheduledDateActions from './schedule-date.actions';\r\nimport { ScheduledDate } from './schedule-date.model';\r\n\r\nexport const scheduledDatesFeatureKey = 'scheduledDates';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: ScheduledDate) => model.ScheduledDateID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst scheduledDateReducer = createReducer(\r\n initialState,\r\n on(ScheduledDateActions.addScheduledDate, (state, action) =>\r\n adapter.addOne(action.scheduledDate, state)\r\n ),\r\n on(ScheduledDateActions.upsertScheduledDate, (state, action) =>\r\n adapter.upsertOne(action.scheduledDate, state)\r\n ),\r\n on(ScheduledDateActions.addScheduledDates, (state, action) =>\r\n adapter.addMany(action.scheduledDates, state)\r\n ),\r\n on(ScheduledDateActions.upsertScheduledDates, (state, action) =>\r\n adapter.upsertMany(action.scheduledDates, state)\r\n ),\r\n on(ScheduledDateActions.updateScheduledDate, (state, action) =>\r\n adapter.updateOne(action.scheduledDate, state)\r\n ),\r\n on(ScheduledDateActions.updateScheduledDates, (state, action) =>\r\n adapter.updateMany(action.scheduledDates, state)\r\n ),\r\n on(ScheduledDateActions.deleteScheduledDate, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(ScheduledDateActions.deleteScheduledDates, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(ScheduledDateActions.loadScheduledDates, (state, action) =>\r\n adapter.setAll(action.scheduledDates, state)\r\n ),\r\n on(ScheduledDateActions.clearScheduledDates, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return scheduledDateReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { ScheduledDate } from './schedule-date.model';\r\nimport * as fromScheduledDates from './schedule-date.reducer';\r\nexport const scheduledDatesState =\r\n createFeatureSelector(\r\n fromScheduledDates.scheduledDatesFeatureKey\r\n );\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromScheduledDates.adapter.getSelectors(scheduledDatesState);\r\n\r\nexport const selectScheduledDateType = (props: { ScheduledDateType: string }) =>\r\n createSelector(selectAll, (schedules: ScheduledDate[]) =>\r\n schedules.filter(x => x.ScheduledDateType === props.ScheduledDateType)\r\n );\r\n\r\nexport const selectMinFiscalYear = createSelector(selectAll, schedules =>\r\n schedules\r\n .filter(x => x.ScheduledDateType === 'FYE')\r\n .reduce(\r\n (a, c) =>\r\n new Date(Math.min(c.ScheduledEndDate.valueOf(), a.valueOf())),\r\n new Date()\r\n )\r\n);\r\n","import { Injectable, Inject, OnDestroy } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { ITask } from './ITask';\r\nimport { subscribeOn, tap } from 'rxjs/operators';\r\nimport { Store } from '@ngrx/store';\r\nimport { LookupState, getTasksLookup } from './store/reducers';\r\nimport * as fromLookups from './store/actions';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TasksLookupService {\r\n uri = `${environment.apiLocation}/Task`;\r\n uriActiveOnly = `${this.uri}/ActiveOnly/false`;\r\n uriUserTasks = `${environment.apiLocation}/UserTask`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n public get(): Observable> {\r\n this.log.verbose({\r\n type: 'TasksLookupService:get',\r\n uri: this.uriActiveOnly\r\n });\r\n return this.http.get>(this.uriActiveOnly).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'TasksLookupService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getUserTasks(\r\n ProcessID: number,\r\n AsOfDate: Date\r\n ): Observable> {\r\n this.log.verbose({ type: 'getUserTasks', ProcessID, AsOfDate });\r\n return this.http\r\n .post>(this.uriUserTasks, { ProcessID, AsOfDate })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({ type: 'getUserTasks:reponse', res })\r\n )\r\n );\r\n }\r\n public getContractTasks(contractlistid: string) {\r\n this.log.verbose({ type: 'getContractTasks', contractlistid, });\r\n return this.http\r\n .post>(this.uri, {\r\n contractlistid,\r\n roleGroupId: null,\r\n activeOnly: true\r\n })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({ type: 'getContractTasks:reponse', res })\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { ITimeZone } from './ITimeZone';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TimeZoneService {\r\n uri = `${environment.apiLocation}/TimeZone`;\r\n userTimeZoneUri = `${environment.apiLocation}/UserTimeZone`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n public get(): Observable> {\r\n this.log.verbose({\r\n type: 'TimeZoneService:get',\r\n uri: this.uri\r\n });\r\n return this.http.get>(this.uri).pipe(\r\n map(zones =>\r\n zones.map(tz => ({\r\n ...tz,\r\n OffsetMinutes: moment\r\n .parseZone(\r\n tz.BaseUtcOffset.startsWith('-') ||\r\n tz.BaseUtcOffset.startsWith('+')\r\n ? tz.BaseUtcOffset\r\n : `+${tz.BaseUtcOffset}`,\r\n 'ZZ'\r\n )\r\n .utcOffset()\r\n }))\r\n ),\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'TimeZoneService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getUserTimeZones(): Observable> {\r\n this.log.verbose({\r\n type: 'TimeZoneService:getUserTimeZones',\r\n uri: this.uri\r\n });\r\n return this.http.get>(this.userTimeZoneUri).pipe(\r\n map(zones =>\r\n zones.map(tz => ({\r\n ...tz,\r\n OffsetMinutes: tz.BaseUtcOffset as unknown as number\r\n }))\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { ITravelType } from './ITravelType';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TravelTypeLookupService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService) {\r\n }\r\n uri = `${environment.apiLocation}/TravelType`;\r\n\r\n public get (): Observable> {\r\n const params = {};\r\n\r\n this.log.verbose({ type: 'TravelTypeLookupService:get', uri: this.uri });\r\n return this.http.get>(this.uri)\r\n .pipe(\r\n tap(res => this.log.verbose({ type: 'TravelTypeLookupService:reponse', res }))\r\n );\r\n }\r\n}\r\n","import { Injectable, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IAuthorizationType } from './IAuthorizationType';\r\nimport { LookupState, getAuthorizationTypesLookup } from './store/reducers';\r\nimport { Store } from '@ngrx/store';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserAuthorizationTypeLookupService implements OnDestroy {\r\n public items: Array;\r\n uri = `${environment.apiLocation}/AuthType`;\r\n subscription: Subscription;\r\n\r\n ngOnDestroy (): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n this.log.debug({ type: 'UserAuthorizationTypeLookupService:ngOnDestroy' });\r\n }\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService,\r\n ) {\r\n this.log.debug({\r\n type: 'UserAuthorizationTypeLookupService:constructor',\r\n uri: this.uri\r\n });\r\n }\r\n\r\n public getAuthorizationTypes (): Observable> {\r\n this.log.verbose({\r\n type: 'UserAuthorizationTypeLookupService:getAuthorizationTypes',\r\n uri: this.uri\r\n });\r\n return this.http.get>(this.uri);\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { IUserGroup } from './IUserGroup';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserGroupLookupService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient\r\n , @Inject(LoggingService) private log: LoggingService) {\r\n }\r\n uri = `${environment.apiLocation}/UserGroup`;\r\n\r\n public get (): Observable> {\r\n this.log.verbose({ type: 'UserGroupLookupService:get', uri: this.uri });\r\n return this.http.get>(this.uri)\r\n .pipe(tap(res => this.log.verbose({ type: 'UserGroupLookupService:reponse', res })))\r\n ;\r\n }\r\n\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { IUserIdFormat } from './iuser-id-format';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserIdFormatService {\r\n uri = `${environment.apiLocation}/UserIDFormat`;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n get(): Observable> {\r\n return this.http.get>(this.uri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'UserIdFormatService:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input, Inject, OnDestroy } from '@angular/core';\r\nimport { Process } from '../shared';\r\nimport { State } from '../store/reducers';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Subscription, Observable } from 'rxjs';\r\nimport { Category } from '../shared/category/category.model';\r\nimport * as fromUserInfo from '../user-info/store';\r\n\r\n@Component({\r\n selector: 'ef-main-menu',\r\n templateUrl: './main-menu.component.html',\r\n styleUrls: ['./main-menu.component.scss']\r\n})\r\nexport class MainMenuComponent implements OnInit {\r\n public items$: Observable>;\r\n // @Input() public userProccessCategories: Category[];\r\n private subscription: Subscription;\r\n private active = true;\r\n\r\n constructor(\r\n private store: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.items$ = this.store.pipe(\r\n select(fromUserInfo.getUserProcessesMain)\r\n );\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, take, takeWhile, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { AppComponent } from '../app.component';\r\nimport * as fromSettings from '../company-setting';\r\nimport { CompanySetting } from '../company-setting';\r\nimport { Category } from '../shared/category/category.model';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromUser2 from '../user-info';\r\nimport { IUserInfo } from '../user-info';\r\nimport * as fromUser from '../user-info/store/user.reducer';\r\nimport * as fromUserInfo from '../user-info/store/user.reducer';\r\nimport * as fromUserSetting from '../user-setting/store';\r\n\r\n@Component({\r\n selector: 'ef-main',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.scss']\r\n})\r\nexport class MainComponent implements OnInit, OnDestroy {\r\n public mainResponse: fromUser.IUserAccess;\r\n public userInfo$: Observable;\r\n public categories$: Observable>;\r\n\r\n public categories: Category[];\r\n\r\n public companySettings$: Observable;\r\n public companySettings: CompanySetting[];\r\n dialogCheckboxChangeSubject: ReplaySubject = new ReplaySubject(1);\r\n onHideMsgDialogSubject: ReplaySubject = new ReplaySubject(1);\r\n userSettings$: Observable>;\r\n\r\n active = true;\r\n\r\n showMsg: boolean;\r\n\r\n showAdminMsg: boolean;\r\n adminMsg1: string;\r\n adminLink1: string;\r\n\r\n showMgrMsg: boolean;\r\n mgrMsg1: string;\r\n mgrLink1: string;\r\n\r\n showUserMsg: boolean;\r\n userMsg1: string;\r\n userLink1: string;\r\n\r\n showMsgDialog: boolean;\r\n\r\n userInfo: IUserInfo;\r\n\r\n defaultRoleID: number;\r\n\r\n constructor(\r\n private store: Store,\r\n // @Inject(AuthenticationService) private auth: AuthenticationService,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private app: AppComponent\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.active = true;\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'UserMsg1'\r\n })\r\n );\r\n this.setupObservables();\r\n // if (sessionStorage.getItem('initialLoadForMainMsg') == 'true') {\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({ SettingType: 'ShowAdminMsg' })\r\n // );\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({ SettingType: 'AdminMsg1' })\r\n // );\r\n // // this.store.dispatch(\r\n // // fromSettings.getCompanySetting({ SettingType: 'AdminLink1' })\r\n // // );\r\n\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({\r\n // SettingType: 'AdminFooterMsg1'\r\n // })\r\n // );\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({\r\n // SettingType: 'AdminFooterLink1'\r\n // })\r\n // );\r\n\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({ SettingType: 'ShowMgrMsg' })\r\n // );\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({ SettingType: 'MgrMsg1' })\r\n // );\r\n // // this.store.dispatch(\r\n // // fromSettings.getCompanySetting({ SettingType: 'MgrLink1' })\r\n // // );\r\n\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({ SettingType: 'ShowUserMsg' })\r\n // );\r\n // this.store.dispatch(\r\n // fromSettings.getCompanySetting({ SettingType: 'UserMsg1' })\r\n // );\r\n\r\n // // if (sessionStorage.getItem('IsSignout') != 'true') {\r\n // // sessionStorage.setItem('initialLoadForMainMsg', 'false');\r\n // // }\r\n // }\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.categories$ = this.store.pipe(\r\n select(fromUser.getUserProcessCategories),\r\n map(x => x.filter(cat => !!cat.CategoryName)),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'MainComponent:ngOnInit:categories$',\r\n x\r\n })\r\n )\r\n );\r\n\r\n this.userSettings$ = this.store.pipe(select(fromUserSetting.selectAll));\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.companySettings$ = this.store.pipe(select(fromSettings.selectAll));\r\n }\r\n setupSubscriptions() {\r\n this.categories$.pipe(takeWhile(_ => this.active)).subscribe(cat => {\r\n this.categories = cat;\r\n });\r\n\r\n // this.userInfo$\r\n // .pipe(takeWhile(() => this.active))\r\n // .subscribe(userInfo => {\r\n // this.userInfo = userInfo;\r\n // if (sessionStorage.getItem('IsSignout') == 'false') {\r\n // if (userInfo != null) {\r\n // this.defaultRoleID = userInfo.DefaultRoleGroupID;\r\n // this.store.dispatch(\r\n // fromUserSetting.getUserSettings({\r\n // EmployeeListID: userInfo.EmployeeListID,\r\n // EmpSettingID: 31\r\n // })\r\n // );\r\n // }\r\n // }\r\n // });\r\n\r\n // this.companySettings$\r\n // .pipe(withLatestFrom(this.userInfo$))\r\n // .pipe(takeWhile(_ => this.active))\r\n // .subscribe(([settings, userInfo]) => {\r\n // this.companySettings = settings;\r\n // this.userInfo = userInfo;\r\n\r\n // if (sessionStorage.getItem('IsSignout') == 'false') {\r\n // if (userInfo.DefaultRoleGroupID == 1) {\r\n // if (\r\n // settings.find(\r\n // x => x.SettingType == 'ShowAdminMsg'\r\n // ) != null\r\n // ) {\r\n // this.showAdminMsg =\r\n // settings.find(\r\n // x => x.SettingType == 'ShowAdminMsg'\r\n // ).SettingValue == 1\r\n // ? true\r\n // : false;\r\n // }\r\n // if (\r\n // settings.find(x => x.SettingType == 'AdminMsg1') !=\r\n // null\r\n // ) {\r\n // this.adminMsg1 = settings.find(\r\n // x => x.SettingType == 'AdminMsg1'\r\n // ).SettingValue;\r\n // }\r\n // if (\r\n // settings.find(x => x.SettingType == 'ShowMgrMsg') !=\r\n // null\r\n // ) {\r\n // this.showMgrMsg =\r\n // settings.find(\r\n // x => x.SettingType == 'ShowMgrMsg'\r\n // ).SettingValue == 1\r\n // ? true\r\n // : false;\r\n // }\r\n // if (\r\n // settings.find(x => x.SettingType == 'MgrMsg1') !=\r\n // null\r\n // ) {\r\n // this.mgrMsg1 = settings.find(\r\n // x => x.SettingType == 'MgrMsg1'\r\n // ).SettingValue;\r\n // }\r\n // if (\r\n // settings.find(\r\n // x => x.SettingType == 'ShowUserMsg'\r\n // ) != null\r\n // ) {\r\n // this.showUserMsg =\r\n // settings.find(\r\n // x => x.SettingType == 'ShowUserMsg'\r\n // ).SettingValue == 1\r\n // ? true\r\n // : false;\r\n // }\r\n\r\n // if (\r\n // settings.find(x => x.SettingType == 'UserMsg1') !=\r\n // null\r\n // ) {\r\n // this.userMsg1 = settings.find(\r\n // x => x.SettingType == 'UserMsg1'\r\n // ).SettingValue;\r\n // }\r\n // } else if (userInfo.DefaultRoleGroupID == 12024) {\r\n // if (\r\n // settings.find(x => x.SettingType == 'ShowMgrMsg') !=\r\n // null\r\n // ) {\r\n // this.showMgrMsg =\r\n // settings.find(\r\n // x => x.SettingType == 'ShowMgrMsg'\r\n // ).SettingValue == 1\r\n // ? true\r\n // : false;\r\n // }\r\n // if (\r\n // settings.find(x => x.SettingType == 'MgrMsg1') !=\r\n // null\r\n // ) {\r\n // this.mgrMsg1 = settings.find(\r\n // x => x.SettingType == 'MgrMsg1'\r\n // ).SettingValue;\r\n // }\r\n // if (\r\n // settings.find(\r\n // x => x.SettingType == 'ShowUserMsg'\r\n // ) != null\r\n // ) {\r\n // this.showUserMsg =\r\n // settings.find(\r\n // x => x.SettingType == 'ShowUserMsg'\r\n // ).SettingValue == 1\r\n // ? true\r\n // : false;\r\n // }\r\n\r\n // if (\r\n // settings.find(x => x.SettingType == 'UserMsg1') !=\r\n // null\r\n // ) {\r\n // this.userMsg1 = settings.find(\r\n // x => x.SettingType == 'UserMsg1'\r\n // ).SettingValue;\r\n // }\r\n // } else {\r\n // if (\r\n // settings.find(\r\n // x => x.SettingType == 'ShowUserMsg'\r\n // ) != null\r\n // ) {\r\n // this.showUserMsg =\r\n // settings.find(\r\n // x => x.SettingType == 'ShowUserMsg'\r\n // ).SettingValue == 1\r\n // ? true\r\n // : false;\r\n // }\r\n\r\n // if (\r\n // settings.find(x => x.SettingType == 'UserMsg1') !=\r\n // null\r\n // ) {\r\n // this.userMsg1 = settings.find(\r\n // x => x.SettingType == 'UserMsg1'\r\n // ).SettingValue;\r\n // }\r\n // }\r\n // }\r\n // });\r\n\r\n // this.userSettings$\r\n // .pipe(takeWhile(() => this.active))\r\n // .subscribe(userSettings => {\r\n // if (sessionStorage.getItem('IsSignout') == 'false') {\r\n // if (userSettings.length > 0) {\r\n // if (userSettings[0].EmpSettingValue != null) {\r\n // this.showMsg =\r\n // userSettings[0].EmpSettingValue == '1'\r\n // ? true\r\n // : false;\r\n // }\r\n // }\r\n\r\n // // if (this.showMsg) {\r\n // // if (this.userMsg1 != null) {\r\n // // this.showMsgDialog = true;\r\n // // } else {\r\n // // this.showMsgDialog = false;\r\n // // }\r\n // // }\r\n // }\r\n // });\r\n\r\n this.dialogCheckboxChangeSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$)\r\n )\r\n .subscribe(([, userInfo]) => {\r\n this.store.dispatch(\r\n fromUserSetting.putUserSettings({\r\n settings: [\r\n {\r\n EmployeeListID: userInfo.EmployeeListID,\r\n EmpSettingID: 31.0,\r\n EmpSettingType: 'ShowUserMsg',\r\n EmpSettingTypeLabel: 'Show User Message',\r\n EmpSettingValue: !this.showMsg,\r\n CtrlType: 'CheckBox',\r\n CatID: 1,\r\n CatDescription: 'User Setting'\r\n }\r\n ]\r\n })\r\n );\r\n });\r\n this.onHideMsgDialogSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.userInfo$)\r\n )\r\n .subscribe(([, userInfo]) => {\r\n this.showMsgDialog = false;\r\n this.showAdminMsg = false;\r\n this.showMgrMsg = false;\r\n this.showUserMsg = false;\r\n this.showMsg = null;\r\n\r\n if (userInfo.DefaultRoleGroupID == 12024) {\r\n } else if (userInfo.DefaultRoleGroupID == 12025) {\r\n } else if (userInfo.DefaultRoleGroupID == 1) {\r\n } else {\r\n let timecardProcess;\r\n this.categories.forEach(category => {\r\n category.UserProcesses.forEach(process => {\r\n if (process.RouteName == 'timecard.entry') {\r\n timecardProcess = process;\r\n }\r\n });\r\n });\r\n this.app.goto(timecardProcess);\r\n }\r\n });\r\n }\r\n}\r\n","export * from './manage-users-container';\r\nexport * from './manage-users-presenter';\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport * as fromShared from '../../shared';\r\nimport { SelectItem } from '../../shared';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-manage-users-bulk-update-presenter',\r\n templateUrl: './manage-users-bulk-update-presenter.component.html',\r\n styleUrls: ['./manage-users-bulk-update-presenter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ManageUsersBulkUpdatePresenterComponent implements OnInit {\r\n @Input() userInfo: IUserInfo;\r\n @Input() daysOfWeek: fromShared.SelectItem[];\r\n @Input() costCenters: fromShared.SelectItem[];\r\n @Input() timeZones: fromShared.SelectItem[];\r\n @Input() userIdFormats: fromShared.SelectItem[];\r\n @Input() updateEnabled: boolean;\r\n @Output() UpdateBulkLogins = new Subject();\r\n public tabLogins;\r\n public bulkFormGroup: FormGroup;\r\n public holidayAuthOptions: SelectItem[] = [\r\n { label: 'Yes', value: '1' },\r\n { label: 'No', value: '0' },\r\n { label: 'Unchanged', value: null }\r\n ];\r\n constructor() {\r\n this.bulkFormGroup = new FormGroup({\r\n EPassword: new FormControl(),\r\n AuthorizedHolidays: new FormControl(),\r\n CostCenterID: new FormControl(),\r\n UserIDFormat: new FormControl(),\r\n FirstDayofWeekID: new FormControl(),\r\n EmpTimeZone: new FormControl(),\r\n Expectedhrsperday: new FormControl(),\r\n Expectedhrsperweek: new FormControl()\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","export * from './manage-users-container.component';\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromSettings from '../../company-setting';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromGroups from '../../groups/store';\r\nimport * as fromLookups from '../../lookups';\r\nimport { ITimeZone } from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { IUserInfo, UserRoleEnum } from '../../user-info';\r\nimport * as fromUser from '../../user-info/store';\r\nimport * as moment from 'moment';\r\n@Component({\r\n selector: 'ef-manage-users-container',\r\n templateUrl: './manage-users-container.component.html',\r\n styleUrls: ['./manage-users-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ManageUsersContainerComponent implements OnInit, OnDestroy {\r\n qboEnabled$: Observable;\r\n ManageUsersModelDS: EntityCollectionService;\r\n ManageUsersModel$: Observable;\r\n costCenters$: Observable;\r\n users$: Observable>;\r\n userInfo$: Observable;\r\n supervisors$: Observable;\r\n userTypes$: Observable;\r\n splitdays$: Observable;\r\n daysOfWeek$: Observable;\r\n timeZones$: Observable;\r\n timeZonesSelectItems$: Observable;\r\n creditCards$: Observable;\r\n activeServiceItems$: Observable;\r\n serviceItems$: Observable;\r\n payrollItems$: Observable;\r\n payrollFrequency$: Observable;\r\n userIdFormats$: Observable;\r\n messageDeliveryTypes$: Observable;\r\n mobileProviders$: Observable;\r\n personSelectItems$: Observable;\r\n emailEnabled$: Observable;\r\n bulkUpdateEnabled$: Observable;\r\n SelectedLoginsSubject = new Subject<\r\n fromDataServices.ManageUsers.LoginModel[]\r\n >();\r\n UpdateBulkLoginsSubject = new ReplaySubject(1);\r\n SaveLoginSubject = new Subject();\r\n ShowInactiveSubject = new Subject();\r\n process$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n public tabHeight = 67;\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'ManageUsersContainerComponent::' });\r\n this.ManageUsersModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ManageUsers.entityName\r\n );\r\n\r\n this.store.dispatch(new fromLookups.GetCreditCards('CreditCard'));\r\n }\r\n ngOnInit(): void {\r\n this.ManageUsersModelDS.clearCache();\r\n this.ManageUsersModelDS.getWithQuery({\r\n ShowInactive: 'false',\r\n UserFilterID: '7'\r\n });\r\n\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'OverrideQBMail' })\r\n );\r\n this.store.dispatch(new fromUser.LoadUserInfo());\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n this.store.dispatch(new fromLookups.LoadSplitday());\r\n this.store.dispatch(new fromLookups.LoadMobileProviders());\r\n this.store.dispatch(new fromLookups.LoadEntityFilter('User'));\r\n this.store.dispatch(new fromLookups.LoadServiceItems(false));\r\n this.store.dispatch(new fromLookups.LoadPayrollItems());\r\n\r\n this.store.dispatch(new fromLookups.LoadPayrollFrequency());\r\n this.store.dispatch(new fromLookups.LoadUserIdFormats());\r\n this.store.dispatch(new fromLookups.GetMessageDeliveryTypes());\r\n this.store.dispatch(\r\n new fromGroups.LoadGroupMembers({\r\n GroupID: UserRoleEnum.Supervisor,\r\n IsGroupMember: true\r\n })\r\n );\r\n\r\n this.setupObservables();\r\n\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.selectedErrorWithStatus$ = this.store.pipe(\r\n select(fromShared.Errors.selectErrorWithStatus)\r\n );\r\n this.qboEnabled$ = this.store.pipe(select(fromSettings.isQBOEnabled));\r\n\r\n this.emailEnabled$ = this.store.pipe(\r\n select(fromSettings.getSettingBooleanValue('OverrideQBMail'))\r\n );\r\n this.daysOfWeek$ = this.store.pipe(\r\n select(fromLookups.getDaysOfWeek),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.DayOfWeekDesc,\r\n value: item.DayOfWeekID\r\n }))\r\n )\r\n );\r\n this.timeZones$ = this.store.pipe(select(fromLookups.getTimeZones));\r\n this.timeZonesSelectItems$ = this.store.pipe(\r\n select(fromLookups.getTimeZones),\r\n map(items =>\r\n items.map(item => ({ label: item.DisplayName, value: item.Id }))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:timeZonesSelectItems$',\r\n items\r\n })\r\n )\r\n );\r\n this.messageDeliveryTypes$ = this.store.pipe(\r\n select(fromLookups.selectMessageDeliveryTypes),\r\n filter(x => !!x),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Messagedeliverydesc,\r\n value: item.Messagedeliveryid\r\n }))\r\n )\r\n );\r\n this.creditCards$ = this.store.pipe(\r\n select(fromLookups.getCreditCards),\r\n filter(x => !!x),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.AccountCode,\r\n value: item.AccountListID\r\n }))\r\n )\r\n );\r\n this.supervisors$ = this.store.pipe(\r\n select(fromGroups.getGroupMembers),\r\n filter(x => !!x),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.UserName,\r\n value: item.ListID\r\n }))\r\n )\r\n );\r\n this.userInfo$ = this.store.pipe(\r\n select(fromUser.getUserInfo),\r\n filter(x => !!(x && x.EmployeeListID))\r\n );\r\n this.serviceItems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.ServiceItem,\r\n value: item.SIListID\r\n }))\r\n )\r\n );\r\n this.activeServiceItems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(items =>\r\n items\r\n .filter(x => x.IsActive)\r\n .map(item => ({\r\n label: item.ServiceItem,\r\n value: item.SIListID\r\n }))\r\n )\r\n );\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup)\r\n );\r\n this.costCenters$ = this.store.pipe(\r\n select(fromLookups.getCostCenters),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.GroupName,\r\n value: item.GroupID\r\n }))\r\n )\r\n );\r\n this.userTypes$ = this.store.pipe(\r\n select(fromLookups.getEntityFilters, { EntityType: 'User' }),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.FilterDesc.substring(0, 3),\r\n value: item.FilterDesc\r\n }))\r\n )\r\n );\r\n this.splitdays$ = this.store.pipe(\r\n select(fromLookups.getSplitdays),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.SplitDayDesc,\r\n value: item.SplitDayID\r\n }))\r\n )\r\n );\r\n this.payrollFrequency$ = this.store.pipe(\r\n select(fromLookups.getPayrollFrequency),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Payrollfrequency.toString(),\r\n value: item.Payrollfrequency\r\n }))\r\n )\r\n );\r\n this.userIdFormats$ = this.store.pipe(\r\n select(fromLookups.getUserIdFormats),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Useridformat_Desc,\r\n value: item.Useridformat_ID\r\n }))\r\n )\r\n );\r\n\r\n this.mobileProviders$ = this.store.pipe(\r\n select(fromLookups.selectMobileProviders),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.MobileproviderName,\r\n value: item.MobileproviderName\r\n }))\r\n )\r\n );\r\n\r\n const source = [];\r\n this.ManageUsersModel$ = combineLatest([\r\n this.ManageUsersModelDS.entities$,\r\n this.supervisors$,\r\n this.daysOfWeek$,\r\n this.serviceItems$,\r\n this.payrollItems$,\r\n this.splitdays$,\r\n this.creditCards$,\r\n this.messageDeliveryTypes$,\r\n this.costCenters$\r\n ]).pipe(\r\n // map(x => x),\r\n map(([items, supers, days, si, pi, sd, cc, rt, cost]: any) =>\r\n items.map(item => ({\r\n ...item,\r\n SupervisorName:\r\n supers.findIndex(\r\n x => x.value === item.SupervisorListID\r\n ) >= 0\r\n ? supers.find(\r\n x => x.value === item.SupervisorListID\r\n ).label\r\n : '',\r\n WeekStartName:\r\n days.findIndex(\r\n x => x.value === item.FirstDayofWeekID\r\n ) >= 0\r\n ? days.find(x => x.value === item.FirstDayofWeekID)\r\n .label\r\n : '',\r\n DefaultServiceItemName:\r\n si.findIndex(x => x.value === item.SIListID) >= 0\r\n ? si.find(x => x.value === item.SIListID).label\r\n : '',\r\n DefaultPayrollItemName:\r\n pi.findIndex(x => x.PIListID === item.PIListID) >= 0\r\n ? pi.find(x => x.PIListID === item.PIListID)\r\n .PayrollItem\r\n : '',\r\n SplitDayName:\r\n sd.findIndex(\r\n x => x.value === item.TimeCardSplitDayID\r\n ) >= 0\r\n ? sd.find(x => x.value === item.TimeCardSplitDayID)\r\n .label\r\n : '',\r\n CreditCardName:\r\n cc.findIndex(x => x.value === item.CCAccountListID) >= 0\r\n ? cc.find(x => x.value === item.CCAccountListID)\r\n .label\r\n : '',\r\n ReminderDeliveryName:\r\n rt.findIndex(\r\n x => x.value === item.ReminderdeliveryID\r\n ) >= 0\r\n ? rt.find(x => x.value === item.ReminderdeliveryID)\r\n .label\r\n : '',\r\n CostCenterName:\r\n cost.findIndex(x => x.PIListID === item.CostCenterID) >=\r\n 0\r\n ? cost.find(x => x.PIListID === item.CostCenterID)\r\n .label\r\n : '',\r\n TypeDesc: item.IsConsultant == 0 ? 'Emp' : 'Con',\r\n ReleaseDate: moment(item.ReleaseDate).format('MM/DD/YYYY')\r\n }))\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:ManageUsersModel$',\r\n x\r\n })\r\n ),\r\n map(items => clone(items))\r\n );\r\n this.personSelectItems$ = this.ManageUsersModel$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n )\r\n );\r\n this.bulkUpdateEnabled$ = this.SelectedLoginsSubject.pipe(\r\n map(logins => logins.length > 0)\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.bulkUpdateEnabled$.pipe(takeWhile(() => this.active)).subscribe();\r\n this.UpdateBulkLoginsSubject.pipe(\r\n takeWhile(() => this.active),\r\n tap(values =>\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:UpdateBulkLoginsSubject',\r\n values\r\n })\r\n ),\r\n withLatestFrom(this.SelectedLoginsSubject),\r\n withLatestFrom(this.timeZones$),\r\n filter(\r\n ([[values, logins], timezones]) => !!logins && logins.length > 0\r\n )\r\n ).subscribe(([[values, logins], timezones]) => {\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:UpdateBulkLoginsSubject',\r\n values,\r\n logins\r\n });\r\n Object.getOwnPropertyNames(values).forEach(prop => {\r\n if (!values[prop]) {\r\n delete values[prop];\r\n }\r\n });\r\n const tz = timezones.find(x => x.Id === values.EmpTimeZone);\r\n logins.forEach(login => {\r\n const update = {\r\n ...login,\r\n ...values,\r\n Tz_offsetfromutc_minutes:\r\n tz && tz.OffsetMinutes\r\n ? tz.OffsetMinutes\r\n : login.Tz_offsetfromutc_minutes,\r\n Tz_abbreviation: tz && tz.Id ? tz.Id : login.Tz_abbreviation\r\n };\r\n if (\r\n values.AuthorizedHolidays !== null &&\r\n values.AuthorizedHolidays !== undefined\r\n ) {\r\n update.AuthorizedHolidays =\r\n values.AuthorizedHolidays === '1' ? true : false;\r\n }\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:UpdateBulkLoginsSubject',\r\n update\r\n });\r\n this.ManageUsersModelDS.upsert(update);\r\n });\r\n });\r\n\r\n this.SaveLoginSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.timeZones$)\r\n ).subscribe(([login, timezones]) => {\r\n const tz = timezones.find(x => x.Id === login.EmpTimeZone);\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:SaveLoginSubject',\r\n login\r\n });\r\n this.ManageUsersModelDS.upsert({\r\n ...login,\r\n CCAccountListID: Array.isArray(login.CCAccountListID)\r\n ? login.CCAccountListID.join(',')\r\n : login.CCAccountListID,\r\n Tz_offsetfromutc_minutes:\r\n tz?.OffsetMinutes ?? login.Tz_offsetfromutc_minutes,\r\n Tz_abbreviation: tz?.Id ?? login.Tz_abbreviation\r\n });\r\n });\r\n this.ShowInactiveSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n showInactive => {\r\n this.ManageUsersModelDS.clearCache();\r\n this.ManageUsersModelDS.getWithQuery({\r\n ShowInactive: showInactive.toString(),\r\n UserFilterID: '7'\r\n });\r\n }\r\n );\r\n }\r\n onSendCredentials(logins: fromDataServices.ManageUsers.LoginModel[]) {\r\n logins.forEach(login => {\r\n this.ManageUsersModelDS.update({\r\n ...login,\r\n CCAccountListID: Array.isArray(login.CCAccountListID)\r\n ? login.CCAccountListID.join(',')\r\n : login.CCAccountListID,\r\n Resetpswd: true\r\n })\r\n .pipe(\r\n take(1),\r\n filter(x =>\r\n logins\r\n .map(login => login.EmployeeListID)\r\n .includes(x.EmployeeListID)\r\n ),\r\n filter(x => x.Status.StatusCode === ResponseStatus.Failed)\r\n )\r\n .subscribe(() => {\r\n $(`#btnSendcredentials`).addClass('blinking');\r\n });\r\n });\r\n }\r\n onSelectUsers(logins: fromDataServices.ManageUsers.LoginModel[]) {\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:onSelectUsers',\r\n logins\r\n });\r\n this.SelectedLoginsSubject.next(logins);\r\n }\r\n handleOnOpen($event) {\r\n this.log.verbose({\r\n type: 'ManageUsersContainerComponent:handleOnOpen',\r\n $event\r\n });\r\n const baseHeight = 69;\r\n\r\n this.tabHeight = baseHeight - ($event.length - 1) * 14;\r\n }\r\n}\r\n","export * from './manage-users-presenter.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { filter, takeWhile } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport * as fromShared from '../../shared';\r\nimport { MultiSelect } from '../../shared';\r\nimport { columnResize } from '../../shared/columnResize';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { IUserInfo } from '../../user-info';\r\n@Component({\r\n selector: 'ef-manage-users-presenter',\r\n templateUrl: './manage-users-presenter.component.html',\r\n styleUrls: ['./manage-users-presenter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ManageUsersPresenterComponent\r\n extends fromShared.EditGrid\r\n implements OnInit, OnDestroy, AfterViewInit, OnChanges\r\n{\r\n selection: fromDataServices.ManageUsers.LoginModel[];\r\n @Input() qboEnabled = false;\r\n @Input() loading = false;\r\n @Input() supervisors: fromShared.SelectItem[];\r\n @Input() daysOfWeek: fromShared.SelectItem[];\r\n @Input() activeServiceItems: fromShared.SelectItem[];\r\n @Input() serviceItems: fromShared.SelectItem[];\r\n @Input() payrollItems: PayrollItem[];\r\n @Input() mobileProviders: fromShared.SelectItem[];\r\n @Input() splitdays: fromShared.SelectItem[];\r\n @Input() creditCards: fromShared.SelectItem[];\r\n @Input() timeZones: fromShared.SelectItem[];\r\n @Input() messageDeliveryTypes: fromShared.SelectItem[];\r\n @Input() costCenters: fromShared.SelectItem[];\r\n //@Input() payrollFrequency: fromShared.SelectItem[];\r\n public Array = Array;\r\n private PayrollFrequencySubject = new ReplaySubject<\r\n fromShared.SelectItem[]\r\n >(1);\r\n private _payrollfrequency: fromShared.SelectItem[];\r\n @Input() set payrollFrequency(value: fromShared.SelectItem[]) {\r\n if (value && value.length > 0) {\r\n value.unshift({\r\n label: '',\r\n value: 0\r\n });\r\n this._payrollfrequency = value;\r\n this.PayrollFrequencySubject.next(this._payrollfrequency);\r\n }\r\n }\r\n get payrollFrequency(): fromShared.SelectItem[] {\r\n return this._payrollfrequency;\r\n }\r\n @Input() userTypes: fromShared.SelectItem[];\r\n @Input() emailEnabled: boolean;\r\n @Input() userInfo: IUserInfo;\r\n @Input() height: number;\r\n @Input() updateBulkLogins: any;\r\n @Output() SendCredentials = new EventEmitter<\r\n fromDataServices.ManageUsers.LoginModel[]\r\n >();\r\n @Output() ShowInactive = new Subject();\r\n @ViewChild('msPersonFilter', { static: true }) msPersonFilter: MultiSelect;\r\n ItemsChangeSubject = new Subject<\r\n fromDataServices.ManageUsers.LoginModel[]\r\n >();\r\n personSelectItemsSubject = new ReplaySubject(1);\r\n supervisorsSelectItemsSubject = new ReplaySubject(\r\n 1\r\n );\r\n siSelectItemsSubject = new ReplaySubject(1);\r\n piSelectItemsSubject = new ReplaySubject(1);\r\n userType = 'All';\r\n showInactive = false;\r\n selectedPeopleFilter: fromShared.SelectItem[];\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n downloadOptions = [\r\n {\r\n label: 'CSV',\r\n icon: 'pi pi-download',\r\n command: () => this.dataTable.exportCSV()\r\n }\r\n ];\r\n payrollSelectItems: fromShared.SelectItem[];\r\n moment: any;\r\n numCols = 31;\r\n environment = environment;\r\n sendCredentialsForm: FormGroup;\r\n private active = true;\r\n timeChecked: boolean = true;\r\n expenseChecked: boolean = true;\r\n remindersChecked: boolean = true;\r\n processingChecked: boolean = true;\r\n columnSearchValue: string;\r\n columnIndex: number;\r\n elements: HTMLCollection;\r\n cols = [\r\n { header: 'Person', field: 'EmployeeName' },\r\n { header: 'Active', field: 'IsActive' },\r\n { header: 'Type', field: 'TypeDesc' },\r\n { header: 'Account #', field: 'AccountNumber' },\r\n { header: 'User ID', field: 'EUserID' },\r\n //{ header: 'Password', field: 'EPassword' },\r\n { header: 'Supervisor', field: 'SupervisorName' },\r\n { header: 'Week Start', field: 'WeekStartName' },\r\n { header: 'Default SI', field: 'DefaultServiceItemName' },\r\n { header: 'Default PI', field: 'DefaultPayrollItemName' },\r\n { header: 'Holiday Auths', field: 'AuthorizedHolidays' },\r\n { header: 'Mobile #', field: 'Mobilewithprovider' },\r\n { header: 'Split Day', field: 'SplitDayName' },\r\n { header: 'Expense Entry', field: 'ExpenseAllowed' },\r\n { header: 'Credit Card', field: 'CreditCardName' },\r\n { header: 'Email', field: 'EmailAddr' },\r\n { header: 'Expected Hrs Per Day', field: 'Expectedhrsperday' },\r\n { header: 'Expected Hrs Per Week', field: 'Expectedhrsperweek' },\r\n { header: 'Do Not Remind', field: 'IsPartTime' },\r\n { header: 'Time Zone', field: 'EmpTimeZone' }, //find desc\r\n { header: 'Reminder Delivery', field: 'ReminderDeliveryName' },\r\n { header: 'Cost Center', field: 'CostCenterName' },\r\n { header: 'Unique Pay Cycle', field: 'PayrollFrequency' }, //find desc\r\n { header: 'Usertype', field: 'Usertype' },\r\n { header: 'Hire Date', field: 'HireDate', class: 'date' },\r\n { header: 'Release Date', field: 'ReleaseDate', class: 'date' },\r\n { header: 'Lock Out', field: 'LockDate', class: 'date' },\r\n ];\r\n constructor(\r\n private log: LoggingService,\r\n private confirmservice: UnsavedChangesService,\r\n public cdRef: ChangeDetectorRef\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.sendCredentialsForm = new FormGroup({\r\n Subject: new FormControl(),\r\n Message: new FormControl(),\r\n eFAACTLink: new FormControl('efaactcentral.com'),\r\n introLink: new FormControl('wheredoesthisgo.com')\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n // sets the inital list for person filter\r\n this.ItemsChangeSubject.pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.length > 0)\r\n // take(1)\r\n ).subscribe(items => {\r\n this.personSelectItemsSubject.next(\r\n items\r\n // .filter(x => x.IsActive)\r\n .map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n );\r\n const siSI = items.map(item => ({\r\n label: item.DefaultServiceItemName,\r\n value: item.DefaultServiceItemName\r\n }));\r\n const uniqueSISelectItem = fromShared.uniqBy(\r\n siSI,\r\n x => x.label\r\n );\r\n this.siSelectItemsSubject.next(\r\n uniqueSISelectItem\r\n );\r\n const piSI = items.map(item => ({\r\n label: item.DefaultPayrollItemName,\r\n value: item.DefaultPayrollItemName\r\n }));\r\n const uniquePISelectItem = fromShared.uniqBy(\r\n piSI,\r\n x => x.label\r\n );\r\n this.piSelectItemsSubject.next(\r\n uniquePISelectItem\r\n );\r\n });\r\n setTimeout(() => {\r\n this.elements = document.getElementsByClassName('p-header-cell');\r\n }, 0);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n this.log.verbose({\r\n type: 'ManageUsersComponent:ngOnChanges',\r\n changes\r\n });\r\n if (changes.payrollItems) {\r\n this.payrollSelectItems = changes.payrollItems.currentValue.map(\r\n item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n })\r\n );\r\n }\r\n if (changes.items) {\r\n this.ItemsChangeSubject.next(changes.items.currentValue);\r\n this.selected = [];\r\n this.SelectItem.next([]);\r\n }\r\n if (\r\n changes.supervisors &&\r\n changes.supervisors.currentValue.length > 0\r\n ) {\r\n this.supervisorsSelectItemsSubject.next(\r\n changes.supervisors.currentValue\r\n );\r\n }\r\n if (changes.updateBulkLogins) {\r\n this.selected = [];\r\n this.SelectItem.next([]);\r\n }\r\n }\r\n onColumnResize($event) {\r\n var table = document.querySelector('table');\r\n columnResize($event, 4, table);\r\n }\r\n onRowEditInit(item: fromDataServices.ManageUsers.LoginModel) {\r\n super.onRowEditInit(item);\r\n this.payrollSelectItems = fromShared\r\n .uniqBy(\r\n this.payrollItems\r\n .filter(pi => pi.EmployeeListID === item.EmployeeListID)\r\n .map(pi => ({\r\n value: pi.PIListID,\r\n label: pi.PayrollItem\r\n })),\r\n x => x.value\r\n )\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n }\r\n searchTextChanged() {\r\n this.columnIndex = null;\r\n }\r\n scrollToColumn(id) {\r\n var elements = document.getElementsByClassName('p-header-cell');\r\n var ele;\r\n var elementsArr = Array.from(elements);\r\n var filteredElements = elementsArr.filter(x =>\r\n x.textContent.toLowerCase().trim().includes(id)\r\n );\r\n for (var i = 0; i < filteredElements.length; i++) {\r\n if (this.columnIndex != null) {\r\n if (i > +this.columnIndex) {\r\n ele = filteredElements[i];\r\n this.columnIndex = i;\r\n ele.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n if (filteredElements.length - 1 == i) {\r\n this.columnIndex = null;\r\n }\r\n break;\r\n }\r\n } else {\r\n if (filteredElements[i]) {\r\n ele = filteredElements[i];\r\n this.columnIndex = i;\r\n ele.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n onSendCredentials(logins: fromDataServices.ManageUsers.LoginModel[]) {\r\n this.log.verbose({\r\n type: 'ManageUsersComponent:sendCredentials',\r\n logins\r\n });\r\n this.confirmservice\r\n .confirmPromise({ dialogText: 'Are you sure?' })\r\n .then(() => {\r\n this.SendCredentials.next(logins);\r\n $(`#btnSendcredentials`).removeClass('blinking');\r\n })\r\n .catch(() => {});\r\n }\r\n filterUserType(type: string) {\r\n this.log.verbose({\r\n type: 'ManageUsersComponent:filterUserType',\r\n userType: type\r\n });\r\n switch (type.toLocaleLowerCase()) {\r\n case 'all':\r\n this.dataTable.filter('', 'IsConsultant', 'contains');\r\n break;\r\n case 'consultant':\r\n this.dataTable.filter(1, 'IsConsultant', 'equals');\r\n break;\r\n case 'employee':\r\n this.dataTable.filter(0, 'IsConsultant', 'equals');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n dataTableFilter(event: {\r\n filters: any;\r\n filteredValue: fromDataServices.ManageUsers.LoginModel[];\r\n }) {\r\n this.log.verbose({\r\n type: 'ManageUsersComponent:dataTableFilter',\r\n event\r\n });\r\n if (!event.filters.EmployeeListID) {\r\n this.personSelectItemsSubject.next(\r\n event.filteredValue.map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n );\r\n if (!event.filters.SupervisorListID) {\r\n this.supervisorsSelectItemsSubject.next(this.supervisors);\r\n }\r\n }\r\n if (\r\n !event.filters.SupervisorListID &&\r\n event.filters.EmployeeListID &&\r\n event.filters.EmployeeListID.value &&\r\n event.filters.EmployeeListID.value.length > 0\r\n ) {\r\n const logins = this.items.filter(x =>\r\n (event.filters.EmployeeListID.value as Array).includes(\r\n x.EmployeeListID as string\r\n )\r\n );\r\n this.supervisorsSelectItemsSubject.next(\r\n this.supervisors.filter(s =>\r\n logins.map(x => x.SupervisorListID).includes(s.value)\r\n )\r\n );\r\n }\r\n if (!event.filters.DefaultServiceItemName) {\r\n const uniqueSIFilteredValue = fromShared.uniqBy(\r\n event.filteredValue,\r\n x => x.DefaultServiceItemName\r\n );\r\n this.siSelectItemsSubject.next(\r\n uniqueSIFilteredValue.map(item => ({\r\n label: item.DefaultServiceItemName,\r\n value: item.DefaultServiceItemName\r\n }))\r\n );\r\n }\r\n if (!event.filters.DefaultPayrollItemName) {\r\n const uniquePIFilteredValue = fromShared.uniqBy(\r\n event.filteredValue,\r\n x => x.DefaultPayrollItemName\r\n );\r\n this.piSelectItemsSubject.next(\r\n uniquePIFilteredValue.map(item => ({\r\n label: item.DefaultPayrollItemName,\r\n value: item.DefaultPayrollItemName\r\n }))\r\n );\r\n }\r\n }\r\n onShowInactiveChange(showInactive) {\r\n this.log.verbose({\r\n type: 'ManageUsersComponent:onShowInactiveChange',\r\n showInactive: this.showInactive,\r\n value: showInactive\r\n });\r\n this.selectedPeopleFilter = [];\r\n this.dataTable.filter('', 'EmployeeListID', 'contains');\r\n this.ShowInactive.next(showInactive);\r\n // if (showInactive) {\r\n // this.dataTable.filter('', 'IsActive', 'contains');\r\n // } else {\r\n // this.dataTable.filter(true, 'IsActive', 'equals');\r\n // }\r\n // this.dataTable.filter(showInactive ? '' : !showInactive, 'IsActive', showInactive ? 'contains' : 'equals');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ManageUsersPresenterComponent } from '.';\r\nimport { ManageUsersContainerComponent } from '.';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { ManageUsersRoute } from './manage-users.route';\r\nimport { ManageUsersBulkUpdatePresenterComponent } from './manage-users-bulk-update-presenter/manage-users-bulk-update-presenter.component';\r\n\r\n@NgModule({\r\n declarations: [ManageUsersContainerComponent, ManageUsersPresenterComponent, ManageUsersBulkUpdatePresenterComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [ManageUsersRoute]\r\n })\r\n ]\r\n})\r\nexport class ManageUsersModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport * as fromManageUsers from './';\r\n\r\nexport const ManageUsersRoute: Ng2StateDeclaration = {\r\n // name: 'manageusers.**'\r\n name: 'manageusers',\r\n url: '/manageusers',\r\n // , loadChildren: () => import('./manage-users.module').then(r => r.ManageUsersModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n component: fromManageUsers.ManageUsersContainerComponent\r\n};\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport * as fromCumsActions from '../../contract-cumulative/store/contract-cumulative.actions';\r\nimport * as fromCumsReducer from '../../contract-cumulative/store/contract-cumulative.reducer';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromEIActions from '../../expense-item/store/expense-item.actions';\r\nimport { ExpenseItem } from '../../expense-item/store/expense-item.model';\r\nimport * as fromEIReducer from '../../expense-item/store/expense-item.reducer';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IDirectReport, LoadServiceItems } from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { SelectItem, uniqBy } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport * as fromUser from '../../user-info';\r\nimport { IUserInfo } from '../../user-info';\r\nimport {\r\n Item,\r\n ManualAdjustmentPresenterComponent\r\n} from '../manual-adjustment-presenter/manual-adjustment-presenter.component';\r\n@Component({\r\n selector: 'ef-manual-adjustment-feature',\r\n templateUrl: './manual-adjustment-feature.component.html',\r\n styleUrls: ['./manual-adjustment-feature.component.scss']\r\n})\r\nexport class ManualAdjustmentFeatureComponent implements OnInit {\r\n process$: Observable;\r\n @ViewChild(ManualAdjustmentPresenterComponent, { static: true })\r\n presenter: ManualAdjustmentPresenterComponent;\r\n\r\n public adjustments$: Observable<\r\n fromDataServices.ManualAdjustment.ManualAdjustment[]\r\n >;\r\n public serviceitems$: Observable;\r\n public directreports$: Observable;\r\n public tasks$: Observable;\r\n public userGroups$: Observable;\r\n public contracts$: Observable;\r\n public txntypes$: Observable;\r\n public payrollitems$: Observable;\r\n public userInfo$: Observable;\r\n public expenseitems$: Observable;\r\n public companysettings$: Observable<\r\n fromDataServices.RecalculateSettings.RecalculateSetting[]\r\n >;\r\n public items$: Observable;\r\n public userInfo: IUserInfo;\r\n public contractsSelectItem$: Observable;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n\r\n active = true;\r\n IsLoading: boolean;\r\n adjustmentsDataService: EntityCollectionService;\r\n contractDataService: EntityCollectionService;\r\n recalculateSettingsDataService: EntityCollectionService;\r\n CSFYStart: string;\r\n CSFYEnd: string;\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.adjustmentsDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ManualAdjustment.entityName\r\n );\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n this.recalculateSettingsDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.RecalculateSettings.entityName\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.contractDataService.getAll();\r\n this.recalculateSettingsDataService.getWithQuery({\r\n SettingType: 'FYStartDate'\r\n });\r\n // this.recalculateSettingsDataService.getWithQuery({ SettingType: 'FYEndDate' });\r\n this.store.dispatch(fromEIActions.getExpenseItems());\r\n // this.store.dispatch(fromStore.getPayrollItems());\r\n this.store.dispatch(fromCumsActions.getTxnTypes());\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n this.store.dispatch(new LoadServiceItems(false, true, true));\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n // var initialPOSTData: any = {\r\n // DirectOrIndirect: 'Direct',\r\n // Todayonly: false,\r\n // Asofdate: `${moment(this.userInfo.CurrentPayPeriodStart).format('MM/DD/YYYY')} - ${moment(this.userInfo.CurrentPayPeriodEnd).format('MM/DD/YYYY')}`,\r\n // Tasks: null,\r\n // ServiceItems: null,\r\n // DirectReports: null,\r\n // CostCenters: null,\r\n // Txntype: null\r\n // };\r\n // this.adjustmentsDataService.getWithQuery(initialPOSTData);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n setupObservables() {\r\n this.companysettings$ =\r\n this.recalculateSettingsDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.expenseitems$ = this.store.pipe(\r\n select(fromEIReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n\r\n this.adjustments$ = this.adjustmentsDataService.entities$.pipe(\r\n map(c => clone(c))\r\n );\r\n\r\n this.userGroups$ = this.store.pipe(\r\n select(fromLookups.getUserGroupsLookup)\r\n );\r\n\r\n this.payrollitems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(x => clone(x) as PayrollItem[]),\r\n map(payrollItems =>\r\n payrollItems\r\n //.filter(x => x.IsActive === true)\r\n .sort((a, b) => a.PayrollItem.localeCompare(b.PayrollItem))\r\n ),\r\n map(items => uniqBy(items, x => x.PIListID) as PayrollItem[])\r\n );\r\n\r\n this.directreports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n map(x => clone(x)),\r\n //map(users => users.filter(x => x.IsActive == true)),\r\n map(x =>\r\n x.sort((a, b) => a.EmployeeName.localeCompare(b.EmployeeName))\r\n )\r\n );\r\n\r\n this.serviceitems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ServiceItem.localeCompare(b.ServiceItem))\r\n )\r\n );\r\n\r\n this.tasks$ = this.store.pipe(\r\n select(fromLookups.getTasksLookup),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.TaskLongName.localeCompare(b.TaskLongName))\r\n )\r\n );\r\n\r\n this.txntypes$ = this.store.pipe(\r\n select(fromCumsReducer.selectTxnTypes),\r\n map(x => clone(x)),\r\n map(x => x.sort((a, b) => a.CalcDesc.localeCompare(b.CalcDesc)))\r\n );\r\n\r\n this.contracts$ = this.contractDataService.entities$.pipe(\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n )\r\n );\r\n\r\n this.contractsSelectItem$ = this.contracts$.pipe(\r\n map(contracts =>\r\n contracts.filter(x => x.IsActive == true && x.ContractType != 'LOC').map(contract => ({\r\n label: contract.ContractDesc,\r\n value: contract.ContractListID\r\n }))\r\n ),\r\n map(contracts =>\r\n contracts.sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.adjustments$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => (this.IsLoading = false));\r\n\r\n this.userInfo$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(userInfo => {\r\n this.userInfo = userInfo;\r\n this.store.dispatch(new fromLookups.LoadDirectReports({user: userInfo, activeOnly: false}));\r\n });\r\n this.directreports$.pipe(takeWhile(() => this.active)).subscribe(dr => {\r\n this.store.dispatch(\r\n new fromLookups.LoadPayrollItems([\r\n ...(dr.map(z => z.EmployeeListID) || [])\r\n ])\r\n );\r\n });\r\n combineLatest([this.serviceitems$, this.expenseitems$])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([si, ei]) => {\r\n let siarr: any[] = si;\r\n siarr = siarr.map(x => ({\r\n IListID: x.SIListID,\r\n Item: x.ServiceItem,\r\n IsActive: x.IsActive\r\n }));\r\n let eiarr: any[] = ei;\r\n eiarr = eiarr.map(x => ({\r\n IListID: x.EIListID,\r\n Item: x.ExpenseItem,\r\n IsActive: x.IsActive\r\n }));\r\n const items: Item[] = siarr.concat(eiarr);\r\n this.items$ = of(items);\r\n });\r\n }\r\n\r\n onLoadAdjustments($event) {\r\n this.log.verbose({\r\n type: 'ManualAdjustmentFeatureComponent:onLoadAdjustments',\r\n $event\r\n });\r\n this.adjustmentsDataService.clearCache();\r\n if ($event != null) {\r\n this.adjustmentsDataService.getWithQuery($event);\r\n } else {\r\n this.adjustmentsDataService.getWithQuery(null);\r\n }\r\n }\r\n\r\n onAddAdjustments($event) {\r\n this.log.verbose({\r\n type: 'ManualAdjustmentFeatureComponent:onAddAdjustments'\r\n });\r\n // this.adjustmentsDataService.clearCache();\r\n if ($event != null) {\r\n this.adjustmentsDataService.getWithQuery($event);\r\n } else {\r\n this.adjustmentsDataService.getWithQuery(null);\r\n }\r\n }\r\n\r\n onSaveAdjustment($event) {\r\n this.log.verbose({\r\n type: 'ManualAdjustmentFeatureComponent:onSaveAdjustment'\r\n });\r\n this.adjustmentsDataService.update($event);\r\n }\r\n\r\n onDeleteAdjustment($event) {\r\n this.adjustmentsDataService.delete($event);\r\n }\r\n}\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { CostCenter } from '../../contract-cumulative/CostCenter';\r\nimport { Users } from '../../contract-cumulative/store/users.model';\r\nimport { Contract } from '../../data-services';\r\nimport { ManualAdjustment } from '../../data-services/manual-adjustment';\r\nimport { RecalculateSetting } from '../../data-services/recalculate-transactions/recalculate-settings/recalculate-settings.model';\r\nimport * as fromLookups from '../../lookups';\r\nimport { CalcType, IServiceItem, ITask, IUserGroup } from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item';\r\nimport { IStatusMessage, Process, SelectItem, Table } from '../../shared';\r\nimport { columnResize } from '../../shared/columnResize';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-manual-adjustment-presenter',\r\n templateUrl: './manual-adjustment-presenter.component.html',\r\n styleUrls: ['./manual-adjustment-presenter.component.scss']\r\n})\r\nexport class ManualAdjustmentPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit, OnChanges, OnDestroy\r\n{\r\n elements: HTMLCollection;\r\n SelectedErrorSubject = new ReplaySubject(1);\r\n startDate: any;\r\n endDate: any;\r\n companyFYNotice: any[];\r\n colspan = 6;\r\n private AdjustmentsSubject = new ReplaySubject>(1);\r\n private _adjustments: Array;\r\n txnNote: any;\r\n asOfDate: any;\r\n @Input() set adjustments(value: Array) {\r\n // this._adjustments = value;\r\n this._adjustments = value.map(x => ({\r\n Txnid: x.Txnid,\r\n Sessionid: x.Sessionid,\r\n Billablestatus: x.Billablestatus,\r\n Txntype: x.Txntype,\r\n TxnTypeName: this.findTxnType(x.Txntype),\r\n Txndate: x.Txndate,\r\n TxnNotes: x.TxnNotes,\r\n Modifieddate: x.Modifieddate,\r\n Createdate: x.Createdate,\r\n Adjustmentstatus: x.Adjustmentstatus,\r\n Contractlistid: x.Contractlistid,\r\n Contractdesc: x.Contractdesc,\r\n Tasklistid: x.Tasklistid,\r\n TaskName: this.findTask(x),\r\n Employeelistid: x.Employeelistid,\r\n EmployeeName: this.findEmployee(x),\r\n Pilistid: x.Pilistid,\r\n PayrollItem: this.findPayrollItem(x),\r\n Silistid: x.Silistid,\r\n ServiceItem: this.findServiceItem(x),\r\n Costcenterid: x.Costcenterid,\r\n CostCenter: this.findCostCenterName(x.Costcenterid),\r\n Hoursworked: x.Hoursworked,\r\n Invoiceamount: x.Invoiceamount,\r\n InvoiceLabor: x.InvoiceLabor,\r\n Gacost: x.Gacost,\r\n Mhcost: x.Mhcost,\r\n Ohcost: x.Ohcost,\r\n Frcost: x.Frcost,\r\n Feecost: x.Feecost,\r\n Actualamount: x.Actualamount,\r\n IncurredLabor: x.IncurredLabor,\r\n Gacostebr: x.Gacostebr,\r\n Mhcostebr: x.Mhcostebr,\r\n Ohcostebr: x.Ohcostebr,\r\n Frcostebr: x.Frcostebr,\r\n Feecostebr: x.Feecostebr,\r\n Autocalculate: x.Autocalculate,\r\n Autoburden: x.Autoburden,\r\n Status: x.Status,\r\n id: x.id,\r\n original: x.original,\r\n Row_Version: x.Row_Version\r\n }));\r\n this.AdjustmentsSubject.next(this._adjustments);\r\n\r\n this.txnTypesFilterSelectItem = value.map(x => ({\r\n value: x.Txnid,\r\n label: this.findTxnType(x.Txntype)\r\n }));\r\n this.txnTypesFilterSelectItem = this.txnTypesFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.userGroupsFilterSelectItem = value.map(x => ({\r\n value: x.Costcenterid,\r\n label: this.findCostCenterName(x.Costcenterid)\r\n }));\r\n this.userGroupsFilterSelectItem =\r\n this.userGroupsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.tasksFilterSelectItem = value.map(x => ({\r\n value: x.Tasklistid,\r\n label: this.findTask(x)\r\n }));\r\n this.tasksFilterSelectItem = this.tasksFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.contractsFilterSelectItem = value.map(x => ({\r\n value: x.Contractlistid,\r\n label: x.Contractdesc\r\n }));\r\n this.contractsFilterSelectItem = this.contractsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.directReportsFilterSelectItem = value.map(x => ({\r\n value: x.Employeelistid,\r\n label: this.findEmployee(x)\r\n }));\r\n this.directReportsFilterSelectItem =\r\n this.directReportsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.serviceItemsFilterSelectItem = value.map(x => ({\r\n value: x.Silistid,\r\n label: this.findServiceItem(x)\r\n }));\r\n this.serviceItemsFilterSelectItem =\r\n this.serviceItemsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.payrollItemsFilterSelectItem = value.map(x => ({\r\n value: x.Pilistid,\r\n label: this.findPayrollItem(x)\r\n }));\r\n this.payrollItemsFilterSelectItem =\r\n this.payrollItemsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.IsLoading = false;\r\n }\r\n get adjustments(): Array {\r\n return this._adjustments;\r\n }\r\n\r\n private TasksSubject = new ReplaySubject>(1);\r\n private _tasks: Array;\r\n @Input() set tasks(value: Array) {\r\n if (value) {\r\n this._tasks = value;\r\n const filteredTasks = this._tasks.filter(\r\n x => x.ContractType != 'LOC'\r\n );\r\n this.TasksSubject.next(value);\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n }\r\n get tasks(): Array {\r\n return this._tasks;\r\n }\r\n\r\n private DirectReportsSubject = new ReplaySubject>>(1);\r\n private _directreports: Array>;\r\n @Input() set directreports(value: Array>) {\r\n if (value) {\r\n value.splice(0, 0, {\r\n EmployeeListID: 'SYS000000000000000000000000000000000',\r\n EmployeeName: 'Not applicable'\r\n });\r\n this._directreports = value;\r\n this.DirectReportsSubject.next(value);\r\n this.directReportsSelectItem = this._directreports\r\n .filter(x => x.IsActive == true)\r\n .map(x => ({\r\n value: x.EmployeeListID,\r\n label: x.EmployeeName\r\n }));\r\n }\r\n }\r\n get directreports(): Array> {\r\n return this._directreports;\r\n }\r\n\r\n private ServiceItemsSubject = new ReplaySubject>(1);\r\n private _serviceitems: Array;\r\n @Input() set serviceitems(value: Array) {\r\n if (value) {\r\n this._serviceitems = value;\r\n this.ServiceItemsSubject.next(value);\r\n this.serviceItemsSelectItem = this._serviceitems.map(x => ({\r\n value: x.SIListID,\r\n label: x.ServiceItem\r\n }));\r\n this.log.verbose('si count = ' + this._serviceitems.length);\r\n }\r\n }\r\n get serviceitems(): Array {\r\n return this._serviceitems;\r\n }\r\n\r\n private PayrollItemsSubject = new ReplaySubject>(1);\r\n private _payrollitems: Array;\r\n @Input() set payrollitems(value: Array) {\r\n if (value) {\r\n this._payrollitems = value;\r\n this.PayrollItemsSubject.next(value);\r\n this.payrollItemsSelectItem = this._payrollitems.map(x => ({\r\n value: x.PIListID,\r\n label: x.PayrollItem\r\n }));\r\n this.log.verbose('pi count = ' + this._payrollitems.length);\r\n }\r\n }\r\n get payrollitems(): Array {\r\n return this._payrollitems;\r\n }\r\n\r\n private SEItemsSubject = new ReplaySubject>(1);\r\n private _seitems: Array;\r\n @Input() set seitems(value: Array) {\r\n if (value) {\r\n this._seitems = value;\r\n this.SEItemsSubject.next(value);\r\n this.serviceItemsSelectItem = this._seitems.map(x => ({\r\n value: x.IListID,\r\n label: x.Item\r\n }));\r\n this.log.verbose('i count = ' + this._seitems.length);\r\n }\r\n }\r\n get seitems(): Array {\r\n return this._seitems;\r\n }\r\n\r\n private ContractsSubject = new ReplaySubject>(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n if (value) {\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n }\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n private TxnTypesSubject = new ReplaySubject>(1);\r\n private _txntypes: Array;\r\n @Input() set txntypes(value: Array) {\r\n if (value) {\r\n this._txntypes = value;\r\n this.TxnTypesSubject.next(value);\r\n // this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n // value: x.CalcType,\r\n // label: x.CalcDesc\r\n // }));\r\n }\r\n }\r\n get txntypes(): Array {\r\n return this._txntypes;\r\n }\r\n\r\n private CompanySettingsSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _companysettings: Array;\r\n @Input() set companysettings(value: Array) {\r\n if (value) {\r\n this._companysettings = value;\r\n this.CompanySettingsSubject.next(this._companysettings);\r\n const fyyear = moment(this._companysettings[0].SettingValue).year();\r\n this.CSFYStart = moment(\r\n this._companysettings[0].SettingValue\r\n ).toDate();\r\n this.CSFYEnd = moment(`12/31/${fyyear}`).toDate();\r\n this.companyFYNotice = [\r\n {\r\n severity: 'info',\r\n summary: '',\r\n detail: `Company Fiscal Year set to ${moment(\r\n this.CSFYStart\r\n ).format('MM/DD/YYYY')} - ${moment(this.CSFYEnd).format(\r\n 'MM/DD/YYYY'\r\n )}`\r\n }\r\n ];\r\n }\r\n }\r\n get companysettings(): Array {\r\n return this._companysettings;\r\n }\r\n\r\n @Input() public userGroups: Array;\r\n\r\n @Input() public process: Process;\r\n\r\n @Input() public userInfo: IUserInfo;\r\n\r\n @Output() SaveAdjustment = new ReplaySubject(1);\r\n @Output() LoadAdjustments = new ReplaySubject(1);\r\n @Output() AddAdjustments = new ReplaySubject(1);\r\n @Output() DeleteAdjustment = new ReplaySubject(1);\r\n @Output() LoadLaborOrExpense = new ReplaySubject(1);\r\n public editing?: ManualAdjustment = {} as ManualAdjustment;\r\n clonedAdjustments: { [i: string]: ManualAdjustment } = {};\r\n active = true;\r\n public moment: any;\r\n tableScrollHeight = '50em';\r\n addFormGroup: FormGroup;\r\n ccFormGroup: FormGroup;\r\n taskFormGroup: FormGroup;\r\n siFormGroup: FormGroup;\r\n piFormGroup: FormGroup;\r\n contractFormGroup: FormGroup;\r\n empFormGroup: FormGroup;\r\n filterFormGroup: FormGroup;\r\n typeFormGroup: FormGroup;\r\n doi = 'Direct';\r\n txnTypesSelectItem: SelectItem[] = [];\r\n txnTypesInTableSelectItem: SelectItem[] = [];\r\n userGroupsSelectItem: SelectItem[] = [];\r\n userGroupsInTableSelectItem: SelectItem[] = [];\r\n tasksSelectItem: SelectItem[] = [];\r\n tasksInTableSelectItem: SelectItem[] = [];\r\n @Input() contractsSelectItem: SelectItem[];\r\n directReportsSelectItem: SelectItem[] = [];\r\n directReportsInTableSelectItem: SelectItem[] = [];\r\n serviceItemsSelectItem: SelectItem[] = [];\r\n payrollItemsSelectItem: SelectItem[] = [];\r\n sessionDatesSelectItem: SelectItem[] = [];\r\n billableStatusSelectItem: SelectItem[] = [];\r\n\r\n txnTypesFilterSelectItem: SelectItem[] = [];\r\n userGroupsFilterSelectItem: SelectItem[] = [];\r\n tasksFilterSelectItem: SelectItem[] = [];\r\n contractsFilterSelectItem: SelectItem[] = [];\r\n directReportsFilterSelectItem: SelectItem[] = [];\r\n serviceItemsFilterSelectItem: SelectItem[] = [];\r\n payrollItemsFilterSelectItem: SelectItem[] = [];\r\n\r\n siHidden = false;\r\n siColumnHidden = false;\r\n empHidden = false;\r\n empColumnHidden = false;\r\n selectedContracts: Contract.Contract[] = [];\r\n selectedDirectReports: Users[] = [];\r\n selectedServiceItems: IServiceItem[] = [];\r\n selectedPayrollItems: PayrollItem[] = [];\r\n selectedTasks: ITask[] = [];\r\n selectedCCs: IUserGroup[] = [];\r\n costCenters: CostCenter[] = [];\r\n\r\n IsLoading = false;\r\n\r\n IsDirectAdd = true;\r\n IsIndirectAdd = false;\r\n\r\n IsDirectFilter = true;\r\n IsIndirectFilter = false;\r\n\r\n selectedContract: Contract.Contract;\r\n\r\n asOfDateValid = false;\r\n contractValid = false;\r\n directReportValid = false;\r\n serviceItemValid = false;\r\n txnTypeValid = false;\r\n taskValid = false;\r\n ccValid = false;\r\n\r\n asOfDateIsRequired = false;\r\n contractIsRequired = false;\r\n directReportIsRequired = false;\r\n serviceItemIsRequired = false;\r\n txnTypeIsRequired = false;\r\n taskIsRequired = false;\r\n ccIsRequired = false;\r\n\r\n currentPayPeriodStart: any;\r\n currentPayPeriodEnd: any;\r\n prevPayPeriodStart: any;\r\n prevPayPeriodEnd: any;\r\n\r\n SIColumnHidden = false;\r\n PIColumnHidden = false;\r\n EmpColumnHidden = false;\r\n BillableColumnHidden = false;\r\n CCColumnHidden = false;\r\n\r\n length: number;\r\n header: string;\r\n\r\n manualAdjustmentsTabHeader = 'Manual Adjustments';\r\n\r\n @ViewChild(Table, { static: true })\r\n adjTable: Table;\r\n\r\n colsCanBeHidden: any[];\r\n cols: any[];\r\n frozenCols: any[];\r\n\r\n CSFYStart: Date;\r\n CSFYEnd: Date;\r\n\r\n _selectedColumns: any[];\r\n @Input() get selectedColumns(): any[] {\r\n return this._selectedColumns;\r\n }\r\n\r\n set selectedColumns(val: any[]) {\r\n // restore original order\r\n this._selectedColumns = this.colsCanBeHidden.filter(col =>\r\n val.includes(col)\r\n );\r\n }\r\n showDialog = false;\r\n calcFormGroup: FormGroup;\r\n autoCalculate = false;\r\n autoBurden = false;\r\n includeInactive = false;\r\n\r\n constructor(@Inject(LoggingService) private log: LoggingService) {\r\n super();\r\n this.moment = moment;\r\n this.calcFormGroup = new FormGroup({\r\n CalculateAmount: new FormControl(null),\r\n CalculateBurden: new FormControl(null)\r\n });\r\n this.addFormGroup = new FormGroup({\r\n Asofdate: new FormControl(null),\r\n Contracts: new FormControl(null),\r\n Txntypes: new FormControl(null),\r\n Tasks: new FormControl(null),\r\n PayrollItems: new FormControl(null),\r\n Items: new FormControl(null),\r\n DirectReports: new FormControl(null),\r\n CC: new FormControl(null),\r\n direct: new FormControl(null),\r\n indirect: new FormControl(null),\r\n note: new FormControl(null)\r\n });\r\n\r\n this.filterFormGroup = new FormGroup({\r\n Range: new FormControl(null),\r\n direct: new FormControl(null),\r\n indirect: new FormControl(null),\r\n Contracts: new FormControl(null)\r\n });\r\n\r\n this.ccFormGroup = new FormGroup({\r\n CC: new FormControl(null)\r\n });\r\n\r\n this.taskFormGroup = new FormGroup({\r\n Task: new FormControl(null)\r\n });\r\n\r\n this.siFormGroup = new FormGroup({\r\n SI: new FormControl(null)\r\n });\r\n\r\n this.empFormGroup = new FormGroup({\r\n Emp: new FormControl(null)\r\n });\r\n\r\n this.typeFormGroup = new FormGroup({\r\n Type: new FormControl(null)\r\n });\r\n\r\n this.piFormGroup = new FormGroup({\r\n pi: new FormControl(null)\r\n });\r\n\r\n this.contractFormGroup = new FormGroup({\r\n Contracts: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.billableStatusSelectItem = [\r\n {\r\n label: 'Billable',\r\n value: 'Billable'\r\n },\r\n {\r\n label: 'NotBillable',\r\n value: 'NotBillable'\r\n }\r\n ];\r\n this.log.verbose({ type: 'cs: ', CSFYStart: this.CSFYStart });\r\n this.log.verbose({ type: 'cs: ', CSFYEnd: this.CSFYEnd });\r\n\r\n this.manualAdjustmentsTabHeader = `Manual Adjustments for ${moment(\r\n this.startDate\r\n ).format('MM/DD/YYYY')} - ${moment(this.endDate).format('MM/DD/YYYY')}`;\r\n\r\n this.cols = [\r\n { field: 'Adjustmentstatus', header: 'Status' },\r\n { field: 'Txndate', header: 'Txn Date' },\r\n { field: 'TxnTypeName', header: 'Txn Type' },\r\n { field: 'TaskName', header: 'Task' },\r\n { field: 'EmployeeName', header: 'Person' },\r\n { field: 'ServiceItem', header: 'Item' },\r\n { field: 'PayrollItem', header: 'Payroll Item' },\r\n { field: 'CostCenter', header: 'Cost Center' },\r\n { field: 'Billablestatus', header: 'Billable Status' },\r\n { field: 'Hoursworked', header: 'Hours' },\r\n { field: 'Invoiceamount', header: 'Invoiced Amount' },\r\n { field: 'Gacost', header: 'G&A Invoiced' },\r\n { field: 'Mhcost', header: 'MH Invoiced' },\r\n { field: 'Ohcost', header: 'OH Invoiced' },\r\n { field: 'Frcost', header: 'FR Invoiced' },\r\n { field: 'Feecost', header: 'Fee Invoiced' },\r\n { field: 'Actualamount', header: 'Incurred Amount' },\r\n { field: 'Gacostebr', header: 'G&A Incurred' },\r\n { field: 'Mhcostebr', header: 'MH Incurred' },\r\n { field: 'Ohcostebr', header: 'OH Incurred' },\r\n { field: 'Frcostebr', header: 'FR Incurred' },\r\n { field: 'Feecostebr', header: 'Fee Incurred' },\r\n { field: 'TxnNotes', header: 'Notes' }\r\n ];\r\n\r\n this.colsCanBeHidden = [\r\n { field: 'Employeelistid', header: 'Person' },\r\n { field: 'Silistid', header: 'Item' },\r\n { field: 'Pilistid', header: 'Payroll Item' },\r\n { field: 'Costcenterid', header: 'Cost Center' },\r\n { field: 'Billablestatus', header: 'Billable Status' }\r\n ];\r\n\r\n this._selectedColumns = this.colsCanBeHidden;\r\n\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n if (this.userInfo) {\r\n this.currentPayPeriodStart = this.userInfo.CurrentPayPeriodStart;\r\n this.currentPayPeriodEnd = this.userInfo.CurrentPayPeriodEnd;\r\n this.prevPayPeriodStart = this.userInfo.PrevPayPeriodStart;\r\n this.prevPayPeriodEnd = this.userInfo.PrevPayPeriodEnd;\r\n this.filterFormGroup.controls['Range'].patchValue([\r\n this.prevPayPeriodStart,\r\n this.prevPayPeriodEnd\r\n ]);\r\n }\r\n this.filterFormGroup.controls['direct'].patchValue('direct');\r\n\r\n setTimeout(() => {\r\n this.elements = document.getElementsByClassName('p-header-cell');\r\n }, 0);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes.userInfo && changes.userInfo.currentValue) {\r\n this.startDate = this.userInfo.CurrentPayPeriodStart;\r\n this.endDate = this.userInfo.CurrentPayPeriodEnd;\r\n }\r\n if (\r\n changes.userGroups &&\r\n changes.userGroups.currentValue &&\r\n changes.userGroups.currentValue.length > 0\r\n ) {\r\n this.userGroups = this.userGroups.filter(x =>\r\n x.PrefixedGroupID.includes('C')\r\n );\r\n this.userGroupsSelectItem = this.userGroups.map(x => ({\r\n label: x.GroupName,\r\n value: x.GroupID\r\n }));\r\n this.userGroupsInTableSelectItem = this.userGroups.map(x => ({\r\n label: x.GroupName,\r\n value: x.GroupID\r\n }));\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n includeInactiveChanged(event) {\r\n this.includeInactive = event.checked;\r\n if (event.checked == true) {\r\n this.directReportsSelectItem = this.directreports\r\n .filter(x => x.IsActive == false || x.IsActive == true)\r\n .map(x => ({\r\n label: x.EmployeeName,\r\n value: x.EmployeeListID\r\n }));\r\n } else {\r\n this.directReportsSelectItem = this.directreports\r\n .filter(x => x.IsActive == true)\r\n .map(x => ({\r\n label: x.EmployeeName,\r\n value: x.EmployeeListID\r\n }));\r\n }\r\n }\r\n\r\n onColumnResize($event) {\r\n var table = document.querySelector('table');\r\n columnResize($event, 6, table);\r\n // var numOfFrozenCols = 6;\r\n // var colIndex = $event.element.cellIndex + 1;\r\n // var change = $event.delta;\r\n\r\n // //fit\r\n // if (colIndex < numOfFrozenCols) {\r\n // var columnTdCells = Array.from(document.querySelectorAll(`td:nth-child(${colIndex})`)) as Array;\r\n // for (var y = 0; y < columnTdCells.length; y++) {\r\n // var style = getComputedStyle(columnTdCells[y].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnTdCells[y].nextSibling.style.left = `${newLeftValue}px`;\r\n\r\n // }\r\n // var columnThCells = Array.from(document.querySelectorAll(`th:nth-child(${colIndex})`)) as Array;\r\n // for (var z = 0; z < columnThCells.length; z++) {\r\n // var style = getComputedStyle(columnThCells[z].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnThCells[z].nextSibling.style.left = `${newLeftValue}px`;\r\n\r\n // }\r\n // }\r\n\r\n // //$event.element.nextSibling.style.left = `${newLeftValue}px`;\r\n // this.log.verbose($event);\r\n }\r\n\r\n openDialog() {\r\n this.addFormGroup.controls['direct'].patchValue('direct');\r\n this.addFormGroup.controls['indirect'].patchValue(null);\r\n this.showDialog = true;\r\n }\r\n\r\n addManualAdj() {\r\n this.buildTable();\r\n }\r\n\r\n closeDialog() {\r\n this.showDialog = false;\r\n }\r\n\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'ManualAdjustmentPresenterComponent:setupObservables'\r\n });\r\n }\r\n\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'ManualAdjustmentPresenterComponent:setupSubscriptions'\r\n });\r\n\r\n this.calcFormGroup.controls['CalculateAmount'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.autoCalculate = value;\r\n });\r\n this.calcFormGroup.controls['CalculateBurden'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.autoBurden = value;\r\n });\r\n\r\n this.filterFormGroup.controls['direct'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.filterFormGroup.controls['indirect'].patchValue(null);\r\n this.filterFormGroup.controls['Contracts'].reset();\r\n this.adjTable.clear();\r\n this.IsIndirectFilter = false;\r\n this.IsDirectFilter = true;\r\n let filteredTxnTypes;\r\n let filteredContracts;\r\n let filteredTasks;\r\n this.doi = 'Direct';\r\n if (this.txntypes) {\r\n filteredTxnTypes = this.txntypes.filter(\r\n x => x.CostType == 'Direct'\r\n );\r\n }\r\n\r\n if (this.contracts) {\r\n filteredContracts = this.contracts.filter(\r\n x => x.ContractType == 'LOC'\r\n );\r\n }\r\n\r\n if (this.tasks) {\r\n filteredTasks = this.tasks.filter(\r\n x => x.ContractType == 'LOC'\r\n );\r\n }\r\n\r\n this.LoadAdjustments.next({\r\n DirectOrIndirect: this.doi,\r\n StartDate: this.startDate, // this.userInfo.CurrentPayPeriodStart,\r\n EndDate: this.endDate // this.userInfo.CurrentPayPeriodEnd\r\n });\r\n }\r\n });\r\n this.filterFormGroup.controls['indirect'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.filterFormGroup.controls['direct'].patchValue(null);\r\n this.filterFormGroup.controls['Contracts'].reset();\r\n this.adjTable.clear();\r\n this.IsIndirectFilter = true;\r\n this.IsDirectFilter = false;\r\n\r\n let filteredTxnTypes;\r\n let filteredContracts;\r\n let filteredTasks;\r\n\r\n this.doi = 'Indirect';\r\n if (this.txntypes) {\r\n filteredTxnTypes = this.txntypes.filter(\r\n x => x.CostType == 'Indirect'\r\n );\r\n }\r\n\r\n if (this.contracts) {\r\n filteredContracts = this.contracts.filter(\r\n x => x.ContractType == 'LOC'\r\n );\r\n }\r\n\r\n if (this.tasks) {\r\n filteredTasks = this.tasks.filter(\r\n x => x.ContractType == 'LOC'\r\n );\r\n }\r\n\r\n this.LoadAdjustments.next({\r\n DirectOrIndirect: this.doi,\r\n StartDate: this.startDate, // this.userInfo.CurrentPayPeriodStart,\r\n EndDate: this.endDate // this.userInfo.CurrentPayPeriodEnd\r\n });\r\n }\r\n });\r\n\r\n this.filterFormGroup.controls['Range'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (value[0] && value[1]) {\r\n this.startDate = value[0];\r\n this.endDate = value[1];\r\n if (this.asOfDate != null) {\r\n if (\r\n this.asOfDate <= value[1] &&\r\n this.asOfDate >= value[0]\r\n ) {\r\n // as of date is within the current date range\r\n } else {\r\n const POSTData: any = {\r\n DirectOrIndirect: this.doi,\r\n StartDate: moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n EndDate: moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n )\r\n };\r\n this.LoadAdjustments.next(POSTData);\r\n }\r\n } else {\r\n const POSTData: any = {\r\n DirectOrIndirect: this.doi,\r\n StartDate: moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n EndDate: moment(value[1]).format('MM/DD/YYYY')\r\n };\r\n this.LoadAdjustments.next(POSTData);\r\n }\r\n\r\n this.manualAdjustmentsTabHeader = `Manual Adjustments for ${moment(\r\n this.startDate\r\n ).format('MM/DD/YYYY')} - ${moment(this.endDate).format(\r\n 'MM/DD/YYYY'\r\n )}`;\r\n }\r\n }\r\n });\r\n this.filterFormGroup.controls['Contracts'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n if (value) {\r\n const contractids: string[] = [];\r\n value.forEach(val => {\r\n contractids.push(\r\n (\r\n this.contracts.find(\r\n x => x.ContractListID == val\r\n ) as Contract.Contract\r\n )?.ContractDesc\r\n );\r\n });\r\n this.adjTable.filter(contractids, 'Contractdesc', 'in');\r\n // this.selectedContracts = [];\r\n // value.forEach(val => {\r\n // this.selectedContracts.push(\r\n // this.contracts.find(x => x.ContractListID == val)\r\n // );\r\n // });\r\n // if (this.startDate && this.endDate) {\r\n // let POSTData: any = {\r\n // DirectOrIndirect: this.doi,\r\n // StartDate: moment(this.startDate).format('MM/DD/YYYY'),\r\n // EndDate: moment(this.endDate).format('MM/DD/YYYY'),\r\n // Contracts: this.selectedContracts\r\n // };\r\n // this.LoadAdjustments.next(POSTData);\r\n // } else {\r\n // let POSTData: any = {\r\n // DirectOrIndirect: this.doi,\r\n // StartDate: moment(this.userInfo.CurrentPayPeriodStart).format('MM/DD/YYYY'),\r\n // EndDate: moment(this.userInfo.CurrentPayPeriodEnd).format('MM/DD/YYYY'),\r\n // Contracts: this.selectedContracts\r\n // };\r\n // this.LoadAdjustments.next(POSTData);\r\n // }\r\n }\r\n }\r\n });\r\n\r\n this.addFormGroup.controls['direct'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.addFormGroup.controls['indirect'].patchValue(null);\r\n this.addFormGroup.controls['Contracts'].reset();\r\n this.addFormGroup.controls['Tasks'].reset();\r\n this.addFormGroup.controls['Txntypes'].reset();\r\n this.addFormGroup.controls['CC'].reset();\r\n this.addFormGroup.controls['Items'].reset();\r\n this.addFormGroup.controls['PayrollItems'].reset();\r\n this.addFormGroup.controls['DirectReports'].reset();\r\n\r\n let filteredTxnTypes;\r\n let filteredContracts;\r\n let filteredTasks;\r\n\r\n this.doi = 'Direct';\r\n filteredTxnTypes = this.txntypes.filter(\r\n x => x.CostType == 'Direct' && x.CalcType != 'FP'\r\n );\r\n filteredContracts = this.contracts.filter(\r\n x => x.ContractType != 'LOC' && x.IsActive == true\r\n );\r\n filteredTasks = this.tasks.filter(\r\n x => x.ContractType != 'LOC'\r\n );\r\n\r\n this.contractsSelectItem = filteredContracts.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n\r\n // this.txnTypesInTableSelectItem = filteredTxnTypes.map(x => ({\r\n // value: x.CalcType,\r\n // label: x.CalcDesc\r\n // }));\r\n }\r\n });\r\n this.addFormGroup.controls['indirect'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.addFormGroup.controls['direct'].patchValue(null);\r\n this.addFormGroup.controls['Contracts'].reset();\r\n this.addFormGroup.controls['Tasks'].reset();\r\n this.addFormGroup.controls['Txntypes'].reset();\r\n this.addFormGroup.controls['CC'].reset();\r\n this.addFormGroup.controls['Items'].reset();\r\n this.addFormGroup.controls['PayrollItems'].reset();\r\n this.addFormGroup.controls['DirectReports'].reset();\r\n\r\n let filteredTxnTypes;\r\n let filteredContracts;\r\n let filteredTasks;\r\n\r\n this.doi = 'Indirect';\r\n filteredTxnTypes = this.txntypes.filter(\r\n x =>\r\n x.CostType == 'Indirect' && x.CostSubType == 'Labor' && x.CalcType != 'FP'\r\n );\r\n filteredContracts = this.contracts.filter(\r\n x => x.ContractType == 'LOC' && x.IsActive == true\r\n );\r\n filteredTasks = this.tasks.filter(\r\n x => x.ContractType == 'LOC'\r\n );\r\n\r\n this.contractsSelectItem = filteredContracts.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesSelectItem = filteredTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n // this.txnTypesInTableSelectItem = filteredTxnTypes.map(x => ({\r\n // value: x.CalcType,\r\n // label: x.CalcDesc\r\n // }));\r\n }\r\n });\r\n this.addFormGroup.controls['Asofdate'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n // this.selectedAsOfDate = value;\r\n this.asOfDate = value;\r\n this.asOfDateValid = true;\r\n this.asOfDateIsRequired = false;\r\n if (value <= this.endDate && value >= this.startDate) {\r\n // value is within start and end dates\r\n } else {\r\n if (value > this.startDate) {\r\n // this.filterFormGroup.controls['Range'].patchValue([\r\n // this.startDate,\r\n // value\r\n // ]);\r\n this.endDate = value;\r\n }\r\n if (value < this.startDate) {\r\n this.filterFormGroup.controls['Range'].patchValue([\r\n value,\r\n this.endDate\r\n ]);\r\n this.startDate = value;\r\n }\r\n }\r\n }\r\n });\r\n this.addFormGroup.controls['Contracts'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.addFormGroup.controls['Tasks'].reset();\r\n this.contractIsRequired = false;\r\n this.contractValid = true;\r\n this.selectedContract = this.contracts.find(\r\n x => x.ContractListID == value\r\n ) as Contract.Contract;\r\n const filteredTasks = this.tasks.filter(x =>\r\n x.TaskLongName.includes(\r\n this.selectedContract.ContractDesc\r\n )\r\n );\r\n this.tasksSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n });\r\n this.addFormGroup.controls['Tasks'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedTasks = [];\r\n this.taskValid = true;\r\n this.taskIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedTasks.push(\r\n this.tasks.find(\r\n x => x.TaskListID == val\r\n ) as fromLookups.ITask\r\n );\r\n });\r\n }\r\n });\r\n this.addFormGroup.controls['Txntypes'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.txnTypeValid = true;\r\n this.txnTypeIsRequired = false;\r\n const type = this.txntypes.find(\r\n x => x.CalcType == value\r\n ) as fromLookups.CalcType;\r\n if (\r\n value == 'T' ||\r\n value == 'ODC' ||\r\n value == 'MAT' ||\r\n type.CostSubType == 'Expense'\r\n ) {\r\n this.siHidden = true;\r\n this.empHidden = true;\r\n this.serviceItemValid = true;\r\n this.directReportValid = true;\r\n // this.serviceItemIsRequired = false;\r\n // this.directReportIsRequired = false;\r\n }\r\n if (value == 'SUB' || value == 'CON') {\r\n this.siHidden = false;\r\n this.empHidden = true;\r\n this.directReportValid = true;\r\n this.serviceItemValid = false;\r\n // this.serviceItemIsRequired = true;\r\n // this.directReportIsRequired = false;\r\n }\r\n if (type.CostSubType == 'Labor') {\r\n this.siHidden = false;\r\n this.empHidden = false;\r\n this.directReportValid = false;\r\n this.serviceItemValid = false;\r\n // this.serviceItemIsRequired = true;\r\n // this.directReportIsRequired = true;\r\n }\r\n }\r\n });\r\n this.addFormGroup.controls['CC'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedCCs = [];\r\n this.ccValid = true;\r\n this.ccIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedCCs.push(\r\n this.userGroups.find(\r\n x => x.GroupID == val\r\n ) as fromLookups.IUserGroup\r\n );\r\n });\r\n }\r\n });\r\n this.addFormGroup.controls['Items'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedServiceItems = [];\r\n this.serviceItemValid = true;\r\n this.serviceItemIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedServiceItems.push(\r\n this.serviceitems.find(\r\n x => x.SIListID == val\r\n ) as fromLookups.IServiceItem\r\n );\r\n });\r\n }\r\n });\r\n this.addFormGroup.controls['PayrollItems'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedPayrollItems = [];\r\n value.forEach(val => {\r\n this.selectedPayrollItems.push(\r\n this.payrollitems.find(\r\n x => x.PIListID == val\r\n ) as PayrollItem\r\n );\r\n });\r\n }\r\n });\r\n this.addFormGroup.controls['DirectReports'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedDirectReports = [];\r\n this.directReportValid = true;\r\n this.directReportIsRequired = false;\r\n value.forEach(val => {\r\n this.selectedDirectReports.push(\r\n this.directreports.find(\r\n x => x.EmployeeListID == val\r\n ) as Users\r\n );\r\n });\r\n }\r\n });\r\n this.addFormGroup.controls['note'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.txnNote = value;\r\n }\r\n });\r\n }\r\n\r\n findCostCenterName(Costcenterid: number): string | undefined {\r\n if (Costcenterid != null) {\r\n if (this.userGroups && this.userGroups.length > 0) {\r\n if (Costcenterid === 0) {\r\n return '';\r\n } else {\r\n const cc = this.userGroups.find(\r\n x => x.GroupID === Costcenterid\r\n );\r\n return cc?.GroupName;\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n findTask(rowData: ManualAdjustment): string | undefined {\r\n if (rowData.Tasklistid != null) {\r\n if (this.tasks && this.tasks.length > 0) {\r\n const index = this.tasks.findIndex(\r\n x => x.TaskListID === rowData.Tasklistid\r\n );\r\n if (index !== -1) {\r\n const task = this.tasks[index];\r\n return task.TaskLongName;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findEmployee(rowData: ManualAdjustment): string | undefined {\r\n if (rowData.Employeelistid != null) {\r\n if (this.directreports && this.directreports.length > 0) {\r\n const index = this.directreports.findIndex(\r\n x => x.EmployeeListID === rowData.Employeelistid\r\n );\r\n if (index !== -1) {\r\n const directreport = this.directreports[index];\r\n return directreport.EmployeeName;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findServiceItem(rowData: ManualAdjustment): string | undefined {\r\n if (rowData.Silistid != null) {\r\n if (this.serviceitems && this.serviceitems.length > 0) {\r\n const index = this.serviceitems.findIndex(\r\n x => x.SIListID === rowData.Silistid\r\n );\r\n if (index !== -1) {\r\n const serviceitem = this.serviceitems[index];\r\n return serviceitem.ServiceItem;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findPayrollItem(rowData: ManualAdjustment): string | undefined {\r\n if (rowData.Pilistid != null) {\r\n if (this.payrollitems && this.payrollitems.length > 0) {\r\n const index = this.payrollitems.findIndex(\r\n x => x.PIListID === rowData.Pilistid\r\n );\r\n if (index !== -1) {\r\n const payrollitem = this.payrollitems[index];\r\n return payrollitem.PayrollItem;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n findTxnType(rowData: any): string | undefined {\r\n if (rowData != null) {\r\n if (this.txntypes && this.txntypes.length > 0) {\r\n const index = this.txntypes.findIndex(\r\n x => x.CalcType === rowData\r\n );\r\n if (index !== -1) {\r\n const txntype = this.txntypes[index];\r\n return txntype.CalcDesc;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n filterTable($event, filterType) {\r\n // use this for all table filters\r\n if (filterType == 'si') {\r\n this.adjTable.filter($event.value, 'Silistid', 'in');\r\n } else if (filterType == 'pi') {\r\n this.adjTable.filter($event.value, 'Pilistid', 'in');\r\n } else if (filterType == 'task') {\r\n this.adjTable.filter($event.value, 'Tasklistid', 'in');\r\n } else if (filterType == 'type') {\r\n this.adjTable.filter($event.value, 'Txntype', 'in');\r\n } else if (filterType == 'employee') {\r\n this.adjTable.filter($event.value, 'Employeelistid', 'in');\r\n } else if (filterType == 'cc') {\r\n this.adjTable.filter($event.value, 'Costcenterid', 'in');\r\n } else if (filterType == 'contract') {\r\n this.adjTable.filter($event.value, 'Contractdesc', 'in');\r\n }\r\n }\r\n\r\n onEditInit($event: { data: ManualAdjustment }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: ManualAdjustment) {\r\n this.clonedAdjustments[rowData.Txnid] = { ...rowData };\r\n this.editing = rowData;\r\n if (this.filterFormGroup.controls['direct'].value != null) {\r\n const directTxnTypes = this.txntypes.filter(\r\n x => x.CostType == 'Direct'\r\n );\r\n this.txnTypesInTableSelectItem = directTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n } else {\r\n const indirectTxnTypes = this.txntypes.filter(\r\n x => x.CostType == 'Indirect'\r\n );\r\n this.txnTypesInTableSelectItem = indirectTxnTypes.map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: ManualAdjustment) {\r\n rowData = {\r\n ...rowData,\r\n Autoburden: this.autoBurden,\r\n Autocalculate: this.autoCalculate\r\n };\r\n this.SaveAdjustment.next(rowData);\r\n delete this.clonedAdjustments[rowData.Txnid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: ManualAdjustment) {\r\n delete this.clonedAdjustments[item.Txnid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n onadjDelete(adj) {\r\n this.DeleteAdjustment.next(adj);\r\n }\r\n\r\n buildTable() {\r\n this.showDialog = false;\r\n if (this.addFormGroup.controls['Asofdate'].value == null) {\r\n this.asOfDateIsRequired = true;\r\n }\r\n if (this.addFormGroup.controls['Contracts'].value == null) {\r\n this.contractIsRequired = true;\r\n }\r\n if (this.addFormGroup.controls['Txntypes'].value == null) {\r\n this.txnTypeIsRequired = true;\r\n }\r\n if (this.addFormGroup.controls['Tasks'].value == null) {\r\n this.taskIsRequired = true;\r\n }\r\n if (this.addFormGroup.controls['CC'].value == null) {\r\n this.ccIsRequired = true;\r\n }\r\n\r\n if (this.userGroups && this.userGroups.length > 1) {\r\n if (\r\n this.asOfDateValid == true &&\r\n this.contractValid == true &&\r\n this.txnTypeValid == true &&\r\n this.taskValid == true &&\r\n this.ccValid == true\r\n ) {\r\n if (this.addFormGroup.controls['Contracts'].value != null) {\r\n this.selectedContract = this.contracts.find(\r\n x =>\r\n x.ContractListID ==\r\n this.addFormGroup.controls['Contracts'].value\r\n ) as Contract.Contract;\r\n const filteredTasks = this.tasks.filter(x =>\r\n x.TaskLongName.includes(\r\n this.selectedContract.ContractDesc\r\n )\r\n );\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n\r\n // this.showRequiredMessage = false;\r\n\r\n this.AddAdjustments.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: this.addFormGroup.controls['Asofdate'].value,\r\n Tasks: this.selectedTasks,\r\n ServiceItems: this.selectedServiceItems,\r\n PayrollItems: this.selectedPayrollItems,\r\n DirectReports: this.selectedDirectReports,\r\n Txntype: this.addFormGroup.controls['Txntypes'].value,\r\n CostCenters: this.selectedCCs,\r\n TxnNotes: this.txnNote\r\n });\r\n\r\n this.selectedTasks = [];\r\n this.selectedServiceItems = [];\r\n this.selectedDirectReports = [];\r\n this.selectedCCs = [];\r\n this.selectedContracts = [];\r\n this.txnNote = '';\r\n\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.piFormGroup.controls['pi'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n\r\n this.addFormGroup.controls['Asofdate'].reset();\r\n this.addFormGroup.controls['Contracts'].reset();\r\n this.addFormGroup.controls['Tasks'].reset();\r\n this.addFormGroup.controls['Txntypes'].reset();\r\n this.addFormGroup.controls['Items'].reset();\r\n this.addFormGroup.controls['PayrollItems'].reset();\r\n this.addFormGroup.controls['DirectReports'].reset();\r\n this.addFormGroup.controls['CC'].reset();\r\n this.addFormGroup.controls['note'].reset();\r\n\r\n if (this.siHidden == true) {\r\n this.siColumnHidden = true;\r\n }\r\n if (this.empHidden == true) {\r\n this.empColumnHidden = true;\r\n }\r\n } else {\r\n // this.showRequiredMessage = true;\r\n }\r\n } else {\r\n if (\r\n this.asOfDateValid == true &&\r\n this.contractValid == true &&\r\n this.txnTypeValid == true &&\r\n this.taskValid == true\r\n ) {\r\n if (this.addFormGroup.controls['Contracts'].value != null) {\r\n this.selectedContract = this.contracts.find(\r\n x =>\r\n x.ContractListID ==\r\n this.addFormGroup.controls['Contracts'].value\r\n ) as Contract.Contract;\r\n const filteredTasks = this.tasks.filter(x =>\r\n x.TaskLongName.includes(\r\n this.selectedContract.ContractDesc\r\n )\r\n );\r\n this.tasksInTableSelectItem = filteredTasks.map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n }\r\n\r\n // this.showRequiredMessage = false;\r\n\r\n this.AddAdjustments.next({\r\n DirectOrIndirect: this.doi,\r\n Todayonly: false,\r\n Asofdate: this.addFormGroup.controls['Asofdate'].value,\r\n Tasks: this.selectedTasks,\r\n ServiceItems: this.selectedServiceItems,\r\n PayrollItems: this.selectedPayrollItems,\r\n DirectReports: this.selectedDirectReports,\r\n Txntype: this.addFormGroup.controls['Txntypes'].value,\r\n CostCenters: this.selectedCCs,\r\n TxnNotes: this.txnNote\r\n });\r\n\r\n this.selectedTasks = [];\r\n this.selectedServiceItems = [];\r\n this.selectedDirectReports = [];\r\n this.selectedCCs = [];\r\n this.selectedContracts = [];\r\n this.txnNote = '';\r\n\r\n this.taskFormGroup.controls['Task'].reset();\r\n this.typeFormGroup.controls['Type'].reset();\r\n this.siFormGroup.controls['SI'].reset();\r\n this.piFormGroup.controls['pi'].reset();\r\n this.empFormGroup.controls['Emp'].reset();\r\n this.ccFormGroup.controls['CC'].reset();\r\n\r\n this.addFormGroup.controls['Asofdate'].reset();\r\n this.addFormGroup.controls['Contracts'].reset();\r\n this.addFormGroup.controls['Tasks'].reset();\r\n this.addFormGroup.controls['Txntypes'].reset();\r\n this.addFormGroup.controls['Items'].reset();\r\n this.addFormGroup.controls['PayrollItems'].reset();\r\n this.addFormGroup.controls['DirectReports'].reset();\r\n this.addFormGroup.controls['CC'].reset();\r\n this.addFormGroup.controls['note'].reset();\r\n\r\n if (this.siHidden == true) {\r\n this.siColumnHidden = true;\r\n }\r\n if (this.empHidden == true) {\r\n this.empColumnHidden = true;\r\n }\r\n } else {\r\n // this.showRequiredMessage = true;\r\n }\r\n }\r\n\r\n if (this.doi == 'Direct') {\r\n if (this.filterFormGroup.controls['direct'].value == null) {\r\n this.filterFormGroup.controls['direct'].patchValue('direct');\r\n }\r\n } else {\r\n if (this.filterFormGroup.controls['indirect'].value == null) {\r\n this.filterFormGroup.controls['indirect'].patchValue(\r\n 'indirect'\r\n );\r\n }\r\n }\r\n if (this.asOfDate <= this.endDate && this.asOfDate >= this.startDate) {\r\n } else {\r\n this.filterFormGroup.controls['Range'].patchValue([\r\n this.startDate,\r\n this.endDate\r\n ]);\r\n }\r\n this.asOfDate = null;\r\n }\r\n\r\n clearBuild() {\r\n this.asOfDate = null;\r\n this.selectedTasks = [];\r\n this.selectedServiceItems = [];\r\n this.selectedDirectReports = [];\r\n this.selectedContracts = [];\r\n this.txnNote = '';\r\n // this.showRequiredMessage = false;\r\n this.asOfDateIsRequired = false;\r\n this.contractIsRequired = false;\r\n this.directReportIsRequired = false;\r\n this.serviceItemIsRequired = false;\r\n this.txnTypeIsRequired = false;\r\n this.ccIsRequired = false;\r\n this.taskIsRequired = false;\r\n this.empHidden = false;\r\n this.siHidden = false;\r\n this.asOfDateValid = false;\r\n this.contractValid = false;\r\n this.taskValid = false;\r\n this.txnTypeValid = false;\r\n this.ccValid = false;\r\n this.serviceItemValid = false;\r\n this.directReportValid = false;\r\n this.addFormGroup.controls['Asofdate'].reset();\r\n this.addFormGroup.controls['Contracts'].reset();\r\n this.addFormGroup.controls['Tasks'].reset();\r\n this.addFormGroup.controls['Txntypes'].reset();\r\n this.addFormGroup.controls['Items'].reset();\r\n this.addFormGroup.controls['PayrollItems'].reset();\r\n this.addFormGroup.controls['DirectReports'].reset();\r\n this.addFormGroup.controls['CC'].reset();\r\n this.addFormGroup.controls['note'].reset();\r\n if (this.doi == 'Direct') {\r\n this.tasksSelectItem = this.tasks\r\n .filter(f => f.ContractType != 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType != 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CalcType == 'Direct')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n } else {\r\n this.tasksSelectItem = this.tasks\r\n .filter(f => f.ContractType == 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.tasksInTableSelectItem = this.tasks\r\n .filter(f => f.ContractType == 'LOC')\r\n .map(x => ({\r\n value: x.TaskListID,\r\n label: x.TaskLongName\r\n }));\r\n this.txnTypesInTableSelectItem = this.txntypes\r\n .filter(f => f.CalcType == 'Indirect')\r\n .map(x => ({\r\n value: x.CalcType,\r\n label: x.CalcDesc\r\n }));\r\n }\r\n }\r\n\r\n onSelectedColumnsChange($event) {\r\n if ($event.value) {\r\n if ($event.itemValue) {\r\n if ($event.itemValue.header) {\r\n if ($event.itemValue.header == 'Item') {\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Person') {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Payroll Item') {\r\n if (this.PIColumnHidden == true) {\r\n this.PIColumnHidden = false;\r\n } else {\r\n this.PIColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Cost Center') {\r\n if (this.CCColumnHidden == true) {\r\n this.CCColumnHidden = false;\r\n } else {\r\n this.CCColumnHidden = true;\r\n }\r\n }\r\n if ($event.itemValue.header == 'Billable Status') {\r\n if (this.BillableColumnHidden == true) {\r\n this.BillableColumnHidden = false;\r\n } else {\r\n this.BillableColumnHidden = true;\r\n }\r\n }\r\n this.header = $event.itemValue.header;\r\n }\r\n this.length = $event.value.length;\r\n } else {\r\n this.length = $event.value.length;\r\n if (this.length > 0) {\r\n this.EmpColumnHidden = false;\r\n this.SIColumnHidden = false;\r\n this.PIColumnHidden = false;\r\n this.CCColumnHidden = false;\r\n this.BillableColumnHidden = false;\r\n } else {\r\n if (this.EmpColumnHidden == true) {\r\n this.EmpColumnHidden = false;\r\n } else {\r\n this.EmpColumnHidden = true;\r\n }\r\n if (this.SIColumnHidden == true) {\r\n this.SIColumnHidden = false;\r\n } else {\r\n this.SIColumnHidden = true;\r\n }\r\n if (this.PIColumnHidden == true) {\r\n this.PIColumnHidden = false;\r\n } else {\r\n this.PIColumnHidden = true;\r\n }\r\n if (this.CCColumnHidden == true) {\r\n this.CCColumnHidden = false;\r\n } else {\r\n this.CCColumnHidden = true;\r\n }\r\n if (this.BillableColumnHidden == true) {\r\n this.BillableColumnHidden = false;\r\n } else {\r\n this.BillableColumnHidden = true;\r\n }\r\n this.length = 0;\r\n }\r\n }\r\n this.colspan = this.length + 1;\r\n }\r\n }\r\n}\r\n\r\nexport interface Item {\r\n IListID: string;\r\n Item: string;\r\n IsActive: boolean;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { ManualAdjustmentRoute } from './manual-adjustment.route';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport { entityName, ManualAdjustmentDataService } from '../data-services/manual-adjustment';\r\n\r\n\r\n\r\n@NgModule({\r\n // declarations: [],\r\n providers: [ManualAdjustmentDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [ManualAdjustmentRoute]\r\n })\r\n ]\r\n})\r\nexport class ManualAdjustmentModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n manualAdjustmentService: ManualAdjustmentDataService\r\n ) {\r\n entityDataService.registerService(entityName, manualAdjustmentService);\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\n// import { LoggingService } from '../logging.service';\r\nimport { ManualAdjustmentFeatureComponent } from './manual-adjustment-feature/manual-adjustment-feature.component';\r\n\r\n// const log = new LoggingService();\r\n\r\nexport const ManualAdjustmentRoute: Ng2StateDeclaration = {\r\n name: 'manualtxn',\r\n url: '/manualtxn',\r\n data: { requiresAuth: true },\r\n\r\n component: ManualAdjustmentFeatureComponent\r\n};\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../user-info/IUserInfo';\r\nimport * as fromUser from '../user-info/store/user.reducer';\r\n\r\n@Component({\r\n selector: 'ef-member',\r\n templateUrl: './member.component.html',\r\n styleUrls: ['./member.component.scss']\r\n})\r\nexport class MemberComponent implements OnInit, OnDestroy {\r\n private userSub: Subscription;\r\n // @Input() public member: IMember;\r\n public companyName: string;\r\n public userInfo$: Observable;\r\n private active = true;\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n }\r\n\r\n // ngOnDestroy(): void {\r\n // this.userSub.unsubscribe();\r\n // }\r\n\r\n ngOnInit() {\r\n this.userInfo$.pipe(takeWhile(() => this.active)).subscribe(info => {\r\n this.log.verbose({ type: 'MemberComponent:userInfo$', info });\r\n if (info) {\r\n this.companyName = info.CompanyName;\r\n }\r\n });\r\n // this.member = {name: 'Sample Research Group'};\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport * as fromLookups from '../../lookups';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { map } from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-merge-feature',\r\n templateUrl: './merge-feature.component.html',\r\n styleUrls: ['./merge-feature.component.scss']\r\n})\r\nexport class MergeFeatureComponent implements OnInit {\r\n public serviceItems$: Observable;\r\n public tasks$: Observable;\r\n process$: Observable;\r\n\r\n public merge$: Observable;\r\n\r\n mergeDataService: EntityCollectionService;\r\n\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store,\r\n public entityServices: EntityServices\r\n ) {\r\n this.mergeDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Merge.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n this.store.dispatch(new fromLookups.LoadServiceItems(false));\r\n\r\n this.setupObservables();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.mergeDataService.clearCache();\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.merge$ = this.mergeDataService.entities$;\r\n this.serviceItems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(x => clone(x)),\r\n map(x => x.filter(y => y.IsActive == true)),\r\n map(x =>\r\n x.sort((a, b) => a.ServiceItem.localeCompare(b.ServiceItem))\r\n ),\r\n map(x => x.map(y => ({ label: y.ServiceItem, value: y.SIListID })))\r\n );\r\n\r\n this.tasks$ = this.store.pipe(\r\n select(fromLookups.getTasksLookup),\r\n map(x => clone(x)),\r\n map(x => x.filter(y => y.IsActive == true)),\r\n map(x =>\r\n x.sort((a, b) => a.TaskLongName.localeCompare(b.TaskLongName))\r\n ),\r\n map(x =>\r\n x.map(y => ({ label: y.TaskLongName, value: y.TaskListID }))\r\n )\r\n );\r\n }\r\n\r\n onMerge($event) {\r\n this.mergeDataService.clearCache();\r\n this.mergeDataService.upsert($event);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { ITask } from '../../lookups';\r\n\r\n@Component({\r\n selector: 'ef-merge-presenter',\r\n templateUrl: './merge-presenter.component.html',\r\n styleUrls: ['./merge-presenter.component.scss']\r\n})\r\nexport class MergePresenterComponent implements OnInit {\r\n types: SelectItem[];\r\n selectedType: any;\r\n selectedItemFrom: any;\r\n selectedItemFinal: any;\r\n\r\n typeItems: SelectItem[];\r\n\r\n @Output() Merge = new ReplaySubject(1);\r\n\r\n IsSuccess: boolean;\r\n ShowStatus = false;\r\n areYouSure = false;\r\n\r\n private TasksSubject = new ReplaySubject>(1);\r\n private _tasks: Array;\r\n @Input() set tasks(value: Array) {\r\n this._tasks = value;\r\n this.TasksSubject.next(value);\r\n }\r\n get tasks(): Array {\r\n return this._tasks;\r\n }\r\n\r\n private ServiceItemsSubject = new ReplaySubject>(1);\r\n private _serviceitems: Array;\r\n @Input() set serviceItems(value: Array) {\r\n this._serviceitems = value;\r\n this.ServiceItemsSubject.next(value);\r\n }\r\n get serviceItems(): Array {\r\n return this._serviceitems;\r\n }\r\n\r\n private MergeSubject = new ReplaySubject>(1);\r\n private _merge: Array;\r\n @Input() set merge(value: Array) {\r\n this._merge = value;\r\n this.MergeSubject.next(value);\r\n\r\n if (value && value.length > 0) {\r\n if (value[0].Status.StatusCode == 1) {\r\n this.IsSuccess = true;\r\n this.ShowStatus = true;\r\n } else {\r\n this.IsSuccess = false;\r\n this.ShowStatus = true;\r\n }\r\n }\r\n }\r\n get merge(): Array {\r\n return this._merge;\r\n }\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.types = [\r\n {\r\n label: 'Task',\r\n value: 'task'\r\n },\r\n {\r\n label: 'Service Item',\r\n value: 'serviceitem'\r\n }\r\n ];\r\n }\r\n\r\n onChangeType(event) {\r\n this.selectedType = event.value;\r\n if (event.value == 'task') {\r\n this.typeItems = this.tasks;\r\n } else {\r\n this.typeItems = this.serviceItems;\r\n }\r\n\r\n this.ShowStatus = false;\r\n }\r\n onChangeFrom(event) {\r\n this.selectedItemFrom = event.value;\r\n this.ShowStatus = false;\r\n }\r\n onChangeFinal(event) {\r\n this.selectedItemFinal = event.value;\r\n this.ShowStatus = false;\r\n }\r\n mergeClicked() {\r\n this.Merge.next({\r\n Mergetype: this.selectedType,\r\n Fromlistid: this.selectedItemFrom,\r\n Finallistid: this.selectedItemFinal\r\n });\r\n\r\n this.selectedType = null;\r\n this.selectedItemFrom = null;\r\n this.selectedItemFinal = null;\r\n this.areYouSure = false;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { MergeRoute } from './merge.route';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n UIRouterModule.forChild({\r\n states: [MergeRoute]\r\n })\r\n ]\r\n})\r\nexport class MergeModule { }\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { MergeFeatureComponent } from './merge-feature/merge-feature.component';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const MergeRoute: Ng2StateDeclaration = {\r\n name: 'merge',\r\n url: '/merge',\r\n data: { requiresAuth: true },\r\n\r\n component: MergeFeatureComponent\r\n};","import { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { Process } from '../../shared';\r\nimport { OversignTimePresenterComponent } from '../oversign-time-presenter/oversign-time-presenter.component';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { IOversignTime } from '../IOversignTime';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport * as fromOversign from '../store/oversign-time.reducer';\r\nimport * as fromOversignA from '../store/oversign-time.actions';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport * as fromShared from '../../shared';\r\n@Component({\r\n selector: 'ef-oversign-time-feature',\r\n templateUrl: './oversign-time-feature.component.html',\r\n styleUrls: ['./oversign-time-feature.component.scss']\r\n})\r\nexport class OversignTimeFeatureComponent implements OnInit {\r\n public userSub: Subscription;\r\n process$: Observable;\r\n @ViewChild(OversignTimePresenterComponent, { static: true })\r\n ospc: OversignTimePresenterComponent;\r\n public oversign$: Observable>;\r\n public active = true;\r\n public employeeListID: string;\r\n\r\n constructor(private store: Store) {\r\n this.userSub = this.store\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n select(fromUser.getUser)\r\n )\r\n .subscribe(user => {\r\n if (user.userInfo) {\r\n this.employeeListID = user.userInfo.EmployeeListID;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.store.dispatch(\r\n fromOversignA.getOversignTimes({\r\n EmployeeListID: this.employeeListID\r\n })\r\n );\r\n\r\n this.oversign$ = this.store.pipe(select(fromOversign.selectAll));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.ospc.oversignUpdate\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.store.dispatch(\r\n fromOversignA.putOversignTimes({ oversignTime: value })\r\n );\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n}\r\n","import { Component, OnInit, Input, Inject, Output, EventEmitter } from '@angular/core';\r\nimport { Process } from '../../shared';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IOversignTime } from '../IOversignTime';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'ef-oversign-time-presenter',\r\n templateUrl: './oversign-time-presenter.component.html',\r\n styleUrls: ['./oversign-time-presenter.component.scss']\r\n})\r\nexport class OversignTimePresenterComponent implements OnInit {\r\n @Output() oversignUpdate = new EventEmitter>();\r\n private OversignSubject = new ReplaySubject>(1);\r\n private _oversigndata: Array;\r\n @Input() set oversignData(value: Array) {\r\n if (value && value.length >= 0) {\r\n this.log.verbose({\r\n type: 'OversignTimePresenterComponent:oversigndata:set',\r\n value\r\n });\r\n\r\n this._oversigndata = value;\r\n this.OversignSubject.next(value);\r\n }\r\n }\r\n get oversignData(): Array {\r\n return this._oversigndata;\r\n }\r\n\r\n public selectedOversignData: Array = [];\r\n\r\n constructor(@Inject(LoggingService) private log: LoggingService) {}\r\n\r\n ngOnInit() {}\r\n public oversignTimeClicked() {\r\n this.oversignUpdate.emit(this.selectedOversignData);\r\n }\r\n\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport {\r\n AccordionModule,\r\n ButtonModule,\r\n OverlayPanelModule,\r\n TableModule,\r\n ToolbarModule\r\n} from '../shared';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UserSelectorModule } from '../user-selector/user-selector.module';\r\nimport { OversignTimeFeatureComponent } from './oversign-time-feature/oversign-time-feature.component';\r\nimport { OversignTimePresenterComponent } from './oversign-time-presenter/oversign-time-presenter.component';\r\nimport { OversignTimeEffects } from './store/oversign-time.effects';\r\nimport * as fromOversign from './store/oversign-time.reducer';\r\n\r\n@NgModule({\r\n declarations: [\r\n OversignTimePresenterComponent,\r\n OversignTimeFeatureComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(fromOversign.oversignTimeFeatureKey, fromOversign.reducer),\r\n EffectsModule.forFeature([OversignTimeEffects]),\r\n EfaactMaterialModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UserSelectorModule,\r\n MatRadioModule,\r\n OverlayPanelModule,\r\n ToolbarModule,\r\n ButtonModule,\r\n AccordionModule,\r\n TableModule\r\n ]\r\n})\r\nexport class OversignTimeModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { IOversignTime } from './IOversignTime';\r\nimport { IGenericResponse } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OversignTimeService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private log: LoggingService\r\n ) { }\r\n\r\n private uri = `${environment.apiLocation}/TimeCardOversign`;\r\n public getOversignTime( EmployeeListID: string ): Observable> {\r\n return this.http.post>(this.uri, { EmployeeListID })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({ type: 'OversignTimeService:getOversignTime', data })\r\n )\r\n );\r\n }\r\n public putOversignTime(oversignData: Array): Observable> {\r\n return this.http.put>(this.uri, { TimeCardOversignList: oversignData })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'OversignTimeService:putOversignTime',\r\n data\r\n })\r\n )\r\n );\r\n}\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { IOversignTime } from '../IOversignTime';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nexport const getOversignTimes = createAction(\r\n '[OversignTime/API] Get OversignTimes',\r\n props<{ EmployeeListID: string }>());\r\n\r\nexport const putOversignTimes = createAction(\r\n '[TimeCard/API] Update OversignTime',\r\n props<{ oversignTime: Array }>()\r\n);\r\n\r\n// these are only for manipulating the store collection, not for effects, i.e. loading from a service // For reducer\r\n\r\nexport const loadOversignTimes = createAction(\r\n '[OversignTime/API] Load OversignTimes',\r\n props<{ oversignTimes: IOversignTime[] }>()\r\n);\r\n\r\nexport const addOversignTime = createAction(\r\n '[OversignTime/API] Add OversignTime',\r\n props<{ oversignTime: IOversignTime }>()\r\n);\r\n\r\nexport const upsertOversignTime = createAction(\r\n '[OversignTime/API] Upsert OversignTime',\r\n props<{ oversignTime: IOversignTime }>()\r\n);\r\n\r\nexport const addOversignTimes = createAction(\r\n '[OversignTime/API] Add OversignTimes',\r\n props<{ oversignTimes: IOversignTime[] }>()\r\n);\r\n\r\nexport const upsertOversignTimes = createAction(\r\n '[OversignTime/API] Upsert OversignTimes',\r\n props<{ oversignTimes: IOversignTime[] }>()\r\n);\r\n\r\nexport const updateOversignTime = createAction(\r\n '[OversignTime/API] Update OversignTime',\r\n props<{ oversignTime: Update }>()\r\n);\r\n\r\nexport const updateOversignTimes = createAction(\r\n '[OversignTime/API] Update OversignTimes',\r\n props<{ oversignTimes: Update[] }>()\r\n);\r\n\r\nexport const deleteOversignTime = createAction(\r\n '[OversignTime/API] Delete OversignTime',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteOversignTimes = createAction(\r\n '[OversignTime/API] Delete OversignTimes',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearOversignTimes = createAction(\r\n '[OversignTime/API] Clear OversignTimes'\r\n);\r\n\r\nexport const loadOversignTimesSuccess = createAction(\r\n '[OversignTime] Load OversignTimes Success',\r\n props<{ data: any }>()\r\n);\r\n\r\nexport const loadOversignTimesFailure = createAction(\r\n '[OversignTime] Load OversignTimes Failure',\r\n props<{ error: any }>()\r\n);\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, map, switchMap, tap, flatMap } from 'rxjs/operators';\r\nimport { OversignTimeService } from '../oversign-time.service';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromOversign from './oversign-time.actions';\r\nimport * as fromShared from '../../shared';\r\nimport { DisplayMessageMinimum, IStatusMessage, ResponseStatus } from '../../shared';\r\n\r\n@Injectable()\r\nexport class OversignTimeEffects {\r\n constructor(\r\n private actions$: Actions,\r\n @Inject(OversignTimeService) private service: OversignTimeService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n getOversignTime$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromOversign.getOversignTimes),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'OversignTimeEffects:getOversignTime$',\r\n a\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.getOversignTime(a.EmployeeListID).pipe(\r\n map(ot =>\r\n fromOversign.loadOversignTimes({ oversignTimes: ot })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n putOversignTime$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromOversign.putOversignTimes),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'OversignTimeEffects:putOversignTime$',\r\n a\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.putOversignTime(a.oversignTime).pipe(\r\n flatMap(ot => [\r\n fromOversign.updateOversignTimes({\r\n oversignTimes: [\r\n {\r\n id: a.oversignTime\r\n .map(x => x.EmpTimeID)\r\n .toString(),\r\n changes: ot.Items[0]\r\n }\r\n ]\r\n }),\r\n\r\n fromOversign.getOversignTimes({\r\n EmployeeListID: ot.Items[0].EmployeeListID\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n ot.Items\r\n .filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n )\r\n .map(x => x.EmpTimeID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...ot.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...ot.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport {\r\n Action,\r\n createFeatureSelector,\r\n createReducer,\r\n createSelector,\r\n on\r\n} from '@ngrx/store';\r\nimport { IOversignTime } from '../IOversignTime';\r\nimport * as OversignTimeActions from './oversign-time.actions';\r\n\r\nexport const oversignTimeFeatureKey = 'oversignTime';\r\n\r\nexport interface State extends EntityState {}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: IOversignTime) => model.EmpTimeID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({});\r\n\r\nconst oversignTimeReducer = createReducer(\r\n initialState,\r\n on(OversignTimeActions.addOversignTime, (state, action) =>\r\n adapter.addOne(action.oversignTime, state)\r\n ),\r\n on(OversignTimeActions.upsertOversignTime, (state, action) =>\r\n adapter.upsertOne(action.oversignTime, state)\r\n ),\r\n on(OversignTimeActions.addOversignTimes, (state, action) =>\r\n adapter.addMany(action.oversignTimes, state)\r\n ),\r\n on(OversignTimeActions.upsertOversignTimes, (state, action) =>\r\n adapter.upsertMany(action.oversignTimes, state)\r\n ),\r\n on(OversignTimeActions.updateOversignTime, (state, action) =>\r\n adapter.updateOne(action.oversignTime, state)\r\n ),\r\n on(OversignTimeActions.updateOversignTimes, (state, action) =>\r\n adapter.updateMany(action.oversignTimes, state)\r\n ),\r\n on(OversignTimeActions.deleteOversignTime, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(OversignTimeActions.deleteOversignTimes, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(OversignTimeActions.loadOversignTimes, (state, action) =>\r\n adapter.setAll(action.oversignTimes, state)\r\n ),\r\n on(OversignTimeActions.clearOversignTimes, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return oversignTimeReducer(state, action);\r\n}\r\n\r\nconst localState = createFeatureSelector(oversignTimeFeatureKey);\r\nexport const getEntities = createSelector(localState, x => x.entities);\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, of, ReplaySubject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n filter,\r\n map,\r\n startWith,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport { ScheduledDate } from '../../lookups/store/schedule-date.model';\r\nimport * as fromPayroll from '../../payroll/item/store';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport { PayrateOverrideService } from '../payrate-override.service';\r\n@Component({\r\n selector: 'ef-payrate-override-container',\r\n templateUrl: './payrate-override-container.component.html',\r\n styleUrls: ['./payrate-override-container.component.scss']\r\n})\r\nexport class PayrateOverrideContainerComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n payrateOverrideService: EntityCollectionService;\r\n process$: Observable;\r\n items$: Observable;\r\n payrollItems$: Observable;\r\n directReports$: Observable;\r\n directReportsSelectItems$: Observable;\r\n activeDirectReportsSelectItems$: Observable;\r\n payrollItemsSelectItems$: Observable;\r\n filteredPayrollItemsSelectItems$: Observable;\r\n userInfo$: Observable;\r\n StartDate$: Observable;\r\n EndDate$: Observable;\r\n scheduledDates$: Observable;\r\n startDatesSelectItems$: Observable;\r\n endDatesSelectItems$: Observable;\r\n payperiodSelectItems$: Observable;\r\n UsersSubject = new ReplaySubject(1);\r\n PayrollItemSubject = new ReplaySubject(1);\r\n PayrollItemTypesSubject = new ReplaySubject(1);\r\n ClearStatusSubject = new ReplaySubject(1);\r\n FilterSubject = new ReplaySubject<{ StartDate: Date; EndDate: Date }>(1);\r\n DeleteSubject = new ReplaySubject<\r\n fromDataServices.PayrateOverride.PayrateOverride[]\r\n >(1);\r\n ShowError = new ReplaySubject(1);\r\n SelectDirectReportSubject = new ReplaySubject(1);\r\n private ManageUsersModelDS: EntityCollectionService;\r\n active = true;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private store: Store,\r\n private log: LoggingService,\r\n private service: PayrateOverrideService\r\n ) {\r\n this.payrateOverrideService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.PayrateOverride.entityName\r\n );\r\n this.ManageUsersModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ManageUsers.entityName\r\n );\r\n }\r\n ngOnInit(): void {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.payrateOverrideService.clearCache();\r\n }\r\n ngAfterViewInit(): void {\r\n this.ManageUsersModelDS.getWithQuery({\r\n ShowInactive: 'false',\r\n UserFilterID: '7'\r\n });\r\n setTimeout(() => {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }, 0);\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(\r\n select(fromUser.getUserInfo),\r\n filter(u => !!u)\r\n );\r\n this.StartDate$ = this.userInfo$.pipe(map(u => u.PrevPayPeriodStart));\r\n this.EndDate$ = this.userInfo$.pipe(map(u => u.PrevPayPeriodEnd));\r\n\r\n this.items$ = this.payrateOverrideService.entities$.pipe(\r\n map(items => items.filter(x => x.id >= 0)),\r\n map(items => clone(items))\r\n // map(items => [this.addTemplate, ...items])\r\n );\r\n\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n // map(x => shared.uniqBy(x, y => y.PIListID)),\r\n map(x => x.filter(y => y.IsActive === true))\r\n );\r\n this.filteredPayrollItemsSelectItems$ = combineLatest([\r\n this.payrollItems$,\r\n this.SelectDirectReportSubject\r\n ]).pipe(\r\n tap(([pi, dr]) =>\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:filteredPayrollItemsSelectItems$',\r\n pi,\r\n dr\r\n })\r\n ),\r\n map(([pi, dr]) => pi.filter(x => x.EmployeeListID === dr)),\r\n map(x => fromShared.uniqBy(x, y => y.PIListID)),\r\n map(x => x.filter(y => y.IsActive === true)),\r\n map(x =>\r\n x\r\n .map(y => ({\r\n label: y.PayrollItem,\r\n value: y.PIListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.payrollItemsSelectItems$ = this.payrollItems$.pipe(\r\n map(x =>\r\n x\r\n .map(y => ({\r\n label: y.PayrollItem,\r\n value: y.PIListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.directReports$ = combineLatest([\r\n this.store.pipe(select(fromLookups.getDirectReportsLookup)),\r\n this.ManageUsersModelDS.entities$\r\n ]).pipe(\r\n filter(([drs, users]) => !!drs && !!users),\r\n map(([drs, users]) =>\r\n drs.map(dr => ({\r\n ...dr,\r\n ...users.find(u => u.EmployeeListID === dr.EmployeeListID)\r\n }))\r\n ),\r\n map(drs => drs.filter(dr => !dr.IsConsultant)),\r\n map(x => fromShared.uniqBy(x, y => y.EmployeeListID))\r\n );\r\n\r\n this.directReportsSelectItems$ = this.directReports$.pipe(\r\n map(x =>\r\n x\r\n .map(y => ({\r\n label: y.EmployeeName,\r\n value: y.EmployeeListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.activeDirectReportsSelectItems$ = this.directReports$.pipe(\r\n map(x =>\r\n x\r\n .filter(y => y.IsActive)\r\n .map(y => ({\r\n label: y.EmployeeName,\r\n value: y.EmployeeListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.scheduledDates$ = this.store.pipe(\r\n select(fromLookups.ScheduledDateSelectors.selectAll),\r\n filter(dates => !!dates && dates.length > 0)\r\n );\r\n this.startDatesSelectItems$ = this.scheduledDates$.pipe(\r\n map(dates =>\r\n dates\r\n .filter(d => d.ScheduledDateType === 'PPE')\r\n .map(d => ({\r\n label: moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n value: d.ScheduledStartDate\r\n }))\r\n )\r\n );\r\n this.endDatesSelectItems$ = this.scheduledDates$.pipe(\r\n map(dates =>\r\n dates\r\n .filter(d => d.ScheduledDateType === 'PPE')\r\n .map(d => ({\r\n label: moment(d.ScheduledEndDate).format('MM/DD/YYYY'),\r\n value: d.ScheduledEndDate\r\n }))\r\n )\r\n );\r\n this.payperiodSelectItems$ = this.scheduledDates$.pipe(\r\n map(dates =>\r\n dates\r\n .filter(d => d.ScheduledDateType === 'PPE')\r\n .map(d => ({\r\n label: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YYYY'\r\n )} - ${moment(d.ScheduledEndDate).format(\r\n 'MM/DD/YYYY'\r\n )}`,\r\n value: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YYYY'\r\n )}-${moment(d.ScheduledEndDate).format('MM/DD/YYYY')}`\r\n }))\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.userInfo$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(userInfo => {\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: false\r\n })\r\n );\r\n });\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.payrateOverrideService.entities$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(100)\r\n )\r\n .subscribe(entities => {\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:entities$',\r\n entities\r\n });\r\n this.UsersSubject.next(\r\n (\r\n fromShared.uniqBy(\r\n entities,\r\n y => y.EmployeeName\r\n ) as fromDataServices.PayrateOverride.PayrateOverride[]\r\n )\r\n .map(p => ({\r\n label: p.EmployeeName,\r\n value: p.EmployeeName\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n );\r\n this.PayrollItemSubject.next(\r\n (\r\n fromShared.uniqBy(\r\n entities,\r\n y => y.PayrollItem\r\n ) as fromDataServices.PayrateOverride.PayrateOverride[]\r\n )\r\n .map(p => ({\r\n label: p.PayrollItem,\r\n value: p.PayrollItem\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n );\r\n this.PayrollItemTypesSubject.next(\r\n (\r\n fromShared.uniqBy(\r\n entities,\r\n y => y.PayrollItemType\r\n ) as fromDataServices.PayrateOverride.PayrateOverride[]\r\n )\r\n .map(p => ({\r\n label: p.PayrollItemType,\r\n value: p.PayrollItemType\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n );\r\n });\r\n this.DeleteSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n items => {\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:onDelete',\r\n $event: items\r\n });\r\n of(items.map(x => x.id))\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(ids =>\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:onDelete:deleting',\r\n ids\r\n })\r\n ),\r\n map(ids =>\r\n ids.map(id =>\r\n this.payrateOverrideService.delete(id)\r\n )\r\n )\r\n )\r\n .subscribe(\r\n resp => {\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:onDelete:subscribe',\r\n resp\r\n });\r\n },\r\n err =>\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:onDelete:subscribe',\r\n err\r\n })\r\n );\r\n }\r\n );\r\n\r\n combineLatest([\r\n this.DeleteSubject.pipe(startWith(null)),\r\n this.FilterSubject\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([items, dateFilter]) => {\r\n this.payrateOverrideService.clearCache();\r\n this.payrateOverrideService.getWithQuery({\r\n StartDate: moment(dateFilter.StartDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n EndDate: moment(dateFilter.EndDate).format('MM/DD/YYYY')\r\n });\r\n });\r\n this.ClearStatusSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.payrateOverrideService.entities$)\r\n ).subscribe(([, items]) => {\r\n this.payrateOverrideService.updateManyInCache(\r\n items.map(item => ({\r\n ...item,\r\n Status: {\r\n StatusCode: ResponseStatus.None,\r\n Message: null\r\n }\r\n }))\r\n );\r\n });\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:onFilter',\r\n $event\r\n });\r\n this.FilterSubject.next($event);\r\n }\r\n onSave($event) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:onSave',\r\n $event\r\n });\r\n const item = {\r\n Ovrid: $event.Ovrid,\r\n id: $event.Ovrid,\r\n EmployeeListID: $event.EmployeeListID,\r\n UserDirectReports: $event.UserDirectReports,\r\n PIListID: $event.PIListID,\r\n StartDate: $event.StartDate,\r\n EndDate: $event.EndDate,\r\n FromStartDate: $event.FromStartDate,\r\n FromEndDate: $event.FromEndDate,\r\n PayRate: $event.PayRate || 0,\r\n SyncPayrollItems: $event.Ovrid > 0 ? false : true,\r\n original: { id: $event.Ovrid },\r\n Row_Version: $event.Row_Version,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n }\r\n };\r\n this.payrateOverrideService.upsert(item);\r\n }\r\n onDelete($event: fromDataServices.PayrateOverride.PayrateOverride[]) {\r\n this.DeleteSubject.next($event);\r\n }\r\n onShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n onClearStatus() {\r\n this.ClearStatusSubject.next();\r\n }\r\n onRecalcRates($event: { StartDate: string; EndDate: string }) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideContainerComponent:onRecalcRates',\r\n $event\r\n });\r\n this.service\r\n .recalcRates($event.StartDate, $event.EndDate)\r\n .toPromise()\r\n .then(x => this.onFilter($event));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PayrateOverrideContainerComponent } from './payrate-override-container/payrate-override-container.component';\r\nimport { PayrateOverrideComponent } from './payrate-override/payrate-override.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { PayrateOverrideRoute } from './payrate-override.route';\r\nimport { PayrateOverrideDataService } from '../data-services/payrate-override/payrate-override.data-service';\r\n\r\n@NgModule({\r\n declarations: [PayrateOverrideContainerComponent, PayrateOverrideComponent],\r\n providers: [PayrateOverrideDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({ states: [PayrateOverrideRoute] })\r\n ]\r\n})\r\nexport class PayrateOverrideModule {\r\n constructor() {}\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { PayrateOverrideContainerComponent } from './payrate-override-container/payrate-override-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const PayrateOverrideRoute: Ng2StateDeclaration = {\r\n // name: 'PayrollItem.**'\r\n name: 'payrateoverride',\r\n url: '/payrateoverride',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.PayrollItemModule)\r\n data: { requiresAuth: true },\r\n\r\n component: PayrateOverrideContainerComponent\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { LoadingService } from '../shared/loading';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'jquery';\r\nimport moment from 'moment';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Reminder } from '../reminder/store';\r\nimport { LoggingService } from '../shared/services/logging';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PayrateOverrideService {\r\n private uri = `${environment.apiLocation}/EmployeePayOvr`;\r\n constructor(private http: HttpClient, protected log: LoggingService) {}\r\n public recalcRates(\r\n startDate: string,\r\n endDate: string\r\n ): Observable {\r\n this.log.verbose({\r\n type: 'PayrateOverrideService:recalcRates',\r\n startDate,\r\n endDate\r\n });\r\n return this.http.post(`${this.uri}/RecalcHourlyRates`, {\r\n StartDate: startDate,\r\n EndDate: endDate\r\n });\r\n // .pipe(result => {\r\n // this.log.verbose({\r\n // type: 'PayrateOverrideService:recalcRates',\r\n // result\r\n // });\r\n // });\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, fromEvent, of, ReplaySubject } from 'rxjs';\r\nimport { delay, filter, takeWhile, tap, throttleTime } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n\r\n@Component({\r\n selector: 'ef-payrate-override',\r\n templateUrl: './payrate-override.component.html',\r\n styleUrls: ['./payrate-override.component.scss']\r\n})\r\nexport class PayrateOverrideComponent\r\n extends fromShared.Errors\r\n .DisplayErrors\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n @Input() directReportsSelectItems: SelectItem[];\r\n @Input() activeDirectReportsSelectItems: SelectItem[];\r\n @Input() payrollItemsSelectItems: SelectItem[];\r\n @Input() filteredPayrollItemsSelectItems: SelectItem[];\r\n @Input() payrollItemsFilterSelectItems: SelectItem[];\r\n @Input() usersFilterSelectItems: SelectItem[];\r\n @Input() startDatesSelectItems: SelectItem[];\r\n @Input() endDatesSelectItems: SelectItem[];\r\n @Input() payperiodSelectItems: SelectItem[];\r\n @Input() payrollItemTypesFilterSelectItems: SelectItem[];\r\n private StartDateSubject = new ReplaySubject(1);\r\n private _startDate: Date;\r\n @Input() public set StartDate(value: Date) {\r\n this._startDate = value;\r\n this.StartDateSubject.next(value);\r\n }\r\n public get StartDate(): Date {\r\n return this._startDate;\r\n }\r\n private EndDateSubject = new ReplaySubject(1);\r\n private _endDate: Date;\r\n @Input() public set EndDate(value: Date) {\r\n this._endDate = value;\r\n this.EndDateSubject.next(value);\r\n }\r\n public get EndDate(): Date {\r\n return this._endDate;\r\n }\r\n @Output() Filter = new ReplaySubject<{\r\n StartDate: string;\r\n EndDate: string;\r\n }>(1);\r\n @Output() Save = new ReplaySubject<\r\n Partial\r\n >(1);\r\n @Output() RecalcRates = new ReplaySubject<{\r\n StartDate: string;\r\n EndDate: string;\r\n }>(1);\r\n @Output() Delete = new ReplaySubject<\r\n fromDataServices.PayrateOverride.PayrateOverride[]\r\n >(1);\r\n @Output() Select =\r\n new ReplaySubject(1);\r\n @Output() SelectDirectReport = new ReplaySubject(1);\r\n @Output() ClearStatus = new ReplaySubject(1);\r\n @ViewChild('deleteItems', { read: ElementRef, static: true })\r\n deleteButton: ElementRef;\r\n @ViewChild('copyItems', { read: ElementRef, static: true })\r\n copyButton: ElementRef;\r\n @ViewChild('updateItems', { read: ElementRef, static: true })\r\n updateButton: ElementRef;\r\n @ViewChild('syncPayperiod', { read: ElementRef, static: true })\r\n syncPayperiodButton: ElementRef;\r\n @ViewChild('clearFilters', { read: ElementRef, static: true })\r\n clearButton: ElementRef;\r\n public editing?: fromDataServices.PayrateOverride.PayrateOverride =\r\n undefined;\r\n selected: fromDataServices.PayrateOverride.PayrateOverride[] = [];\r\n cloned: { [i: number]: fromDataServices.PayrateOverride.PayrateOverride } =\r\n {};\r\n filterFormGroup: FormGroup;\r\n syncFormGroup: FormGroup;\r\n updateFormGroup: FormGroup;\r\n moment: any;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n formAddErrors: {\r\n severity: string;\r\n detail: string;\r\n }[];\r\n active = true;\r\n constructor(\r\n private log: LoggingService,\r\n public confirmservice: UnsavedChangesService\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.filterFormGroup = new FormGroup({\r\n StartDate: new FormControl(null, Validators.required),\r\n EndDate: new FormControl(null, Validators.required)\r\n });\r\n this.syncFormGroup = new FormGroup({\r\n EmployeeListID: new FormControl(null, Validators.required),\r\n FromDates: new FormControl(null, Validators.required),\r\n StartDate: new FormControl(null, Validators.required),\r\n EndDate: new FormControl(null, Validators.required)\r\n // PIListID: new FormControl(null, Validators.required)\r\n });\r\n this.updateFormGroup = new FormGroup({\r\n PayRate: new FormControl(null, Validators.required)\r\n });\r\n }\r\n ngOnInit(): void {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n this.setupSubscriptions();\r\n setTimeout(() => {\r\n this.handleOnOpen([0]);\r\n }, 0);\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.StartDateSubject, this.EndDateSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:StartDateSubject,EndDateSubject',\r\n x\r\n })\r\n ),\r\n filter(x => !!x[0] && !!x[1])\r\n )\r\n .subscribe(([startDate, endDate]) => {\r\n this.filterFormGroup.controls['StartDate'].setValue(startDate);\r\n this.filterFormGroup.controls['EndDate'].setValue(endDate);\r\n this.Filter.next({\r\n StartDate: moment(startDate).format('MM/DD/YYYY'),\r\n EndDate: moment(endDate).format('MM/DD/YYYY')\r\n });\r\n });\r\n fromEvent(this.syncPayperiodButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(500)\r\n )\r\n .subscribe(() => {\r\n this.clearItemsStatus();\r\n const values = {\r\n ...this.syncFormGroup.value\r\n // ...this.filterFormGroup.value\r\n };\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:syncPayperiodButton',\r\n values\r\n });\r\n this.confirmservice\r\n .confirmPromise({\r\n headerText: 'Are you sure?',\r\n dialogText: `Pay history for ${moment(\r\n values.StartDate\r\n ).format('L')} through ${moment(values.EndDate).format(\r\n 'L'\r\n )} will be updated.
Periods previously processed for this timeframe will be required to be reprocessed.
If necessary, adjust the pay period date range to be updated by changing the filter dates.`\r\n })\r\n .then(() => {\r\n const req = {\r\n id: -1,\r\n Ovrid: -1,\r\n UserDirectReports: [\r\n ...values.EmployeeListID.map(x => ({\r\n EmployeeListID: x,\r\n EmployeeName: '',\r\n IsActive: true\r\n }))\r\n ],\r\n PIListID: values.PIListID,\r\n StartDate: values.StartDate,\r\n EndDate: values.EndDate,\r\n FromStartDate:\r\n values.FromDates &&\r\n moment(values.FromDates.split('-')[0]).toDate(),\r\n FromEndDate:\r\n values.FromDates &&\r\n moment(values.FromDates.split('-')[1]).toDate()\r\n };\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:syncPayperiodButton:Save',\r\n req\r\n });\r\n this.Save.next(req);\r\n this.selected = [];\r\n })\r\n .catch(e => {\r\n this.log.error(e);\r\n });\r\n });\r\n fromEvent(this.updateButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(() => this.active),\r\n throttleTime(500)\r\n )\r\n .subscribe(() => {\r\n const values = this.updateFormGroup.value;\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:updateButton',\r\n values\r\n });\r\n this.items = this.items.map(x => ({\r\n ...x,\r\n Status:\r\n this.selected.findIndex(y => y.id === x.id) >= 0\r\n ? {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n }\r\n : x.Status\r\n }));\r\n of(...this.selected)\r\n .pipe(delay(2000))\r\n .subscribe(item =>\r\n this.Save.next({\r\n ...item,\r\n original: item,\r\n PayRate:\r\n values && values.PayRate\r\n ? values.PayRate\r\n : item.PayRate\r\n })\r\n );\r\n this.selected = [];\r\n });\r\n\r\n fromEvent(this.clearButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.syncFormGroup.reset();\r\n });\r\n }\r\n onRowEditInit(item: fromDataServices.PayrateOverride.PayrateOverride) {\r\n this.clearItemsStatus();\r\n this.selected = [];\r\n this.cloned[item.id] = { ...item };\r\n this.editing = item;\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:onRowEditInit',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing,\r\n items: this.items\r\n });\r\n this.Select.next(item);\r\n }\r\n onRowEditSave(item: fromDataServices.PayrateOverride.PayrateOverride) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:onRowEditSave',\r\n item,\r\n cloned: this.cloned,\r\n selected: this.selected,\r\n items: this.items\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n\r\n this.Save.next(item);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.selected = [];\r\n }\r\n onRowEditCancel(item: fromDataServices.PayrateOverride.PayrateOverride) {\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n this.items = [...this.items];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowSelect($event) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:onRowSelect',\r\n $event\r\n });\r\n this.Select.next($event.data);\r\n }\r\n onRowEditDelete(\r\n item: fromDataServices.PayrateOverride.PayrateOverride,\r\n index: number\r\n ) {\r\n this.clearItemsStatus();\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to delete this override?`\r\n })\r\n .then(() => {\r\n // if (item.id === 'add') {\r\n // this.items.splice(index, 1, { ...this.addTemplate } as any);\r\n // } else {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n // }\r\n\r\n this.Delete.next([item]);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n return;\r\n })\r\n .catch(e => {});\r\n }\r\n handleOnOpen($event) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:handleOnOpen',\r\n $event\r\n });\r\n const baseHeight = '58vh';\r\n let accHeight = 0;\r\n if ($event === 0 || ($event.includes && $event.includes(0))) {\r\n accHeight += 7.15;\r\n }\r\n if ($event === 1 || ($event.includes && $event.includes(1))) {\r\n accHeight += 12;\r\n }\r\n this.dataTable.scrollHeight = `calc(${baseHeight} - ${accHeight}em)`;\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:handleOnOpen',\r\n datatableHeight: this.dataTable.scrollHeight\r\n });\r\n }\r\n onDirectReportChange($event) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:onDirectReportChange',\r\n $event\r\n });\r\n this.SelectDirectReport.next($event.value);\r\n }\r\n public hasErrorStatus = item =>\r\n item && item.Status && item.Status.StatusCode >= DisplayMessageMinimum;\r\n\r\n public getErrorsAsArray = (errors: any) => {\r\n if (!errors) {\r\n return [];\r\n }\r\n const keys = Object.keys(errors);\r\n this.log.verbose({\r\n type: 'getErrorsAsArray',\r\n keys,\r\n errors,\r\n values: keys.map(k => ({\r\n severity: 'error',\r\n detail: errors[k].toString()\r\n }))\r\n });\r\n return keys.map(k => ({\r\n severity: 'error',\r\n detail: errors[k].toString()\r\n }));\r\n };\r\n clearItemsStatus() {\r\n this.ClearStatus.next();\r\n }\r\n onFilterDates(value: string | string[]) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:onFilterDates',\r\n value\r\n });\r\n //this could have multiple selections, if so need to get the start date from the first, and end date from the last\r\n if (Array.isArray(value)) {\r\n const date1 = value[0];\r\n const date2 = value[value.length - 1]; //does this get the last, or beyond the array?\r\n this.Filter.next({\r\n StartDate: date1.split('-')[0],\r\n EndDate: date2.split('-')[1]\r\n });\r\n } else {\r\n const dateParts = value.split('-');\r\n this.Filter.next({\r\n StartDate: dateParts[0],\r\n EndDate: dateParts[1]\r\n });\r\n }\r\n }\r\n onRecalcRates(value: string[]) {\r\n this.log.verbose({\r\n type: 'PayrateOverrideComponent:onRecalcRates',\r\n value\r\n });\r\n const dateParts = value[0].split('-');\r\n this.RecalcRates.next({\r\n StartDate: dateParts[0],\r\n EndDate: dateParts[1]\r\n });\r\n }\r\n canRecalcRates = value => !(Array.isArray(value) && value.length > 1);\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeSetItem,\r\n changeSetItemFactory as cif,\r\n EntityCacheDispatcher,\r\n EntityCollectionService,\r\n EntityServices\r\n} from '@ngrx/data';\r\n\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n startWith,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\n\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromShared from '../../../shared';\r\nimport { ResponseStatus, SelectItem, uniqBy } from '../../../shared';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { PayrollItem } from '../../item';\r\nimport * as fromStore from '../../item/store';\r\nimport { EmployeePayrollItemService } from '../employee-payroll-item.services';\r\n\r\n@Component({\r\n selector: 'ef-employee-payroll-item-container',\r\n templateUrl: './employee-payroll-item-container.component.html',\r\n styleUrls: ['./employee-payroll-item-container.component.scss']\r\n})\r\nexport class EmployeePayrollItemContainerComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n EmployeePayrollItemModelDS: EntityCollectionService;\r\n EmployeeDS: EntityCollectionService;\r\n SaveBulkSubject = new ReplaySubject<\r\n fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n >(1);\r\n EmployeePayrollItemSubject = new ReplaySubject<\r\n fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n >(1);\r\n DeleteItemSubject = new ReplaySubject<\r\n fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n >(1);\r\n FillGridSubject = new ReplaySubject<{\r\n employees: SelectItem[];\r\n payrollItems: SelectItem[];\r\n }>(1);\r\n payrollItems$: Observable;\r\n payrollItemsSelectItems$: Observable;\r\n payrollItemTypeSelectItems$: Observable;\r\n employeeSelectItems$: Observable;\r\n process$: Observable;\r\n active = true;\r\n showSave = false;\r\n public SaveItemSubject =\r\n new ReplaySubject(\r\n 1\r\n );\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store,\r\n private confirmService: UnsavedChangesService,\r\n public dispatcher: EntityCacheDispatcher,\r\n public entityServices: EntityServices,\r\n private service: EmployeePayrollItemService\r\n ) {\r\n this.log.verbose({ type: 'EmployeePayrollItemContainerComponent::' });\r\n this.EmployeePayrollItemModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.EmployeePayrollItem.entityName\r\n );\r\n this.EmployeeDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ManageUsers.entityName\r\n );\r\n this.store.dispatch(fromStore.getPayrollItems());\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnInit(): void {\r\n this.EmployeeDS.clearCache();\r\n this.EmployeeDS.getWithQuery({\r\n ShowInactive: 'true',\r\n UserFilterID: '7'\r\n });\r\n\r\n this.EmployeePayrollItemModelDS.clearCache();\r\n this.EmployeePayrollItemModelDS.getAll();\r\n }\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }, 0);\r\n }\r\n replaceElement(index, items, newItem) {\r\n if (newItem != null) {\r\n newItem = {\r\n ...newItem,\r\n id: `${newItem.EmployeeListID}-${newItem.PIListID}`,\r\n Status: {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Saved'\r\n }\r\n };\r\n items.splice(index, 1, newItem);\r\n } else {\r\n items.splice(index, 1);\r\n }\r\n\r\n \r\n return items;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.payrollItems$ = this.store\r\n .pipe(select(fromStore.selectAll))\r\n .pipe(\r\n map(items =>\r\n clone(items).sort((a: PayrollItem, b: PayrollItem) =>\r\n a.PayrollItem.toLocaleLowerCase().localeCompare(\r\n b.PayrollItem.toLocaleLowerCase()\r\n )\r\n )\r\n )\r\n );\r\n\r\n this.payrollItemTypeSelectItems$ = this.payrollItems$.pipe(\r\n map(items =>\r\n uniqBy(\r\n items\r\n .map(item => ({\r\n label: item.PayrollItemType,\r\n value: item.PayrollItemType\r\n }))\r\n .concat([\r\n { label: 'Salary', value: 'Salary' },\r\n { label: 'Hourly', value: 'Hourly' }\r\n ]),\r\n x => x.value\r\n )\r\n )\r\n );\r\n this.payrollItemsSelectItems$ = this.payrollItems$.pipe(\r\n map(items =>\r\n clone(items).sort((a: PayrollItem, b: PayrollItem) =>\r\n a.PayrollItem.toLocaleLowerCase().localeCompare(\r\n b.PayrollItem.toLocaleLowerCase()\r\n )\r\n )\r\n ),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n }))\r\n )\r\n );\r\n // this.EmployeePayrollItemSubject.next(this.initialData);\r\n this.employeeSelectItems$ = this.EmployeeDS.entities$.pipe(\r\n map(items =>\r\n items\r\n .filter(item => item.IsActive)\r\n .filter(item => !item.IsConsultant)\r\n .map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n combineLatest([\r\n this.EmployeePayrollItemModelDS.entities$.pipe(\r\n take(2), // first one is empty\r\n // takeWhile(() => this.active),\r\n map(items => items.filter(item => item.IsActive)),\r\n map(items => [...clone(items)])\r\n ),\r\n this.EmployeeDS.entities$,\r\n this.payrollItems$\r\n ]).subscribe(([items, employees, payrollItems]) => {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:EmployeePayrollItemModelDS.entities$',\r\n items,\r\n employees,\r\n payrollItems\r\n });\r\n this.EmployeePayrollItemSubject.next(\r\n items.map(item => ({\r\n ...item,\r\n Employeename:\r\n employees.find(\r\n e => e.EmployeeListID === item.EmployeeListID\r\n )?.EmployeeName || item.EmployeeListID,\r\n Payrollitem:\r\n payrollItems.find(p => p.PIListID === item.PIListID)\r\n ?.PayrollItem || item.PIListID\r\n }))\r\n );\r\n });\r\n this.DeleteItemSubject.pipe(\r\n withLatestFrom(this.EmployeePayrollItemSubject),\r\n takeWhile(() => this.active)\r\n ).subscribe(([deleted, items]) => {\r\n // if (items.some(item => !((item.id as number) <= 0))) {\r\n // this.onSave(\r\n // items\r\n // .filter(item => !((item.id as number) <= 0))\r\n // .map(item => ({ ...item, IsActive: false }))\r\n // );\r\n // }\r\n // TODO: have to grab the items from the existing list (EmployeePayrollItemSubject) and remove the ones that match\r\n \r\n\r\n this.confirmService\r\n .confirmPromise({\r\n okText: 'Yes',\r\n cancelText: 'No',\r\n dialogText: `Are you sure you want to delete:
\r\n ${deleted[0].Payrollitem} with a rate of ${deleted[0].PayRate} for ${deleted[0].Employeename}?`\r\n }).then(() => {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:deleting',\r\n deleted\r\n });\r\n // call the save api for any that are not being added, mark them inactive\r\n this.onSave(\r\n deleted\r\n .filter(item => !item.id.toString().startsWith('add'))\r\n .map(item => ({ ...item, IsActive: false }))\r\n );\r\n // if (deleted.some(item => item.id.toString().startsWith('add'))) {\r\n // let newItems = items.filter(item => !deleted.some(x => x.id === item.id));\r\n // this.EmployeePayrollItemSubject.next(\r\n // newItems\r\n // );\r\n // }\r\n let newItems = items.filter(item => !deleted.some(x => x.id === item.id));\r\n this.EmployeePayrollItemSubject.next(\r\n newItems\r\n );\r\n }).catch(() => {});\r\n // var index = items.findIndex(x => x.EmployeeListID == deleted[0].EmployeeListID && x.PIListID == deleted[0].PIListID);\r\n // if (index != -1) {\r\n // this.replaceElement(index, items, null);\r\n // this.EmployeePayrollItemSubject.next(items);\r\n // }\r\n \r\n // don't delete, just mark inactive (above)\r\n // deleted\r\n // .filter(item => !item.id.toString().startsWith('add'))\r\n // .forEach(item => {\r\n // this.log.verbose({\r\n // type: 'EmployeePayrollItemContainerComponent:deleting',\r\n // item\r\n // });\r\n // this.EmployeeDS.delete(item);\r\n // // });\r\n // const toRemove = deleted.filter(item =>\r\n // item.id.toString().startsWith('add')\r\n // );\r\n //this should be handled by the SaveBulkSubject filtering on isactive\r\n // this.EmployeePayrollItemSubject.next(\r\n // items.filter(item => !deleted.some(x => x.id === item.id))\r\n // );\r\n });\r\n this.SaveBulkSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.EmployeePayrollItemSubject)\r\n ).subscribe(([saved, currentItems]) => {\r\n this.service\r\n .save(saved)\r\n .pipe(take(1))\r\n .subscribe(resp => {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:saveBulk:response',\r\n resp,\r\n saved,\r\n currentItems\r\n });\r\n\r\n if (this.showSave == true) {\r\n this.EmployeePayrollItemModelDS.updateManyInCache(resp);\r\n let newItems = currentItems.filter(\r\n x => !saved.includes(x)\r\n );\r\n newItems = newItems.concat(\r\n resp\r\n .filter(x => x.IsActive)\r\n .map(item => ({\r\n ...item,\r\n id: `${item.EmployeeListID}-${item.PIListID}`,\r\n Status: {\r\n StatusCode: ResponseStatus.Success,\r\n Message: 'Saved'\r\n }\r\n }))\r\n );\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:saveBulk:response',\r\n newItems\r\n });\r\n this.EmployeePayrollItemSubject.next(newItems);\r\n } else {\r\n this.EmployeePayrollItemModelDS.upsertManyInCache(resp);\r\n let newItems = currentItems.filter(\r\n x => !saved.includes(x)\r\n );\r\n resp.forEach(item => {\r\n let index = newItems.findIndex(\r\n x =>\r\n x.EmployeeListID == item.EmployeeListID &&\r\n x.PIListID == item.PIListID\r\n );\r\n if (index != -1) {\r\n newItems = this.replaceElement(\r\n index,\r\n newItems,\r\n item\r\n );\r\n this.EmployeePayrollItemSubject.next(newItems);\r\n }\r\n });\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:saveBulk:response',\r\n newItems\r\n });\r\n }\r\n });\r\n });\r\n this.SaveItemSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.EmployeePayrollItemSubject),\r\n withLatestFrom(this.payrollItems$),\r\n filter(\r\n ([[item, items], pis]) =>\r\n (pis\r\n .find(p => p.PIListID === item.PIListID)\r\n ?.PayrollItemType.toLocaleLowerCase()\r\n .startsWith('salary') ||\r\n false) &&\r\n !item.id.toString().startsWith('add')\r\n )\r\n ).subscribe(([[item, items], pis]) => {\r\n items = items.map(x => ({\r\n ...x,\r\n PayRate:\r\n x.EmployeeListID === item.EmployeeListID &&\r\n pis\r\n .find(p => p.PIListID === x.PIListID)\r\n ?.PayrollItemType.toLocaleLowerCase()\r\n .startsWith('salary')\r\n ? item.PayRate\r\n : x.PayRate\r\n }));\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:SaveItemSubject:salary',\r\n item,\r\n items,\r\n pis\r\n });\r\n this.EmployeePayrollItemSubject.next(items);\r\n this.saveBulk(\r\n items\r\n .filter(x => x.EmployeeListID === item.EmployeeListID)\r\n .filter(\r\n x =>\r\n pis\r\n .find(p => p.PIListID === x.PIListID)\r\n ?.PayrollItemType.toLocaleLowerCase()\r\n .startsWith('salary') || false\r\n )\r\n );\r\n });\r\n this.SaveItemSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.EmployeePayrollItemSubject),\r\n withLatestFrom(this.payrollItems$),\r\n filter(\r\n ([[item, items], pis]) =>\r\n pis\r\n .find(p => p.PIListID === item.PIListID)\r\n ?.PayrollItemType.toLocaleLowerCase()\r\n .startsWith('hourly') || false\r\n )\r\n ).subscribe(([[item, items], pis]) => {\r\n if (this.showSave == true) {\r\n this.EmployeePayrollItemSubject.next(\r\n items.map(x => ({\r\n ...x,\r\n PayRate:\r\n x.PayRate === 0\r\n ? x.EmployeeListID === item.EmployeeListID &&\r\n pis\r\n .find(p => p.PIListID === x.PIListID)\r\n ?.PayrollItemType.toLocaleLowerCase()\r\n .startsWith('hourly')\r\n ? item.PayRate\r\n : x.PayRate\r\n : x.PayRate\r\n }))\r\n );\r\n this.EmployeePayrollItemSubject.next(items);\r\n } else {\r\n this.confirmService\r\n .confirmPromise({\r\n okText: 'Yes',\r\n cancelText: 'No',\r\n dialogText: `Would you like to update all hourly payroll item types for ${item.Employeename}?`\r\n })\r\n .then(() => {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:SaveItemSubject:hourly:confirmPromise',\r\n item,\r\n items,\r\n pis\r\n });\r\n\r\n //this is what's displayed in the presenter\r\n this.EmployeePayrollItemSubject.next(\r\n items.map(x => ({\r\n ...x,\r\n PayRate:\r\n x.PayRate === 0\r\n ? x.EmployeeListID ===\r\n item.EmployeeListID &&\r\n pis\r\n .find(\r\n p => p.PIListID === x.PIListID\r\n )\r\n ?.PayrollItemType.toLocaleLowerCase()\r\n .startsWith('hourly')\r\n ? item.PayRate\r\n : x.PayRate\r\n : x.PayRate\r\n }))\r\n );\r\n //if the orange save button is visible do not save here\r\n if (this.showSave == true) {\r\n //do not save here\r\n } else {\r\n const rows = items\r\n .filter(\r\n x =>\r\n x.EmployeeListID === item.EmployeeListID\r\n )\r\n .map(x => ({\r\n ...x,\r\n PayRate: pis\r\n .find(p => p.PIListID === x.PIListID)\r\n ?.PayrollItemType.toLocaleLowerCase()\r\n .startsWith('hourly')\r\n ? item.PayRate\r\n : x.PayRate\r\n }));\r\n this.saveBulk(rows);\r\n }\r\n // this.saveBulk([item]);\r\n //these need to be saved\r\n // this.saveBulk(\r\n // items\r\n // .filter(\r\n // x =>\r\n // x.PayRate === 0 &&\r\n // x.EmployeeListID === item.EmployeeListID\r\n // )\r\n // .map(x => ({\r\n // ...x,\r\n // PayRate: pis\r\n // .find(p => p.PIListID === x.PIListID)\r\n // ?.PayrollItemType.toLocaleLowerCase()\r\n // .startsWith('hourly')\r\n // ? item.PayRate\r\n // : x.PayRate\r\n // }))\r\n // );\r\n })\r\n .catch(() => {\r\n //if the orange save button is visible do not save here\r\n if (this.showSave == true) {\r\n //do not save here\r\n } else {\r\n this.saveBulk([item]);\r\n }\r\n //this.saveBulk([item]);\r\n this.EmployeePayrollItemSubject.next(items);\r\n });\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:SaveItemSubject:hourly',\r\n item,\r\n items,\r\n pis\r\n });\r\n }\r\n });\r\n this.FillGridSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.EmployeePayrollItemSubject.pipe(startWith([]))),\r\n withLatestFrom(this.payrollItems$)\r\n ).subscribe(([[item, currentItems], pis]) => {\r\n const items: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[] =\r\n currentItems.slice();\r\n let id = 1;\r\n\r\n const salaryPIs = pis\r\n .filter(p =>\r\n p.PayrollItemType?.toLocaleLowerCase()?.startsWith('salary')\r\n )\r\n .map(p => p.PIListID);\r\n\r\n item.employees.forEach(employee => {\r\n const salaryRate = currentItems.find(\r\n i =>\r\n salaryPIs.some(p => p === i.PIListID) &&\r\n i.EmployeeListID === employee.value\r\n )?.PayRate;\r\n item.payrollItems.forEach(payrollItem => {\r\n if (\r\n !items.some(\r\n x =>\r\n x.EmployeeListID === employee.value &&\r\n x.PIListID === payrollItem.value\r\n )\r\n ) {\r\n items.push({\r\n id: `add-${id++}`,\r\n EmployeeListID: employee.value,\r\n Employeename: employee.label as string,\r\n PIListID: payrollItem.value,\r\n Payrollitem: payrollItem.label as string,\r\n IsActive: true,\r\n PayRate: salaryPIs.some(\r\n p => p === payrollItem.value\r\n )\r\n ? salaryRate ?? 0\r\n : 0,\r\n Status: {\r\n Message: 'Adding...',\r\n StatusCode: ResponseStatus.Adding\r\n }\r\n });\r\n }\r\n });\r\n });\r\n this.EmployeePayrollItemSubject.next(items);\r\n });\r\n }\r\n public onFilterPayrollItemType(values: string[]): void {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent: onFilterPayrollItemType',\r\n values\r\n });\r\n this.payrollItemsSelectItems$ = this.payrollItems$.pipe(\r\n map(items =>\r\n items.filter(item => values.includes(item.PayrollItemType))\r\n ),\r\n map(items =>\r\n clone(items).sort((a: PayrollItem, b: PayrollItem) =>\r\n a.PayrollItem.toLocaleLowerCase().localeCompare(\r\n b.PayrollItem.toLocaleLowerCase()\r\n )\r\n )\r\n ),\r\n map(items =>\r\n items\r\n .filter(item => values.includes(item.PayrollItemType))\r\n .map(item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n }))\r\n )\r\n );\r\n }\r\n public onEditItem(\r\n item: Partial\r\n ): void {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent: onEditItem',\r\n item\r\n });\r\n }\r\n public onSave(\r\n items: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n ): void {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent: onSave',\r\n items\r\n });\r\n if (items.some(item => (item?.PayRate || 0) <= 0)) {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent: no payrate',\r\n nopayitems: items.filter(item => (item?.PayRate || 0) <= 0),\r\n items: items\r\n });\r\n this.confirmService\r\n .confirmPromise({\r\n dialogText:\r\n 'One or more items have a pay rate of 0. These items will not be saved, Continue?'\r\n })\r\n .then(() => {\r\n this.saveBulk(items.filter(x => x.PayRate > 0));\r\n })\r\n .catch(() => {});\r\n } else {\r\n this.saveBulk(items);\r\n }\r\n }\r\n onDeleteItem(\r\n items: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n ) {\r\n //TODO: move to observable and combine with EmployeePayrollItemSubject\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent:onDeleteItem',\r\n items\r\n });\r\n this.DeleteItemSubject.next(items);\r\n }\r\n public saveBulk(\r\n items: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n ) {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemContainerComponent: saveBulk',\r\n items\r\n });\r\n if (items && items.length > 0) {\r\n this.SaveBulkSubject.next(items);\r\n }\r\n }\r\n onShowSave($event) {\r\n this.showSave = $event;\r\n }\r\n}\r\n","export * from './employee-payroll-item-container.component';\r\n","import { AfterViewInit, Component, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { SelectItem } from '../../../shared';\r\n\r\n@Component({\r\n selector: 'ef-employee-payroll-item-filter',\r\n templateUrl: './employee-payroll-item-filter.component.html',\r\n styleUrls: ['./employee-payroll-item-filter.component.scss']\r\n})\r\nexport class EmployeePayrollItemFilterComponent implements AfterViewInit {\r\n @Input() payrollItemTypes: SelectItem[];\r\n @Input() payrollItems: SelectItem[];\r\n @Input() employees: SelectItem[];\r\n @Output() FillGrid = new ReplaySubject<{\r\n employees: SelectItem[];\r\n payrollItems: SelectItem[];\r\n }>(1);\r\n @Output() FilterPayrollItemType = new ReplaySubject(1);\r\n public dropdownItemHeight = environment.dropdownItemHeight;\r\n public filterFormGroup: FormGroup;\r\n constructor() {\r\n this.filterFormGroup = new FormGroup({\r\n payrollItemType: new FormControl(null),\r\n payrollItem: new FormControl(null),\r\n employee: new FormControl(null)\r\n });\r\n }\r\n ngAfterViewInit(): void {\r\n const controls = this.filterFormGroup.controls;\r\n controls['employee']?.valueChanges.subscribe((value: string) => {\r\n controls['payrollItem']?.setValue(null);\r\n controls['payrollItemType']?.setValue(null);\r\n });\r\n }\r\n\r\n public onFillGrid(): void {\r\n const employees = this.filterFormGroup.get('employee')\r\n ?.value as string[];\r\n const payrollItems = this.filterFormGroup.get('payrollItem')\r\n ?.value as string[];\r\n const item = {\r\n employees: employees.map(\r\n e => this.employees.find(x => x.value === e) as SelectItem\r\n ),\r\n payrollItems: payrollItems.map(\r\n p => this.payrollItems.find(x => x.value === p) as SelectItem\r\n )\r\n };\r\n this.FillGrid.next(item);\r\n }\r\n public Reset(): void {\r\n this.filterFormGroup.reset();\r\n }\r\n}\r\n","export * from './employee-payroll-item-filter.component';\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromShared from '../../../shared';\r\nimport { ResponseStatus, SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-employee-payroll-item-presenter',\r\n templateUrl: './employee-payroll-item-presenter.component.html',\r\n styleUrls: ['./employee-payroll-item-presenter.component.scss']\r\n})\r\nexport class EmployeePayrollItemPresenter\r\n extends fromShared.EditGrid\r\n implements OnChanges\r\n{\r\n @Input() employeeSelectItems: SelectItem[];\r\n @Input() employees: fromDataServices.ManageUsers.LoginModel[];\r\n @Input() payrollItems: SelectItem[];\r\n @Output() Save = new ReplaySubject();\r\n @Output() ShowSaveSubject = new ReplaySubject();\r\n numCols = 9;\r\n ResponseStatus = ResponseStatus;\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemPresenter:ngOnChanges',\r\n changes\r\n });\r\n }\r\n onRowEditSave(\r\n item: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel\r\n ): void {\r\n // don't want to do call save here, need to save all when button clicked\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.SaveItem.next(item);\r\n }\r\n onRowEditDelete(\r\n item: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel,\r\n index: number\r\n ) {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemPresenter:onRowEditDelete',\r\n items: this.items,\r\n item,\r\n index\r\n });\r\n this.items.splice(index, 1);\r\n\r\n this.DeleteItem.next([item]);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n return;\r\n }\r\n public onFilter($event) {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemPresenter:onFilter',\r\n $event,\r\n items: this.items\r\n });\r\n this.dataTable.filter($event.value, 'EmployeeListID', 'in');\r\n }\r\n public ShowSave(): boolean {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemPresenter:ShowSave',\r\n items: this.items\r\n });\r\n const adding = this.items?.some(\r\n p => p?.Status?.StatusCode === ResponseStatus.Adding\r\n );\r\n this.ShowSaveSubject.next(adding);\r\n return adding;\r\n }\r\n public onSave(\r\n items: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n ) {\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemPresenter: onSave',\r\n items\r\n });\r\n this.Save.next(\r\n items.filter(\r\n item => item.Status?.StatusCode === ResponseStatus.Adding\r\n )\r\n );\r\n }\r\n}\r\n","export * from './employee-payroll-item-presenter.component';\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { EmployeePayrollItemContainerComponent } from './employee-payroll-item-container';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const EmployeePayrollItemRoute: Ng2StateDeclaration = {\r\n // name: 'PayrollItem.**'\r\n name: 'employeepayrollitem',\r\n url: '/employeepayrollitem',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.PayrollItemModule)\r\n data: { requiresAuth: true },\r\n\r\n component: EmployeePayrollItemContainerComponent\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../../environments/environment';\r\nimport { LoadingService } from '../../shared/loading';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport * as fromRoot from '../../store';\r\nimport { Store } from '@ngrx/store';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { IGenericResponse } from '../../shared';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EmployeePayrollItemService extends LoadingService {\r\n private uri = `${environment.apiLocation}/${fromDataServices.EmployeePayrollItem.entityName}`;\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n public save(\r\n items: fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n ): Observable<\r\n fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n > {\r\n return this.http\r\n .put<\r\n fromDataServices.EmployeePayrollItem.EmployeePayrollItemModel[]\r\n >(this.uri, { json: JSON.stringify(items) })\r\n .pipe(\r\n tap(resp =>\r\n this.log.verbose({\r\n type: 'EmployeePayrollItemService:save',\r\n resp\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","export * from './employee-payroll-item-container';\r\nexport * from './employee-payroll-item-filter';\r\nexport * from './employee-payroll-item-presenter';\r\n","export * from './payroll-item';\r\nexport * from './payroll-item-feature';\r\nexport * from './store';\r\n","export * from './payroll-item-feature.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromAccount from '../../../account/store';\r\nimport * as fromSettings from '../../../company-setting';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\nimport * as fromCommon from '../../../shared';\r\nimport * as fromShared from '../../../shared';\r\nimport { Process, SelectItem, uniqBy } from '../../../shared';\r\nimport * as fromLoading from '../../../shared/loading';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\nimport * as fromThirdPartyPayroll from '../../third-party/store';\r\nimport { PayrollItem } from '../store';\r\nimport * as fromEmployeeActions from '../store/payroll-item-employee.actions';\r\nimport { PayrollItemEmployee } from '../store/payroll-item-employee.model';\r\nimport * as fromEmployeeSelectors from '../store/payroll-item-employee.selectors';\r\n\r\n@Component({\r\n selector: 'ef-payroll-item-feature',\r\n templateUrl: './payroll-item-feature.component.html',\r\n styleUrls: ['./payroll-item-feature.component.scss']\r\n})\r\nexport class PayrollItemFeatureComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n qbOnline$: Observable;\r\n externalIntegration$: Observable;\r\n loading$: Observable;\r\n payrollItems$: Observable;\r\n payrollItemsSelectItems$: Observable;\r\n payrollItemTypeSelectItems$: Observable;\r\n payCodeSelectItems$: Observable;\r\n payrollItemEmployees$: Observable;\r\n laborTypes$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n quickbooksOnline$: Observable;\r\n accountSelectItems$: Observable;\r\n active = true;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n\r\n employeesPayrollItemsSelectItems$: Observable;\r\n employeesSelectItems$: Observable;\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(fromStore.getPayrollItems());\r\n this.store.dispatch(fromThirdPartyPayroll.getPayrollCodes());\r\n this.store.dispatch(fromStore.getLaborTypes());\r\n this.store.dispatch(fromAccount.getAccounts({}));\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'ExternalEmployeeSource'\r\n })\r\n );\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.qbOnline$ = this.store.pipe(select(fromSettings.isQBOEnabled));\r\n this.externalIntegration$ = this.store.pipe(\r\n select(\r\n fromSettings.getSettingBooleanValue('ExternalEmployeeSource')\r\n )\r\n );\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n map(items => {\r\n return items.map(item => {\r\n return {\r\n ...item,\r\n isValid() {\r\n return (\r\n !!this.PayrollItem &&\r\n this.PayrollItem.length > 0 &&\r\n !!this.AccountListID &&\r\n this.AccountListID.length > 0 &&\r\n !!this.PayrollItemType &&\r\n this.PayrollItemType.length > 0\r\n );\r\n }\r\n } as PayrollItem;\r\n }) as PayrollItem[];\r\n }),\r\n map(items =>\r\n clone(items).sort((a: PayrollItem, b: PayrollItem) =>\r\n a.PayrollItem?.toLocaleLowerCase()?.localeCompare(\r\n b.PayrollItem?.toLocaleLowerCase()\r\n )\r\n )\r\n )\r\n );\r\n this.payrollItemsSelectItems$ = this.payrollItems$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n }))\r\n )\r\n );\r\n this.payrollItemEmployees$ = this.store\r\n .pipe(select(fromEmployeeSelectors.selectAll))\r\n .pipe(\r\n map(items =>\r\n clone(items).sort(\r\n (a: PayrollItemEmployee, b: PayrollItemEmployee) =>\r\n a.Employeename.toLocaleLowerCase().localeCompare(\r\n b.Employeename.toLocaleLowerCase()\r\n )\r\n )\r\n )\r\n );\r\n this.employeesPayrollItemsSelectItems$ =\r\n this.payrollItemEmployees$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Payrollitem,\r\n value: item.Pilistid\r\n }))\r\n )\r\n );\r\n this.employeesSelectItems$ = this.payrollItemEmployees$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Employeename,\r\n value: item.Employeelistid\r\n }))\r\n )\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'PayrollItemFeatureComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.payrollItems$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'PayrollItemFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'PayrollItemFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n\r\n this.laborTypes$ = this.store.pipe(\r\n select(fromStore.selectLaborTypeProperty)\r\n );\r\n this.loading$ = this.store.pipe(select(fromLoading.getLoading));\r\n\r\n this.quickbooksOnline$ = this.store.pipe(\r\n select(fromSettings.isQBOEnabled)\r\n );\r\n const payCodes$ = this.store.pipe(\r\n select(fromThirdPartyPayroll.selectPayrollCodes)\r\n );\r\n this.payCodeSelectItems$ = payCodes$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: `${item.Paycodedesc ?? item.Paycode} (${\r\n item.Paycode\r\n })`,\r\n value: item.Paycode\r\n }))\r\n )\r\n );\r\n this.payrollItemTypeSelectItems$ = this.payrollItems$.pipe(\r\n map(items =>\r\n uniqBy(\r\n items\r\n .map(item => ({\r\n label: item.PayrollItemType,\r\n value: item.PayrollItemType\r\n }))\r\n .concat([\r\n { label: 'Salary', value: 'Salary' },\r\n { label: 'Hourly', value: 'Hourly' }\r\n ]),\r\n x => x.value\r\n )\r\n )\r\n );\r\n this.accountSelectItems$ = this.store.pipe(\r\n select(fromAccount.selectAll),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.AccountCode,\r\n value: item.AccountListID\r\n }))\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n onSave($event: PayrollItem[]) {\r\n this.log.verbose({\r\n type: 'PayrollItemFeatureComponent:onSave',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putPayrollItems({ items: $event }));\r\n }\r\n onShowError($event) {\r\n this.ShowErrorSubject.next($event);\r\n }\r\n onSelect($event: PayrollItem) {\r\n this.log.verbose({\r\n type: 'PayrollItemFeatureComponent:onSelect',\r\n $event\r\n });\r\n if ($event) {\r\n this.store.dispatch(\r\n fromEmployeeActions.getPayrollItemEmployees({\r\n PIListID: $event.PIListID\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../../shared/category/categories.service';\r\nimport * as fromPayrollItem from '.';\r\nimport { processResolver } from '../../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const PayrollItemRoute: Ng2StateDeclaration = {\r\n // name: 'PayrollItem.**'\r\n name: 'payrollitemsetting',\r\n url: '/payrollitemsetting',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.PayrollItemModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromPayrollItem.PayrollItemFeatureComponent\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Store } from '@ngrx/store';\r\nimport { environment } from '../../../environments/environment';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { PayrollItem } from './store';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { IGenericResponse } from '../../shared';\r\nimport { LoadingService } from '../../shared/loading/loading-service.service';\r\nimport { PayrollItemEmployee } from './store/payroll-item-employee.model';\r\nimport * as fromRoot from '../../store';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PayrollItemService extends LoadingService {\r\n private uri = `${environment.apiLocation}/PayrollItemSetting`;\r\n private uriPayrollItemEmployee = `${environment.apiLocation}/PayrollItemEmployee`;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n\r\n public get(): Observable {\r\n super.Load();\r\n return this.http.get(this.uri).pipe(\r\n tap(data => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'PayrollItemService:get',\r\n data\r\n });\r\n }),\r\n map(pi => pi.map(x => ({ ...x, id: this.getPayrollItemId(x) })))\r\n );\r\n }\r\n public put(items): Observable> {\r\n return this.http\r\n .put>(this.uri, {\r\n PayrollItemSettingList: items\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'PayrollItemService:put',\r\n data\r\n })\r\n ),\r\n map(pi => ({\r\n ...pi,\r\n Items: pi.Items.map(x => ({\r\n ...x,\r\n id: this.getPayrollItemId(x)\r\n }))\r\n }))\r\n );\r\n }\r\n public getEmployees(\r\n Payrollitemlistid: string\r\n ): Observable {\r\n super.Load();\r\n return this.http\r\n .get(\r\n `${this.uriPayrollItemEmployee}?Payrollitemlistid=${Payrollitemlistid}`\r\n )\r\n .pipe(\r\n tap(data => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'PayrollItemService:getEmployees',\r\n data\r\n });\r\n }),\r\n map(rates =>\r\n rates.map(x => ({\r\n ...x,\r\n Status: x.Status || {\r\n StatusCode: null,\r\n Message: null\r\n },\r\n id: this.getPayrollItemEmployeeId(x)\r\n }))\r\n )\r\n );\r\n }\r\n\r\n private getPayrollItemEmployeeId(item: PayrollItemEmployee) {\r\n return item.Employeelistid;\r\n }\r\n\r\n private getPayrollItemId(item: PayrollItem) {\r\n return item.PIListID;\r\n }\r\n}\r\n","export * from './payroll-item.component';\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\nimport * as fromShared from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { PayrollItem } from '../store';\r\nimport { PayrollItemEmployee } from '../store/payroll-item-employee.model';\r\n\r\nfunction addItem() {\r\n this.id = 'add';\r\n this.PIListID = '-1';\r\n this.isValid = () =>\r\n !!this.PayrollItem &&\r\n this.PayrollItem.length > 0 &&\r\n !!this.AccountListID &&\r\n this.AccountListID.length > 0 &&\r\n !!this.PayrollItemType &&\r\n this.PayrollItemType.length > 0;\r\n}\r\n@Component({\r\n selector: 'ef-payroll-item',\r\n templateUrl: './payroll-item.component.html',\r\n styleUrls: ['./payroll-item.component.scss']\r\n})\r\nexport class PayrollItemComponent\r\n extends fromShared.EditGrid\r\n implements OnChanges\r\n{\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n laborSelectItems: SelectItem[];\r\n @Input() public employees: PayrollItemEmployee[];\r\n @Input() payrollItemsSelectItems: SelectItem[] = [];\r\n @Input() payrollItemTypesSelectItems: SelectItem[] = [];\r\n @Input() payCodeSelectItems: SelectItem[] = [];\r\n @Input() accountSelectItems: SelectItem[] = [];\r\n @Input() employeesSelectItems: SelectItem[] = [];\r\n @Input() employeesPayrollItemsSelectItems: SelectItem[] = [];\r\n @Input() qbo: boolean;\r\n @Input() externalIntegration: boolean;\r\n public payrollItems: PayrollItem[];\r\n private _laborTypes: CalcType[];\r\n @Input() public set laborTypes(value: CalcType[]) {\r\n this.log.verbose({\r\n type: 'PayrollItemComponent:set:laborTypes',\r\n value\r\n });\r\n this._laborTypes = value;\r\n this.laborSelectItems = value.map(x => ({\r\n label: x.CalcDesc,\r\n value: x.CalcType\r\n }));\r\n }\r\n public get laborTypes(): CalcType[] {\r\n return this._laborTypes;\r\n }\r\n\r\n // addItem: Partial = {\r\n // id: 'add',\r\n // PIListID: '-1',\r\n // };\r\n\r\n @ViewChild('dataTable', { static: true })\r\n protected table: fromShared.Table;\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n this.log.verbose({\r\n type: 'PayrollItemComponent:ngOnChanges',\r\n changes,\r\n qbo: this.qbo,\r\n externalIntegration: this.externalIntegration\r\n });\r\n if (this.items) {\r\n if (this.qbo && !this.externalIntegration) {\r\n this.payrollItems = [new addItem(), ...this.items];\r\n } else {\r\n this.payrollItems = this.items;\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'PayrollItemComponent:ngOnChanges:qbo',\r\n items: this.payrollItems\r\n });\r\n }\r\n onRowEditInit(item: PayrollItem) {\r\n super.onRowEditInit(item);\r\n this.log.verbose({\r\n type: 'PayrollItemComponent:onRowEditInit',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing,\r\n qbo: this.qbo\r\n });\r\n this.selected = fromShared.uniqBy(\r\n [...(this.selected ?? []), item],\r\n x => x.PIListID\r\n );\r\n this.table.virtualScroll = false;\r\n }\r\n onRowEditCancel(item: PayrollItem) {\r\n super.onRowEditCancel(item);\r\n this.log.verbose({\r\n type: 'PayrollItemComponent:onRowEditCancel',\r\n item\r\n });\r\n this.items = this.items.filter(x => x.PIListID !== 'add');\r\n if (this.qbo && !this.externalIntegration) {\r\n this.items = [new addItem() as any, ...this.items];\r\n }\r\n\r\n //this.table.virtualScroll = true;\r\n }\r\n onRowEditSave(item: PayrollItem) {\r\n super.onRowEditSave(item);\r\n if ((item.isValid && item.isValid()) || !item.isValid) {\r\n this.log.verbose({\r\n type: 'PayrollItemComponent:onRowEditSave',\r\n item\r\n });\r\n //validate?\r\n this.items = this.items.filter(x => x.PIListID !== 'add');\r\n if (this.qbo && !this.externalIntegration) {\r\n this.items = [new addItem() as any, ...this.items];\r\n }\r\n //this.table.virtualScroll = true;\r\n }\r\n }\r\n}\r\n","export * from './payroll-item.model';\r\nexport * from './payroll-item.actions';\r\nexport * from './payroll-item.reducer';\r\nexport * from './payroll-item.selectors';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { PayrollItemEmployee } from './payroll-item-employee.model';\r\n\r\nexport const loadPayrollItemEmployees = createAction(\r\n '[PayrollItemEmployee/API] Load PayrollItemEmployees',\r\n props<{ payrollItemEmployees: PayrollItemEmployee[] }>()\r\n);\r\n\r\nexport const addPayrollItemEmployee = createAction(\r\n '[PayrollItemEmployee/API] Add PayrollItemEmployee',\r\n props<{ payrollItemEmployee: PayrollItemEmployee }>()\r\n);\r\n\r\nexport const upsertPayrollItemEmployee = createAction(\r\n '[PayrollItemEmployee/API] Upsert PayrollItemEmployee',\r\n props<{ payrollItemEmployee: PayrollItemEmployee }>()\r\n);\r\n\r\nexport const addPayrollItemEmployees = createAction(\r\n '[PayrollItemEmployee/API] Add PayrollItemEmployees',\r\n props<{ payrollItemEmployees: PayrollItemEmployee[] }>()\r\n);\r\n\r\nexport const upsertPayrollItemEmployees = createAction(\r\n '[PayrollItemEmployee/API] Upsert PayrollItemEmployees',\r\n props<{ payrollItemEmployees: PayrollItemEmployee[] }>()\r\n);\r\n\r\nexport const updatePayrollItemEmployee = createAction(\r\n '[PayrollItemEmployee/API] Update PayrollItemEmployee',\r\n props<{ payrollItemEmployee: Update }>()\r\n);\r\n\r\nexport const updatePayrollItemEmployees = createAction(\r\n '[PayrollItemEmployee/API] Update PayrollItemEmployees',\r\n props<{ payrollItemEmployees: Update[] }>()\r\n);\r\n\r\nexport const deletePayrollItemEmployee = createAction(\r\n '[PayrollItemEmployee/API] Delete PayrollItemEmployee',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deletePayrollItemEmployees = createAction(\r\n '[PayrollItemEmployee/API] Delete PayrollItemEmployees',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearPayrollItemEmployees = createAction(\r\n '[PayrollItemEmployee/API] Clear PayrollItemEmployees'\r\n);\r\n\r\nexport const getPayrollItemEmployees = createAction(\r\n '[PayrollItemEmployee/API] Get PayrollItemEmployees',\r\n props<{ PIListID: string }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport { concatMap, switchMap, flatMap, catchError } from 'rxjs/operators';\r\n\r\nimport * as PayrollItemEmployeeActions from './payroll-item-employee.actions';\r\nimport { PayrollItemService } from '../payroll-item.service';\r\nimport { DisplayMessageMinimum } from '../../../shared';\r\nimport * as fromShared from '../../../shared';\r\n\r\n@Injectable()\r\nexport class PayrollItemEmployeeEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: PayrollItemService\r\n ) {}\r\n\r\n getPayrollItems$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(PayrollItemEmployeeActions.getPayrollItemEmployees),\r\n switchMap(action =>\r\n this.service.getEmployees(action.PIListID).pipe(\r\n flatMap(resp => [\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n r =>\r\n r.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n PayrollItemEmployeeActions.loadPayrollItemEmployees({\r\n payrollItemEmployees: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { PayrollItemEmployee } from './payroll-item-employee.model';\r\nimport * as PayrollItemEmployeeActions from './payroll-item-employee.actions';\r\n\r\nexport const payrollItemEmployeesFeatureKey = 'payrollItemEmployees';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst payrollItemEmployeeReducer = createReducer(\r\n initialState,\r\n on(PayrollItemEmployeeActions.addPayrollItemEmployee, (state, action) =>\r\n adapter.addOne(action.payrollItemEmployee, state)\r\n ),\r\n on(PayrollItemEmployeeActions.upsertPayrollItemEmployee, (state, action) =>\r\n adapter.upsertOne(action.payrollItemEmployee, state)\r\n ),\r\n on(PayrollItemEmployeeActions.addPayrollItemEmployees, (state, action) =>\r\n adapter.addMany(action.payrollItemEmployees, state)\r\n ),\r\n on(PayrollItemEmployeeActions.upsertPayrollItemEmployees, (state, action) =>\r\n adapter.upsertMany(action.payrollItemEmployees, state)\r\n ),\r\n on(PayrollItemEmployeeActions.updatePayrollItemEmployee, (state, action) =>\r\n adapter.updateOne(action.payrollItemEmployee, state)\r\n ),\r\n on(PayrollItemEmployeeActions.updatePayrollItemEmployees, (state, action) =>\r\n adapter.updateMany(action.payrollItemEmployees, state)\r\n ),\r\n on(PayrollItemEmployeeActions.deletePayrollItemEmployee, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(PayrollItemEmployeeActions.deletePayrollItemEmployees, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(PayrollItemEmployeeActions.loadPayrollItemEmployees, (state, action) =>\r\n adapter.setAll(action.payrollItemEmployees, state)\r\n ),\r\n on(PayrollItemEmployeeActions.clearPayrollItemEmployees, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return payrollItemEmployeeReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromPayrollItemEmployee from './payroll-item-employee.reducer';\r\n\r\nexport const selectPayrollItemEmployeeState = createFeatureSelector(\r\n fromPayrollItemEmployee.payrollItemEmployeesFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromPayrollItemEmployee.adapter.getSelectors(\r\n selectPayrollItemEmployeeState\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { PayrollItem } from './payroll-item.model';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\n\r\nexport const loadPayrollItems = createAction(\r\n '[PayrollItem/API] Load PayrollItems',\r\n props<{ payrollItems: PayrollItem[] }>()\r\n);\r\n\r\nexport const addPayrollItem = createAction(\r\n '[PayrollItem/API] Add PayrollItem',\r\n props<{ payrollItem: PayrollItem }>()\r\n);\r\n\r\nexport const upsertPayrollItem = createAction(\r\n '[PayrollItem/API] Upsert PayrollItem',\r\n props<{ payrollItem: PayrollItem }>()\r\n);\r\n\r\nexport const addPayrollItems = createAction(\r\n '[PayrollItem/API] Add PayrollItems',\r\n props<{ payrollItems: PayrollItem[] }>()\r\n);\r\n\r\nexport const upsertPayrollItems = createAction(\r\n '[PayrollItem/API] Upsert PayrollItems',\r\n props<{ payrollItems: PayrollItem[] }>()\r\n);\r\n\r\nexport const updatePayrollItem = createAction(\r\n '[PayrollItem/API] Update PayrollItem',\r\n props<{ payrollItem: Update }>()\r\n);\r\n\r\nexport const updatePayrollItems = createAction(\r\n '[PayrollItem/API] Update PayrollItems',\r\n props<{ payrollItems: Update[] }>()\r\n);\r\n\r\nexport const deletePayrollItem = createAction(\r\n '[PayrollItem/API] Delete PayrollItem',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deletePayrollItems = createAction(\r\n '[PayrollItem/API] Delete PayrollItems',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearPayrollItems = createAction(\r\n '[PayrollItem/API] Clear PayrollItems'\r\n);\r\n\r\nexport const getPayrollItems = createAction(\r\n '[PayrollItem/API] Get PayrollItems'\r\n);\r\n\r\nexport const putPayrollItems = createAction(\r\n '[PayrollItem/API] Put PayrollItems',\r\n props<{ items: PayrollItem[] }>()\r\n);\r\n\r\nexport const getLaborTypes = createAction('[PayrollItem/API] Get LaborTypes');\r\nexport const loadLaborTypes = createAction(\r\n '[PayrollItem/API] Load LaborTypes',\r\n props<{ items: CalcType[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport {\r\n catchError,\r\n map,\r\n concatMap,\r\n switchMap,\r\n flatMap,\r\n tap\r\n} from 'rxjs/operators';\r\nimport { PayrollItemService } from '../payroll-item.service';\r\n\r\nimport * as PayrollItemActions from './payroll-item.actions';\r\nimport * as fromShared from '../../../shared';\r\nimport { CalcTypeService } from '../../../lookups/calc-type.service';\r\nimport { ResponseStatus, DisplayMessageMinimum } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\n\r\n@Injectable()\r\nexport class PayrollItemEffects {\r\n getPayrollItems$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(PayrollItemActions.getPayrollItems),\r\n switchMap(() =>\r\n this.service.get().pipe(\r\n flatMap(resp => [\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp\r\n .filter(\r\n r =>\r\n r.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n PayrollItemActions.loadPayrollItems({\r\n payrollItems: resp\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putPayrollItems$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(PayrollItemActions.putPayrollItems),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'PayrollItemEffects:putPayrollItems$',\r\n action\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.put(a.items).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n PayrollItemActions.upsertPayrollItems({\r\n payrollItems: resp.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.PIListID.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n PayrollItemActions.upsertPayrollItems({\r\n payrollItems: resp.Items\r\n })\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n getLaborTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(PayrollItemActions.getLaborTypes),\r\n switchMap(() =>\r\n this.calcTypeService.getCalcType('labor').pipe(\r\n map(resp =>\r\n PayrollItemActions.loadLaborTypes({ items: resp })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: PayrollItemService,\r\n private calcTypeService: CalcTypeService,\r\n private log: LoggingService\r\n ) {}\r\n}\r\n","import { DataServiceEntity } from '../../../data-services/data-service.entity';\r\nimport { IStatusMessage } from '../../../shared';\r\n\r\nexport interface PayrollItem extends DataServiceEntity {\r\n id: string;\r\n AccountListID: string;\r\n AccountName: string;\r\n EmployeeListID: string;\r\n ExportCode: string;\r\n IsActive: boolean;\r\n IsHolidayPI: boolean;\r\n IsLeaveRequestPI: boolean;\r\n IsReadOnly: boolean;\r\n IsSickPI: boolean;\r\n LaborType: string;\r\n OTMultiplier: number;\r\n PayrollCategory: string;\r\n PayrollDisplay: string;\r\n PayrollItem: string;\r\n PayrollItemType: string;\r\n PIListID: string;\r\n Row_Version: string;\r\n Status: IStatusMessage;\r\n isValid: () => true;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { CalcType } from '../../../lookups/CalcType';\r\nimport * as PayrollItemActions from './payroll-item.actions';\r\nimport { PayrollItem } from './payroll-item.model';\r\n\r\nexport const payrollItemsFeatureKey = 'payrollItems';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n LaborTypes: CalcType[];\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: PayrollItem) => model.PIListID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n LaborTypes: []\r\n});\r\n\r\nconst payrollItemReducer = createReducer(\r\n initialState,\r\n on(PayrollItemActions.addPayrollItem, (state, action) =>\r\n adapter.addOne(action.payrollItem, state)\r\n ),\r\n on(PayrollItemActions.upsertPayrollItem, (state, action) =>\r\n adapter.upsertOne(action.payrollItem, state)\r\n ),\r\n on(PayrollItemActions.addPayrollItems, (state, action) =>\r\n adapter.addMany(action.payrollItems, state)\r\n ),\r\n on(PayrollItemActions.upsertPayrollItems, (state, action) =>\r\n adapter.upsertMany(action.payrollItems, state)\r\n ),\r\n on(PayrollItemActions.updatePayrollItem, (state, action) =>\r\n adapter.updateOne(action.payrollItem, state)\r\n ),\r\n on(PayrollItemActions.updatePayrollItems, (state, action) =>\r\n adapter.updateMany(action.payrollItems, state)\r\n ),\r\n on(PayrollItemActions.deletePayrollItem, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(PayrollItemActions.deletePayrollItems, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(PayrollItemActions.loadPayrollItems, (state, action) =>\r\n adapter.setAll(action.payrollItems, state)\r\n ),\r\n on(PayrollItemActions.clearPayrollItems, state => adapter.removeAll(state)),\r\n on(PayrollItemActions.loadLaborTypes, (state, action) => ({\r\n ...state,\r\n LaborTypes: action.items\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return payrollItemReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromPayrollItem from './payroll-item.reducer';\r\n\r\nexport const selectPayrollItemState =\r\n createFeatureSelector(\r\n fromPayrollItem.payrollItemsFeatureKey\r\n );\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromPayrollItem.adapter.getSelectors(selectPayrollItemState);\r\n\r\nexport const selectLaborTypeProperty = createSelector(\r\n selectPayrollItemState,\r\n (state: fromPayrollItem.State) => state.LaborTypes\r\n);\r\n\r\nexport const getPayrollItemsFor = (EmployeeListID: string) =>\r\n createSelector(selectAll, payroll =>\r\n payroll.filter(x => x.EmployeeListID === EmployeeListID)\r\n );\r\n","export * from './payroll-export-container.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n EntityActionFactory,\r\n EntityCollectionService,\r\n EntityOp,\r\n EntityServices\r\n} from '@ngrx/data';\r\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\r\nimport {\r\n debounce,\r\n debounceTime,\r\n delay,\r\n distinctUntilChanged,\r\n distinctUntilKeyChanged,\r\n filter,\r\n map,\r\n share,\r\n skip,\r\n startWith,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { Process, State } from '../../../shared';\r\nimport { ActionsSubject, Store, select } from '@ngrx/store';\r\nimport * as fromShared from '../../../shared';\r\nimport * as tp from '../../third-party/store';\r\nimport * as fromUser from '../../../user-info';\r\nimport { ScheduledDate } from '../../../lookups';\r\nimport * as fromScheduledDates from '../../../lookups/store/schedule-date.selectors';\r\nimport * as fromSettings from '../../../company-setting';\r\nimport * as moment from 'moment';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ToasterService } from '../../../toaster';\r\nimport { PayrollExportModel } from '../../../data-services/payroll/payroll-export';\r\n@Component({\r\n selector: 'ef-payroll-export-container',\r\n templateUrl: './payroll-export-container.component.html',\r\n styleUrls: ['./payroll-export-container.component.scss']\r\n})\r\nexport class PayrollExportContainerComponent implements OnInit, OnDestroy {\r\n userInfo$: Observable;\r\n process$: Observable;\r\n PayrollExportModelDS: EntityCollectionService;\r\n PayrollExportModel$: Observable<\r\n fromDataServices.PayrollExport.PayrollExportModel[]\r\n >;\r\n payPeriods$: Observable<\r\n fromDataServices.PayrollExport.PayrollExportModel[]\r\n >;\r\n payPeriodDates$: Observable;\r\n payPeriodDatesSelectItems$: Observable;\r\n selectedPayPeriod$: Observable;\r\n export$: Observable;\r\n ViewPayPeriod = new ReplaySubject(1);\r\n SendPayPeriod = new ReplaySubject(1);\r\n SyncGL = new ReplaySubject(1);\r\n ShowErrorSubject = new ReplaySubject(1);\r\n fileFormats$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n private active = true;\r\n moment: any = moment;\r\n showTimer = false;\r\n processingText = 'Processing';\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store,\r\n public entityServices: EntityServices,\r\n private af: EntityActionFactory,\r\n private dispatcher: ActionsSubject,\r\n private toaster: ToasterService\r\n ) {\r\n this.log.verbose({ type: 'PayrollExportContainerComponent::' });\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.PayrollExportModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.PayrollExport.entityName\r\n );\r\n this.store.dispatch(tp.getFileFormat());\r\n\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'PayrollExportFormat'\r\n })\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.PayrollExportModelDS.clearCache();\r\n this.PayrollExportModelDS.getAll();\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n setupObservables() {\r\n this.PayrollExportModel$ = this.PayrollExportModelDS.entities$.pipe(\r\n map(items => clone(items))\r\n );\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.selectedErrorWithStatus$ = this.store.pipe(\r\n select(fromShared.Errors.selectErrorWithStatus)\r\n );\r\n this.payPeriodDates$ = this.store.pipe(\r\n select(\r\n fromScheduledDates.selectScheduledDateType({\r\n ScheduledDateType: 'PPE'\r\n })\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:payPeriodDates$',\r\n items\r\n })\r\n )\r\n );\r\n this.payPeriodDatesSelectItems$ = this.payPeriodDates$.pipe(\r\n map(dates =>\r\n dates.map(d => ({\r\n label: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YY'\r\n )} - ${moment(d.ScheduledEndDate).format('MM/DD/YY')}`,\r\n value: d.ScheduledDateID\r\n }))\r\n )\r\n );\r\n this.export$ = this.store.pipe(\r\n select(tp.selectAll),\r\n map(x => clone(x) as tp.ThirdPartyPayroll[])\r\n );\r\n this.payPeriods$ = combineLatest([\r\n this.payPeriodDates$,\r\n this.PayrollExportModel$\r\n ]).pipe(\r\n takeWhile(() => this.active),\r\n map(x => {\r\n x[1] = x[1].filter(p => (p.id as number) >= 0);\r\n return x;\r\n }),\r\n map(([dates, items]) => {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:payPeriods$:status',\r\n dates,\r\n items\r\n });\r\n const ret = dates.map(date => {\r\n const status = items.find(\r\n item =>\r\n moment(item.PayPeriodEndDate).unix() ===\r\n moment(date.ScheduledEndDate).unix()\r\n );\r\n if (status)\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:payPeriods$:status',\r\n status,\r\n date\r\n });\r\n return {\r\n id: status?.id ?? date.ScheduledDateID,\r\n gcpid: status?.id,\r\n ppid: date.ScheduledDateID,\r\n PayPeriodEndDate: date.ScheduledEndDate,\r\n SentDate: status?.SentDate ?? undefined,\r\n SentBy: status?.SentBy ?? undefined,\r\n ExportStatus: this.splitPascalCase(\r\n status?.ExportStatus || 'NotExported'\r\n ),\r\n ValidationMessages: status?.ValidationMessages || [],\r\n Status: status?.Status || {\r\n StatusCode: fromShared.ResponseStatus.None,\r\n Message: ''\r\n },\r\n canView: true,\r\n canSend: this.canSend(status?.ExportStatus),\r\n canSync: this.canSync(status?.ExportStatus),\r\n canRefresh: this.canRefresh(status?.ExportStatus)\r\n };\r\n });\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:payPeriods$:status',\r\n ret\r\n });\r\n return ret;\r\n })\r\n );\r\n let seq = 0;\r\n this.fileFormats$ = this.store.pipe(\r\n select(tp.selectFileFormats),\r\n map(x => clone(x) as tp.FileFormatModel[]),\r\n tap(x => (seq = x.reduce((a, c) => Math.max(a, c.Sequencenbr), 0))),\r\n map(x =>\r\n x.map(y => {\r\n if (y.Sequencenbr) {\r\n seq = y.Sequencenbr + 1;\r\n }\r\n return { ...y, sequence: y.Sequencenbr || seq };\r\n })\r\n ),\r\n map(x => x.sort((a, b) => a.Sequencenbr - b.Sequencenbr))\r\n );\r\n this.selectedPayPeriod$ = this.ViewPayPeriod.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.payPeriodDates$),\r\n map(([id, dates]) => dates.find(x => x.ScheduledDateID === id))\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:setupSubscriptions'\r\n });\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n //this turns the loading overlay off when all items are completed or not exported\r\n this.PayrollExportModel$.pipe(\r\n takeWhile(() => this.active),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:complete:1',\r\n items\r\n })\r\n ),\r\n // first 2 are 0, 1 from initialization, 1 from the ClearAll\r\n skip(2),\r\n tap(items => {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:complete:2',\r\n items\r\n });\r\n // this.showTimer = true;\r\n }),\r\n map(items => items.filter(item => (item.id as number) >= 0)),\r\n // filter(items => !!items && items.length > 0),\r\n filter(items =>\r\n items.every(\r\n item =>\r\n (Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportCompletedStatuses\r\n )\r\n .includes(item.ExportStatus) ||\r\n item.ExportStatus === 'Not Exported'\r\n )\r\n )\r\n ).subscribe(items => {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:complete:3',\r\n items\r\n });\r\n this.showTimer = false;\r\n });\r\n\r\n // this just sends out seterrors for any validation messages\r\n this.PayrollExportModel$.pipe(\r\n takeWhile(() => this.active),\r\n map(items =>\r\n items.filter(\r\n item =>\r\n !(Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportCompletedSuccessStatuses\r\n )\r\n .includes(item.ExportStatus)\r\n )\r\n ),\r\n map(items =>\r\n items.filter(\r\n item =>\r\n item.ValidationMessages &&\r\n item.ValidationMessages.length > 0\r\n )\r\n ),\r\n filter(items => items.length > 0),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:validationmessages',\r\n items\r\n })\r\n )\r\n ).subscribe(items => {\r\n this.store.dispatch(new fromShared.Errors.ClearErrors());\r\n items.map(item => {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:validationmessages:dispatch',\r\n items\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors(\r\n item.ValidationMessages.map(x => ({\r\n ...x,\r\n MsgEntityID: item.id,\r\n MsgProcessID: fromShared.ProcessEnum.PayrollExport,\r\n StatusCode:\r\n fromShared.ResponseStatus[\r\n x.severity as keyof typeof fromShared.ResponseStatus\r\n ],\r\n Message: `${moment(item.PayPeriodEndDate).format(\r\n 'L'\r\n )} - ${x.messageText}`\r\n }))\r\n )\r\n );\r\n });\r\n });\r\n\r\n //should set this up in setupObservables, but it's only used here\r\n const incomplete$ = this.PayrollExportModel$.pipe(\r\n takeWhile(() => this.active),\r\n filter(items => items.length > 0),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:incomplete:1',\r\n items\r\n })\r\n ),\r\n map(items => items.filter(p => (p.id as number) >= 0)),\r\n //filter out any that have a success status\r\n map(items =>\r\n items.filter(\r\n item =>\r\n !(Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportCompletedSuccessStatuses\r\n )\r\n .includes(item.ExportStatus)\r\n )\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:incomplete:2',\r\n items\r\n })\r\n ),\r\n //filter out any that have a completed status\r\n map(items =>\r\n items.filter(\r\n item =>\r\n !(Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportCompletedStatuses\r\n )\r\n .includes(item.ExportStatus)\r\n )\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:PayrollExportModel$:incomplete:3',\r\n items\r\n })\r\n ),\r\n filter(items => items.length > 0)\r\n );\r\n\r\n //this calls api to fetch the status of any in process exports\r\n incomplete$.pipe(debounceTime(5000)).subscribe(items => {\r\n this.processingText = 'Processing';\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:incomplete$',\r\n items\r\n });\r\n items.forEach(item => {\r\n this.store.dispatch(\r\n tp.fetchPayrollExportStatus({ id: item.id })\r\n );\r\n });\r\n });\r\n\r\n this.ViewPayPeriod.pipe(\r\n takeWhile(() => this.active),\r\n distinctUntilChanged(),\r\n withLatestFrom(this.payPeriodDates$)\r\n ).subscribe(([id, payDates]) => {\r\n const pd = payDates.find(x => x.ScheduledDateID === id);\r\n if (pd) {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:ViewPayPeriod',\r\n id,\r\n pd\r\n });\r\n this.store.dispatch(tp.clearThirdPartyPayrolls());\r\n this.store.dispatch(\r\n tp.getPayrollExport({\r\n codeAsRow: true,\r\n startDate: pd.ScheduledStartDate,\r\n endDate: pd.ScheduledEndDate\r\n })\r\n );\r\n }\r\n });\r\n\r\n this.SendPayPeriod.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.payPeriodDates$),\r\n withLatestFrom(this.PayrollExportModel$),\r\n tap(([[id, payDates], exps]) =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:SendPayPeriod',\r\n id,\r\n payDates,\r\n exps\r\n })\r\n )\r\n ).subscribe(([[id, payDates], exps]) => {\r\n const pd = payDates.find(x => x.ScheduledDateID === id);\r\n const e = exps.find(\r\n x =>\r\n moment(x.PayPeriodEndDate).format('L') ===\r\n moment(pd?.ScheduledEndDate).format('L')\r\n );\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:SendPayPeriod',\r\n id,\r\n pd,\r\n e\r\n });\r\n if (pd) {\r\n this.store.dispatch(\r\n tp.sendPayrollExport({\r\n id: e?.id,\r\n endDate: pd.ScheduledEndDate\r\n })\r\n );\r\n }\r\n if (e) {\r\n const a1 = this.af.create(\r\n fromDataServices.PayrollExport.entityName,\r\n\r\n EntityOp.SAVE_DELETE_ONE_SUCCESS,\r\n e.id\r\n );\r\n this.store.dispatch(a1);\r\n }\r\n this.showTimer = true;\r\n });\r\n this.SyncGL.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.payPeriodDates$),\r\n withLatestFrom(this.PayrollExportModel$),\r\n tap(([[id, payDates], exps]) =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:SyncPayPeriod',\r\n id,\r\n payDates,\r\n exps\r\n })\r\n )\r\n ).subscribe(([[id, payDates], exps]) => {\r\n const pd = payDates.find(x => x.ScheduledDateID === id);\r\n const e = exps.find(\r\n x =>\r\n moment(x.PayPeriodEndDate).format('L') ===\r\n moment(pd?.ScheduledEndDate).format('L')\r\n );\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:SyncGL',\r\n id,\r\n pd,\r\n e\r\n });\r\n if (pd) {\r\n this.store.dispatch(\r\n tp.syncGL({\r\n id: e?.id,\r\n endDate: pd.ScheduledEndDate\r\n })\r\n );\r\n }\r\n if (e) {\r\n // if (update.changes.SyncPayrollItems === true) {\r\n const a1 = this.af.create(\r\n fromDataServices.PayrollExport.entityName,\r\n // EntityOp.SAVE_UPSERT_ONE_SUCCESS,\r\n // {\r\n // ...e,\r\n // // ExportStatus: 'Processing',\r\n // ValidationMessages: null\r\n // }\r\n EntityOp.SAVE_DELETE_ONE_SUCCESS,\r\n e.id\r\n );\r\n // this.store.dispatch(a1);\r\n }\r\n this.showTimer = true;\r\n });\r\n\r\n this.dispatcher\r\n .pipe(\r\n takeWhile(() => this.active),\r\n ofType(tp.syncGLFailure),\r\n tap(result =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:syncGLFailure',\r\n result\r\n })\r\n )\r\n )\r\n .subscribe(() => {\r\n this.showTimer = false;\r\n });\r\n\r\n this.dispatcher\r\n .pipe(\r\n takeWhile(() => this.active),\r\n ofType(tp.syncGLSuccess),\r\n tap(result =>\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:syncGLSuccess',\r\n result\r\n })\r\n )\r\n )\r\n .subscribe(() => {\r\n this.showTimer = false;\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n canSend = (status: string | undefined) =>\r\n (Object as any)\r\n .values(fromDataServices.PayrollExport.PayrollExportErrorStatuses)\r\n .includes(status) ||\r\n !(Object as any)\r\n .values(\r\n fromDataServices.PayrollExport.PayrollExportCompletedStatuses\r\n )\r\n .includes(status);\r\n canSync = (status: string | undefined) =>\r\n (Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportCompletedSuccessStatuses\r\n )\r\n .includes(status);\r\n canRefresh = (status: string | undefined) =>\r\n !!status &&\r\n !(\r\n (Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportCompletedSuccessStatuses\r\n )\r\n .includes(status) ||\r\n (Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportInProgressStatuses\r\n )\r\n .includes(status)\r\n );\r\n onView($event) {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:onView',\r\n $event\r\n });\r\n this.ViewPayPeriod.next($event.ppid ?? $event.id);\r\n }\r\n onSend($event: string | number) {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:onSend',\r\n $event\r\n });\r\n this.showTimer = true;\r\n this.SendPayPeriod.next($event);\r\n }\r\n onSync($event: string | number) {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:onSync',\r\n $event\r\n });\r\n this.showTimer = true;\r\n this.SyncGL.next($event);\r\n }\r\n onRefresh($event: PayrollExportModel) {\r\n this.log.verbose({\r\n type: 'PayrollExportContainerComponent:onRefresh',\r\n $event\r\n });\r\n\r\n this.PayrollExportModelDS.updateOneInCache({\r\n ...$event,\r\n ExportStatus:\r\n fromDataServices.PayrollExport.PayrollExportInProgressStatuses\r\n .Refreshing\r\n });\r\n this.store.dispatch(tp.fetchPayrollExportStatus({ id: $event.id }));\r\n }\r\n splitPascalCase = word => {\r\n const wordRe = /($[a-z])|[A-Z][^A-Z]+/g;\r\n return word.match(wordRe).join(' ');\r\n };\r\n}\r\n","export * from './payroll-export-presenter.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport * as fromShared from '../../../shared';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject, combineLatest } from 'rxjs';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { take, takeWhile } from 'rxjs/operators';\r\nimport { ThirdPartyPayroll } from '../../third-party/store';\r\n@Component({\r\n selector: 'ef-payroll-export-presenter',\r\n templateUrl: './payroll-export-presenter.component.html',\r\n styleUrls: ['./payroll-export-presenter.component.scss']\r\n})\r\nexport class PayrollExportPresenter\r\n extends fromShared.EditGrid\r\n implements AfterViewInit, OnChanges, OnDestroy\r\n{\r\n numCols = 9;\r\n moment: any = moment;\r\n @Input() public set Payrolls(value: ThirdPartyPayroll[]) {\r\n this.PayrollsSubject.next(value);\r\n }\r\n\r\n PayrollsSubject = new ReplaySubject(1);\r\n ScrollToItem =\r\n new ReplaySubject(1);\r\n @Output() View =\r\n new ReplaySubject(1);\r\n @Output() Send = new ReplaySubject(1);\r\n @Output() Sync = new ReplaySubject(1);\r\n @Output() Refresh = new ReplaySubject(1);\r\n private active = true;\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n override onStatusClick(item: { id: string | number }) {\r\n const model = item as fromDataServices.PayrollExport.PayrollExportModel;\r\n if (model.Status.StatusCode !== fromShared.ResponseStatus.Success) {\r\n this.ShowError.emit({\r\n open: true,\r\n MsgEntityID: item.id.toString()\r\n });\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n this.ScrollToItem\r\n // .pipe(take(1))\r\n .subscribe(item => {\r\n const idx = this.items.indexOf(item);\r\n const id = `row-${item.id}`;\r\n const row = document.getElementById(id) as HTMLElement;\r\n this.log.verbose({\r\n type: 'PayrollExportPresenter:ScrollToItem',\r\n idx,\r\n item,\r\n row,\r\n id,\r\n offsetWidth: row.offsetWidth,\r\n offsetHeight: row.offsetHeight,\r\n getClientRects: row.getClientRects().length\r\n });\r\n if (true) {\r\n this.log.verbose({\r\n type: 'PayrollExportPresenter:ScrollToItem:invisible',\r\n idx,\r\n item,\r\n row,\r\n id\r\n });\r\n this.dataTable.scrollTo({\r\n top:\r\n row && row.offsetHeight\r\n ? row.offsetHeight * idx\r\n : 0,\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n }\r\n // this.dataTable.scrollToVirtualIndex(idx);\r\n });\r\n combineLatest([this.PayrollsSubject, this.View])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([payrolls, item]) => {\r\n this.log.verbose({\r\n type: 'PayrollExportPresenter:View',\r\n item,\r\n payrolls\r\n });\r\n this.items.forEach((x: any) => (x.canView = true));\r\n const i = this.items.find(x => x.id === item.id) as any;\r\n if (i && payrolls.length > 0) i.canView = false;\r\n });\r\n }\r\n isVisible = elem =>\r\n elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length;\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n this.log.verbose({\r\n type: 'PayrollExportPresenter:ngOnChanges',\r\n changes\r\n });\r\n if (changes && changes.items) {\r\n const item = this.items.find(item =>\r\n (Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportInProgressStatuses\r\n )\r\n .includes(item.ExportStatus)\r\n );\r\n if (item) {\r\n this.log.verbose({\r\n type: 'PayrollExportPresenter:ngOnChanges',\r\n item\r\n });\r\n setTimeout(() => {\r\n this.ScrollToItem.next(item);\r\n }, 0);\r\n }\r\n }\r\n }\r\n StatusClick(item: fromDataServices.PayrollExport.PayrollExportModel) {\r\n this.log.verbose({\r\n type: 'PayrollExportPresenter:StatusClick',\r\n item\r\n });\r\n this.onStatusClick(item);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PayrollExportRoute } from './payroll-export.route';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { PayrollExportContainerComponent } from './payroll-export-container';\r\nimport { PayrollExportPresenter } from './payroll-export-presenter';\r\nimport { SharedModule } from '../../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [PayrollExportRoute]\r\n })\r\n ],\r\n})\r\nexport class PayrollExportModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { PayrollExportContainerComponent } from './payroll-export-container/payroll-export-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const PayrollExportRoute: Ng2StateDeclaration = {\r\n // name: 'PayrollExport.**'\r\n name: 'sendpayroll',\r\n url: '/sendpayroll',\r\n // , loadChildren: () => import('./payroll-export.module').then(r => r.PayrollExportModule)\r\n data: { requiresAuth: true },\r\n\r\n component: PayrollExportContainerComponent\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport {\r\n EmployeePayrollItemContainerComponent,\r\n EmployeePayrollItemPresenter\r\n} from './employee-payroll-item';\r\nimport { EmployeePayrollItemRoute } from './employee-payroll-item/employee-payroll-item.route';\r\nimport { PayrollItemFeatureComponent } from './item/payroll-item-feature/payroll-item-feature.component';\r\nimport { PayrollItemRoute } from './item/payroll-item.route';\r\nimport { PayrollItemComponent } from './item/payroll-item/payroll-item.component';\r\nimport { PayrollItemEmployeeEffects } from './item/store/payroll-item-employee.effects';\r\nimport * as fromPayrollItemEmployee from './item/store/payroll-item-employee.reducer';\r\nimport { PayrollItemEffects } from './item/store/payroll-item.effects';\r\nimport * as fromPayrollItem from './item/store/payroll-item.reducer';\r\nimport { PayrollCodesComponent } from './third-party/payroll-codes/payroll-codes.component';\r\nimport { PayrollItemAssociationComponent } from './third-party/payroll-item-association/payroll-item-association.component';\r\nimport { ThirdPartyPayrollEffects } from './third-party/store/third-party-payroll.effects';\r\nimport * as fromThirdPartyPayroll from './third-party/store/third-party-payroll.reducer';\r\nimport { ThirdPartyPayrollContainerComponent } from './third-party/third-party-payroll-container/third-party-payroll-container.component';\r\nimport { ThirdPartyPayrollExportComponent } from './third-party/third-party-payroll-export/third-party-payroll-export.component';\r\nimport { ThirdPartyPayrollFileFormatComponent } from './third-party/third-party-payroll-file-format/third-party-payroll-file-format.component';\r\nimport { ThirdPartyPayrollRoute } from './third-party/third-party-payroll.route';\r\nimport { EmployeePayrollItemFilterComponent } from './employee-payroll-item/employee-payroll-item-filter/employee-payroll-item-filter.component';\r\nimport { PayrollExportModule } from './payroll-export/payroll-export.module';\r\nimport { PayrollExportContainerComponent } from './payroll-export/payroll-export-container';\r\nimport { PayrollExportPresenter } from './payroll-export/payroll-export-presenter';\r\n\r\n@NgModule({\r\n declarations: [\r\n PayrollItemComponent,\r\n PayrollItemFeatureComponent,\r\n ThirdPartyPayrollContainerComponent,\r\n PayrollCodesComponent,\r\n PayrollItemAssociationComponent,\r\n ThirdPartyPayrollFileFormatComponent,\r\n ThirdPartyPayrollExportComponent,\r\n EmployeePayrollItemContainerComponent,\r\n EmployeePayrollItemPresenter,\r\n EmployeePayrollItemFilterComponent,\r\n PayrollExportContainerComponent,\r\n PayrollExportPresenter\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n PayrollExportModule,\r\n StoreModule.forFeature(\r\n fromPayrollItem.payrollItemsFeatureKey,\r\n fromPayrollItem.reducer\r\n ),\r\n StoreModule.forFeature(\r\n fromPayrollItemEmployee.payrollItemEmployeesFeatureKey,\r\n fromPayrollItemEmployee.reducer\r\n ),\r\n EffectsModule.forFeature([\r\n PayrollItemEffects,\r\n PayrollItemEmployeeEffects,\r\n ThirdPartyPayrollEffects\r\n ]),\r\n UIRouterModule.forChild({\r\n states: [\r\n PayrollItemRoute,\r\n ThirdPartyPayrollRoute,\r\n EmployeePayrollItemRoute\r\n ]\r\n }),\r\n StoreModule.forFeature(\r\n fromThirdPartyPayroll.thirdPartyPayrollFeatureKey,\r\n fromThirdPartyPayroll.reducer\r\n )\r\n ]\r\n})\r\nexport class PayrollModule {}\r\n","export * from './store';\r\nexport * from './third-party-payroll-container';\r\nexport * from './payroll-codes';\r\n","export * from './payroll-codes.component';\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { IStatusMessage, ResponseStatus } from '../../../shared';\r\nimport { PayrollCode } from '../store';\r\nimport * as fromShared from '../../../shared';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-payroll-codes',\r\n templateUrl: './payroll-codes.component.html',\r\n styleUrls: ['./payroll-codes.component.scss']\r\n})\r\nexport class PayrollCodesComponent {\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n public editing?: PayrollCode = {} as PayrollCode;\r\n selected: PayrollCode[] = [];\r\n cloned: { [i: number]: PayrollCode } = {};\r\n @Input() items: PayrollCode[];\r\n private _selectedError: IStatusMessage;\r\n @Input() public externalIntegration: boolean;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n @Output() Save = new EventEmitter();\r\n @Output() Delete = new EventEmitter();\r\n @Output() Select = new EventEmitter();\r\n @Output() public ShowError = new EventEmitter();\r\n\r\n @Input() payrollCodesSelectItems: fromShared.SelectItem[];\r\n @Input() payrollCodesColumnHeaderSelectItems: fromShared.SelectItem[];\r\n @Input() payrollCodesDescSelectItems: fromShared.SelectItem[];\r\n\r\n onStatusClick(item: PayrollCode) {\r\n this.ShowError.emit({ open: true, MsgEntityID: item.id });\r\n }\r\n onRowEditInit(item: PayrollCode) {\r\n this.selected = [];\r\n this.cloned[item.id] = { ...item };\r\n this.editing = item;\r\n }\r\n onRowEditSave(item: PayrollCode) {\r\n item.Status = {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n };\r\n\r\n this.Save.next([item]);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: PayrollCode) {\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n this.items = [...this.items];\r\n this.selected = [];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowDelete(item: PayrollCode) {\r\n item.Status = {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Deleting'\r\n };\r\n\r\n this.Delete.next(item);\r\n }\r\n onRowSelect($event) {\r\n this.Select.next($event.data);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { EditGrid } from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { PayrollItem } from '../store';\r\n\r\n@Component({\r\n selector: 'ef-payroll-item-association',\r\n templateUrl: './payroll-item-association.component.html',\r\n styleUrls: ['./payroll-item-association.component.scss']\r\n})\r\nexport class PayrollItemAssociationComponent\r\n extends EditGrid\r\n implements OnInit, AfterViewInit, OnChanges {\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n @Input() payrollCodes: SelectItem[];\r\n @Input() payrollItemsSelectItems: SelectItem[];\r\n public availablePayrollItemsSubject = new ReplaySubject(1);\r\n public hideNoPayrollCode = false;\r\n private HideNoPayrollSubject = new ReplaySubject(1);\r\n public filteredItems$: Observable;\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n ngOnInit(): void {\r\n this.filteredItems$ = this.HideNoPayrollSubject.pipe(\r\n tap(hide =>\r\n this.log.verbose({\r\n type: 'PayrollItemAssociationComponent:filteredItems$',\r\n hide,\r\n items: this.items\r\n })\r\n ),\r\n switchMap(hide =>\r\n hide\r\n ? of(\r\n this.items.filter(\r\n x => !!x.ExportCode && x.ExportCode !== 'na'\r\n )\r\n )\r\n : of(this.items)\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PayrollItemAssociationComponent:filteredItems$',\r\n items\r\n })\r\n )\r\n );\r\n }\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.HideNoPayrollSubject.next(false);\r\n }, 100);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (\r\n changes &&\r\n changes.items &&\r\n changes.items.currentValue &&\r\n changes.items.currentValue.length > 0\r\n ) {\r\n this.HideNoPayrollSubject.next(false);\r\n }\r\n }\r\n onStatusClick(item: PayrollItem) {\r\n this.log.verbose({\r\n type: 'PayrollItemAssociationComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.PIListID });\r\n }\r\n onRowEditInit(item: PayrollItem) {\r\n this.log.verbose({\r\n type: 'PayrollItemAssociationComponent:onRowEditInit',\r\n item\r\n });\r\n const current =\r\n item && item.id !== 'add'\r\n ? [{ label: item.PayrollItem, value: item.PIListID }]\r\n : [];\r\n this.availablePayrollItemsSubject.next(\r\n current.concat(\r\n this.items\r\n .filter(x => !x.ExportCode)\r\n .map(x => ({ label: x.PayrollItem, value: x.PIListID }))\r\n )\r\n );\r\n super.onRowEditInit(item);\r\n }\r\n hideNoPayrollCodeChanged($event) {\r\n this.log.verbose({\r\n type: 'PayrollItemAssociationComponent:hideNoPayrollCodeChanged',\r\n $event\r\n });\r\n this.HideNoPayrollSubject.next($event);\r\n // if ($event) {\r\n // this.dataTable.filter(\r\n // $event ? true : null,\r\n // 'ExportCode',\r\n // 'contains'\r\n // );\r\n // } else {\r\n // this.dataTable.filter('', 'ExportCode', 'contains');\r\n // }\r\n }\r\n}\r\n","import { IStatusMessage } from '../../../shared';\r\n\r\nexport interface FileFormatModel {\r\n id: number;\r\n Fieldid: number;\r\n Fieldname: string;\r\n Fielddesc: string;\r\n Colheader: string;\r\n Isstandard?: boolean;\r\n Isexpensereimb?: boolean;\r\n Sequencenbr: number;\r\n Status?: IStatusMessage;\r\n}\r\n","export interface GeneralLedgerModel {\r\n accountSubtotalDescription: string;\r\n accountSubtotalString: string;\r\n checkAmount: number;\r\n checkIdentification: string;\r\n checkIdentificationCredit: string;\r\n checkIdentificationDebit: string;\r\n checkNumber: number;\r\n checkNumberCredit: number;\r\n checkNumberDebit: string;\r\n checkSequence: number;\r\n checkType: string;\r\n companyCode: string;\r\n companyID: string;\r\n creditAmount: number;\r\n debitAmount: number;\r\n debitCreditFlag: string;\r\n description: string;\r\n directDepositAmount: number;\r\n employeeNumber: string;\r\n endingDate: string;\r\n endingDateStringValue: string;\r\n fullGLAccount: string;\r\n glDetailDescription: string;\r\n glDetailExportDescription: string;\r\n glDetailExportFullName: string;\r\n glItemCategory: string;\r\n glItemDescription: string;\r\n glSegment1: string;\r\n glSegment2: string;\r\n glSegment3: string;\r\n glSegment4: string;\r\n includeRecord: true;\r\n isImpoundOffset: false;\r\n laborDepartment: string;\r\n lineNumber: number;\r\n payeeName: string;\r\n payrollPayDate: string;\r\n payrollPeriodBeginDate: string;\r\n payrollPeriodEndDate: string;\r\n payrollRunDate: string;\r\n payrollRunNumber: number;\r\n payrollType: string;\r\n recordType: number;\r\n residentGeoCode: string;\r\n residentState: string;\r\n schoolDistrict: number;\r\n totalAmount: number;\r\n totalHoursPaid: number;\r\n voucherNumber: string;\r\n voucherNumberCredit: string;\r\n voucherNumberDebit: string;\r\n workGeoCode: string;\r\n workState: string;\r\n}\r\n","export * from './payroll-code.model';\r\nexport * from './file-format.model';\r\nexport * from './general-ledger.model';\r\nexport * from '../../item/store/payroll-item.model';\r\nexport * from './third-party-payroll.model';\r\nexport * from './third-party-payroll.actions';\r\nexport * from './third-party-payroll.selectors';\r\nexport * from './third-party-payroll.reducer';\r\nexport * from '../../item/store/payroll-item.actions';\r\n","import { IStatusMessage } from '../../../shared';\r\n\r\nexport interface PayrollCode {\r\n id: string;\r\n Paycodeid: number;\r\n Paycode: string;\r\n Paycodedesc: string;\r\n Colheader: string;\r\n IsPremium: boolean;\r\n IsLWOP: boolean;\r\n Status?: IStatusMessage;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { ThirdPartyPayroll } from './third-party-payroll.model';\r\nimport { PayrollCode } from './payroll-code.model';\r\nimport { FileFormatModel } from './file-format.model';\r\nimport { Observable } from 'rxjs';\r\nimport { GeneralLedgerModel } from './general-ledger.model';\r\n\r\nexport const loadThirdPartyPayrolls = createAction(\r\n '[ThirdPartyPayroll/API] Load ThirdPartyPayrolls',\r\n props<{ thirdPartyPayrolls: ThirdPartyPayroll[] }>()\r\n);\r\n\r\nexport const addThirdPartyPayroll = createAction(\r\n '[ThirdPartyPayroll/API] Add ThirdPartyPayroll',\r\n props<{ thirdPartyPayroll: ThirdPartyPayroll }>()\r\n);\r\n\r\nexport const upsertThirdPartyPayroll = createAction(\r\n '[ThirdPartyPayroll/API] Upsert ThirdPartyPayroll',\r\n props<{ thirdPartyPayroll: ThirdPartyPayroll }>()\r\n);\r\n\r\nexport const addThirdPartyPayrolls = createAction(\r\n '[ThirdPartyPayroll/API] Add ThirdPartyPayrolls',\r\n props<{ thirdPartyPayrolls: ThirdPartyPayroll[] }>()\r\n);\r\n\r\nexport const upsertThirdPartyPayrolls = createAction(\r\n '[ThirdPartyPayroll/API] Upsert ThirdPartyPayrolls',\r\n props<{ thirdPartyPayrolls: ThirdPartyPayroll[] }>()\r\n);\r\n\r\nexport const updateThirdPartyPayroll = createAction(\r\n '[ThirdPartyPayroll/API] Update ThirdPartyPayroll',\r\n props<{ thirdPartyPayroll: Update }>()\r\n);\r\n\r\nexport const updateThirdPartyPayrolls = createAction(\r\n '[ThirdPartyPayroll/API] Update ThirdPartyPayrolls',\r\n props<{ thirdPartyPayrolls: Update[] }>()\r\n);\r\n\r\nexport const deleteThirdPartyPayroll = createAction(\r\n '[ThirdPartyPayroll/API] Delete ThirdPartyPayroll',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteThirdPartyPayrolls = createAction(\r\n '[ThirdPartyPayroll/API] Delete ThirdPartyPayrolls',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearThirdPartyPayrolls = createAction(\r\n '[ThirdPartyPayroll/API] Clear ThirdPartyPayrolls'\r\n);\r\nexport const getThirdPartyPayrolls = createAction(\r\n '[ThirdPartyPayroll/API] Get ThirdPartyPayrolls'\r\n);\r\nexport const getPayrollCodes = createAction(\r\n '[ThirdPartyPayroll/API] Get PayrollCodes'\r\n);\r\nexport const loadPayrollCodes = createAction(\r\n '[ThirdPartyPayroll/API] Load PayrollCodes',\r\n props<{ payrollCodes: PayrollCode[] }>()\r\n);\r\nexport const putPayrollCodes = createAction(\r\n '[ThirdPartyPayroll/API] Load putPayrollCodes',\r\n props<{ payrollCodes: PayrollCode[] }>()\r\n);\r\nexport const getFileFormat = createAction(\r\n '[ThirdPartyPayroll/API] getFileFormat'\r\n);\r\nexport const loadFileFormat = createAction(\r\n '[ThirdPartyPayroll/API] loadFileFormat',\r\n props<{ fileFormats: FileFormatModel[] }>()\r\n);\r\nexport const putFileFormat = createAction(\r\n '[ThirdPartyPayroll/API] putFileFormat',\r\n props<{ fileFormats: FileFormatModel[] }>()\r\n);\r\nexport const removePayrollCode = createAction(\r\n '[ThirdPartyPayroll/API] removePayrollCode',\r\n props<{ payrollId: number }>()\r\n);\r\nexport const deletePayrollCodes = createAction(\r\n '[ThirdPartyPayroll/API] deletePayrollCodes',\r\n props<{ payrollIds: number[] }>()\r\n);\r\nexport const confirmRemovePayrollCode = createAction(\r\n '[ThirdPartyPayroll/API] confirmRemovePayrollCode',\r\n props<{ payrollCode: PayrollCode }>()\r\n);\r\nexport const getPayrollExport = createAction(\r\n '[ThirdPartyPayroll/API] getPayrollExport',\r\n props<{ startDate: Date; endDate: Date; codeAsRow: boolean }>()\r\n);\r\nexport const sendPayrollExport = createAction(\r\n '[ThirdPartyPayroll/API] sendPayrollExport',\r\n props<{ id: string | number | undefined; endDate: Date }>()\r\n);\r\nexport const sendPayrollExportSuccess = createAction(\r\n '[ThirdPartyPayroll/API] sendPayrollExportSuccess',\r\n props<{ result: any }>()\r\n);\r\nexport const syncGL = createAction(\r\n '[ThirdPartyPayroll/API] syncGL',\r\n props<{ id: string | number | undefined; endDate: Date }>()\r\n);\r\nexport const syncGLSuccess = createAction(\r\n '[ThirdPartyPayroll/API] syncGLSuccess',\r\n props<{ result?: GeneralLedgerModel[] }>()\r\n);\r\nexport const syncGLFailure = createAction(\r\n '[ThirdPartyPayroll/API] syncGLFailure',\r\n props<{ e: any; c: Observable; id: string | number | undefined }>()\r\n);\r\nexport const fetchPayrollExportStatus = createAction(\r\n '[ThirdPartyPayroll/API] fetchPayrollExportStatus',\r\n props<{ id: string | number }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport {\r\n catchError,\r\n concatMap,\r\n flatMap,\r\n map,\r\n switchMap,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { ThirdPartyPayrollService } from '../third-party.service';\r\nimport * as fromShared from '../../../shared';\r\nimport * as ThirdPartyPayrollActions from './third-party-payroll.actions';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../../shared';\r\nimport { UnsavedChangesService } from '../../../shared/modal-dialog';\r\nimport {\r\n EntityActionFactory,\r\n EntityCollectionService,\r\n EntityOp,\r\n EntityServices\r\n} from '@ngrx/data';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { of } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\nconst log = new LoggingService();\r\n@Injectable()\r\nexport class ThirdPartyPayrollEffects {\r\n PayrollExportModelDS: EntityCollectionService;\r\n constructor(\r\n private actions$: Actions,\r\n private service: ThirdPartyPayrollService,\r\n private confirmservice: UnsavedChangesService,\r\n private toaster: fromShared.MessageService,\r\n public entityServices: EntityServices\r\n ) {\r\n this.PayrollExportModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.PayrollExport.entityName\r\n );\r\n log.verbose({\r\n type: 'ThirdPartyPayrollEffects::',\r\n entityServices,\r\n PayrollExportModelDS: this.PayrollExportModelDS\r\n });\r\n this.syncGLFailure$ = createEffect(\r\n () => {\r\n log.verbose({\r\n type: 'ThirdPartyPayrollEffects:syncGLFailure',\r\n message: 'create'\r\n });\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.syncGLFailure),\r\n withLatestFrom(this.PayrollExportModelDS.entities$),\r\n withLatestFrom(\r\n this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.syncGL)\r\n )\r\n ),\r\n map(x => {\r\n log.error({\r\n type: 'ThirdPartyPayrollEffects:syncGLFailure:map',\r\n x\r\n });\r\n x[0][1] = x[0][1]\r\n .filter(x1 => x1.id === x[0][0].id)\r\n .map(x1 => ({\r\n ...x1,\r\n Status: {\r\n StatusCode: ResponseStatus.Failed,\r\n Message:\r\n x[0][0]?.e?.status === 404\r\n ? 'No GL entries found'\r\n : x[0][0]?.e?.error\r\n ?.ExceptionMessage ||\r\n x[0][0]?.e?.error?.Message ||\r\n x[0][0]?.e?.statusText\r\n }\r\n }));\r\n return x;\r\n }),\r\n /** An EMPTY observable only emits completion. Replace with your own observable stream */\r\n switchMap(([[action, exp], req]) => {\r\n // switchMap(action => {\r\n log.error({\r\n type: 'ThirdPartyPayrollEffects:syncGLFailure',\r\n action,\r\n e: action.e,\r\n c: action.c,\r\n exp\r\n });\r\n this.PayrollExportModelDS.updateManyInCache(exp);\r\n this.toaster.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n life: 0,\r\n // detail: 'GL Sync Complete'\r\n detail: `GL Sync for ${moment(req.endDate).format(\r\n 'MM/DD/YYYY'\r\n )} - ${\r\n exp[0]?.Status?.Message ||\r\n action?.e?.error?.ExceptionMessage ||\r\n action?.e?.error?.Message\r\n }`\r\n });\r\n return action.c;\r\n // return fromShared.Errors.handleServiceError(\r\n // action.e,\r\n // action.c\r\n // );\r\n })\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n }\r\n getThirdPartyPayrolls$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.getThirdPartyPayrolls),\r\n switchMap(() =>\r\n this.service.get().pipe(\r\n map(data =>\r\n ThirdPartyPayrollActions.loadThirdPartyPayrolls({\r\n thirdPartyPayrolls: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getPayrollCodes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.getPayrollCodes),\r\n switchMap(() =>\r\n this.service.getPayrollCodes().pipe(\r\n flatMap(data => [\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...data\r\n .filter(\r\n r =>\r\n r.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n ThirdPartyPayrollActions.loadPayrollCodes({\r\n payrollCodes: data\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putPayrollCodes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.putPayrollCodes),\r\n switchMap(action =>\r\n this.service.putPayrollCodes(action.payrollCodes).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n ThirdPartyPayrollActions.loadPayrollCodes({\r\n payrollCodes: resp.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Paycodeid.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n ThirdPartyPayrollActions.loadPayrollCodes({\r\n payrollCodes: resp.Items\r\n })\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n confirmRemovePayrollCode$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.confirmRemovePayrollCode),\r\n switchMap(action =>\r\n this.confirmservice\r\n .confirm({\r\n dialogText:\r\n 'Are you sure you want to delete this Payroll Code?'\r\n })\r\n .pipe(\r\n map(x =>\r\n x\r\n ? ThirdPartyPayrollActions.removePayrollCode({\r\n payrollId: action.payrollCode.Paycodeid\r\n })\r\n : ThirdPartyPayrollActions.loadPayrollCodes({\r\n payrollCodes: [\r\n {\r\n ...action.payrollCode,\r\n Status: {\r\n StatusCode:\r\n ResponseStatus.None,\r\n Message: ''\r\n }\r\n }\r\n ]\r\n })\r\n )\r\n )\r\n )\r\n )\r\n );\r\n removePayrollCode$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.removePayrollCode),\r\n switchMap(action =>\r\n this.service.deletePayrollCode(action.payrollId).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n ThirdPartyPayrollActions.deletePayrollCodes({\r\n payrollIds: resp.Items.map(\r\n x => x.EntityID as number\r\n )\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.EntityID.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putFileFormat$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.putFileFormat),\r\n switchMap(action =>\r\n this.service.putFileFormats(action.fileFormats).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n ThirdPartyPayrollActions.loadFileFormat({\r\n fileFormats: resp.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.Fieldid.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n ThirdPartyPayrollActions.loadFileFormat({\r\n fileFormats: resp.Items\r\n })\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getFileFormat$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.getFileFormat),\r\n switchMap(() =>\r\n this.service.getFileFormat().pipe(\r\n map(data =>\r\n ThirdPartyPayrollActions.loadFileFormat({\r\n fileFormats: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getPayrollExport$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.getPayrollExport),\r\n switchMap(action =>\r\n this.service\r\n .getPayrollExport(\r\n action.startDate,\r\n action.endDate,\r\n action.codeAsRow\r\n )\r\n .pipe(\r\n map(data =>\r\n ThirdPartyPayrollActions.loadThirdPartyPayrolls({\r\n thirdPartyPayrolls: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n syncGL$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.syncGL),\r\n switchMap(action =>\r\n this.service.syncGL(action.endDate).pipe(\r\n tap(result =>\r\n log.verbose({\r\n type: 'ThirdPartyPayrollEffects:syncGL',\r\n result\r\n })\r\n ),\r\n map(result => {\r\n log.verbose({\r\n type: 'ThirdPartyPayrollEffects:syncGL:success',\r\n result\r\n });\r\n return ThirdPartyPayrollActions.syncGLSuccess({\r\n result\r\n });\r\n }),\r\n catchError((e, c) => {\r\n log.verbose({\r\n type: 'ThirdPartyPayrollEffects:syncGL:failure',\r\n e,\r\n c\r\n });\r\n return of(\r\n ThirdPartyPayrollActions.syncGLFailure({\r\n e,\r\n c,\r\n id: action.id\r\n })\r\n );\r\n })\r\n )\r\n )\r\n );\r\n });\r\n syncGLFailure$: any;\r\n syncGLSuccess$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.syncGLSuccess),\r\n withLatestFrom(\r\n this.actions$.pipe(ofType(ThirdPartyPayrollActions.syncGL))\r\n ),\r\n map(([result, action]) => {\r\n this.toaster.add({\r\n severity: 'success',\r\n summary: 'Success',\r\n life: 0,\r\n // detail: 'GL Sync Complete'\r\n detail: `GL Sync for ${moment(action.endDate).format(\r\n 'MM/DD/YYYY'\r\n )} Complete`\r\n });\r\n })\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n sendPayrollExport$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.sendPayrollExport),\r\n switchMap(action =>\r\n this.service.sendPayroll(action.endDate).pipe(\r\n map(result => {\r\n const af = new EntityActionFactory();\r\n const action = af.create(\r\n fromDataServices.PayrollExport.entityName,\r\n EntityOp.SAVE_UPSERT_ONE_SUCCESS,\r\n {\r\n ...result\r\n }\r\n );\r\n return action;\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n fetchPayrollExportStatus$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ThirdPartyPayrollActions.fetchPayrollExportStatus),\r\n switchMap(action =>\r\n this.service.fetchPayrollExportStatus(action.id).pipe(\r\n map(result => {\r\n const af = new EntityActionFactory();\r\n // if (update.changes.SyncPayrollItems === true) {\r\n const action = af.create(\r\n fromDataServices.PayrollExport.entityName,\r\n EntityOp.SAVE_UPSERT_ONE_SUCCESS,\r\n {\r\n ...result,\r\n Status: {\r\n StatusCode: (Object as any)\r\n .values(\r\n fromDataServices.PayrollExport\r\n .PayrollExportCompletedSuccessStatuses\r\n )\r\n .includes(result.ExportStatus)\r\n ? ResponseStatus.Success\r\n : ResponseStatus.Failed,\r\n Message: result.ExportStatus\r\n }\r\n // id: result.id,\r\n // changed: true,\r\n // changes: {\r\n // ...result,\r\n // id: result.id\r\n // }\r\n }\r\n );\r\n return action;\r\n }),\r\n catchError((e, c) => {\r\n let error;\r\n if (e instanceof Function) {\r\n error = e();\r\n } else {\r\n error = e;\r\n }\r\n this.confirmservice.confirm({\r\n showCancel: false,\r\n headerText: 'Error',\r\n dialogText:\r\n error &&\r\n (error.message ||\r\n error.statusText ||\r\n (error.Error && error.Error.Message) ||\r\n (error.error && error.error.message) ||\r\n (error.error && error.error.statusText) ||\r\n error)\r\n });\r\n\r\n return fromShared.Errors.handleServiceError(\r\n {\r\n ...e,\r\n MsgProcessID:\r\n fromShared.ProcessEnum.PayrollExport,\r\n MsgEntityID: action.id\r\n },\r\n c\r\n );\r\n })\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","export interface ThirdPartyPayroll {\r\n id: string;\r\n}\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { ThirdPartyPayroll } from './third-party-payroll.model';\r\nimport * as ThirdPartyPayrollActions from './third-party-payroll.actions';\r\nimport * as fromThirdPartyPayroll from './third-party-payroll.reducer';\r\nimport { PayrollCode } from './payroll-code.model';\r\nimport { FileFormatModel } from './file-format.model';\r\n\r\nexport const thirdPartyPayrollFeatureKey = 'thirdPartyPayroll';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n // [fromThirdPartyPayroll.thirdPartyPayrollFeatureKey]: fromThirdPartyPayroll.State;\r\n payrollCodes: PayrollCode[];\r\n fileFormats: FileFormatModel[];\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n payrollCodes: [],\r\n fileFormats: []\r\n});\r\n\r\nexport const reducer = createReducer(\r\n initialState,\r\n on(ThirdPartyPayrollActions.addThirdPartyPayroll, (state, action) =>\r\n adapter.addOne(action.thirdPartyPayroll, state)\r\n ),\r\n on(ThirdPartyPayrollActions.upsertThirdPartyPayroll, (state, action) =>\r\n adapter.upsertOne(action.thirdPartyPayroll, state)\r\n ),\r\n on(ThirdPartyPayrollActions.addThirdPartyPayrolls, (state, action) =>\r\n adapter.addMany(action.thirdPartyPayrolls, state)\r\n ),\r\n on(ThirdPartyPayrollActions.upsertThirdPartyPayrolls, (state, action) =>\r\n adapter.upsertMany(action.thirdPartyPayrolls, state)\r\n ),\r\n on(ThirdPartyPayrollActions.updateThirdPartyPayroll, (state, action) =>\r\n adapter.updateOne(action.thirdPartyPayroll, state)\r\n ),\r\n on(ThirdPartyPayrollActions.updateThirdPartyPayrolls, (state, action) =>\r\n adapter.updateMany(action.thirdPartyPayrolls, state)\r\n ),\r\n on(ThirdPartyPayrollActions.deleteThirdPartyPayroll, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(ThirdPartyPayrollActions.deleteThirdPartyPayrolls, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(ThirdPartyPayrollActions.loadThirdPartyPayrolls, (state, action) =>\r\n adapter.setAll(action.thirdPartyPayrolls, state)\r\n ),\r\n on(ThirdPartyPayrollActions.clearThirdPartyPayrolls, state =>\r\n adapter.removeAll(state)\r\n ),\r\n on(ThirdPartyPayrollActions.loadPayrollCodes, (state, action) => ({\r\n ...state,\r\n payrollCodes: [\r\n ...state.payrollCodes.filter(\r\n x =>\r\n !action.payrollCodes\r\n .map(y => y.Paycodeid)\r\n .includes(x.Paycodeid)\r\n ),\r\n ...action.payrollCodes\r\n ]\r\n })),\r\n on(ThirdPartyPayrollActions.deletePayrollCodes, (state, action) => ({\r\n ...state,\r\n payrollCodes: [\r\n ...state.payrollCodes.filter(\r\n x => !action.payrollIds.includes(x.Paycodeid)\r\n )\r\n ]\r\n })),\r\n on(ThirdPartyPayrollActions.loadFileFormat, (state, action) => ({\r\n ...state,\r\n fileFormats: [\r\n ...state.fileFormats.filter(\r\n x => !action.fileFormats.map(a => a.Fieldid).includes(x.Fieldid)\r\n ),\r\n ...action.fileFormats\r\n ]\r\n }))\r\n);\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromThirdPartyPayroll from './third-party-payroll.reducer';\r\n\r\nexport const selectThirdPartyPayrollState =\r\n createFeatureSelector(\r\n fromThirdPartyPayroll.thirdPartyPayrollFeatureKey\r\n );\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromThirdPartyPayroll.adapter.getSelectors(selectThirdPartyPayrollState);\r\n\r\nexport const selectPayrollCodes = createSelector(\r\n selectThirdPartyPayrollState,\r\n (state: fromThirdPartyPayroll.State) =>\r\n [...state.payrollCodes].sort((a, b) =>\r\n a.Paycode.localeCompare(b.Paycode)\r\n )\r\n);\r\nexport const selectFileFormats = createSelector(\r\n selectThirdPartyPayrollState,\r\n (state: fromThirdPartyPayroll.State) => state.fileFormats\r\n);\r\n","export * from './third-party-payroll-container.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, iif, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n startWith,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromSettings from '../../../company-setting';\r\nimport { ScheduledDate } from '../../../lookups/store/schedule-date.model';\r\nimport * as fromScheduledDates from '../../../lookups/store/schedule-date.selectors';\r\nimport * as fromShared from '../../../shared';\r\nimport { ResponseStatus } from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../../user-info';\r\nimport { PayrollItem } from '../../item/store';\r\nimport * as payrollItemActions from '../../item/store/payroll-item.actions';\r\nimport * as fromPayrollItem from '../../item/store/payroll-item.selectors';\r\nimport * as fromStore from '../store';\r\nimport { PayrollCode } from '../store';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport * as fromDataServices from '../../../data-services';\r\n@Component({\r\n selector: 'ef-third-party-payroll-container',\r\n templateUrl: './third-party-payroll-container.component.html',\r\n styleUrls: ['./third-party-payroll-container.component.scss']\r\n})\r\nexport class ThirdPartyPayrollContainerComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n userInfo$: Observable;\r\n payrollCodes$: Observable;\r\n payrollCodesSelectItems$: Observable;\r\n payrollCodesColumnHeaderSelectItems$: Observable;\r\n payrollCodesDescSelectItems$: Observable;\r\n payrollItems$: Observable;\r\n payrollItemsSelectItems$: Observable;\r\n thirdPartyPayroll$: Observable;\r\n externalIntegration$: Observable;\r\n fileFormats$: Observable;\r\n availableColumns$: Observable;\r\n payrollExportFormat$: Observable;\r\n SavePayrollItemSubject = new ReplaySubject(1);\r\n payPeriodDatesSelectItems$: Observable;\r\n payPeriodDates$: Observable;\r\n qboOnline$: Observable;\r\n private payCodeAddTemplate: fromStore.PayrollCode = {\r\n id: 'add',\r\n Paycodeid: -1,\r\n Paycode: '',\r\n Paycodedesc: '',\r\n Colheader: '',\r\n Status: {\r\n Message: 'Adding',\r\n StatusCode: ResponseStatus.None\r\n },\r\n IsLWOP: false,\r\n IsPremium: false\r\n };\r\n ShowErrorSubject = new ReplaySubject(1);\r\n PayrollExportFormatChangedSubject = new ReplaySubject(1);\r\n ExportSubject = new ReplaySubject<{\r\n scheduledDateID: string;\r\n codeAsRow: boolean;\r\n }>(1);\r\n active = true;\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.store.dispatch(fromStore.getThirdPartyPayrolls());\r\n this.store.dispatch(fromStore.getPayrollCodes());\r\n this.store.dispatch(fromStore.getFileFormat());\r\n this.store.dispatch(payrollItemActions.getPayrollItems());\r\n // for govconpay since they are currently the only external api integration this is true or false\r\n // will probably need to determine who the external integrator is and based on that determine if the\r\n // export format is fixed or not. RN govconpay is fixed format.\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'ExternalEmployeeSource'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'PayrollExportFormat'\r\n })\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(\r\n select(fromShared.selectAll),\r\n map(x => x[0])\r\n );\r\n this.userInfo$ = this.store.pipe(\r\n select(fromUser.getUserInfo)\r\n // map(x => x.PrevPayPeriodEnd)\r\n );\r\n this.externalIntegration$ = this.store.pipe(\r\n select(\r\n fromSettings.getSettingBooleanValue('ExternalEmployeeSource')\r\n )\r\n );\r\n\r\n this.payPeriodDates$ = this.store.pipe(\r\n select(\r\n fromScheduledDates.selectScheduledDateType({\r\n ScheduledDateType: 'PPE'\r\n })\r\n )\r\n );\r\n this.payPeriodDatesSelectItems$ = this.payPeriodDates$.pipe(\r\n map(dates =>\r\n dates.map(d => ({\r\n label: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YY'\r\n )} - ${moment(d.ScheduledEndDate).format('MM/DD/YY')} ${\r\n d.ScheduledDatePurpose\r\n }`,\r\n value: d.ScheduledDateID\r\n }))\r\n )\r\n );\r\n this.payrollCodes$ = this.store.pipe(\r\n select(fromStore.selectPayrollCodes),\r\n map(x => clone(x) as fromStore.PayrollCode[]),\r\n withLatestFrom(this.externalIntegration$),\r\n map(([paycodes, gcp]) =>\r\n gcp ? paycodes : [{ ...this.payCodeAddTemplate }, ...paycodes]\r\n )\r\n );\r\n this.payrollCodesSelectItems$ = this.payrollCodes$.pipe(\r\n map(c => c.filter(x => x.Paycodeid >= 0)),\r\n map(c =>\r\n c.map(x => ({\r\n label: `${x.Paycode}${\r\n x.Paycodedesc ? `- ${x.Paycodedesc}` : ''\r\n }`,\r\n value: x.Paycode\r\n }))\r\n )\r\n );\r\n this.payrollCodesColumnHeaderSelectItems$ = this.payrollCodes$.pipe(\r\n map(c => c.filter(x => x.Paycodeid >= 0)),\r\n map(c => fromShared.uniqBy(c, x => x.Colheader) as PayrollCode[]),\r\n map(c =>\r\n c.map(x => ({\r\n label: x.Colheader,\r\n value: x.Colheader\r\n }))\r\n )\r\n );\r\n this.payrollCodesDescSelectItems$ = this.payrollCodes$.pipe(\r\n map(c => c.filter(x => x.Paycodeid >= 0 && x.Paycodedesc != null)),\r\n map(c =>\r\n c.map(x => ({\r\n label: x.Paycodedesc,\r\n value: x.Paycodedesc\r\n }))\r\n )\r\n );\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromPayrollItem.selectAll),\r\n map(x => clone(x) as PayrollItem[])\r\n );\r\n this.payrollItemsSelectItems$ = this.payrollItems$.pipe(\r\n map(p =>\r\n p.map(x => ({\r\n label: x.PayrollItem,\r\n value: x.PIListID\r\n }))\r\n )\r\n );\r\n\r\n let seq = 0;\r\n this.thirdPartyPayroll$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n map(x => clone(x) as fromStore.ThirdPartyPayroll[])\r\n );\r\n this.fileFormats$ = this.store.pipe(\r\n select(fromStore.selectFileFormats),\r\n map(x => clone(x) as fromStore.FileFormatModel[]),\r\n tap(x => (seq = x.reduce((a, c) => Math.max(a, c.Sequencenbr), 0))),\r\n map(x =>\r\n x.map(y => {\r\n if (y.Sequencenbr) {\r\n seq = y.Sequencenbr + 1;\r\n }\r\n return { ...y, sequence: y.Sequencenbr || seq };\r\n })\r\n ),\r\n map(x => x.sort((a, b) => a.Sequencenbr - b.Sequencenbr))\r\n );\r\n this.payrollExportFormat$ = this.store.pipe(\r\n select(fromSettings.selectEntities),\r\n map(\r\n (x: Dictionary) =>\r\n x['PayrollExportFormat'] &&\r\n x['PayrollExportFormat'].SettingValue\r\n )\r\n );\r\n this.qboOnline$ = this.store.pipe(select(fromSettings.isQBOEnabled));\r\n }\r\n setupSubscriptions() {\r\n this.ShowErrorSubject.pipe(\r\n withLatestFrom(this.process$.pipe(startWith(null))),\r\n takeWhile(() => this.active)\r\n ).subscribe(([error, process]) => {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:onShowError$',\r\n process,\r\n error\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: error.open,\r\n MsgEntityID: error.MsgEntityID,\r\n MsgProcessID: (process && process.ProcessID) ?? undefined\r\n })\r\n );\r\n });\r\n\r\n combineLatest([\r\n this.payrollExportFormat$,\r\n this.PayrollExportFormatChangedSubject\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(\r\n ([prev, next]) =>\r\n prev !== next && next !== null && next !== undefined\r\n )\r\n )\r\n .subscribe(([prev, next]) => {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:PayrollExportFormatChangedSubject',\r\n prev,\r\n next\r\n });\r\n this.store.dispatch(\r\n fromSettings.putCompanySettings({\r\n settings: [\r\n {\r\n SettingType: 'PayrollExportFormat',\r\n SettingValue: next\r\n }\r\n ]\r\n })\r\n );\r\n });\r\n this.SavePayrollItemSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.payrollItems$)\r\n ).subscribe(([items, payrolls]) => {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:SavePayrollItemSubject',\r\n items,\r\n payrolls\r\n });\r\n this.store.dispatch(\r\n fromStore.putPayrollItems({\r\n items: items.map(i => {\r\n const p = payrolls.find(x => x.PIListID === i.PIListID);\r\n return {\r\n ...p,\r\n ExportCode: i.ExportCode\r\n };\r\n })\r\n })\r\n );\r\n });\r\n\r\n this.ExportSubject.pipe(\r\n withLatestFrom(this.payPeriodDates$),\r\n takeWhile(() => this.active)\r\n ).subscribe(([e, payDates]) => {\r\n const pd = payDates.find(\r\n x => x.ScheduledDateID === e.scheduledDateID\r\n );\r\n if (pd) {\r\n this.store.dispatch(\r\n fromStore.getPayrollExport({\r\n codeAsRow: e.codeAsRow,\r\n startDate: pd.ScheduledStartDate,\r\n endDate: pd.ScheduledEndDate\r\n })\r\n );\r\n }\r\n });\r\n }\r\n onShowError($event) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:onShowError',\r\n $event\r\n });\r\n this.ShowErrorSubject.next($event);\r\n }\r\n onSaveFileFormat($event) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:onSaveFileFormat',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putFileFormat({ fileFormats: $event }));\r\n }\r\n onSavePayrollItem($event: PayrollItem[]) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:onSavePayrollItem',\r\n $event\r\n });\r\n this.SavePayrollItemSubject.next($event);\r\n }\r\n onSavePayrollCode($event: PayrollCode[]) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:onSavePayrollCode',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromStore.putPayrollCodes({ payrollCodes: $event })\r\n );\r\n }\r\n onDeletePayrollCode($event: PayrollCode) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:onDeletePayrollCode',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromStore.confirmRemovePayrollCode({ payrollCode: $event })\r\n );\r\n }\r\n onExport($event) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollContainerComponent:onExport',\r\n $event\r\n });\r\n this.ExportSubject.next($event);\r\n }\r\n onPayrollExportFormatChanged($event) {\r\n this.PayrollExportFormatChangedSubject.next($event);\r\n this.store.dispatch(fromStore.clearThirdPartyPayrolls());\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { filter, take, takeWhile, tap } from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { FileFormatModel, ThirdPartyPayroll } from '../store';\r\n@Component({\r\n selector: 'ef-third-party-payroll-export',\r\n templateUrl: './third-party-payroll-export.component.html',\r\n styleUrls: ['./third-party-payroll-export.component.scss']\r\n})\r\nexport class ThirdPartyPayrollExportComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private itemsSubject = new ReplaySubject();\r\n private PayrollExportFormatSubject = new ReplaySubject(1);\r\n private _payrollExportFormat: string;\r\n @Input() externalIntegration: boolean;\r\n @Input() public set payrollExportFormat(value: string) {\r\n this.exportFormGroup.controls['payrollCodeFormat'].setValue(value);\r\n this._payrollExportFormat = value;\r\n this.PayrollExportFormatSubject.next(value);\r\n }\r\n public get payrollExportFormat(): string {\r\n return this._payrollExportFormat;\r\n }\r\n private _items: ThirdPartyPayroll[];\r\n @Input() public set items(value: ThirdPartyPayroll[]) {\r\n this._items = value;\r\n this.itemsSubject.next(value);\r\n }\r\n public get items(): ThirdPartyPayroll[] {\r\n return this._items;\r\n }\r\n private fileFormatsSubject = new ReplaySubject();\r\n private _fileFormats: FileFormatModel[];\r\n @Input() public set fileFormats(value: FileFormatModel[]) {\r\n this._fileFormats = value;\r\n this.fileFormatsSubject.next(value);\r\n }\r\n public get fileFormats(): FileFormatModel[] {\r\n return this._fileFormats;\r\n }\r\n private PayPeriodDatesSubject = new ReplaySubject(1);\r\n private _payPeriodDates: SelectItem[];\r\n @Input() public set payPeriodDates(value: SelectItem[]) {\r\n this._payPeriodDates = value;\r\n this.PayPeriodDatesSubject.next(value);\r\n }\r\n public get payPeriodDates(): SelectItem[] {\r\n return this._payPeriodDates;\r\n }\r\n private StartDateSubject = new ReplaySubject(1);\r\n private _startDate: Date;\r\n @Input() public set startDate(value: Date) {\r\n this._startDate = value;\r\n this.StartDateSubject.next(value);\r\n }\r\n public get startDate(): Date {\r\n return this._startDate;\r\n }\r\n @Input() endDate: Date;\r\n @Output() UploadPayroll = new ReplaySubject(1);\r\n cols: {\r\n field: string;\r\n header: string;\r\n include: boolean;\r\n seq: number;\r\n }[];\r\n moment: any;\r\n @Output() PayrollExportFormatChanged = new EventEmitter();\r\n @Output() Export = new EventEmitter();\r\n exportFormGroup: FormGroup;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n protected loading = false;\r\n private active = true;\r\n constructor(private log: LoggingService) {\r\n this.exportFormGroup = new FormGroup({\r\n scheduledDates: new FormControl(null, Validators.required),\r\n payrollCodeFormat: new FormControl(\r\n this.payrollExportFormat,\r\n Validators.required\r\n )\r\n });\r\n this.setupSubscriptions();\r\n this.moment = moment;\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.itemsSubject, this.fileFormatsSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(() => (this.loading = false)),\r\n filter(\r\n ([items, fileFormats]) =>\r\n !!items &&\r\n items.length > 0 &&\r\n !!fileFormats &&\r\n fileFormats.length > 0\r\n )\r\n )\r\n .subscribe(([items, fileFormats]) => {\r\n const keys = Object.keys(items[0] as any);\r\n this.cols = keys\r\n .filter(k => k !== 'id')\r\n .map(k => {\r\n const ff = fileFormats.find(\r\n x =>\r\n x.Fieldname.toLocaleLowerCase() ===\r\n k.toLocaleLowerCase()\r\n );\r\n return {\r\n field: k,\r\n header: ff ? ff.Colheader : k,\r\n include: ff ? ff.Isstandard === true : true,\r\n seq: ff ? ff.Sequencenbr : 99\r\n };\r\n })\r\n .filter(c => c.include)\r\n .sort((a, b) => a.seq - b.seq);\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollExportComponent:cols',\r\n items,\r\n fileFormats,\r\n cols: this.cols\r\n });\r\n });\r\n\r\n combineLatest([\r\n this.PayPeriodDatesSubject,\r\n this.StartDateSubject,\r\n this.PayrollExportFormatSubject\r\n ])\r\n .pipe(take(1))\r\n .subscribe(([dates, startDate]) => {\r\n if (startDate) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollExportComponent:PayPeriodDatesSubject,StartDateSubject,PayrollExportFormatSubject',\r\n value: moment(startDate).format('MM/DD/YY'),\r\n dates,\r\n startDate\r\n });\r\n const controls = this.exportFormGroup.controls;\r\n const payPeriod = dates.find(x =>\r\n (x.label as string).startsWith(\r\n moment(startDate).format('MM/DD/YY')\r\n )\r\n );\r\n if (payPeriod) {\r\n controls['scheduledDates'].setValue(payPeriod.value);\r\n this.getPayrollExport();\r\n }\r\n }\r\n });\r\n\r\n this.exportFormGroup.controls['payrollCodeFormat'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => this.PayrollExportFormatChanged.emit(value));\r\n }\r\n\r\n ngOnInit(): void {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngAfterViewInit() {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollExportComponent:ngAfterViewInit',\r\n startDate: this.startDate,\r\n endDate: this.endDate\r\n });\r\n }\r\n getPayrollExport() {\r\n this.loading = true;\r\n const controls = this.exportFormGroup.controls;\r\n // this.log.verbose({\r\n // type: 'ThirdPartyPayrollExportComponent:getPayrollExport',\r\n // controls: controls.value\r\n // });\r\n let codeAsRow = false;\r\n try {\r\n codeAsRow =\r\n (controls['payrollCodeFormat'].value as string)\r\n ?.toLocaleLowerCase()\r\n ?.localeCompare('row') === 0;\r\n } catch (error) {}\r\n this.Export.next({\r\n scheduledDateID: controls['scheduledDates'].value,\r\n codeAsRow\r\n });\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { IStatusMessage, ResponseStatus } from '../../../shared';\r\nimport { FileFormatModel } from '../store/file-format.model';\r\nimport * as fromShared from '../../../shared';\r\nimport { SelectItem } from '../../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { IShowErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-third-party-payroll-file-format',\r\n templateUrl: './third-party-payroll-file-format.component.html',\r\n styleUrls: ['./third-party-payroll-file-format.component.scss']\r\n})\r\nexport class ThirdPartyPayrollFileFormatComponent implements OnInit {\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n public editing: FileFormatModel = {} as FileFormatModel;\r\n selected: FileFormatModel[] = [];\r\n cloned: { [i: number]: FileFormatModel } = {};\r\n @Input() items: FileFormatModel[];\r\n @Input() columns: SelectItem[];\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n @Output() Save = new EventEmitter();\r\n @Output() Select = new EventEmitter();\r\n @Output() public ShowError = new EventEmitter();\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n constructor(\r\n private log: LoggingService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n onStatusClick(item: FileFormatModel) {\r\n this.ShowError.emit({ open: true, MsgEntityID: item.id.toString() });\r\n }\r\n onRowEditInit(item: FileFormatModel) {\r\n this.cloned[item.id] = { ...item };\r\n this.editing = item;\r\n this.selected = fromShared.uniqBy(\r\n [...(this.selected || []), item],\r\n x => x.id\r\n );\r\n }\r\n onRowEditSave(item: FileFormatModel) {\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollFileFormatComponent:onRowEditSave',\r\n item,\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n\r\n this.Save.next([item]);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: FileFormatModel) {\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n this.items = [...this.items];\r\n this.selected = [];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowSelect($event) {\r\n this.Select.next($event.data);\r\n }\r\n onRowReorderHandler($event: { dragIndex: number; dropIndex: number }) {\r\n // TODO: save everything after the drop index\r\n const start = Math.min($event.dragIndex, $event.dropIndex);\r\n const stop = Math.max($event.dragIndex, $event.dropIndex);\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollFileFormatComponent:onRowReorderHandler',\r\n $event,\r\n start,\r\n stop,\r\n items: this.items\r\n });\r\n this.items.splice(\r\n $event.dropIndex,\r\n 0,\r\n this.items.splice($event.dragIndex, 1)[0]\r\n );\r\n // this.items[$event.dragIndex].sequence = $event.dropIndex;\r\n for (let i = start; i < this.items.length - 1; i++) {\r\n this.items[i].Sequencenbr = i;\r\n }\r\n this.Save.next(this.items.slice(start, stop + 1));\r\n // this.cdRef.detectChanges();\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../../shared/category/categories.service';\r\nimport * as fromTP from '.';\r\nimport { processResolver } from '../../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const ThirdPartyPayrollRoute: Ng2StateDeclaration = {\r\n // name: 'PayrollItem.**'\r\n name: 'thirdpartypayroll',\r\n url: '/thirdpartypayroll',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.PayrollItemModule)\r\n data: { requiresAuth: true },\r\n // params: { process: {} },\r\n // resolve: [\r\n // {\r\n // token: 'process',\r\n // deps: [Transition, CategoriesService],\r\n // resolveFn: processResolver\r\n // }\r\n // ],\r\n component: fromTP.ThirdPartyPayrollContainerComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport { Guid, IDeleteEntity, IGenericResponse } from '../../shared';\r\nimport { LoadingService } from '../../shared/loading';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromRoot from '../../store';\r\nimport * as moment from 'moment';\r\nimport { GeneralLedgerModel, PayrollCode, ThirdPartyPayroll } from './store';\r\nimport { FileFormatModel } from './store/file-format.model';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThirdPartyPayrollService extends LoadingService {\r\n private uri = `${environment.apiLocation}/ThirdPartyPayroll`;\r\n private uriUpload = `${environment.apiLocation}/PayrollExport/UploadPayroll`;\r\n private uriPayrollExport = `${environment.apiLocation}/PayrollExport`;\r\n private uriUpdatePayrollExportStatus = `${environment.apiLocation}/PayrollExport/UpdateStatus`;\r\n private uriSyncGL = `${environment.apiLocation}/PayrollExport/SyncGL`;\r\n private uriPayrollCode = `${environment.apiLocation}/PayrollCode`;\r\n private uriFileFormat = `${environment.apiLocation}/PayrollExportFormat`;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected rootStore: Store,\r\n private log: LoggingService\r\n ) {\r\n super(rootStore);\r\n }\r\n\r\n public get(): Observable {\r\n super.Load();\r\n return this.http.get(this.uri).pipe(\r\n tap(data => {\r\n super.Stop();\r\n }),\r\n map(items =>\r\n items.map(x => ({\r\n ...x,\r\n // Status: x.Status || {\r\n // StatusCode: null,\r\n // Message: null\r\n // },\r\n id: this.getThirdPartyPayrollId(x)\r\n }))\r\n )\r\n );\r\n }\r\n public put(\r\n items: ThirdPartyPayroll[]\r\n ): Observable> {\r\n super.Load();\r\n return this.http\r\n .put>(this.uri, {\r\n ThirdPartyPayrollItems: items\r\n })\r\n .pipe(\r\n tap(() => {\r\n super.Stop();\r\n }),\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(x => ({\r\n ...x,\r\n // Status: x.Status || {\r\n // StatusCode: null,\r\n // Message: null\r\n // },\r\n id: this.getThirdPartyPayrollId(x)\r\n }))\r\n }))\r\n );\r\n }\r\n public getPayrollExport(\r\n startDate: Date,\r\n endDate: Date,\r\n codeAsRow: boolean\r\n ) {\r\n super.Load();\r\n return this.http\r\n .post(this.uriPayrollExport, {\r\n Startdate: startDate,\r\n Enddate: endDate,\r\n Codeasrow: codeAsRow ? 1 : 0\r\n })\r\n .pipe(\r\n // map(resp => JSON.parse(resp)),\r\n tap(resp => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollService:getPayrollExport',\r\n resp\r\n });\r\n }),\r\n map(resp =>\r\n resp.map(x => ({\r\n ...x,\r\n id: this.getThirdPartyPayrollId(x)\r\n }))\r\n )\r\n );\r\n }\r\n public fetchPayrollExportStatus(\r\n id: string | number\r\n ): Observable {\r\n return this.http\r\n .get(\r\n `${this.uriUpdatePayrollExportStatus}/${id}`\r\n )\r\n .pipe(\r\n tap(() => {\r\n super.Stop();\r\n })\r\n );\r\n }\r\n\r\n public sendPayroll(endDate: Date): Observable {\r\n return this.http\r\n .post(\r\n `${this.uriUpload}/${moment(endDate).format('YYYY-MM-DD')}`,\r\n null\r\n )\r\n .pipe(\r\n tap(() => {\r\n super.Stop();\r\n })\r\n );\r\n }\r\n\r\n public getPayrollCodes(): Observable {\r\n // return of((payrollCodeData as any).default);\r\n super.Load();\r\n return this.http.get(this.uriPayrollCode).pipe(\r\n tap(() => {\r\n super.Stop();\r\n }),\r\n map(items =>\r\n items.map(x => ({\r\n ...x,\r\n // Status: x.Status || {\r\n // StatusCode: null,\r\n // Message: null\r\n // },\r\n id: this.getPayrollCodeId(x)\r\n }))\r\n )\r\n );\r\n }\r\n public putPayrollCodes(\r\n items: PayrollCode[]\r\n ): Observable> {\r\n super.Load();\r\n return this.http\r\n .put>(this.uriPayrollCode, {\r\n PayrollCodeList: items\r\n })\r\n .pipe(\r\n tap(() => {\r\n super.Stop();\r\n }),\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(x => ({\r\n ...x,\r\n // Status: x.Status || {\r\n // StatusCode: null,\r\n // Message: null\r\n // },\r\n id: this.getPayrollCodeId(x)\r\n }))\r\n }))\r\n );\r\n }\r\n public deletePayrollCode(paycodeId: number) {\r\n return this.http.request>(\r\n 'DELETE',\r\n this.uriPayrollCode,\r\n {\r\n body: { EntityIDs: [paycodeId] }\r\n }\r\n );\r\n }\r\n public getFileFormat(): Observable {\r\n super.Load();\r\n return this.http.get(this.uriFileFormat).pipe(\r\n tap(() => {\r\n super.Stop();\r\n }),\r\n map(items =>\r\n items.map(x => ({\r\n ...x,\r\n id: this.getFileFormatId(x)\r\n }))\r\n )\r\n );\r\n }\r\n public putFileFormats(\r\n items: FileFormatModel[]\r\n ): Observable> {\r\n super.Load();\r\n return this.http\r\n .put>(this.uriFileFormat, {\r\n PayrollExportFormatList: items\r\n })\r\n .pipe(\r\n tap(() => {\r\n super.Stop();\r\n }),\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(x => ({\r\n ...x,\r\n // Status: x.Status || {\r\n // StatusCode: null,\r\n // Message: null\r\n // },\r\n id: this.getFileFormatId(x)\r\n }))\r\n }))\r\n );\r\n }\r\n private getFileFormatId(item: FileFormatModel) {\r\n return item.Fieldid;\r\n }\r\n private getThirdPartyPayrollId(item: ThirdPartyPayroll) {\r\n return Guid.newGuid();\r\n }\r\n private getPayrollCodeId(item: PayrollCode) {\r\n return item.Paycodeid.toString();\r\n }\r\n public syncGL(ppe: Date): Observable {\r\n super.Load();\r\n return this.http\r\n .get(\r\n `${this.uriSyncGL}/${moment(ppe).format('YYYY-MM-DD')}`\r\n )\r\n .pipe(\r\n tap(resp => {\r\n super.Stop();\r\n this.log.verbose({\r\n type: 'ThirdPartyPayrollService:SyncGL',\r\n ppe,\r\n resp\r\n });\r\n }),\r\n catchError((e, c) => {\r\n super.Stop();\r\n throw e;\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport { CalcTypeService } from '../../lookups/calc-type.service';\r\nimport * as fromPayroll from '../../payroll/item/store';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromAuths from '../../user-authorizations';\r\nimport * as fromUser from '../../user-info';\r\n@Component({\r\n selector: 'ef-premium-pay-container',\r\n templateUrl: './premium-pay-container.component.html',\r\n styleUrls: ['./premium-pay-container.component.scss']\r\n})\r\nexport class PremiumPayContainerComponent implements OnInit, OnDestroy {\r\n premiumPayService: EntityCollectionService;\r\n authorizations$: Observable;\r\n userInfo$: Observable;\r\n directReportsSelectItems$: Observable;\r\n process$: Observable;\r\n tasks$: Observable;\r\n tasksSelectItems$: Observable;\r\n alternateTasksSelectItems$: Observable;\r\n payrollItems$: Observable;\r\n payrollItemsSelectItems$: Observable;\r\n costTypesSelectItems$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n premiumPays$: Observable;\r\n TasksSubject = new ReplaySubject(1);\r\n UsersSubject = new ReplaySubject(1);\r\n PayrollItemSubject = new ReplaySubject(1);\r\n ServiceItemSubject = new ReplaySubject(1);\r\n ShowError = new ReplaySubject(1);\r\n private active = true;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private store: Store,\r\n private calcTypeService: CalcTypeService,\r\n private log: LoggingService\r\n ) {\r\n this.premiumPayService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.PremiumPay.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.premiumPayService.getWithQuery({\r\n PPEndDate: moment().format('MM/DD/YYYY')\r\n });\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n this.store.dispatch(new fromLookups.LoadPayrollItems());\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n this.authorizations$ = this.store.pipe(select(fromAuths.selectAll));\r\n this.tasks$ = this.store.pipe(select(fromLookups.getTasksLookup));\r\n this.tasksSelectItems$ = combineLatest([\r\n this.tasks$,\r\n this.authorizations$.pipe(\r\n filter(x => !!x && x.length > 0),\r\n map(auths => auths.filter(a => a.PremiumPayIndicator === true))\r\n )\r\n ]).pipe(\r\n tap(([tasks, auths]) =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:authorizations$,tasks$',\r\n tasks,\r\n auths\r\n })\r\n ),\r\n map(([tasks, auths]) =>\r\n tasks.filter(\r\n t =>\r\n auths.findIndex(a => a.TaskListID === t.TaskListID) >=\r\n 0 && t.IsActive === true\r\n )\r\n ),\r\n map(x =>\r\n x\r\n .map(y => ({\r\n label: y.TaskLongName,\r\n value: y.TaskListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.alternateTasksSelectItems$ = this.tasks$.pipe(\r\n map(x =>\r\n x\r\n .map(y => ({\r\n label: y.TaskLongName,\r\n value: y.TaskListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(x => fromShared.uniqBy(x, y => y.PIListID)),\r\n map(x => x.filter(y => y.IsActive === true))\r\n );\r\n this.payrollItemsSelectItems$ = this.payrollItems$.pipe(\r\n map(x =>\r\n x\r\n .map(y => ({\r\n label: y.PayrollItem,\r\n value: y.PIListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.directReportsSelectItems$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n map(x => x.filter(y => y.IsActive === true)),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.map(y => ({ label: y.EmployeeName, value: y.EmployeeListID }))\r\n ),\r\n map(reports =>\r\n reports.sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.costTypesSelectItems$ = this.calcTypeService\r\n .getCalcType()\r\n .pipe(\r\n map(ct =>\r\n ct.map(x => ({ label: x.CalcDesc, value: x.CalcType }))\r\n )\r\n );\r\n this.premiumPays$ = combineLatest([\r\n this.premiumPayService.entities$.pipe(map(x => clone(x))),\r\n this.authorizations$\r\n ]).pipe(\r\n map(([pp, a]) =>\r\n pp.map(p => ({\r\n ...p,\r\n authorization: a.find(\r\n x => x.EmpAuthID === p.EmpAuthID && x.EmpAuthEndDate\r\n ) || {\r\n EmpAuthStartDate: new Date(p.EmpAuthStartDate),\r\n EmpAuthEndDate: new Date(p.EmpAuthEndDate)\r\n }\r\n })), \r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:premiumPays$',\r\n items\r\n })\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(user =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:userInfo$',\r\n user\r\n })\r\n )\r\n )\r\n .subscribe(userInfo => {\r\n this.store.dispatch(\r\n fromAuths.getUserAuthorizations({\r\n endDate: new Date()\r\n })\r\n );\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: false\r\n })\r\n );\r\n });\r\n\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n this.premiumPayService.entities$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(x => {\r\n this.TasksSubject.next(\r\n fromShared\r\n .uniqBy(x, y => y.TaskLongName)\r\n .map(p => ({\r\n label: p.TaskLongName,\r\n value: p.TaskLongName\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n );\r\n this.UsersSubject.next(\r\n fromShared\r\n .uniqBy(x, y => y.EmployeeName)\r\n .map(p => ({\r\n label: p.EmployeeName,\r\n value: p.EmployeeName\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n );\r\n this.PayrollItemSubject.next(\r\n fromShared\r\n .uniqBy(x, y => y.PayrollItem)\r\n .map(p => ({\r\n label: p.PayrollItem,\r\n value: p.PayrollItem\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n );\r\n this.ServiceItemSubject.next(\r\n fromShared\r\n .uniqBy(x, y => y.ServiceItem)\r\n .map(p => ({\r\n label: p.ServiceItem,\r\n value: p.ServiceItem\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n );\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:onFilter',\r\n $event\r\n });\r\n this.premiumPayService.clearCache();\r\n this.premiumPayService.getWithQuery($event);\r\n this.store.dispatch(\r\n fromAuths.getUserAuthorizations({\r\n ...$event,\r\n endDate: $event.PPEndDate\r\n // directReports: [userInfo]\r\n })\r\n );\r\n }\r\n onSave($event) {\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:onSave',\r\n $event\r\n });\r\n this.premiumPayService.upsert(\r\n {\r\n ...$event,\r\n PremiumPay: $event.PremiumPay || 0,\r\n PremiumPercent: $event.PremiumPercent || 0\r\n },\r\n {\r\n isOptimistic: false\r\n }\r\n );\r\n }\r\n onDelete($event: fromDataServices.PremiumPay.PremiumPay[]) {\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:onDelete',\r\n $event\r\n });\r\n of($event.map(x => x.id))\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(ids =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:onDelete:deleting',\r\n ids\r\n })\r\n ),\r\n map(ids =>\r\n ids.map(id =>\r\n this.premiumPayService.delete(id, {\r\n isOptimistic: false\r\n })\r\n )\r\n )\r\n )\r\n .subscribe(\r\n resp =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:onDelete:subscribe',\r\n resp\r\n }),\r\n err =>\r\n this.log.verbose({\r\n type: 'PremiumPayContainerComponent:onDelete:subscribe',\r\n err\r\n })\r\n );\r\n }\r\n onShowError(event) {\r\n this.ShowError.next(event);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PremiumPayContainerComponent } from './premium-pay-container/premium-pay-container.component';\r\nimport { PremiumPayComponent } from './premium-pay/premium-pay.component';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { PremiumPayRoute } from './premium-pay.route';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport * as fromDataServices from '../data-services';\r\n@NgModule({\r\n declarations: [PremiumPayContainerComponent, PremiumPayComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [PremiumPayRoute]\r\n })\r\n ]\r\n})\r\nexport class PremiumPayModule {\r\n constructor() {}\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { PremiumPayContainerComponent } from './premium-pay-container/premium-pay-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const PremiumPayRoute: Ng2StateDeclaration = {\r\n // name: 'PayrollItem.**'\r\n name: 'premiumpay',\r\n url: '/premiumpay',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.PayrollItemModule)\r\n data: { requiresAuth: true },\r\n\r\n component: PremiumPayContainerComponent\r\n};\r\n","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { fromEvent, of, ReplaySubject } from 'rxjs';\r\nimport { delay, takeWhile, throttleTime } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { ITask } from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport * as fromShared from '../../shared';\r\nimport { DisplayMessageMinimum, ResponseStatus } from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { UserAuthorization } from '../../user-authorizations';\r\nconst _log = new LoggingService();\r\nexport const percentOrAmountValidator: ValidatorFn = (\r\n control: AbstractControl\r\n): ValidationErrors | null => {\r\n if (!control) {\r\n return null;\r\n }\r\n const amount = control.get('PremiumPay');\r\n const percent = control.get('PremiumPercent');\r\n _log.verbose({\r\n type: 'percentOrAmountValidator',\r\n amount,\r\n percent,\r\n invalid: amount && percent && amount.value && percent.value\r\n });\r\n return amount && percent && amount.value && percent.value\r\n ? { percentOrAmount: 'Only one of percent or amount can be specified.' }\r\n : null;\r\n};\r\nexport const endGreaterThanStartValidator: ValidatorFn = (\r\n control: AbstractControl\r\n): ValidationErrors | null => {\r\n if (!control) {\r\n return null;\r\n }\r\n const startDate = moment(control.get('StartDate').value);\r\n const endDate = moment(control.get('EndDate').value);\r\n if (!(startDate && endDate)) {\r\n return null;\r\n }\r\n _log.verbose({\r\n type: 'endGreaterThanStartValidator',\r\n startDate,\r\n endDate\r\n });\r\n return startDate.isAfter(endDate)\r\n ? { endGreaterThanStart: 'End Date must be >= start date.' }\r\n : null;\r\n};\r\n\r\n@Component({\r\n selector: 'ef-premium-pay',\r\n templateUrl: './premium-pay.component.html',\r\n styleUrls: ['./premium-pay.component.scss']\r\n})\r\nexport class PremiumPayComponent\r\n extends fromShared.Errors\r\n .DisplayErrors\r\n implements OnInit, OnDestroy {\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n @Input() userAuths: UserAuthorization[];\r\n @Input() tasks: ITask[];\r\n @Input() payrollItems: PayrollItem[];\r\n @Input() tasksFilterSelectItems: SelectItem[];\r\n @Input() alternateTasksSelectItems: SelectItem[];\r\n @Input() tasksSelectItems: SelectItem[];\r\n @Input() costTypesSelectItems: SelectItem[];\r\n @Input() usersSelectItems: SelectItem[];\r\n @Input() payrollItemsSelectItems: SelectItem[];\r\n @Input() payrollItemsFilterSelectItems: SelectItem[];\r\n @Input() serviceItemsSelectItems: SelectItem[];\r\n @Input() directReportsSelectItems: SelectItem[];\r\n @Output() Filter = new ReplaySubject<{\r\n PPEndDate: Date;\r\n DirectReports?: [{ EmployeeListID: string }];\r\n Tasks?: [{ TaskListID: string }];\r\n }>(1);\r\n @Output() Save = new ReplaySubject(\r\n 1\r\n );\r\n @Output() Delete = new ReplaySubject<\r\n fromDataServices.PremiumPay.PremiumPay[]\r\n >(1);\r\n @Output() Select =\r\n new ReplaySubject(1);\r\n @ViewChild('deletePremiumPays', { read: ElementRef, static: true })\r\n deleteButton: ElementRef;\r\n @ViewChild('updatePremiumPays', { read: ElementRef, static: true })\r\n updateButton: ElementRef;\r\n @ViewChild('addPremiumPays', { read: ElementRef, static: true })\r\n addButton: ElementRef;\r\n @ViewChild('clearFilters', { read: ElementRef, static: true })\r\n clearButton: ElementRef;\r\n public editing: fromDataServices.PremiumPay.PremiumPay =\r\n {} as fromDataServices.PremiumPay.PremiumPay;\r\n selected: fromDataServices.PremiumPay.PremiumPay[] = [];\r\n cloned: { [i: number]: fromDataServices.PremiumPay.PremiumPay } = {};\r\n filterFormGroup: FormGroup;\r\n addFormGroup: FormGroup;\r\n moment: any;\r\n public displayDetails = true;\r\n private active = true;\r\n formAddErrors: {\r\n severity: string;\r\n detail: string;\r\n }[];\r\n constructor(\r\n private log: LoggingService,\r\n public confirmservice: UnsavedChangesService\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.filterFormGroup = new FormGroup({\r\n // DirectReports: new FormControl(),\r\n Tasks: new FormControl(),\r\n PPEndDate: new FormControl(new Date(), Validators.required)\r\n });\r\n this.addFormGroup = new FormGroup(\r\n {\r\n StartDate: new FormControl(null, Validators.required),\r\n EndDate: new FormControl(null, Validators.required),\r\n PremiumPercent: new FormControl(null),\r\n PremiumPay: new FormControl(null),\r\n PremiumTaskListID: new FormControl(null),\r\n CalcType: new FormControl(null)\r\n },\r\n {\r\n validators: [\r\n percentOrAmountValidator,\r\n endGreaterThanStartValidator\r\n ]\r\n }\r\n );\r\n }\r\n operators: [];\r\n\r\n ngOnInit(): void {\r\n this.setupSubscriptions();\r\n setTimeout(() => {\r\n this.handleOnOpen(0);\r\n }, 0);\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupSubscriptions() {\r\n this.filterFormGroup.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(values => {\r\n this.log.verbose({\r\n type: 'PremiumPayComponent:filterFormGroup.valueChanges',\r\n values\r\n });\r\n if (moment(values.PPEndDate).isValid()) {\r\n this.Filter.next({\r\n PPEndDate: values.PPEndDate,\r\n Tasks:\r\n values.Tasks && values.Tasks.length\r\n ? values.Tasks.map(x => ({\r\n TaskListID: x,\r\n ContractType: '',\r\n IsActive: true,\r\n IsChargeNumber: false,\r\n LaborType: '',\r\n TaskLongName: ''\r\n }))\r\n : null\r\n // DirectReports: values.DirectReports && values.DirectReports.length\r\n // ? values.DirectReports.map(x => ({\r\n // EmployeeListID: x\r\n // }))\r\n // : null\r\n });\r\n }\r\n\r\n });\r\n\r\n fromEvent(this.deleteButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(500)\r\n )\r\n .subscribe(() => {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to delete these rates?`\r\n })\r\n .then(() => {\r\n // if (item.id === 'add') {\r\n // this.items.splice(index, 1, { ...this.addTemplate } as any);\r\n // } else {\r\n this.log.verbose({\r\n type: 'PremiumPayComponent:deleteButton',\r\n cloned: this.cloned,\r\n selected: this.selected\r\n });\r\n this.Delete.next(this.selected);\r\n return;\r\n })\r\n .catch(e => {});\r\n });\r\n fromEvent(this.addButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(500)\r\n )\r\n .subscribe(() => {\r\n const values = this.addFormGroup.value;\r\n this.log.verbose({\r\n type: 'PremiumPayComponent:addButton',\r\n values\r\n });\r\n of(...this.selected).subscribe(pp =>\r\n this.Save.next({\r\n ...pp,\r\n Id: -1,\r\n id: -1,\r\n original: pp,\r\n StartDate: values.StartDate,\r\n EndDate: values.EndDate,\r\n PremiumPay: values.PremiumPay,\r\n PremiumPercent: values.PremiumPercent,\r\n CalcType: values.CalcType\r\n })\r\n );\r\n this.selected = [];\r\n });\r\n fromEvent(this.updateButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(() => this.active),\r\n throttleTime(500)\r\n )\r\n .subscribe(() => {\r\n const values = this.addFormGroup.value;\r\n this.log.verbose({\r\n type: 'PremiumPayComponent:updateButton',\r\n values\r\n });\r\n this.items = this.items.map(x => ({\r\n ...x,\r\n Status:\r\n this.selected.findIndex(y => y.id === x.id) >= 0\r\n ? {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n }\r\n : x.Status\r\n }));\r\n of(...this.selected)\r\n .pipe(delay(2000))\r\n .subscribe(pp =>\r\n this.Save.next({\r\n ...pp,\r\n original: pp,\r\n StartDate:\r\n values && values.StartDate\r\n ? values.StartDate\r\n : pp.StartDate,\r\n EndDate:\r\n values && values.EndDate\r\n ? values.EndDate\r\n : pp.EndDate,\r\n PremiumPay:\r\n values && values.PremiumPay\r\n ? values.PremiumPay\r\n : pp.PremiumPay,\r\n PremiumPercent:\r\n values && values.PremiumPercent\r\n ? values.PremiumPercent\r\n : pp.PremiumPercent,\r\n CalcType:\r\n values && values.CalcType\r\n ? values.CalcType\r\n : pp.CalcType\r\n })\r\n );\r\n this.selected = [];\r\n });\r\n\r\n fromEvent(this.clearButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.addFormGroup.reset();\r\n });\r\n this.addFormGroup.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(values => {\r\n this.formAddErrors = this.getErrorsAsArray(\r\n this.addFormGroup.errors\r\n );\r\n });\r\n }\r\n onRowEditInit(item: fromDataServices.PremiumPay.PremiumPay) {\r\n this.cloned[item.id] = { ...item };\r\n this.editing = item;\r\n this.log.verbose({\r\n type: 'PremiumPayComponent:onRowEditInit',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing\r\n });\r\n this.selected = [];\r\n }\r\n onRowEditSave(item: fromDataServices.PremiumPay.PremiumPay) {\r\n this.log.verbose({\r\n type: 'PremiumPayComponent:onRowEditSave',\r\n item,\r\n cloned: this.cloned,\r\n selected: this.selected\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n\r\n this.Save.next(item);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.selected = [];\r\n }\r\n onRowEditCancel(item: fromDataServices.PremiumPay.PremiumPay) {\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n this.items = [...this.items];\r\n this.selected = [];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onRowSelect($event) {\r\n this.log.verbose({ type: 'PremiumPayComponent:onRowSelect', $event });\r\n this.Select.next($event.data);\r\n }\r\n onRowEditDelete(\r\n item: fromDataServices.PremiumPay.PremiumPay,\r\n index: number\r\n ) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to delete this rate?`\r\n })\r\n .then(() => {\r\n // if (item.id === 'add') {\r\n // this.items.splice(index, 1, { ...this.addTemplate } as any);\r\n // } else {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n // }\r\n\r\n this.Delete.next([item]);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n return;\r\n })\r\n .catch(e => {});\r\n }\r\n handleOnOpen($event) {\r\n this.log.verbose({ type: 'PremiumPayComponent:handleOnOpen', $event });\r\n const baseHeight = '52vh';\r\n let accHeight = 0;\r\n if ($event === 0 || ($event.includes && $event.includes(0))) {\r\n accHeight += 5.5;\r\n }\r\n if ($event === 1 || ($event.includes && $event.includes(1))) {\r\n accHeight += 10;\r\n }\r\n this.dataTable.scrollHeight = `calc(${baseHeight} - ${accHeight}rem)`;\r\n this.log.verbose({\r\n type: 'PremiumPayComponent:handleOnOpen',\r\n datatableHeight: this.dataTable.scrollHeight\r\n });\r\n }\r\n public hasErrorStatus = pp =>\r\n pp && pp.Status && pp.Status.StatusCode >= DisplayMessageMinimum;\r\n\r\n //public getMinDate = (date1, date2) => new Date(Math.min(date1, date2));\r\n getMinDate(date1, date2) {\r\n const dates = [date1, date2];\r\n dates.sort((a, b) => a.getTime() - b.getTime());\r\n return dates[0];\r\n }\r\n getMaxDate(date1, date2) {\r\n const dates = [date1, date2];\r\n dates.sort((a, b) => b.getTime() - a.getTime());\r\n return dates[0];\r\n }\r\n //public getMaxDate = (date1, date2) => new Date(Math.max(date1, date2));\r\n // severity: string;\r\n // summary: string;\r\n // detail: string;\r\n public getErrorsAsArray = (errors: any) => {\r\n if (!errors) {\r\n return [];\r\n }\r\n const keys = Object.keys(errors);\r\n _log.verbose({\r\n type: 'getErrorsAsArray',\r\n keys,\r\n errors,\r\n values: keys.map(k => ({\r\n severity: 'error',\r\n detail: errors[k].toString()\r\n }))\r\n });\r\n return keys.map(k => ({\r\n severity: 'error',\r\n detail: errors[k].toString()\r\n }));\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BudgetUploadService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private uploadUri = `${environment.apiLocation}/BudgetUpload`;\r\n\r\n\r\n public uploadBudgets(JsonString: string): Observable {\r\n this.log.verbose({\r\n type: 'BudgetUploadService:uploadBudgets',\r\n uri: this.uploadUri\r\n });\r\n return this.http\r\n .post(this.uploadUri, {\r\n JsonString: JsonString\r\n })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'BudgetUploadService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, tap } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { LoginModel } from '../../data-services/manage-users';\r\nimport * as fromLookups from '../../lookups';\r\nimport { CalcType, IServiceItem, ITask } from '../../lookups';\r\nimport { CalcTypeService } from '../../lookups/calc-type.service';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef,\r\n SelectItem\r\n} from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n\r\n@Component({\r\n selector: 'ef-project-budget-add-container',\r\n templateUrl: './project-budget-add-container.component.html',\r\n styleUrls: ['./project-budget-add-container.component.scss']\r\n})\r\nexport class ProjectBudgetAddContainerComponent implements OnInit {\r\n tasks$: Observable;\r\n serviceItems$: Observable;\r\n payrollItem$: Observable;\r\n users$: Observable;\r\n costTypes$: Observable;\r\n costCenterSelectItems$: Observable;\r\n tasksSelectItems$: Observable;\r\n serviceItemsSelectItems$: Observable;\r\n usersSelectItems$: Observable;\r\n costTypesSelectItems$: Observable;\r\n private Contractlistid: string;\r\n private ManageUsersModelDS: EntityCollectionService;\r\n\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService,\r\n private calcTypeService: CalcTypeService,\r\n public entityServices: EntityServices,\r\n\r\n private dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig\r\n ) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetAddContainerComponent::',\r\n config\r\n });\r\n this.Contractlistid = this.config.data.contract.Contractlistid;\r\n this.store.dispatch(\r\n new fromLookups.LoadContractTasks({\r\n contractlistid: this.Contractlistid\r\n })\r\n );\r\n this.ManageUsersModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ManageUsers.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(\r\n new fromLookups.LoadServiceItems(true, false, true)\r\n );\r\n this.ManageUsersModelDS.getWithQuery({\r\n ShowInactive: 'false',\r\n UserFilterID: '7'\r\n });\r\n this.setupObservables();\r\n }\r\n setupObservables(): void {\r\n this.tasks$ = this.store.pipe(\r\n select(fromLookups.getContractTasks),\r\n map(items => items.filter(item => item.IsActive))\r\n );\r\n this.serviceItems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(items => items.filter(item => item.IsActive))\r\n );\r\n this.users$ = this.ManageUsersModelDS.entities$.pipe(\r\n map(items => items.filter(item => item.IsActive))\r\n );\r\n this.payrollItem$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(items => items.filter(item => item.IsActive))\r\n );\r\n this.costTypes$ = this.calcTypeService.getCalcType();\r\n this.costCenterSelectItems$ = this.store.pipe(\r\n select(fromLookups.getCostCenters),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.GroupName,\r\n value: item.GroupID\r\n }))\r\n )\r\n );\r\n\r\n this.tasksSelectItems$ = this.tasks$.pipe(\r\n filter(items => Array.isArray(items)),\r\n tap(tasks =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetAddContainerComponent:tasksSelectItems$',\r\n tasks,\r\n Contractlistid: this.Contractlistid\r\n })\r\n ),\r\n map(items =>\r\n items\r\n .filter(item => !!item)\r\n .filter(item => item.ContractListID === this.Contractlistid)\r\n .map(item => ({\r\n label: item.TaskLongName,\r\n value: item.TaskListID\r\n }))\r\n .sort(this.sortLabels)\r\n )\r\n );\r\n this.serviceItemsSelectItems$ = this.serviceItems$.pipe(\r\n map(items =>\r\n items\r\n .map(item => ({\r\n label: item.ServiceItem,\r\n value: item.SIListID\r\n }))\r\n .sort(this.sortLabels)\r\n )\r\n );\r\n this.usersSelectItems$ = this.users$.pipe(\r\n map(items =>\r\n items\r\n .map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n .sort(this.sortLabels)\r\n )\r\n );\r\n this.costTypesSelectItems$ = this.costTypes$.pipe(\r\n map(ct =>\r\n ct\r\n .filter(x => x.CalcType !== 'FP')\r\n .map(x => ({ label: x.CalcDesc, value: x.CalcType }))\r\n .sort(this.sortLabels)\r\n )\r\n );\r\n }\r\n sortLabels = (a: SelectItem, b: SelectItem) =>\r\n a.label?.localeCompare(b.label ?? '') ?? 0;\r\n onSave(budget): void {\r\n this.log.verbose({\r\n type: 'ProjectBudgetAddContainerComponent:onSave',\r\n budget\r\n });\r\n this.dialogRef.close(budget);\r\n }\r\n onCancel(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, switchMap, takeWhile, tap } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport {\r\n DynamicDialogRef,\r\n SelectItem\r\n} from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-project-budget-add',\r\n templateUrl: './project-budget-add.component.html',\r\n styleUrls: ['./project-budget-add.component.scss']\r\n})\r\nexport class ProjectBudgetAddComponent implements OnInit, OnDestroy {\r\n @Input() tasks: SelectItem[];\r\n @Input() serviceItems: SelectItem[];\r\n @Input() payrollItems: PayrollItem[];\r\n @Input() users: SelectItem[];\r\n @Input() costTypes: SelectItem[];\r\n @Input() costCenters: SelectItem[];\r\n @Input() contract: fromDataServices.Contract.Summary.ContractSummary;\r\n @Output() Save = new EventEmitter();\r\n @Output() Cancel = new EventEmitter();\r\n public filteredPayrollItems$: Observable;\r\n addBudgetFormGroup: FormGroup;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n private active = true;\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n private log: LoggingService\r\n ) {\r\n this.addBudgetFormGroup = new FormGroup({\r\n TaskListID: new FormControl(null, Validators.required),\r\n CostType: new FormControl(null, Validators.required),\r\n SIListID: new FormControl(null),\r\n PIListID: new FormControl(null),\r\n CostCenterID: new FormControl(null),\r\n PersonListID: new FormControl(null)\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n const controls = this.addBudgetFormGroup.controls;\r\n\r\n this.filteredPayrollItems$ = controls['PersonListID'].valueChanges.pipe(\r\n takeWhile(() => this.active),\r\n tap(id =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetAddComponent:filteredPayrollItems$',\r\n id,\r\n payrollItems: this.payrollItems\r\n })\r\n ),\r\n switchMap(id =>\r\n of(this.payrollItems.filter(p => p.EmployeeListID === id))\r\n ),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n }))\r\n ),\r\n tap(pi =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetAddComponent:filteredPayrollItems$',\r\n pi\r\n })\r\n )\r\n );\r\n }\r\n onSaveClicked() {\r\n this.Save.next(this.addBudgetFormGroup.value);\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, merge, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n distinctUntilKeyChanged,\r\n filter,\r\n map,\r\n startWith,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromSettings from '../../company-setting';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IDirectReport, IUserGroup } from '../../lookups';\r\nimport * as fromPayroll from '../../payroll/item';\r\nimport * as fromShared from '../../shared';\r\nimport { Guid } from '../../shared';\r\nimport { DialogService, SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport * as fromUserRole from '../../user-role';\r\nimport { ProjectBudgetAddContainerComponent } from '../project-budget-add-container/project-budget-add-container.component';\r\nimport * as XLSX from 'xlsx';\r\nimport * as fromActions from '../store/budget-upload.actions';\r\nimport { ReportParams } from '../../reporting/store/report-params.model';\r\nimport * as fromReports from '../../reporting/store';\r\nimport * as fromAuth from '../../auth/store/auth.reducer';\r\n@Component({\r\n selector: 'ef-project-budget-container',\r\n templateUrl: './project-budget-container.component.html',\r\n styleUrls: ['./project-budget-container.component.scss']\r\n})\r\nexport class ProjectBudgetContainerComponent implements OnInit, OnDestroy {\r\n projectBudgetDataService: EntityCollectionService;\r\n contractSummaryDataService: EntityCollectionService;\r\n budgetLevelDataService: EntityCollectionService;\r\n budgetCycleDataService: EntityCollectionService;\r\n ShowAddBudgetSubject = new ReplaySubject(1);\r\n ShowErrorSubject = new ReplaySubject(1);\r\n selectContractSubject =\r\n new ReplaySubject(1);\r\n saveSummarySubject =\r\n new ReplaySubject(1);\r\n DownloadContractSubject = new ReplaySubject(1);\r\n DownloadBudgetSubject = new ReplaySubject(1);\r\n GetScheduleDatesSubject = new ReplaySubject(1);\r\n JumpstartSubject = new ReplaySubject(1);\r\n JumpstartSuccessSubject = new ReplaySubject(1);\r\n SaveBudgetMetatdataSubject =\r\n new ReplaySubject(1);\r\n AddBudgetSubject =\r\n new ReplaySubject(1);\r\n SaveBudgetSubject =\r\n new ReplaySubject(1);\r\n selectedError$: Observable;\r\n projectBudgets$: Observable;\r\n contractFilterSelectItems$: Observable;\r\n budgetLevels$: Observable;\r\n budgetCycles$: Observable;\r\n fiscalYearsSelectItems$: Observable;\r\n process$: Observable;\r\n contracts$: Observable;\r\n userInfo$: Observable;\r\n roles$: Observable;\r\n costCenters$: Observable;\r\n FYEndDate$: Observable;\r\n FYStartDate$: Observable;\r\n allowCost$: Observable;\r\n public directReports$: Observable;\r\n public serviceItems$: Observable;\r\n public payrollItems$: Observable;\r\n autoCalculateAmount$: Observable;\r\n FYEndDateSubject = new ReplaySubject(1);\r\n BudgetCycleChangeSubject = new ReplaySubject(1);\r\n FiscalYearChangeSubject = new ReplaySubject(1);\r\n addDialogRef: fromShared.DynamicDialogRef;\r\n active = true;\r\n editingContract = false;\r\n editingBudget = false;\r\n public tabHeight = '';\r\n\r\n showUploadDialog = false;\r\n showUploadError = false;\r\n excelFileAsJsonStr: string;\r\n excelFileAsJson: any;\r\n budgetUpload = false;\r\n budgetUploadDate: any;\r\n @Output() uploadJSON = new ReplaySubject(1);\r\n @ViewChild('fileUpload') uploadInput: ElementRef;\r\n uploadSuccessMessage: string;\r\n\r\n public reports$: Observable>;\r\n private auth$: Observable;\r\n\r\n private RunReportsSubject = new ReplaySubject<{\r\n reports: Array;\r\n queryparams: any;\r\n params: ReportParams;\r\n }>(1);\r\n\r\n reports: fromReports.Report[];\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private store: Store,\r\n public dialogService: DialogService,\r\n private log: LoggingService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n this.projectBudgetDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ProjectBudget.entityName\r\n );\r\n this.contractSummaryDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.Summary.entityName\r\n );\r\n this.budgetLevelDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.BudgetLevel.entityName\r\n );\r\n this.budgetCycleDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.BudgetCycle.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.contractSummaryDataService.clearCache();\r\n this.budgetLevelDataService.clearCache();\r\n this.budgetCycleDataService.clearCache();\r\n this.projectBudgetDataService.clearCache();\r\n\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n setTimeout(() => {\r\n this.contractSummaryDataService.getAll();\r\n this.budgetLevelDataService.getAll();\r\n this.budgetCycleDataService.getAll();\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'PMAllowCost' })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'BudgetAutoCalc'\r\n })\r\n );\r\n this.GetScheduleDatesSubject.next();\r\n\r\n this.handleOnOpen([0, 1]);\r\n }, 0);\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n if (this.addDialogRef) {\r\n this.addDialogRef.close();\r\n }\r\n }\r\n\r\n openBudgetReport() {\r\n const data = {\r\n reports: this.reports,\r\n queryparams: {\r\n StartDate: moment(new Date()).isValid()\r\n ? moment(new Date()).format('YYYY-MM-DD')\r\n : null,\r\n EndDate: moment(new Date()).isValid()\r\n ? moment(new Date()).format('YYYY-MM-DD')\r\n : moment(new Date()).isValid()\r\n ? moment(new Date()).format('YYYY-MM-DD')\r\n : null\r\n },\r\n params: {\r\n DirectReportList: [],\r\n ContractList: []\r\n }\r\n };\r\n // TODO: check if API wants this to be null or non-existent\r\n if (!data.queryparams.StartDate) {\r\n delete data.queryparams.StartDate;\r\n }\r\n this.onRunReports(data);\r\n }\r\n\r\n onRunReports(data) {\r\n this.RunReportsSubject.next(data);\r\n }\r\n\r\n openUploadDialog() {\r\n this.showUploadDialog = true;\r\n }\r\n\r\n uploadExcelFile($event) {\r\n this.showUploadError = false;\r\n this.fileToString($event.target.files[0]);\r\n }\r\n\r\n fileToString(file) {\r\n const fileNameSpan = document.getElementById('file-selected');\r\n fileNameSpan.textContent = file.name;\r\n\r\n const reader = new FileReader();\r\n reader.onload = event => {\r\n const binaryData = event.target.result;\r\n this.excelToJSON(binaryData);\r\n };\r\n reader.readAsBinaryString(file);\r\n }\r\n\r\n excelToJSON(binaryData) {\r\n const workbook = XLSX.read(binaryData, { type: 'binary' });\r\n\r\n const jsonData = workbook.SheetNames.reduce((initial, name) => {\r\n const sheet = workbook.Sheets[name];\r\n initial = XLSX.utils.sheet_to_json(sheet);\r\n return initial;\r\n }, {});\r\n\r\n this.excelFileAsJson = jsonData;\r\n //this.excelFileAsJsonStr = JSON.stringify(jsonData);\r\n //console.log(this.excelFileAsJsonStr);\r\n }\r\n\r\n sendJSON() {\r\n if (this.excelFileAsJson != null) {\r\n this.budgetUpload = true;\r\n this.excelFileAsJson = this.excelFileAsJson.map(x => ({\r\n ...x,\r\n StartDate: moment(this.dateToISODateString(x.StartDate)).format(\r\n 'MM/DD/YY'\r\n ),\r\n EndDate: moment(this.dateToISODateString(x.EndDate)).format(\r\n 'MM/DD/YY'\r\n )\r\n }));\r\n //this.budgetUploadDate = this.excelFileAsJson[0].PeriodEndDate;\r\n this.excelFileAsJsonStr = JSON.stringify(this.excelFileAsJson);\r\n this.onUploadJSON(this.excelFileAsJsonStr);\r\n //this.uploadJSON.next(this.excelFileAsJsonStr);\r\n this.reset();\r\n } else {\r\n this.showUploadError = true;\r\n this.budgetUpload = false;\r\n }\r\n }\r\n\r\n onUploadJSON($event) {\r\n this.store.dispatch(fromActions.uploadBudgets({ JsonString: $event }));\r\n //this.cumulativeUploadDataService.getWithQuery({JsonString: $event});\r\n }\r\n\r\n cancelUpload() {\r\n this.showUploadError = false;\r\n this.reset();\r\n }\r\n reset() {\r\n this.showUploadError = false;\r\n this.showUploadDialog = false;\r\n this.excelFileAsJsonStr = null;\r\n this.uploadInput.nativeElement.value = '';\r\n const fileNameSpan = document.getElementById('file-selected');\r\n fileNameSpan.textContent = '';\r\n setTimeout(() => {\r\n this.uploadSuccessMessage = localStorage.getItem('uploadMessage');\r\n }, 1000);\r\n setTimeout(() => {\r\n this.uploadSuccessMessage = null;\r\n localStorage.removeItem('uploadMessage');\r\n }, 20000);\r\n }\r\n dateToISODateString(excelDate) {\r\n return this.excelDateConversion(excelDate).toISOString(); //.split('T')[0];\r\n }\r\n excelDateConversion(excelDate) {\r\n return new Date(Date.UTC(0, 0, excelDate));\r\n }\r\n\r\n setupObservables(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.auth$ = this.store.pipe(select(fromAuth.getAuth));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n this.reports$ = this.store.pipe(\r\n select(fromReports.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.roles$ = this.store.pipe(select(fromUserRole.getUserRoles));\r\n this.allowCost$ = this.store.pipe(\r\n select(fromSettings.selectEntities),\r\n map(\r\n (x: Dictionary) =>\r\n x['PMAllowCost'] &&\r\n (x['PMAllowCost'].SettingValue === true ||\r\n x.PMAllowCost.SettingValue === 'true' ||\r\n x['PMAllowCost'].SettingValue === '1')\r\n )\r\n );\r\n this.FYEndDate$ = this.userInfo$.pipe(\r\n filter(x => !!x),\r\n map(x => x.FYEndDate)\r\n );\r\n this.FYStartDate$ = this.userInfo$.pipe(\r\n filter(x => !!x),\r\n map(x => x.FYStartDate)\r\n );\r\n this.FYEndDate$ = this.userInfo$.pipe(\r\n filter(x => !!x),\r\n map(x => x.FYEndDate)\r\n );\r\n this.contracts$ = this.contractSummaryDataService.entities$.pipe(\r\n map(items => clone(items))\r\n );\r\n this.budgetLevels$ = this.budgetLevelDataService.entities$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Budgetlevel,\r\n value: item.Budgetlevelid\r\n }))\r\n )\r\n );\r\n this.budgetCycles$ = this.budgetCycleDataService.entities$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: item.Budgetcycle,\r\n value: item.Budgetcycleid\r\n }))\r\n )\r\n );\r\n this.directReports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n )\r\n );\r\n this.serviceItems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.ServiceItem,\r\n value: item.SIListID\r\n }))\r\n )\r\n );\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n }))\r\n )\r\n );\r\n\r\n this.projectBudgets$ = this.projectBudgetDataService.entities$.pipe(\r\n withLatestFrom(\r\n this.selectContractSubject.pipe(\r\n filter(x => !!x && !!x.Contractlistid),\r\n distinctUntilKeyChanged('Contractlistid')\r\n )\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:projectBudgets$,selectContractSubject',\r\n x\r\n })\r\n ),\r\n map(([items, pb]) =>\r\n clone(items).map(item => ({\r\n ...item,\r\n Contractlistid: pb.ContractListID\r\n }))\r\n )\r\n );\r\n this.contractFilterSelectItems$ = this.contracts$.pipe(\r\n takeWhile(() => this.active),\r\n map(items =>\r\n items.map(x => ({\r\n label: x.Contractdesc,\r\n value: x.Contractdesc\r\n }))\r\n ),\r\n map(items => fromShared.uniqBy(items, x => x.value))\r\n );\r\n this.autoCalculateAmount$ = this.store.pipe(\r\n select(fromSettings.getSettingBooleanValue('BudgetAutoCalc'))\r\n );\r\n combineLatest([this.userInfo$, this.process$])\r\n .pipe(take(1))\r\n .subscribe(([userInfo, process]) => {\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: true,\r\n processId: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n setupSubscriptions(): void {\r\n this.reports$.pipe(takeWhile(() => this.active)).subscribe(reports => {\r\n this.reports = reports;\r\n });\r\n\r\n this.RunReportsSubject.pipe(withLatestFrom(this.auth$, this.userInfo$))\r\n .pipe(takeWhile(x => this.active))\r\n .subscribe(([{ reports, queryparams, params }, auth, userInfo]) => {\r\n const report = reports.find(x => x.RptNbr == 907);\r\n\r\n this.store.dispatch(\r\n fromReports.runReport({\r\n report: {\r\n report,\r\n params: {\r\n ...params,\r\n EmployeeListID: userInfo.EmployeeListID,\r\n RptID: report.RptID\r\n },\r\n queryparams: {\r\n ...queryparams,\r\n User: userInfo.EmployeeListID,\r\n Cust: auth.CustomerID,\r\n GroupId: -1\r\n }\r\n }\r\n })\r\n );\r\n });\r\n\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.JumpstartSuccessSubject.pipe(\r\n takeWhile(() => this.active),\r\n startWith({}),\r\n withLatestFrom(\r\n this.selectContractSubject,\r\n this.FiscalYearChangeSubject,\r\n this.projectBudgets$\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:JumpstartSuccessSubject:JumpstartSuccessSubject:raw',\r\n x\r\n })\r\n )\r\n ).subscribe(([, contract, budgetDates, budgets]) => {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:JumpstartSuccessSubject:JumpstartSuccessSubject',\r\n contract,\r\n budgetDates\r\n });\r\n this.projectBudgetDataService.removeOneFromCache({\r\n id: 'jumpstart'\r\n } as fromDataServices.ProjectBudget.ProjectBudget);\r\n const contractBudgets =\r\n this.projectBudgetDataService.removeManyFromCache(\r\n budgets.filter(\r\n x => x.Contractlistid === contract.ContractListID\r\n )\r\n );\r\n // const sd = dates.find(d => moment(d.ScheduledEndDate).isSame(fy));\r\n // this.FYEndDateSubject.next(moment(fyEndDate).toDate());\r\n this.projectBudgetDataService.getWithQuery({\r\n ContractListID: contract.Contractlistid,\r\n BudgetStartDate: moment(budgetDates[0]).isValid()\r\n ? moment(budgetDates[0]).format('MM/DD/YYYY')\r\n : null,\r\n BudgetEndDate: moment(budgetDates[1]).isValid()\r\n ? moment(budgetDates[1]).format('MM/DD/YYYY')\r\n : null\r\n });\r\n });\r\n const fySelected = merge(\r\n this.FiscalYearChangeSubject.pipe(\r\n takeWhile(() => this.active),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:FiscalYearChangeSubject',\r\n items\r\n })\r\n ),\r\n tap(([startDate, endDate]) =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:FiscalYearChangeSubject',\r\n startDate,\r\n endDate\r\n })\r\n ),\r\n filter(([startDate, endDate]) => !!startDate && !!endDate),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:FiscalYearChangeSubject',\r\n items\r\n })\r\n )\r\n )\r\n ).pipe(\r\n takeWhile(() => this.active),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:fySelected',\r\n items\r\n })\r\n )\r\n );\r\n this.saveSummarySubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(contract => {\r\n this.GetScheduleDatesSubject.next();\r\n this.contractSummaryDataService.update(contract);\r\n });\r\n combineLatest([\r\n merge(\r\n this.selectContractSubject.pipe(\r\n tap(contract =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:combineLatest:selectContractSubject',\r\n contract\r\n })\r\n ),\r\n filter(x => !!x && !!x.Contractlistid),\r\n distinctUntilKeyChanged('Contractlistid')\r\n ),\r\n this.saveSummarySubject\r\n ),\r\n fySelected.pipe(\r\n tap(fy =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:combineLatest:fySelected',\r\n fy\r\n })\r\n ),\r\n distinctUntilChanged()\r\n )\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(100),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:combineLatest((select/save)ContractSubject, fiscalYears, fySelected)',\r\n items\r\n })\r\n )\r\n )\r\n .subscribe(([contract, budgetDates]) => {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:combineLatest(selectContractSubject, fiscalYears, fySelected):fiscalYears',\r\n contract,\r\n budgetDates\r\n });\r\n this.projectBudgetDataService.clearCache();\r\n this.projectBudgetDataService.getWithQuery({\r\n ContractListID: contract.Contractlistid,\r\n BudgetStartDate: moment(budgetDates[0]).isValid()\r\n ? moment(budgetDates[0]).format('MM/DD/YYYY')\r\n : null,\r\n BudgetEndDate: moment(budgetDates[1]).isValid()\r\n ? moment(budgetDates[1]).format('MM/DD/YYYY')\r\n : null\r\n });\r\n this.cdRef.detectChanges();\r\n });\r\n this.AddBudgetSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(\r\n this.selectContractSubject,\r\n fySelected.pipe(distinctUntilChanged())\r\n )\r\n ).subscribe(([budget, contract, budgetDates]) => {\r\n const item = {\r\n ContractListID: contract.Contractlistid,\r\n TaskListID: budget.TaskListID,\r\n CostType: budget.CostType,\r\n SIListID: budget.SIListID,\r\n PIListID: budget.PIListID,\r\n CostCenterID: budget.CostCenterID,\r\n PersonListID: budget.PersonListID,\r\n BudgetEndDate: budget.BudgetEndDate || budgetDates[1],\r\n BudgetStartDate: budget.BudgetStartDate || budgetDates[0],\r\n JumpStart: false,\r\n id: Guid.newGuid()\r\n } as unknown as fromDataServices.ProjectBudget.ProjectBudget;\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:AddBudget',\r\n item,\r\n budget,\r\n contract,\r\n budgetDates\r\n });\r\n this.projectBudgetDataService\r\n .add(item)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.projectBudgetDataService.clearCache();\r\n this.projectBudgetDataService.getWithQuery({\r\n ContractListID: contract.Contractlistid,\r\n BudgetStartDate: moment(budgetDates[0]).isValid()\r\n ? moment(budgetDates[0]).format('MM/DD/YYYY')\r\n : null,\r\n BudgetEndDate: moment(budgetDates[1]).isValid()\r\n ? moment(budgetDates[1]).format('MM/DD/YYYY')\r\n : null\r\n });\r\n this.contractSummaryDataService.getAll();\r\n });\r\n });\r\n this.SaveBudgetSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(\r\n this.selectContractSubject,\r\n fySelected.pipe(distinctUntilChanged())\r\n )\r\n ).subscribe(([budget, contract, budgetDates]) => {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onSaveBudget$',\r\n contract,\r\n budget\r\n });\r\n this.projectBudgetDataService\r\n .update({\r\n ...budget,\r\n Contractlistid: contract.Contractlistid\r\n })\r\n .pipe(take(1))\r\n .subscribe(resp => {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onSaveBudget$',\r\n resp\r\n });\r\n this.projectBudgetDataService.clearCache();\r\n this.projectBudgetDataService.getWithQuery({\r\n ContractListID: contract.Contractlistid,\r\n BudgetStartDate: moment(budgetDates[0]).isValid()\r\n ? moment(budgetDates[0]).format('MM/DD/YYYY')\r\n : null,\r\n BudgetEndDate: moment(budgetDates[1]).isValid()\r\n ? moment(budgetDates[1]).format('MM/DD/YYYY')\r\n : null\r\n });\r\n this.contractSummaryDataService.getAll();\r\n this.contractSummaryDataService.getAll();\r\n });\r\n });\r\n this.SaveBudgetMetatdataSubject.pipe(\r\n withLatestFrom(\r\n this.selectContractSubject,\r\n fySelected.pipe(distinctUntilChanged())\r\n )\r\n ).subscribe(([budget, contract, budgetDates]) => {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:SaveBudgetMetatdataSubject',\r\n budget,\r\n contract,\r\n budgetDates\r\n });\r\n this.projectBudgetDataService\r\n .update({\r\n ...budget,\r\n BudgetStartDate: moment(budgetDates[0]).isValid()\r\n ? (moment(budgetDates[0]).format('MM/DD/YYYY') as any)\r\n : null,\r\n BudgetEndDate: moment(budgetDates[1]).isValid()\r\n ? (moment(budgetDates[1]).format('MM/DD/YYYY') as any)\r\n : null\r\n })\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.projectBudgetDataService.clearCache();\r\n this.projectBudgetDataService.getWithQuery({\r\n ContractListID: contract.Contractlistid,\r\n BudgetStartDate: moment(budgetDates[0]).isValid()\r\n ? moment(budgetDates[0]).format('MM/DD/YYYY')\r\n : null,\r\n BudgetEndDate: moment(budgetDates[1]).isValid()\r\n ? moment(budgetDates[1]).format('MM/DD/YYYY')\r\n : null\r\n });\r\n this.contractSummaryDataService.getAll();\r\n });\r\n });\r\n this.JumpstartSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(\r\n this.selectContractSubject,\r\n this.FiscalYearChangeSubject\r\n )\r\n ).subscribe(([, contract, budgetDates]) => {\r\n this.projectBudgetDataService\r\n .add({\r\n ContractListID: contract.Contractlistid,\r\n JumpStart: true,\r\n BudgetEndDate: budgetDates[1],\r\n id: 'jumpstart'\r\n } as unknown as fromDataServices.ProjectBudget.ProjectBudget)\r\n // .pipe(take(1))\r\n .subscribe(() => {\r\n this.JumpstartSuccessSubject.next();\r\n });\r\n });\r\n this.ShowAddBudgetSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.selectContractSubject)\r\n ).subscribe(([, contract]) => {\r\n this.addDialogRef = this.dialogService.open(\r\n ProjectBudgetAddContainerComponent,\r\n {\r\n // header: 'Add Project Budget',\r\n // closable: false,\r\n // closeOnEscape: false,\r\n // showHeader: false,\r\n // modal: true\r\n data: {\r\n contract\r\n // ContractListID: contract.Contractlistid\r\n }\r\n }\r\n );\r\n this.addDialogRef.onClose\r\n .pipe(\r\n take(1),\r\n filter(x => !!x)\r\n )\r\n .subscribe(data => {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:afterClosed',\r\n data\r\n });\r\n this.AddBudgetSubject.next(data);\r\n });\r\n });\r\n this.GetScheduleDatesSubject.pipe(\r\n takeWhile(() => this.active),\r\n debounceTime(100)\r\n ).subscribe(() => {\r\n this.store.dispatch(\r\n fromLookups.ScheduledDateActions.getScheduledDates({\r\n ShowAll: true\r\n })\r\n );\r\n });\r\n this.costCenters$ = this.store.pipe(select(fromLookups.getCostCenters));\r\n }\r\n onBudgetCycleChange($event) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onBudgetCycleChange',\r\n $event\r\n });\r\n this.BudgetCycleChangeSubject.next($event);\r\n }\r\n onSelectContract(\r\n $event: fromDataServices.Contract.Summary.ContractSummary\r\n ) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onSelectContract',\r\n $event\r\n });\r\n this.selectContractSubject.next($event);\r\n }\r\n onFiscalYearChange($event) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onFiscalYearChange',\r\n $event\r\n });\r\n this.FiscalYearChangeSubject.next($event);\r\n }\r\n onSaveBudget($event: fromDataServices.ProjectBudget.ProjectBudget) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onSaveBudget',\r\n $event\r\n });\r\n // this.projectBudgetDataService.update($event);\r\n this.SaveBudgetSubject.next($event);\r\n }\r\n onSaveMetadata($event: fromDataServices.ProjectBudget.ProjectBudget) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onSaveMetadata',\r\n $event\r\n });\r\n this.SaveBudgetMetatdataSubject.next($event);\r\n }\r\n onSelectPerson(personListID: string) {\r\n //load payroll items for this person\r\n this.store.dispatch(new fromLookups.LoadPayrollItems([personListID]));\r\n }\r\n onDeleteBudget($event: string | number) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onDeleteBudget',\r\n $event\r\n });\r\n if ($event) {\r\n this.projectBudgetDataService.delete($event);\r\n }\r\n }\r\n onSaveBudgetContract(\r\n $event: fromDataServices.Contract.Summary.ContractSummary\r\n ) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onSaveBudgetContract',\r\n $event\r\n });\r\n this.saveSummarySubject.next($event);\r\n }\r\n onAddBudget($event) {\r\n this.ShowAddBudgetSubject.next();\r\n }\r\n onJumpstart() {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:afterClosed'\r\n });\r\n this.JumpstartSubject.next();\r\n }\r\n public onDownload(type) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onDownload',\r\n value: type\r\n });\r\n if (type === 'budget') {\r\n this.DownloadBudgetSubject.next(Guid.newGuid());\r\n }\r\n if (type === 'contract') {\r\n this.DownloadContractSubject.next(Guid.newGuid());\r\n }\r\n }\r\n public onShowError($event) {\r\n this.ShowErrorSubject.next($event);\r\n }\r\n handleOnOpen($event) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:handleOnOpen',\r\n $event\r\n });\r\n const baseHeight = 73;\r\n\r\n this.tabHeight = `${\r\n baseHeight / ($event && $event.length ? $event.length : 1) - 1\r\n }vh`;\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event('resize'));\r\n }, 0);\r\n }\r\n onEditBudgetInit($event) {\r\n this.editingBudget = $event;\r\n // this.store.dispatch(\r\n // new fromLookups.LoadPayrollItems([$event.PersonListID])\r\n // );\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onEditBudgetInit',\r\n $event\r\n });\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(items =>\r\n items\r\n .filter(item => item.IsActive)\r\n .filter(p => p.EmployeeListID === $event.PersonListID)\r\n ),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n }))\r\n )\r\n );\r\n }\r\n onEditBudgetCancel($event) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContainerComponent:onEditBudgetCancel',\r\n $event\r\n });\r\n this.editingBudget = false;\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(items => items.filter(item => item.IsActive)),\r\n map(items =>\r\n items.map(item => ({\r\n label: item.PayrollItem,\r\n value: item.PIListID\r\n }))\r\n )\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { filter, take, takeWhile } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { EditGrid, ResponseStatus } from '../../shared';\r\nimport { SelectItem, Table } from '../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n@Component({\r\n selector: 'ef-project-budget-contract',\r\n templateUrl: './project-budget-contract.component.html',\r\n styleUrls: ['./project-budget-contract.component.scss']\r\n})\r\nexport class ProjectBudgetContractComponent\r\n extends EditGrid\r\n implements OnInit, OnDestroy, OnChanges {\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n private ItemsSubject = new ReplaySubject<\r\n fromDataServices.Contract.Summary.ContractSummary[]\r\n >(1);\r\n moment: any;\r\n @Input() BudgetCycles: SelectItem[];\r\n @Input() BudgetLevels: SelectItem[];\r\n @Input() contractFilterSelectItems: SelectItem[];\r\n @Input() public set download(value) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContractComponent:download:set',\r\n value\r\n });\r\n if (!!value) {\r\n this.dataTable.exportCSV.bind(this.dataTable)();\r\n }\r\n }\r\n @Output() BudgetCycleChange = new EventEmitter();\r\n @ViewChild('dataTable', { static: true }) dataTable: Table;\r\n @Input() disabled = false;\r\n active = true;\r\n cols = [\r\n { field: 'Contractdesc', header: 'Contract' },\r\n { field: 'Budgetcycle', header: 'Budget Cycle' },\r\n { field: 'Budgetlevel', header: 'Budget Level' },\r\n { field: 'BudgetEndDate', header: 'Budget End Date' },\r\n { field: 'Contractvalue', header: 'Contract Value' },\r\n { field: 'Contractfunding', header: 'Contract Funding' },\r\n { field: 'Totalhoursbudget', header: 'Total Hours Budget' },\r\n { field: 'Totalhoursspent', header: 'Total Hours Spent' },\r\n { field: 'Totalhoursvariance', header: 'Total Hours Variance' },\r\n { field: 'Totalamountbudget', header: 'Total Amount Budget' },\r\n { field: 'Totalamountspent', header: 'Total Amount Spent' },\r\n { field: 'Totalamountvariance', header: 'Total Amount Variance' }\r\n ];\r\n numCols = 15;\r\n constructor(\r\n private log: LoggingService,\r\n private confirmservice: UnsavedChangesService\r\n ) {\r\n super();\r\n this.moment = moment;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.items && changes.items.currentValue) {\r\n this.ItemsSubject.next(changes.items.currentValue);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupSubscriptions() {\r\n this.ItemsSubject.pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && !(x.length < 1)),\r\n take(1)\r\n ).subscribe(items => {\r\n this.selected = items[0];\r\n this.onRowSelect({ data: items[0] });\r\n });\r\n }\r\n onRowEditInit(item: fromDataServices.Contract.Summary.ContractSummary) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContractComponent:onRowEditInit',\r\n item\r\n });\r\n super.onRowSelect({ data: item });\r\n super.onRowEditInit(item);\r\n }\r\n onRowEditSave(item: fromDataServices.Contract.Summary.ContractSummary) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContractComponent:onRowEditSave',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing,\r\n selected: this.selected\r\n });\r\n const needsConfirm =\r\n item.Budgetcycleid !== this.cloned[item.id].Budgetcycleid;\r\n if (needsConfirm) {\r\n this.confirmservice\r\n .confirm({\r\n headerText: 'Are you sure?',\r\n dialogText:\r\n 'Changing budget cycle or budget level will remove ALL budgets for the selected contract.',\r\n okClass: 'p-button-danger p-button-text'\r\n })\r\n .pipe(take(1))\r\n .subscribe(confirmed => {\r\n if (confirmed) {\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n\r\n this.SaveItem.next(item);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.selected = null;\r\n } else {\r\n this.onRowEditCancel(item);\r\n }\r\n });\r\n } else {\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n\r\n this.SaveItem.next(item);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.selected = null;\r\n }\r\n }\r\n onRowEditDelete(\r\n item: fromDataServices.Contract.Summary.ContractSummary,\r\n index: number\r\n ) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to delete this contract?`\r\n })\r\n .then(() => {\r\n // if (item.id === 'add') {\r\n // this.items.splice(index, 1, { ...this.addTemplate } as any);\r\n // } else {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n // }\r\n\r\n this.DeleteItem.next([item]);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n return;\r\n })\r\n .catch(e => {});\r\n }\r\n onLockClick(item: fromDataServices.Contract.Summary.ContractSummary) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetContractComponent:onLockClick',\r\n item\r\n });\r\n this.onRowEditInit(item);\r\n item.BudgetLock = !item.BudgetLock;\r\n this.onRowEditSave(item);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { LOCALE_ID, NgModule } from '@angular/core';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { ProjectBudgetAddContainerComponent } from './project-budget-add-container/project-budget-add-container.component';\r\nimport { ProjectBudgetAddComponent } from './project-budget-add/project-budget-add.component';\r\nimport { ProjectBudgetContainerComponent } from './project-budget-container/project-budget-container.component';\r\nimport { ProjectBudgetContractComponent } from './project-budget-contract/project-budget-contract.component';\r\nimport { ProjectBudgetRoute } from './project-budget.route';\r\nimport { ProjectBudgetComponent } from './project-budget/project-budget.component';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport * as reducer from './store/budget-upload.reducer';\r\nimport { BudgetUploadEffects } from './store/budget-upload.effects';\r\n@NgModule({\r\n declarations: [\r\n ProjectBudgetContainerComponent,\r\n ProjectBudgetComponent,\r\n ProjectBudgetContractComponent,\r\n ProjectBudgetAddComponent,\r\n ProjectBudgetAddContainerComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [ProjectBudgetRoute]\r\n }),\r\n StoreModule.forFeature(\r\n reducer.BudgetUploadsFeatureKey,\r\n reducer.reducer\r\n ),\r\n EffectsModule.forFeature([BudgetUploadEffects])\r\n ],\r\n providers: [{ provide: LOCALE_ID, useValue: 'en-US' }]\r\n})\r\nexport class ProjectBudgetModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { ProjectBudgetContainerComponent } from './project-budget-container/project-budget-container.component';\r\nconst log = new LoggingService();\r\n\r\nexport const ProjectBudgetRoute: Ng2StateDeclaration = {\r\n // name: 'ProjectBudget.**'\r\n name: 'projectbudget',\r\n url: '/projectbudget',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.ProjectBudgetModule)\r\n data: { requiresAuth: true },\r\n\r\n component: ProjectBudgetContainerComponent\r\n};\r\n","import { CurrencyPipe } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport * as $ from 'jquery';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { filter, startWith, take, takeWhile, tap } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { ProjectBudget } from '../../data-services/project-budget/project-budget.model';\r\nimport { IUserGroup } from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item/store/payroll-item.model';\r\nimport {\r\n flatDeep,\r\n getDynamicColumns,\r\n IColumn,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport {\r\n Calendar,\r\n MenuItem,\r\n SelectItem,\r\n Table\r\n} from '../../shared/efaact-primeng.module';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport { UserRoleEnum } from '../../user-info';\r\nimport { IUserRole } from '../../user-role/IUserRole';\r\nimport * as XLSX from 'xlsx';\r\n@Component({\r\n selector: 'ef-project-budget',\r\n templateUrl: './project-budget.component.html',\r\n styleUrls: ['./project-budget.component.scss']\r\n})\r\nexport class ProjectBudgetComponent\r\n extends DisplayErrors\r\n implements OnInit, OnDestroy, OnChanges\r\n{\r\n // cols$: Observable;\r\n // colGroups$: Observable;\r\n moment: any;\r\n filterItems = ['Status', 'AutoCalculateAmount', 'Row_Version', 'updates'];\r\n cols: IColumn[] = [];\r\n public get tableCols(): { field: any; header: string }[] {\r\n return this.cols\r\n .filter(c => c.showColumn)\r\n .map(c => ({\r\n field: this.onGetField(c.field, c.group),\r\n header: `${c.group} - ${c.header}`,\r\n exportable: c.exportable\r\n // class: c.class,\r\n // group: c.group,\r\n // style: c.style\r\n }));\r\n }\r\n // tableCols: any[] = [];\r\n public dropdownItemHeight = environment.dropdownItemHeight;\r\n frozenCols: any[] = [\r\n { field: 'TaskLongName', header: 'Task' },\r\n { field: 'CostType', header: 'Cost Type' },\r\n { field: 'ServiceItem', header: 'Service Item' },\r\n { field: 'PersonName', header: 'Person' },\r\n { field: 'PayrollItem', header: 'PayrollItem' },\r\n { field: 'CostCenter', header: 'CostCenter' }\r\n ];\r\n colGroups: IColumn[] = [];\r\n active = true;\r\n baseWidth = 120;\r\n tableWidth = `${this.baseWidth}em`;\r\n BudgetCycleSubject = new ReplaySubject(1);\r\n FYEndDateSubject = new ReplaySubject(1);\r\n FYStartDateSubject = new ReplaySubject(1);\r\n showPerson = true;\r\n showEmptyBudgets = true;\r\n showDisbursment = false;\r\n showPeriodTotal = false;\r\n showAmounts = true;\r\n showActuals = false;\r\n showUploadDialog = false;\r\n showUploadError = false;\r\n excelFileAsJsonStr: string | null | undefined;\r\n excelFileAsJson: any;\r\n budgetUpload = false;\r\n budgetUploadDate: any;\r\n @Output() uploadJSON = new ReplaySubject(1);\r\n @ViewChild('fileUpload') uploadInput: ElementRef;\r\n\r\n get numCols(): number {\r\n let ret = 0;\r\n if (this.showDisbursment) {\r\n ret += 3;\r\n }\r\n if (this.showPeriodTotal) {\r\n ret += 1;\r\n }\r\n if (this.showAmounts && this.showPeriodTotal) {\r\n ret += 1;\r\n }\r\n ret += this.cols.length;\r\n if (this.cols.length == 0) {\r\n ret = 0;\r\n }\r\n return ret;\r\n }\r\n get frozenHeaderBudgetColspan(): number {\r\n const colspan = 3;\r\n return colspan;\r\n }\r\n get frozenHeaderBudget2Colspan(): number {\r\n let colspan = 1;\r\n if (this.showPerson) {\r\n colspan += 2;\r\n }\r\n // if (this.CostCenters && this.CostCenters.length > 1) {\r\n // colspan += 1;\r\n // }\r\n return colspan;\r\n }\r\n get disbursementHeaderGroupWidth(): number {\r\n const width = 128; //2 small widths\r\n return width * 2 + 44 - 1; //add a delete cell width\r\n }\r\n get totalsHeaderGroupWidth(): number {\r\n const width = 64; //2 small widths\r\n return width * 2 - 1; //add a delete cell width\r\n }\r\n get budgetHeaderGroupWidth(): number {\r\n // var colwidth = 159 + 1 / 6;\r\n const colwidth = 160;\r\n const px = colwidth * 3;\r\n return px - 1;\r\n }\r\n get budget2HeaderGroupWidth(): number {\r\n // var colwidth = 159 + 1 / 6;\r\n const colwidth = 160;\r\n let px = colwidth * 0;\r\n if (this.showPerson) {\r\n px += colwidth * 2;\r\n }\r\n // if (this.CostCenters && this.CostCenters.length > 1) {\r\n px += colwidth;\r\n // }\r\n return px;\r\n }\r\n get numFrozenCols(): number {\r\n return this.showPerson ? 10 : 8;\r\n }\r\n get dynamicHeaderWidth() {\r\n let numCols = 2;\r\n if (this.showActuals) {\r\n numCols += 4;\r\n }\r\n const colwidth = 96 * numCols;\r\n const fudge = numCols - 1;\r\n return colwidth; // - (fudge < 1 ? 1 : fudge);\r\n }\r\n private _FYEndDate: Date;\r\n @Input() public set FYEndDate(value: Date) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:FYEndDate:set',\r\n FYEndDate: value\r\n });\r\n this._FYEndDate = value;\r\n this.FYEndDateSubject.next(value);\r\n }\r\n public get FYEndDate(): Date {\r\n return this._FYEndDate;\r\n }\r\n private _FYStartDate: Date;\r\n @Input() public set FYStartDate(value: Date) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:_FYStartDate:set',\r\n _FYStartDate: value\r\n });\r\n this._FYStartDate = value;\r\n this.FYStartDateSubject.next(value);\r\n }\r\n public get FYStartDate(): Date {\r\n return this._FYStartDate;\r\n }\r\n @Input() contract: fromDataServices.Contract.Summary.ContractSummary;\r\n @Input() roles: IUserRole[];\r\n @Input() public set download(value) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:download:set',\r\n value,\r\n cols: this.cols,\r\n tableCols: this.tableCols\r\n });\r\n if (value) {\r\n this.dataTable.columns = this.tableCols;\r\n this.dataTable.exportCSV.bind(this.dataTable)();\r\n this.dataTable.columns = this.cols;\r\n }\r\n }\r\n private _budgetCycle: string;\r\n @Input() public set BudgetCycle(value: string) {\r\n this._budgetCycle = value;\r\n this.BudgetCycleSubject.next(value);\r\n }\r\n public get BudgetCycle(): string {\r\n return this._budgetCycle;\r\n }\r\n @Input() disabled: boolean;\r\n @Input() userInfo: fromUser.IUserInfo;\r\n @Input() allowCost: boolean;\r\n @Input() loading: boolean;\r\n @Input() CostCenters: IUserGroup[];\r\n @Input() AutoCalculateAmount: boolean;\r\n @Input() directReports: SelectItem[];\r\n @Input() serviceItems: SelectItem[];\r\n @Input() payrollItems: SelectItem[];\r\n filteredItems: ProjectBudget[];\r\n @Output() SaveMetadata =\r\n new ReplaySubject(1);\r\n @Output() Save =\r\n new ReplaySubject(1);\r\n @Output() Edit =\r\n new ReplaySubject(1);\r\n @Output() Cancel =\r\n new ReplaySubject(1);\r\n @Output()\r\n Delete = new ReplaySubject(1);\r\n @Output()\r\n Select = new ReplaySubject(1);\r\n @Output() Add = new ReplaySubject(1);\r\n @Output() Jumpstart = new ReplaySubject(1);\r\n @Output() FiscalYearChange = new EventEmitter();\r\n @Output() Download = new ReplaySubject(1);\r\n @Output() SelectPerson = new ReplaySubject(1);\r\n // @ViewChild('dataTable', { static: true }) dataTable: Table;\r\n @ViewChild('budgetDateFilter', { static: true }) budgetDateFilter: Calendar;\r\n public editing?: fromDataServices.ProjectBudget.ProjectBudget;\r\n public maxBudgetDate: Date = new Date();\r\n selected: fromDataServices.ProjectBudget.ProjectBudget[] = [];\r\n cloned: { [i: number]: fromDataServices.ProjectBudget.ProjectBudget } = {};\r\n budgetForm: FormGroup;\r\n downloadOptions: MenuItem[] = [\r\n {\r\n label: 'Budget Contract Summary',\r\n icon: 'pi pi-download',\r\n command: () => this.Download.next('contract')\r\n },\r\n {\r\n label: 'Budget Task Detail',\r\n icon: 'pi pi-download',\r\n command: () => this.Download.next('budget')\r\n }\r\n ];\r\n constructor(\r\n private log: LoggingService,\r\n public confirmservice: UnsavedChangesService,\r\n private cdRef: ChangeDetectorRef,\r\n @Inject(LOCALE_ID) private locale: string\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.budgetForm = new FormGroup({\r\n StartDate: new FormControl(null, Validators.required),\r\n EndDate: new FormControl(null, Validators.required),\r\n AutoCalculateAmount: new FormControl(null)\r\n });\r\n }\r\n onResize($event) {\r\n // $('document').on('resize', () => {\r\n this.log.verbose({ type: 'ProjectBudgetComponent:resize', $event });\r\n const tbHeight = $('#tbBudgetDetail').height() ?? 0;\r\n const containerHeight = $('#divProjectDetailContainer').height() ?? 0;\r\n const tableHeight = containerHeight - tbHeight;\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:resize',\r\n tbHeight,\r\n containerHeight,\r\n tableHeight\r\n });\r\n $('#tblProjectBudgetDetail').height(tableHeight - 5);\r\n // });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.items) {\r\n if (changes.items.previousValue) {\r\n if (this.editing) {\r\n this.onRowEditCancel(this.editing);\r\n }\r\n }\r\n if (changes.items.currentValue) {\r\n const value = changes.items.currentValue;\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:items:set',\r\n colGroups: this.colGroups,\r\n items: value\r\n });\r\n this.colGroups = [];\r\n this.cols = [];\r\n this.filteredItems = [];\r\n this.tableWidth = `${this.baseWidth}em`;\r\n if (Array.isArray(value) && value.length > 0) {\r\n this.mapColumns(value[0]);\r\n this.showEmptyBudgetsChange();\r\n }\r\n this.onResize(null);\r\n }\r\n }\r\n if (changes.allowCost && changes.allowCost.currentValue) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:allowCost:set',\r\n colGroups: this.colGroups,\r\n allowCost: changes.allowCost.currentValue\r\n });\r\n this.showAmounts =\r\n this.isAdmin(this.roles) ||\r\n (this.allowCost && this.isTaskManager(this.roles));\r\n this.cdRef.markForCheck();\r\n }\r\n if (changes.AutoCalculateAmount) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:AutoCalculateAmount:set',\r\n AutoCalculateAmount: changes.AutoCalculateAmount.currentValue\r\n });\r\n this.budgetForm\r\n ?.get('AutoCalculateAmount')\r\n ?.setValue(changes.AutoCalculateAmount.currentValue);\r\n setTimeout(() => {\r\n this.onAutoCalcChange({\r\n checked: changes.AutoCalculateAmount.currentValue\r\n });\r\n }, 0);\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.setupSubscriptions();\r\n this.showAmounts =\r\n this.isAdmin(this.roles) ||\r\n (this.allowCost && this.isTaskManager(this.roles));\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n openUploadDialog() {\r\n this.showUploadDialog = true;\r\n }\r\n\r\n uploadExcelFile($event) {\r\n this.showUploadError = false;\r\n this.fileToString($event.target.files[0]);\r\n }\r\n\r\n fileToString(file) {\r\n const fileNameSpan = document.getElementById('file-selected');\r\n if (fileNameSpan) {\r\n fileNameSpan.textContent = file.name;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onload = event => {\r\n const binaryData = event.target?.result;\r\n this.excelToJSON(binaryData);\r\n };\r\n reader.readAsBinaryString(file);\r\n }\r\n\r\n excelToJSON(binaryData) {\r\n const workbook = XLSX.read(binaryData, { type: 'binary' });\r\n\r\n const jsonData = workbook.SheetNames.reduce((initial, name) => {\r\n const sheet = workbook.Sheets[name];\r\n initial = XLSX.utils.sheet_to_json(sheet);\r\n return initial;\r\n }, {});\r\n\r\n this.excelFileAsJson = jsonData;\r\n //this.excelFileAsJsonStr = JSON.stringify(jsonData);\r\n //console.log(this.excelFileAsJsonStr);\r\n }\r\n\r\n sendJSON() {\r\n if (this.excelFileAsJson != null) {\r\n this.budgetUpload = true;\r\n this.excelFileAsJson = this.excelFileAsJson.map(x => ({\r\n ...x,\r\n PeriodEndDate: moment(\r\n this.dateToISODateString(x.PeriodEndDate)\r\n ).format('MM/DD/YY')\r\n }));\r\n this.budgetUploadDate = this.excelFileAsJson[0].PeriodEndDate;\r\n this.excelFileAsJsonStr = JSON.stringify(this.excelFileAsJson);\r\n this.uploadJSON.next(this.excelFileAsJsonStr);\r\n this.reset();\r\n } else {\r\n this.showUploadError = true;\r\n this.budgetUpload = false;\r\n }\r\n }\r\n\r\n cancelUpload() {\r\n this.showUploadError = false;\r\n this.reset();\r\n }\r\n reset() {\r\n this.showUploadError = false;\r\n this.showUploadDialog = false;\r\n this.excelFileAsJsonStr = null;\r\n this.uploadInput.nativeElement.value = '';\r\n const fileNameSpan = document.getElementById('file-selected');\r\n if (fileNameSpan) {\r\n fileNameSpan.textContent = '';\r\n }\r\n }\r\n dateToISODateString(excelDate) {\r\n return this.excelDateConversion(excelDate).toISOString().split('T')[0];\r\n }\r\n excelDateConversion(excelDate) {\r\n return new Date(Date.UTC(0, 0, excelDate - 1));\r\n }\r\n getColSpan(item, column) {\r\n // let keys = Object.keys(item[column]);\r\n const cols = Object.keys(item[column]);\r\n let span = cols.length - 1;\r\n if (!this.showAmounts) {\r\n span =\r\n span -\r\n cols.filter(x => x.toLocaleLowerCase().includes('amount'))\r\n .length;\r\n }\r\n if (!this.showActuals) {\r\n span =\r\n span -\r\n cols.filter(x => x.toLocaleLowerCase().includes('actual'))\r\n .length;\r\n span =\r\n span -\r\n cols.filter(x => x.toLocaleLowerCase().includes('variance'))\r\n .length;\r\n // if()\r\n }\r\n return span;\r\n // return this.showAmounts\r\n // ? Object.keys(item[column]).length - 1\r\n // : Object.keys(item[column]).filter(x =>\r\n // x.toLocaleLowerCase().includes('amount')\r\n // ).length;\r\n }\r\n mapColumns(item: ProjectBudget) {\r\n // getBudgetDynamicColumns returns the dynamic column groups, i.e 01January or Week Ending XXX\r\n // each of these groups has data nested under it, i.e. hours, amounts, variance, etc\r\n const dynCols = getDynamicColumns(item, this.filterItems);\r\n // const colspan = this.showAmounts\r\n // ? Object.keys(item[dynCols[0]]).length - 1\r\n // : Object.keys(item[dynCols[0]]).length - 2;\r\n const colspan = this.getColSpan(item, dynCols[0]);\r\n\r\n this.colGroups = dynCols.map(x => ({\r\n field: x,\r\n header: x,\r\n colspan: this.getColSpan(item, x), // apparently width 0 TD's don't count, also remove TxnID\r\n showColumn: true,\r\n group: null as any\r\n }));\r\n\r\n function getColumnStyle(\r\n field: string,\r\n contract: fromDataServices.Contract.Summary.ContractSummary\r\n ): string {\r\n let result = '';\r\n // if (field === 'TxnID') {\r\n // result = 'width:0;display:none;';\r\n // }\r\n // if (field.includes('Hours')) {\r\n // result = 'width: 5em;';\r\n // }\r\n // if (field.includes('Forecast') && !contract.BudgetLock) {\r\n // result = 'width:0;display:none';\r\n // }\r\n result += 'white-space: normal;';\r\n return result;\r\n }\r\n function getColumnClass(\r\n field: string,\r\n contract: fromDataServices.Contract.Summary.ContractSummary\r\n ): string {\r\n let result = '';\r\n if (field.includes('Amount')) {\r\n result += ' currency';\r\n }\r\n if (field.includes('Hours')) {\r\n result += ' hours';\r\n }\r\n if (field.includes('Actual') || field.includes('Variance')) {\r\n result += ' disabled';\r\n }\r\n if (field.includes('Forecast') && !contract.BudgetLock) {\r\n result += ' disabled';\r\n }\r\n if (contract.BudgetLock && !field.includes('Forecast')) {\r\n result += ' disabled';\r\n }\r\n return result;\r\n }\r\n function getColumnHidden(\r\n field: string,\r\n contract: fromDataServices.Contract.Summary.ContractSummary\r\n ): boolean {\r\n let result = false;\r\n if (field === 'TxnID') {\r\n result = true;\r\n }\r\n if (field.includes('Forecast') && !contract.BudgetLock) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n // this takes the column groups and sets up the columns under each group with an IColumn structure\r\n this.cols = flatDeep(\r\n this.colGroups.map(cg =>\r\n Object.keys(item[cg.field])\r\n .map(x => ({\r\n group: cg.field,\r\n field: x,\r\n header: x,\r\n exportable: x === 'TxnID' ? false : true,\r\n style: getColumnStyle(x, this.contract),\r\n hidden: getColumnHidden(x, this.contract),\r\n // style: 'width: 7em',\r\n class: getColumnClass(x, this.contract),\r\n // class: 'currency',\r\n showColumn: this.getShowColumn(x)\r\n }))\r\n .filter(x => x.showColumn)\r\n )\r\n );\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:mapColumns',\r\n cols: this.cols,\r\n colgroups: this.colGroups,\r\n showAmounts: this.showAmounts,\r\n item\r\n });\r\n this.tableWidth = `${\r\n this.baseWidth + colspan * 8 * this.colGroups.length\r\n }em`;\r\n // this.ItemsSubject.next(this._items);\r\n }\r\n getShowColumn(column: string) {\r\n let showColumn = true;\r\n if (column.toLocaleLowerCase().includes('actual')) {\r\n showColumn = showColumn && this.showActuals;\r\n }\r\n if (column.toLocaleLowerCase().includes('variance')) {\r\n showColumn = showColumn && this.showActuals;\r\n }\r\n // INFO: this has to come after the showActuals check b/c there are colums that have both\r\n if (column.toLocaleLowerCase().includes('amount')) {\r\n showColumn = showColumn && this.showAmounts;\r\n }\r\n return showColumn;\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.FYStartDateSubject, this.FYEndDateSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ProjectBudgetContractComponent:FY:tap',\r\n x\r\n })\r\n ),\r\n filter(\r\n ([fyStartDate, fyEndDate]) => !!fyStartDate && !!fyEndDate\r\n )\r\n )\r\n .subscribe(([fyStartDate, fyEndDate]) => {\r\n const controls = this.budgetForm.controls;\r\n // const initialDate = fydates.find(\r\n // x => x.value === moment(fy).format('MM/DD/YYYY')\r\n // );\r\n controls['StartDate'].setValue(fyStartDate);\r\n controls['EndDate'].setValue(fyEndDate);\r\n this.maxBudgetDate = moment(fyStartDate)\r\n .add(1, 'year')\r\n .toDate();\r\n this.log.verbose({\r\n type: 'ProjectBudgetContractComponent:FY',\r\n fyStartDate,\r\n fyEndDate\r\n });\r\n });\r\n\r\n const controls = this.budgetForm.controls;\r\n controls['StartDate'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(startDate => {\r\n this.maxBudgetDate = moment(startDate)\r\n .add(1, 'years')\r\n .add(-1, 'days')\r\n .toDate();\r\n });\r\n combineLatest([\r\n controls['StartDate'].valueChanges.pipe(\r\n startWith(controls['StartDate'].value)\r\n ),\r\n controls['EndDate'].valueChanges.pipe(\r\n startWith(controls['EndDate'].value)\r\n )\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([startDate, endDate]) => {\r\n this.FiscalYearChange.next([startDate, endDate]);\r\n });\r\n }\r\n onRowEditInit(item: fromDataServices.ProjectBudget.ProjectBudget) {\r\n this.cloned[item.id] = clone(item);\r\n this.editing = clone(item);\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:onRowEditInit',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing\r\n });\r\n this.Select.next(item);\r\n this.Edit.next(item);\r\n this.selected = [];\r\n }\r\n onRowEditSave(item: fromDataServices.ProjectBudget.ProjectBudget) {\r\n const i = clone(item) as fromDataServices.ProjectBudget.ProjectBudget;\r\n const cols = getDynamicColumns(item, this.filterItems);\r\n let updated = cols.length;\r\n cols.forEach(c => {\r\n const keys = Object.keys(i[c]);\r\n if (!keys.some(k => i[c][k] !== this.editing[c][k])) {\r\n delete i[c];\r\n updated--;\r\n } else {\r\n i[c].AutoCalculateAmount =\r\n this.budgetForm.controls['AutoCalculateAmount'].value;\r\n }\r\n });\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:onRowEditSave',\r\n cols,\r\n item,\r\n i,\r\n cloned: this.cloned,\r\n selected: this.selected,\r\n editing: this.editing,\r\n updated\r\n });\r\n if (\r\n i.PersonListID != this.editing?.PersonListID ||\r\n i.SIListID != this.editing?.SIListID ||\r\n i.PIListID != this.editing?.PIListID\r\n ) {\r\n //if nothing in the budget details has changed, need to add the first one for a txn id to identify\r\n //this as an update and not a new budget\r\n if (updated <= 0) {\r\n i[cols[0]] = item[cols[0]];\r\n }\r\n this.SaveMetadata.next(i);\r\n }\r\n\r\n if (updated > 0) {\r\n i.Status = {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n };\r\n item.Status = {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n };\r\n i.AutoCalculateAmount =\r\n this.budgetForm.controls['AutoCalculateAmount'].value;\r\n this.Save.next(i);\r\n }\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.selected = [];\r\n this.Cancel.next(i);\r\n }\r\n onRowEditCancel(item: fromDataServices.ProjectBudget.ProjectBudget) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:onRowEditCancel',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing\r\n });\r\n let index = this.items.findIndex(x => x.id === item.id);\r\n\r\n if (index >= 0) {\r\n if (this.editing) {\r\n this.items.splice(index, 1, this.editing);\r\n }\r\n }\r\n index = this.items.findIndex(x => x.id === 'add');\r\n if (index >= 0) {\r\n this.items.splice(index, 1);\r\n }\r\n this.items = [...this.items];\r\n this.selected = [];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.dataTable.reset();\r\n this.cdRef.markForCheck();\r\n this.cdRef.detectChanges();\r\n this.Cancel.next(item);\r\n }\r\n onRowSelect($event) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:onRowSelect',\r\n $event\r\n });\r\n this.Select.next($event.data);\r\n }\r\n onRowEditDelete(items: fromDataServices.ProjectBudget.ProjectBudget[]) {\r\n const cols = getDynamicColumns(items[0], this.filterItems);\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:onRowEditDelete',\r\n cols,\r\n item: items\r\n });\r\n this.confirmservice\r\n .confirm({\r\n dialogText:\r\n items.length === 1\r\n ? 'Are you sure you want to delete this project budget?'\r\n : 'Are you sure you want to delete these project budgets?',\r\n okClass: 'p-button-danger p-button-text'\r\n })\r\n .pipe(take(1))\r\n .subscribe(confirmed => {\r\n if (confirmed) {\r\n this.selected = [];\r\n items.forEach(item =>\r\n this.Delete.next(item[cols[0]].TxnID)\r\n );\r\n }\r\n this.dataTable.selection = null;\r\n });\r\n }\r\n onJumpstart() {\r\n this.confirmservice\r\n .confirm({\r\n dialogText:\r\n 'Jumpstart removes existing budgets for the selected contract and fiscal year',\r\n okClass: 'p-button-danger p-button-text'\r\n })\r\n .pipe(take(1))\r\n .subscribe(confirmed => {\r\n if (confirmed) {\r\n this.Jumpstart.next();\r\n }\r\n });\r\n }\r\n disburse(item: fromDataServices.ProjectBudget.ProjectBudget) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:disburse',\r\n item\r\n });\r\n const cols = getDynamicColumns(item, this.filterItems);\r\n const amounts = this.getDisbursementAmount(\r\n (item.DisburseAmount || 0) / cols.length\r\n ); // TODO: rounding\r\n const hours = this.getDisbursementAmount(\r\n (item.DisburseHours || 0) / cols.length\r\n ); // TODO: rounding\r\n cols.forEach(c => {\r\n item[c].Hours = hours;\r\n item[c].Amount = amounts;\r\n });\r\n item.DisburseAmount = this.getDisbursementAmount(amounts * cols.length);\r\n item.DisburseHours = this.getDisbursementAmount(hours * cols.length);\r\n }\r\n showAmountsChanged() {\r\n if (this.items && this.items.length) {\r\n this.mapColumns(this.items[0]);\r\n }\r\n }\r\n showActualsChanged() {\r\n if (this.items && this.items.length) {\r\n this.loading = true;\r\n this.cdRef.detectChanges();\r\n this.mapColumns(this.items[0]);\r\n this.loading = false;\r\n this.cdRef.detectChanges();\r\n }\r\n }\r\n /**\r\n * we want the highest number that stays below what they entered\r\n */\r\n getDisbursementAmount(value: number): number {\r\n return Number((Math.floor(value * 100) / 100).toFixed(2));\r\n }\r\n formatBudgetColumn = (item: ProjectBudget, col: IColumn) => {\r\n try {\r\n if (item && item[col.group]) {\r\n if (col.field === 'TxnID') {\r\n return '';\r\n }\r\n if (col.field.includes('Amount')) {\r\n return new CurrencyPipe(this.locale).transform(\r\n item[col.group][col.field]\r\n );\r\n }\r\n return item[col.group][col.field];\r\n }\r\n return '';\r\n } catch (e) {\r\n this.log.error(e, item, col);\r\n }\r\n };\r\n showEmptyBudgetsChange() {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:showEmptyBudgetsChange',\r\n showEmptyBudgets: this.showEmptyBudgets\r\n });\r\n const dynCols = getDynamicColumns(this.items[0], this.filterItems);\r\n this.filteredItems = this.items\r\n .filter(x => x.id !== 'jumpstart')\r\n .filter(\r\n x =>\r\n this.cols\r\n .filter(\r\n c => c.field === 'Hours' || c.field === 'Amount'\r\n )\r\n .reduce((a, c) => {\r\n return (\r\n this.showEmptyBudgets || a + x[c.group][c.field]\r\n );\r\n }, 0) > 0\r\n )\r\n .map(x => ({\r\n ...x,\r\n YearlyBudgetAmount: dynCols.reduce(\r\n (a, c) => a + Number(x[c].Amount),\r\n 0\r\n ),\r\n YearlyBudgetHours: dynCols.reduce(\r\n (a, c) => a + Number(x[c].Hours),\r\n 0\r\n )\r\n }));\r\n }\r\n onExport($event: { data: any; field: string }) {\r\n return $event.data;\r\n }\r\n onGetField(field, group) {\r\n return data => {\r\n return data[group][field];\r\n };\r\n }\r\n onAutoCalcChange($event) {\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:onAutoCalcChange',\r\n $event\r\n });\r\n }\r\n isAdmin = (roles: IUserRole[]): boolean =>\r\n roles &&\r\n !!roles.find(x => x.RoleGroupID === UserRoleEnum.Administrator);\r\n isTaskManager = (roles: IUserRole[]): boolean =>\r\n roles && !!roles.find(x => x.RoleGroupID === UserRoleEnum.TaskManager);\r\n trackBy = (index, item) => item.id;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { BudgetUpload } from './budget-upload.model';\r\n\r\nexport const uploadBudgets = createAction(\r\n '[BudgetUpload/API] POST UploadBudgets',\r\n props<{ JsonString: string }>()\r\n);\r\n\r\nexport const loadBudgetUploads = createAction(\r\n '[BudgetUpload/API] Load BudgetUploads',\r\n props<{ BudgetUploads: BudgetUpload[] }>()\r\n);\r\n\r\nexport const addBudgetUpload = createAction(\r\n '[BudgetUpload/API] Add BudgetUpload',\r\n props<{ BudgetUpload: BudgetUpload }>()\r\n);\r\n\r\nexport const upsertBudgetUpload = createAction(\r\n '[BudgetUpload/API] Upsert BudgetUpload',\r\n props<{ BudgetUpload: BudgetUpload }>()\r\n);\r\n\r\nexport const addBudgetUploads = createAction(\r\n '[BudgetUpload/API] Add BudgetUploads',\r\n props<{ BudgetUploads: BudgetUpload[] }>()\r\n);\r\n\r\nexport const upsertBudgetUploads = createAction(\r\n '[BudgetUpload/API] Upsert BudgetUploads',\r\n props<{ BudgetUploads: BudgetUpload[] }>()\r\n);\r\n\r\nexport const updateBudgetUpload = createAction(\r\n '[BudgetUpload/API] Update BudgetUpload',\r\n props<{ BudgetUpload: Update }>()\r\n);\r\n\r\nexport const updateBudgetUploads = createAction(\r\n '[BudgetUpload/API] Update BudgetUploads',\r\n props<{ BudgetUploads: Update[] }>()\r\n);\r\n\r\nexport const deleteBudgetUpload = createAction(\r\n '[BudgetUpload/API] Delete BudgetUpload',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteBudgetUploads = createAction(\r\n '[BudgetUpload/API] Delete BudgetUploads',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearBudgetUploads = createAction(\r\n '[BudgetUpload/API] Clear BudgetUploads'\r\n);\r\n\r\nexport const updateBudgetUploadSuccess = createAction(\r\n '[BudgetUpload/API] Update BudgetUploads Success Event',\r\n props<{ BudgetUpload: Partial }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport { CalcTypeService } from '../../lookups/calc-type.service';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { BudgetUploadService } from '../budget-upload.service';\r\nimport * as C_Actions from './budget-upload.actions';\r\nimport moment from 'moment';\r\n\r\n@Injectable()\r\nexport class BudgetUploadEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: BudgetUploadService\r\n ) {}\r\n\r\n uploadBudgets$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(C_Actions.uploadBudgets),\r\n switchMap(a =>\r\n this.service.uploadBudgets(a.JsonString).pipe(\r\n flatMap(resp => [\r\n localStorage.setItem('uploadMessage', resp)\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import {\r\n Action,\r\n createFeatureSelector,\r\n createReducer,\r\n createSelector,\r\n on\r\n} from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { BudgetUpload } from './budget-upload.model';\r\nimport * as BudgetUploadActions from './budget-upload.actions';\r\n\r\nexport const BudgetUploadsFeatureKey = 'budgetUpload';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: BudgetUpload) => model.ResponseMessage\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const BudgetUploadReducer = createReducer(\r\n initialState,\r\n on(BudgetUploadActions.addBudgetUpload, (state, action) =>\r\n adapter.addOne(action.BudgetUpload, state)\r\n ),\r\n on(BudgetUploadActions.upsertBudgetUpload, (state, action) =>\r\n adapter.upsertOne(action.BudgetUpload, state)\r\n ),\r\n on(BudgetUploadActions.addBudgetUploads, (state, action) =>\r\n adapter.addMany(action.BudgetUploads, state)\r\n ),\r\n on(BudgetUploadActions.upsertBudgetUploads, (state, action) =>\r\n adapter.upsertMany(action.BudgetUploads, state)\r\n ),\r\n on(BudgetUploadActions.updateBudgetUpload, (state, action) =>\r\n adapter.updateOne(action.BudgetUpload, state)\r\n ),\r\n on(BudgetUploadActions.updateBudgetUploads, (state, action) =>\r\n adapter.updateMany(action.BudgetUploads, state)\r\n ),\r\n on(BudgetUploadActions.deleteBudgetUpload, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(BudgetUploadActions.deleteBudgetUploads, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(BudgetUploadActions.loadBudgetUploads, (state, action) =>\r\n adapter.setAll(action.BudgetUploads, state)\r\n ),\r\n on(BudgetUploadActions.clearBudgetUploads, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return BudgetUploadReducer(state, action);\r\n}\r\n\r\nexport const selectBudgetUploadState = createFeatureSelector(\r\n BudgetUploadsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectBudgetUploadState);\r\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport { PtoPolicyAssignment } from '../../data-services/pto-policy/assignment';\r\nimport { PtoPolicySetup } from '../../data-services/pto-policy/setup';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport { SelectItem, Table } from '../../shared';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-assignment-presenter',\r\n templateUrl: './assignment-presenter.component.html',\r\n styleUrls: ['./assignment-presenter.component.scss']\r\n})\r\nexport class AssignmentPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit\r\n{\r\n public editing: PtoPolicyAssignment = {} as PtoPolicyAssignment;\r\n clonedPolicyAssignment: { [i: string]: PtoPolicyAssignment } = {};\r\n @Output() SavePolicyAssignment = new ReplaySubject(1);\r\n\r\n groupsSelectItem: SelectItem[];\r\n groupsInTableSelectItem: SelectItem[];\r\n moment: any;\r\n\r\n empSelection: PtoPolicyAssignment[] = [];\r\n groupForMultiUpdate: any;\r\n\r\n accrualsFilterSelectItem: SelectItem[];\r\n employeeFilterSelectItem: SelectItem[];\r\n policyFilterSelectItem: SelectItem[];\r\n\r\n private PolicyAssignmentSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _policyassignment: Array;\r\n @Input() set policyAssignment(value: Array) {\r\n this._policyassignment = value;\r\n this.PolicyAssignmentSubject.next(value);\r\n\r\n this.accrualsFilterSelectItem = this._policyassignment.map(x => ({\r\n value: x.AccrualPeriod,\r\n label: x.AccrualPeriod\r\n }));\r\n this.accrualsFilterSelectItem = this.accrualsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.employeeFilterSelectItem = this._policyassignment.map(x => ({\r\n value: x.EmployeeName,\r\n label: x.EmployeeName\r\n }));\r\n this.employeeFilterSelectItem = this.employeeFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.policyFilterSelectItem = this._policyassignment.map(x => ({\r\n value: x.PolicyTitle,\r\n label: x.PolicyTitle\r\n }));\r\n this.policyFilterSelectItem = this.policyFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n get policyAssignment(): Array {\r\n return this._policyassignment;\r\n }\r\n\r\n private GroupsSubject = new ReplaySubject>(1);\r\n private _groups: Array;\r\n @Input() set groups(value: Array) {\r\n this._groups = value;\r\n this.GroupsSubject.next(value);\r\n\r\n // this.groupsSelectItem = value.map(x => ({\r\n // value: x.GroupID,\r\n // label: x.GroupName\r\n // }));\r\n // this.groupsSelectItem = this.groupsSelectItem.filter(\r\n // (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n // );\r\n }\r\n get groups(): Array {\r\n return this._groups;\r\n }\r\n\r\n private PolicySetupSubject = new ReplaySubject>(1);\r\n private _policysetup: Array;\r\n @Input() set policySetup(value: Array) {\r\n this._policysetup = value;\r\n this.PolicySetupSubject.next(value);\r\n\r\n if (value && value.length > 0) {\r\n this.groupsSelectItem = value.map(x => ({\r\n value: x.Groupid,\r\n label: x.PolicyTitle\r\n }));\r\n this.groupsSelectItem = this.groupsSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.groupsInTableSelectItem = value.map(x => ({\r\n value: x.Groupid,\r\n label: x.PolicyTitle\r\n }));\r\n this.groupsInTableSelectItem.unshift({\r\n label: '-- Unassign Policy --',\r\n value: null\r\n });\r\n this.groupsInTableSelectItem = this.groupsInTableSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n }\r\n get policySetup(): Array {\r\n return this._policysetup;\r\n }\r\n\r\n private CompanySettingsSubject = new ReplaySubject>(\r\n 1\r\n );\r\n private _companysettings: Array;\r\n @Input() set companySettings(value: Array) {\r\n this._companysettings = value;\r\n this.CompanySettingsSubject.next(value);\r\n }\r\n get companySettings(): Array {\r\n return this._companysettings;\r\n }\r\n\r\n @Input() userInfo: IUserInfo;\r\n @Input() isQBO: boolean;\r\n\r\n @Output() UpdateCompanySetting = new ReplaySubject(1);\r\n @ViewChild('EmployeeTable', { static: true }) EmployeeTable: Table;\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onEditInit($event: { data: PtoPolicyAssignment }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: PtoPolicyAssignment) {\r\n this.clonedPolicyAssignment[rowData.Policyid] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: PtoPolicyAssignment) {\r\n this.SavePolicyAssignment.next(rowData);\r\n delete this.clonedPolicyAssignment[rowData.Policyid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: PtoPolicyAssignment) {\r\n delete this.clonedPolicyAssignment[item.Policyid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n empMultiUpdate() {\r\n if (this.empSelection.length > 0) {\r\n this.empSelection.forEach(emp => {\r\n emp.Groupid = this.groupForMultiUpdate;\r\n this.SavePolicyAssignment.next(emp);\r\n });\r\n this.empSelection = [];\r\n }\r\n }\r\n\r\n findGroupName(rowData) {\r\n let groupName;\r\n if (this.groups.length > 0) {\r\n if (this.groups.find(x => x.GroupID == rowData.Groupid) != null) {\r\n groupName = this.groups.find(\r\n x => x.GroupID == rowData.Groupid\r\n ).GroupName;\r\n return groupName;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n checkForOverrideMsg(rowData) {\r\n if (rowData.OverrideMsg != null) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n onCheckboxChange($event) {\r\n this.UpdateCompanySetting.next($event.checked);\r\n }\r\n\r\n tableFilter($event, type) {\r\n if (type == 'policy') {\r\n this.EmployeeTable.filter($event.value, 'PolicyTitle', 'in');\r\n }\r\n if (type == 'employee') {\r\n this.EmployeeTable.filter($event.value, 'EmployeeName', 'in');\r\n }\r\n if (type == 'accruals') {\r\n this.EmployeeTable.filter($event.value, 'AccrualPeriod', 'in');\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile } from 'rxjs/operators';\r\nimport * as fromSettings from '../../company-setting';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { LoadGroups } from '../../groups';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport * as fromGroups from '../../groups/store/reducer';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { SelectItem } from '../../shared';\r\nimport * as fromUser from '../../user-info';\r\n@Component({\r\n selector: 'ef-pto-policy-feature',\r\n templateUrl: './pto-policy-feature.component.html',\r\n styleUrls: ['./pto-policy-feature.component.scss']\r\n})\r\nexport class PtoPolicyFeatureComponent implements OnInit {\r\n active = true;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n\r\n process$: Observable;\r\n public policySetup$: Observable<\r\n fromDataServices.PolicySetup.PtoPolicySetup[]\r\n >;\r\n public policySetup: fromDataServices.PolicySetup.PtoPolicySetup[];\r\n public policyAssignment$: Observable<\r\n fromDataServices.PolicyAssignment.PtoPolicyAssignment[]\r\n >;\r\n public accrualPeriods$: Observable<\r\n fromDataServices.AccrualPeriod.AccrualPeriodModel[]\r\n >;\r\n\r\n public groups$: Observable>;\r\n\r\n public userInfo$: Observable;\r\n\r\n isQBO$: Observable;\r\n\r\n public companySettings$: Observable>;\r\n public accrualsFilterSelectItem: SelectItem[];\r\n\r\n policySetupDataService: EntityCollectionService;\r\n policyAssignmentDataService: EntityCollectionService;\r\n accrualPeriodDataService: EntityCollectionService;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: fromShared.Services.Logging.LoggingService,\r\n private store: Store\r\n ) {\r\n this.policySetupDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.PolicySetup.entityName\r\n );\r\n this.policyAssignmentDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.PolicyAssignment.entityName\r\n );\r\n this.accrualPeriodDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.AccrualPeriod.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'QBUpdateAccrual' })\r\n );\r\n this.policySetupDataService.getAll();\r\n this.policyAssignmentDataService.getAll();\r\n this.accrualPeriodDataService.getAll();\r\n this.store.dispatch(\r\n new LoadGroups({\r\n Categoryid: 'PUBLIC000000000000000000000000000000'\r\n })\r\n );\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.policySetupDataService.clearCache();\r\n this.policyAssignmentDataService.clearCache();\r\n }\r\n\r\n setupObservables() {\r\n this.isQBO$ = this.store.pipe(select(fromSettings.isQBOEnabled));\r\n\r\n this.companySettings$ = this.store.pipe(select(fromSettings.selectAll));\r\n\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.groups$ = this.store.pipe(select(fromGroups.getGroups));\r\n\r\n this.accrualPeriods$ = this.accrualPeriodDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n\r\n this.policySetup$ = this.policySetupDataService.entities$.pipe(\r\n filter(items => !!items && items.length > 0),\r\n map(x => clone(x))\r\n );\r\n this.policyAssignment$ =\r\n this.policyAssignmentDataService.entities$.pipe(map(x => clone(x)));\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n combineLatest([this.policySetup$, this.accrualPeriods$])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([policySetup, accrualPeriods]) => {\r\n if (policySetup && accrualPeriods) {\r\n if (policySetup.length > 0 && accrualPeriods.length > 0) {\r\n policySetup.forEach(x => {\r\n const period = accrualPeriods.find(\r\n y => y.AccrueLeavePeriodID == x.AccrualPeriodID\r\n );\r\n x.AccrualPeriod = period.AccrueLeavePeriod;\r\n });\r\n // policySetup = policySetup.map(p => ({\r\n // ...p,\r\n // AccrualPeriod: this.findAccrualPeriod(p, accrualPeriods)\r\n // }));\r\n this.policySetup = policySetup;\r\n this.accrualsFilterSelectItem = policySetup.map(x => ({\r\n value: x.AccrualPeriod,\r\n label: x.AccrualPeriod\r\n }));\r\n this.accrualsFilterSelectItem =\r\n this.accrualsFilterSelectItem.filter(\r\n (v, i, a) =>\r\n a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n onSavePolicySetup($event) {\r\n this.policySetupDataService.upsert($event);\r\n this.policyAssignmentDataService.getAll();\r\n }\r\n onDeletePolicySetup($event) {\r\n this.policySetupDataService.delete($event);\r\n this.policyAssignmentDataService.getAll();\r\n }\r\n onSavePolicyAssignment($event) {\r\n this.policyAssignmentDataService.upsert($event);\r\n }\r\n onUpdateCompanySetting($event) {\r\n this.store.dispatch(\r\n fromSettings.putCompanySettings({\r\n settings: [\r\n {\r\n SettingType: 'QBUpdateAccrual',\r\n SettingValue: $event == true ? '1' : '0'\r\n }\r\n ]\r\n })\r\n );\r\n }\r\n\r\n findAccrualPeriod(rowData, accrualPeriods) {\r\n let accrualPeriod;\r\n if (accrualPeriods.length > 0) {\r\n accrualPeriod = accrualPeriods.find(\r\n x => x.AccrueLeavePeriodID == rowData.AccrualPeriodID\r\n ).AccrueLeavePeriod;\r\n return accrualPeriod;\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport { AccrualPeriodModel } from '../../data-services/accrual-period';\r\nimport { PtoPolicyAssignment } from '../../data-services/pto-policy/assignment';\r\nimport { PtoPolicySetup } from '../../data-services/pto-policy/setup';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport { Process, SelectItem } from '../../shared';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-pto-policy-presenter',\r\n templateUrl: './pto-policy-presenter.component.html',\r\n styleUrls: ['./pto-policy-presenter.component.scss']\r\n})\r\nexport class PtoPolicyPresenterComponent implements OnInit {\r\n @Input() process: Process;\r\n private PolicySetupSubject = new ReplaySubject>(1);\r\n private _policysetup: Array;\r\n @Input() set policySetup(value: Array) {\r\n this._policysetup = value;\r\n this.PolicySetupSubject.next(value);\r\n }\r\n get policySetup(): Array {\r\n return this._policysetup;\r\n }\r\n\r\n private PolicyAssignmentSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _policyassignment: Array;\r\n @Input() set policyAssignment(value: Array) {\r\n this._policyassignment = value;\r\n this.PolicyAssignmentSubject.next(value);\r\n }\r\n get policyAssignment(): Array {\r\n return this._policyassignment;\r\n }\r\n\r\n private GroupsSubject = new ReplaySubject>(1);\r\n private _groups: Array;\r\n @Input() set groups(value: Array) {\r\n this._groups = value;\r\n this.GroupsSubject.next(value);\r\n }\r\n get groups(): Array {\r\n return this._groups;\r\n }\r\n\r\n private AccrualPeriodSubject = new ReplaySubject>(\r\n 1\r\n );\r\n private _accrualperiods: Array;\r\n @Input() set accrualPeriods(value: Array) {\r\n this._accrualperiods = value;\r\n this.AccrualPeriodSubject.next(value);\r\n }\r\n get accrualPeriods(): Array {\r\n return this._accrualperiods;\r\n }\r\n\r\n private CompanySettingsSubject = new ReplaySubject>(\r\n 1\r\n );\r\n private _companysettings: Array;\r\n @Input() set companySettings(value: Array) {\r\n if (value && value.length > 0) {\r\n value = value.filter(x => x.SettingType == 'QBUpdateAccrual');\r\n value = value.map(x => ({\r\n ...x,\r\n SettingValue: x.SettingValue == '1' ? true : false\r\n }));\r\n }\r\n this._companysettings = value;\r\n this.CompanySettingsSubject.next(value);\r\n }\r\n get companySettings(): Array {\r\n return this._companysettings;\r\n }\r\n\r\n @Input() userInfo: IUserInfo;\r\n @Input() isQBO: boolean;\r\n\r\n @Output() SavePolicySetup = new ReplaySubject(1);\r\n @Output() DeletePolicySetup = new ReplaySubject(1);\r\n @Output() SavePolicyAssignment = new ReplaySubject(1);\r\n @Output() UpdateCompanySetting = new ReplaySubject(1);\r\n tabHeight: any;\r\n activeState = [true, true];\r\n\r\n @Input() accrualsFilterSelectItem: SelectItem[];\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.handleOnOpen([0, 1]);\r\n }\r\n\r\n onSavePolicySetup($event) {\r\n this.SavePolicySetup.next($event);\r\n }\r\n onDeletePolicySetup($event) {\r\n this.DeletePolicySetup.next($event);\r\n }\r\n onSavePolicyAssignment($event) {\r\n this.SavePolicyAssignment.next($event);\r\n }\r\n onUpdateCompanySetting($event) {\r\n this.UpdateCompanySetting.next($event);\r\n }\r\n\r\n handleOnOpen($event: number[]) {\r\n const baseHeight = 73;\r\n this.tabHeight = `${\r\n baseHeight / ($event && $event.length ? $event.length : 1) - 1\r\n }vh`;\r\n }\r\n\r\n onSelectedChargeNumberTab($event) {\r\n if ($event === true) {\r\n this.activeState[1] = true;\r\n const event = [];\r\n if (this.activeState[0]) {\r\n event.push(0);\r\n }\r\n if (this.activeState[1]) {\r\n event.push(1);\r\n }\r\n setTimeout(() => {\r\n this.handleOnOpen(event);\r\n }, 0);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { entityName, PtoPolicySetupDataService } from '../data-services/pto-policy/setup';\r\nimport { SharedModule } from '../shared';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { PtoPolicyRoute } from './pto-policy.route';\r\nimport { EntityDataService } from '@ngrx/data';\r\n\r\n\r\n\r\n@NgModule({\r\n providers: [PtoPolicySetupDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [PtoPolicyRoute]\r\n })\r\n ]\r\n })\r\n export class PtoPolicyModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n policySetupService: PtoPolicySetupDataService\r\n ) {\r\n entityDataService.registerService(entityName, policySetupService);\r\n }\r\n }\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { PtoPolicyFeatureComponent } from './pto-policy-feature/pto-policy-feature.component';\r\nconst log = new LoggingService();\r\n\r\nexport const PtoPolicyRoute: Ng2StateDeclaration = {\r\n name: 'ptopolicy',\r\n url: '/ptopolicy',\r\n data: { requiresAuth: true },\r\n\r\n component: PtoPolicyFeatureComponent\r\n};\r\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Store } from '@ngrx/store';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { AccrualPeriod } from '../../data-services';\r\nimport { AccrualPeriodModel } from '../../data-services/accrual-period/accrual-period.model';\r\nimport { PtoPolicySetup } from '../../data-services/pto-policy/setup';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport { UpdateGroups } from '../../groups/store';\r\nimport * as fromGroups from '../../groups/store/reducer';\r\nimport { SelectItem, Table } from '../../shared';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-setup-presenter',\r\n templateUrl: './setup-presenter.component.html',\r\n styleUrls: ['./setup-presenter.component.scss']\r\n})\r\nexport class SetupPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit\r\n{\r\n public editing: PtoPolicySetup = {} as PtoPolicySetup;\r\n clonedPolicySetup: { [i: string]: PtoPolicySetup } = {};\r\n @Output() SavePolicySetup = new ReplaySubject(1);\r\n @Output() DeletePolicySetup = new ReplaySubject(1);\r\n\r\n groupsSelectItem: SelectItem[];\r\n accrualPeriodsSelectItem: SelectItem[];\r\n\r\n policyFilterSelectItem: SelectItem[];\r\n @Input() accrualsFilterSelectItem: SelectItem[];\r\n\r\n private PolicySetupSubject = new ReplaySubject>(1);\r\n private _policysetup: Array;\r\n newGroup: {\r\n Categoryid: string;\r\n GroupName: string;\r\n Purpose: string;\r\n GroupID: any;\r\n }[];\r\n @Input() set policySetup(value: Array) {\r\n if (value && value.length > 0) {\r\n value = value.map(p => ({\r\n ...p,\r\n AccrualPeriod: this.findAccrualPeriod(p)\r\n }));\r\n this._policysetup = value.sort((a, b) => {\r\n if (a.PolicyTitle === b.PolicyTitle) {\r\n return 0;\r\n }\r\n if (typeof a.PolicyTitle === typeof b.PolicyTitle) {\r\n return a.PolicyTitle < b.PolicyTitle ? -1 : 1;\r\n }\r\n return typeof a.PolicyTitle < typeof b.PolicyTitle ? -1 : 1;\r\n });\r\n\r\n this.groupsSelectItem = this._policysetup.map(x => ({\r\n value: x.Groupid,\r\n label: x.PolicyTitle\r\n }));\r\n this.groupsSelectItem = this.groupsSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.policyFilterSelectItem = this._policysetup.map(x => ({\r\n value: x.PolicyTitle,\r\n label: x.PolicyTitle\r\n }));\r\n this.policyFilterSelectItem = this.policyFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n // this.PolicySetupSubject.next(this._policysetup);\r\n } else {\r\n this._policysetup = value;\r\n // this.PolicySetupSubject.next(this._policysetup);\r\n }\r\n\r\n // this.cFilterSelectItem = value.map(x => ({\r\n // value: x.ContractListID,\r\n // label: x.ContractDesc\r\n // }));\r\n // this.cFilterSelectItem = this.cFilterSelectItem.filter(\r\n // (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n // );\r\n }\r\n get policySetup(): Array {\r\n return this._policysetup;\r\n }\r\n\r\n private GroupsSubject = new ReplaySubject>(1);\r\n private _groups: Array;\r\n @Input() set groups(value: Array) {\r\n this._groups = value;\r\n this.GroupsSubject.next(value);\r\n }\r\n get groups(): Array {\r\n return this._groups;\r\n }\r\n\r\n private AccrualPeriodSubject = new ReplaySubject>(\r\n 1\r\n );\r\n private _accrualperiods: Array;\r\n @Input() set accrualPeriods(value: Array) {\r\n if (value && value.length > 0) {\r\n if (this.policySetup && this.policySetup.length > 0) {\r\n this.policySetup.forEach(x => {\r\n const period = value.find(\r\n y => y.AccrueLeavePeriodID == x.AccrualPeriodID\r\n );\r\n x.AccrualPeriod = period.AccrueLeavePeriod;\r\n });\r\n this.PolicySetupSubject.next(this.policySetup);\r\n }\r\n\r\n this._accrualperiods = value;\r\n this.AccrualPeriodSubject.next(value);\r\n\r\n this.accrualPeriodsSelectItem = value.map(x => ({\r\n value: x.AccrueLeavePeriodID,\r\n label: x.AccrueLeavePeriod\r\n }));\r\n this.accrualPeriodsSelectItem =\r\n this.accrualPeriodsSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n }\r\n get accrualPeriods(): Array {\r\n return this._accrualperiods;\r\n }\r\n\r\n active = true;\r\n buttonItems: any;\r\n\r\n policyGroupPlaceholder = 'Policy';\r\n\r\n addFormGroup: FormGroup;\r\n\r\n hoursAccrued: string;\r\n vacAccrualMax: string;\r\n accrualPeriod: any;\r\n yearsOfServiceEnd: string;\r\n yearsOfServiceStart: string;\r\n policyGroup: any;\r\n policyTitle: string;\r\n customGroupName: string;\r\n customGroupOptionSelected = false;\r\n\r\n policyTitleInvalid = false;\r\n policyGroupInvalid = false;\r\n yearsOfServiceStartInvalid = false;\r\n yearsOfServiceEndInvalid = false;\r\n accrualPeriodInvalid = false;\r\n hoursAccruedInvalid = false;\r\n addGroupInvalid = false;\r\n vacAccrualMaxInvalid = false;\r\n\r\n showDialog = false;\r\n showGroupNameInput = true;\r\n\r\n showDeleteDialog = false;\r\n\r\n dataForDelete: PtoPolicySetup;\r\n\r\n areYouSureDeleteDesc = 'Are you sure?';\r\n\r\n @ViewChild('SetupTable', { static: true }) SetupTable: Table;\r\n\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {\r\n super();\r\n this.addFormGroup = new FormGroup({\r\n // policyTitle: new FormControl(null),\r\n policyGroup: new FormControl(null),\r\n yearsOfServiceStart: new FormControl(null),\r\n yearsOfServiceEnd: new FormControl(null),\r\n accrualPeriod: new FormControl(null),\r\n hoursAccrued: new FormControl(null),\r\n groupName: new FormControl(null),\r\n selectpolicy: new FormControl(null),\r\n addpolicy: new FormControl(null),\r\n vacationaccrualmax: new FormControl(null)\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupSubscriptions();\r\n this.buttonItems = [\r\n {\r\n label: 'Policy Title Group Name',\r\n command: () => {\r\n this.showGroupNameInput = false;\r\n this.addGroup();\r\n }\r\n },\r\n {\r\n label: 'Custom Group Name',\r\n command: () => {\r\n this.showGroupNameInput = true;\r\n this.customGroupOptionSelected = true;\r\n }\r\n }\r\n ];\r\n }\r\n\r\n setupSubscriptions() {\r\n this.addFormGroup.controls['selectpolicy'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.addFormGroup.controls['addpolicy'].patchValue(null);\r\n this.customGroupName = null;\r\n }\r\n });\r\n this.addFormGroup.controls['addpolicy'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.addFormGroup.controls['selectpolicy'].patchValue(null);\r\n this.customGroupOptionSelected = true;\r\n }\r\n });\r\n this.addFormGroup.controls['policyGroup'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.policyGroup = value;\r\n this.policyGroupInvalid = false;\r\n }\r\n });\r\n this.addFormGroup.controls['yearsOfServiceStart'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null || value != '') {\r\n this.yearsOfServiceStart = value;\r\n this.yearsOfServiceStartInvalid = false;\r\n }\r\n });\r\n this.addFormGroup.controls['yearsOfServiceEnd'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null || value != '') {\r\n this.yearsOfServiceEnd = value;\r\n this.yearsOfServiceEndInvalid = false;\r\n }\r\n });\r\n this.addFormGroup.controls['accrualPeriod'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.accrualPeriod = value;\r\n this.accrualPeriodInvalid = false;\r\n }\r\n });\r\n this.addFormGroup.controls['hoursAccrued'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null || value != '') {\r\n this.hoursAccrued = value;\r\n this.hoursAccruedInvalid = false;\r\n }\r\n });\r\n this.addFormGroup.controls['vacationaccrualmax'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null || value != '') {\r\n this.vacAccrualMax = value;\r\n this.vacAccrualMaxInvalid = false;\r\n }\r\n });\r\n this.addFormGroup.controls['groupName'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null || value != '') {\r\n this.customGroupName = value;\r\n }\r\n });\r\n }\r\n\r\n addPolicyClicked() {\r\n this.addFormGroup.controls['selectpolicy'].patchValue('selectpolicy');\r\n this.showDialog = true;\r\n }\r\n\r\n onEditInit($event: { data: PtoPolicySetup }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: PtoPolicySetup) {\r\n this.clonedPolicySetup[rowData.Policyid] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: PtoPolicySetup) {\r\n this.SavePolicySetup.next(rowData);\r\n delete this.clonedPolicySetup[rowData.Policyid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: PtoPolicySetup) {\r\n delete this.clonedPolicySetup[item.Policyid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n deleteClicked(rowData) {\r\n this.dataForDelete = rowData;\r\n this.showDeleteDialog = true;\r\n this.areYouSureDeleteDesc = `Are you sure you want to delete this policy criteria with ${this.dataForDelete.PolicyCriteriaEmpCnt} employees assigned?`;\r\n }\r\n\r\n confirmDelete() {\r\n this.DeletePolicySetup.next(this.dataForDelete);\r\n this.showDeleteDialog = false;\r\n }\r\n\r\n addGroup() {\r\n this.customGroupOptionSelected = false;\r\n // this.addGroupInvalid = false;\r\n if (this.showGroupNameInput == true) {\r\n this.newGroup = [\r\n {\r\n Categoryid: 'PUBLIC000000000000000000000000000000',\r\n GroupName: this.customGroupName,\r\n Purpose: '',\r\n GroupID: -1\r\n }\r\n ];\r\n }\r\n\r\n this.store.dispatch(new UpdateGroups(this.newGroup));\r\n\r\n // this.showGroupNameInput = false;\r\n }\r\n\r\n addPolicy() {\r\n if (this.customGroupName != null) {\r\n this.customGroupOptionSelected = true;\r\n } else {\r\n this.customGroupOptionSelected = false;\r\n }\r\n if (this.customGroupOptionSelected == true) {\r\n if (this.customGroupName == null || this.customGroupName == '') {\r\n this.addGroupInvalid = true;\r\n }\r\n if (this.policyTitle == null || this.policyTitle == '') {\r\n this.policyTitleInvalid = true;\r\n }\r\n if (\r\n this.yearsOfServiceStart == null ||\r\n this.yearsOfServiceStart == ''\r\n ) {\r\n this.yearsOfServiceStartInvalid = true;\r\n }\r\n if (\r\n this.yearsOfServiceEnd == null ||\r\n this.yearsOfServiceEnd == ''\r\n ) {\r\n this.yearsOfServiceEndInvalid = true;\r\n }\r\n if (this.accrualPeriod == null) {\r\n this.accrualPeriodInvalid = true;\r\n }\r\n if (this.hoursAccrued == null || this.hoursAccrued == '') {\r\n this.hoursAccruedInvalid = true;\r\n }\r\n if (this.vacAccrualMax == null || this.vacAccrualMax == '') {\r\n this.vacAccrualMaxInvalid = true;\r\n }\r\n\r\n if (\r\n this.addGroupInvalid ||\r\n this.yearsOfServiceStartInvalid ||\r\n this.yearsOfServiceEndInvalid ||\r\n this.accrualPeriodInvalid ||\r\n this.hoursAccruedInvalid ||\r\n this.vacAccrualMaxInvalid\r\n ) {\r\n return;\r\n } else {\r\n this.addGroup();\r\n setTimeout(() => {\r\n if (\r\n this.groups.findIndex(\r\n x => x.GroupName == this.customGroupName\r\n ) != -1\r\n ) {\r\n this.policyGroup = this.groups.find(\r\n x => x.GroupName == this.customGroupName\r\n ).GroupID;\r\n // if (this.groupsSelectItem.length > 0) {\r\n // this.addFormGroup.controls[\r\n // 'policyGroup'\r\n // ].patchValue(\r\n // this.groups.find(\r\n // x => x.GroupName == this.customGroupName\r\n // ).GroupID\r\n // );\r\n // this.policyGroup = this.groups.find(\r\n // x => x.GroupName == this.customGroupName\r\n // ).GroupID;\r\n // } else {\r\n // this.addFormGroup.controls[\r\n // 'policyGroup'\r\n // ].patchValue(this.groupsSelectItem[0].value);\r\n // }\r\n }\r\n if (\r\n this.policyGroup &&\r\n this.yearsOfServiceStart &&\r\n this.yearsOfServiceEnd &&\r\n this.accrualPeriod &&\r\n this.hoursAccrued &&\r\n this.vacAccrualMax\r\n ) {\r\n this.SavePolicySetup.next({\r\n Policyid: -1,\r\n PolicyTitle: this.customGroupName\r\n ? this.customGroupName\r\n : this.groups.find(\r\n x => x.GroupID == this.policyGroup\r\n ).GroupName,\r\n Groupid: this.policyGroup,\r\n YearsOfServiceStart: this.yearsOfServiceStart,\r\n YearsOfServiceCeiling: this.yearsOfServiceEnd,\r\n AccrualPeriodID: this.accrualPeriod,\r\n HoursAccrued: this.hoursAccrued,\r\n vacationaccrualmax: this.vacAccrualMax\r\n });\r\n this.clearDialog();\r\n }\r\n }, 500);\r\n }\r\n } else {\r\n if (\r\n this.policyGroup &&\r\n this.yearsOfServiceStart &&\r\n this.yearsOfServiceEnd &&\r\n this.accrualPeriod &&\r\n this.hoursAccrued &&\r\n this.vacAccrualMax\r\n ) {\r\n this.SavePolicySetup.next({\r\n Policyid: -1,\r\n PolicyTitle: this.customGroupName\r\n ? this.customGroupName\r\n : this.policySetup.find(\r\n x => x.Groupid == this.policyGroup\r\n ).PolicyTitle,\r\n Groupid: this.policyGroup,\r\n YearsOfServiceStart: this.yearsOfServiceStart,\r\n YearsOfServiceCeiling: this.yearsOfServiceEnd,\r\n AccrualPeriodID: this.accrualPeriod,\r\n HoursAccrued: this.hoursAccrued,\r\n vacationaccrualmax: this.vacAccrualMax\r\n });\r\n this.clearDialog();\r\n } else {\r\n if (this.policyTitle == null || this.policyTitle == '') {\r\n this.policyTitleInvalid = true;\r\n }\r\n if (this.policyGroup == null) {\r\n this.policyGroupInvalid = true;\r\n }\r\n if (\r\n this.yearsOfServiceStart == null ||\r\n this.yearsOfServiceStart == ''\r\n ) {\r\n this.yearsOfServiceStartInvalid = true;\r\n }\r\n if (\r\n this.yearsOfServiceEnd == null ||\r\n this.yearsOfServiceEnd == ''\r\n ) {\r\n this.yearsOfServiceEndInvalid = true;\r\n }\r\n if (this.accrualPeriod == null) {\r\n this.accrualPeriodInvalid = true;\r\n }\r\n if (this.hoursAccrued == null || this.hoursAccrued == '') {\r\n this.hoursAccruedInvalid = true;\r\n }\r\n if (this.vacAccrualMax == null || this.vacAccrualMax == '') {\r\n this.vacAccrualMaxInvalid = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearDialog() {\r\n this.policyTitleInvalid = false;\r\n this.policyGroupInvalid = false;\r\n this.yearsOfServiceStartInvalid = false;\r\n this.yearsOfServiceEndInvalid = false;\r\n this.accrualPeriodInvalid = false;\r\n this.hoursAccruedInvalid = false;\r\n this.vacAccrualMaxInvalid = false;\r\n this.addGroupInvalid = false;\r\n\r\n this.customGroupName = null;\r\n\r\n // this.addFormGroup.controls['policyTitle'].reset();\r\n this.addFormGroup.controls['policyGroup'].reset();\r\n this.addFormGroup.controls['yearsOfServiceStart'].reset();\r\n this.addFormGroup.controls['yearsOfServiceEnd'].reset();\r\n this.addFormGroup.controls['accrualPeriod'].reset();\r\n this.addFormGroup.controls['hoursAccrued'].reset();\r\n this.addFormGroup.controls['groupName'].reset();\r\n this.addFormGroup.controls['vacationaccrualmax '].reset();\r\n }\r\n\r\n closeDialog() {\r\n this.showDialog = false;\r\n // this.showGroupNameInput = false;\r\n\r\n this.policyTitleInvalid = false;\r\n this.policyGroupInvalid = false;\r\n this.yearsOfServiceStartInvalid = false;\r\n this.yearsOfServiceEndInvalid = false;\r\n this.accrualPeriodInvalid = false;\r\n this.hoursAccruedInvalid = false;\r\n this.vacAccrualMaxInvalid = false;\r\n this.addGroupInvalid = false;\r\n\r\n // this.addFormGroup.controls['policyTitle'].reset();\r\n this.addFormGroup.controls['policyGroup'].reset();\r\n this.addFormGroup.controls['yearsOfServiceStart'].reset();\r\n this.addFormGroup.controls['yearsOfServiceEnd'].reset();\r\n this.addFormGroup.controls['accrualPeriod'].reset();\r\n this.addFormGroup.controls['hoursAccrued'].reset();\r\n this.addFormGroup.controls['groupName'].reset();\r\n this.addFormGroup.controls['vacationaccrualmax '].reset();\r\n }\r\n\r\n findGroupName(rowData) {\r\n let groupName;\r\n if (this.groups.length > 0) {\r\n groupName = this.groups.find(\r\n x => x.GroupID == rowData.Groupid\r\n ).GroupName;\r\n return groupName;\r\n }\r\n }\r\n\r\n findAccrualPeriod(rowData) {\r\n let accrualPeriod;\r\n if (this.accrualPeriods && this.accrualPeriods.length > 0) {\r\n accrualPeriod = this.accrualPeriods.find(\r\n x => x.AccrueLeavePeriodID == rowData.AccrualPeriodID\r\n ).AccrueLeavePeriod;\r\n return accrualPeriod;\r\n }\r\n }\r\n\r\n tableFilter($event, type) {\r\n if (type == 'policytitle') {\r\n this.SetupTable.filter($event.value, 'PolicyTitle', 'in');\r\n }\r\n if (type == 'accrualperiod') {\r\n this.SetupTable.filter($event.value, 'AccrualPeriod', 'in');\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ef-quick-access',\r\n templateUrl: './quick-access.component.html',\r\n styleUrls: ['./quick-access.component.scss']\r\n})\r\nexport class QuickAccessComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Component, Input } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { HasValidTokens } from '../store';\r\nimport { QuickbooksService } from '../quickbooks.services';\r\nimport * as fromSettings from '../../company-setting';\r\nimport * as fromLoading from '../../shared/loading';\r\nimport { StateService } from '@uirouter/core';\r\n\r\n@Component({\r\n selector: 'ef-access-granted',\r\n templateUrl: './access-granted.component.html',\r\n styleUrls: ['./access-granted.component.scss']\r\n})\r\nexport class AccessGrantedComponent implements AfterViewInit {\r\n @Input() code: string;\r\n @Input() state: string;\r\n @Input() realmId: string;\r\n public message: any;\r\n public companyMismatchWarning$: Observable;\r\n constructor(\r\n private service: QuickbooksService,\r\n private loadingService: fromLoading.LoadingService,\r\n private store: Store,\r\n private log: LoggingService,\r\n private ss: StateService\r\n ) {\r\n this.message = 'Connecting...';\r\n this.log.verbose({ type: 'AccessGrantedComponent::' });\r\n loadingService.Load();\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'QuickbooksOnline'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'CompanyName'\r\n })\r\n );\r\n }\r\n ngAfterViewInit(): void {\r\n this.service\r\n .Connect(this.code, this.state, this.realmId)\r\n .then(resp => {\r\n this.log.verbose({\r\n type: 'AccessGrantedComponent:Connect',\r\n resp\r\n });\r\n this.store.dispatch(new HasValidTokens(true));\r\n this.message =\r\n resp?.error?.Message ?? resp?.Message ?? 'Connected.';\r\n setTimeout(() => {\r\n this.ss.go('main');\r\n }, 5000);\r\n })\r\n .catch(err => {\r\n this.log.verbose({\r\n type: 'AccessGrantedComponent:Connect:catch',\r\n err\r\n });\r\n this.loadingService.Stop();\r\n this.store.dispatch(new HasValidTokens(false));\r\n if (err && err.status === 401) {\r\n this.message = 'Unauthorized.';\r\n }\r\n this.message =\r\n err?.error?.Message ??\r\n err?.message ??\r\n err ??\r\n 'Unknown Error.';\r\n })\r\n .finally(() => {\r\n this.log.verbose({\r\n type: 'AccessGrantedComponent:Connect:finally'\r\n });\r\n this.loadingService.Stop();\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-access-revoked',\r\n templateUrl: './access-revoked.component.html',\r\n styleUrls: ['./access-revoked.component.scss']\r\n})\r\nexport class AccessRevokedComponent implements OnInit {\r\n constructor(private log: LoggingService) {\r\n this.log.verbose('AccessRevokedComponent: constructor');\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { QuickbooksService } from '../quickbooks.services';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { combineLatest } from 'rxjs';\r\nimport * as fromCompanySettings from '../../company-setting/store';\r\nimport * as fromqb from '../store';\r\nimport { CompanySettingService } from '../../company-setting';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ef-quick-books-connect',\r\n templateUrl: './quick-books-connect.component.html',\r\n styleUrls: ['./quick-books-connect.component.scss']\r\n})\r\nexport class QuickBooksConnectComponent implements OnInit {\r\n private isActive = true;\r\n public message: string;\r\n constructor(\r\n private service: QuickbooksService,\r\n private settingService: CompanySettingService,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n ngOnDestroy(): void {\r\n this.isActive = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.settingService\r\n // .getSetting('QuickbooksOnline')\r\n // .toPromise()\r\n // .then(qbo => {\r\n // this.log.verbose({\r\n // type: 'QuickBooksConnectComponent',\r\n // qbo\r\n // });\r\n this.service\r\n .GetAuthUrl()\r\n .toPromise()\r\n .then(authUrl => {\r\n this.log.verbose({\r\n type: 'QuickBooksConnectComponent',\r\n authUrl\r\n });\r\n window.location.href = authUrl;\r\n });\r\n // })\r\n // .catch(err => {\r\n // this.message = `An error has occured: ${err}`;\r\n // });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { HasValidTokens, RevokeAccess } from '../store/quickbooks.actions';\r\n\r\n@Component({\r\n selector: 'ef-quickbooks-revoke-access',\r\n templateUrl: './quickbooks-revoke-access.component.html',\r\n styleUrls: ['./quickbooks-revoke-access.component.scss']\r\n})\r\nexport class QuickbooksRevokeAccessComponent implements OnInit {\r\n RevokeAccessSubject = new ReplaySubject(1);\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store,\r\n private ss: StateService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.RevokeAccessSubject.pipe(take(1)).subscribe(() => {\r\n this.store.dispatch(new RevokeAccess());\r\n this.store.dispatch(new HasValidTokens(false));\r\n this.ss.go('main');\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { AccessGrantedComponent } from './access-granted/access-granted.component';\r\nimport {\r\n QuickbooksContainerComponent,\r\n QuickbooksImportListsRoute,\r\n QuickbooksJournalEntryRoute,\r\n QuickbooksRevokeAccessRoute,\r\n QuickbooksRoute,\r\n QuickbooksRouteAccessGrantedRoute,\r\n QuickbooksSendHoursRoute,\r\n QuickbooksProcessPeriodRoute,\r\n QuickbooksRouteAccessRevokedRoute,\r\n QuickbooksConnectRoute\r\n} from './quickbooks.route';\r\nimport * as fromStore from './store';\r\nimport { QuickbooksEffects } from './store';\r\nimport { SyncListsComponent } from './sync-lists/sync-lists.component';\r\nimport { SendHoursContainerComponent } from './send-hours/send-hours-container/send-hours-container.component';\r\nimport { SendHoursPresenterComponent } from './send-hours/send-hours-presenter/send-hours-presenter.component';\r\nimport { SendHoursFilterComponent } from './send-hours/send-hours-filter/send-hours-filter.component';\r\nimport {\r\n SendJournalEntryContainerComponent,\r\n SendJournalEntryPresenterComponent,\r\n SendJournalEntryFilterComponent\r\n} from './send-journal-entry';\r\nimport { SendBillPresenterComponent } from './send-hours/send-bill-presenter/send-bill-presenter.component';\r\nimport { QuickbooksRevokeAccessComponent } from './quickbooks-revoke-access/quickbooks-revoke-access.component';\r\nimport { SendPurchasesModule } from './send-purchases/send-purchases.module';\r\nimport { SendInvoiceModule } from './send-invoice/send-invoice.module';\r\nimport { AccessRevokedComponent } from './access-revoked/access-revoked.component';\r\nimport { LoggingService } from '../shared/services/logging';\r\nimport { QuickBooksConnectComponent } from './quick-books-connect/quick-books-connect.component';\r\n@NgModule({\r\n declarations: [\r\n QuickbooksContainerComponent,\r\n AccessGrantedComponent,\r\n SyncListsComponent,\r\n SendHoursContainerComponent,\r\n SendHoursPresenterComponent,\r\n SendHoursFilterComponent,\r\n SendJournalEntryContainerComponent,\r\n SendJournalEntryPresenterComponent,\r\n SendJournalEntryFilterComponent,\r\n SendBillPresenterComponent,\r\n QuickbooksRevokeAccessComponent,\r\n AccessRevokedComponent,\r\n QuickBooksConnectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n SendPurchasesModule,\r\n SendInvoiceModule,\r\n UIRouterModule.forChild({\r\n states: [\r\n QuickbooksRoute,\r\n QuickbooksRouteAccessGrantedRoute,\r\n QuickbooksImportListsRoute,\r\n QuickbooksSendHoursRoute,\r\n QuickbooksJournalEntryRoute,\r\n QuickbooksRevokeAccessRoute,\r\n QuickbooksRouteAccessRevokedRoute,\r\n QuickbooksProcessPeriodRoute,\r\n QuickbooksConnectRoute\r\n ]\r\n }),\r\n StoreModule.forFeature(\r\n fromStore.quickbooksFeatureKey,\r\n fromStore.reducer\r\n ),\r\n EffectsModule.forFeature([QuickbooksEffects])\r\n ]\r\n})\r\nexport class QuickbooksModule {\r\n /**\r\n *\r\n */\r\n constructor(private log: LoggingService) {\r\n this.log.verbose('QuickbooksModule: constructor');\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { AccessGrantedComponent } from './access-granted/access-granted.component';\r\nimport { SendHoursContainerComponent } from './send-hours/send-hours-container/send-hours-container.component';\r\nimport { SyncListsComponent } from './sync-lists/sync-lists.component';\r\nimport { SendJournalEntryContainerComponent } from './send-journal-entry';\r\nimport { QuickbooksRevokeAccessComponent } from './quickbooks-revoke-access/quickbooks-revoke-access.component';\r\nimport { AccessRevokedComponent } from './access-revoked/access-revoked.component';\r\nimport { CategoriesService } from '../shared';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\nimport { LoggingService } from '../shared/services/logging';\r\nimport { QuickBooksConnectComponent } from './quick-books-connect/quick-books-connect.component';\r\n\r\nconst log = new LoggingService();\r\n\r\n@Component({ template: '' })\r\nexport class QuickbooksContainerComponent {}\r\n\r\nexport const QuickbooksRoute: Ng2StateDeclaration = {\r\n name: 'quickbooks',\r\n url: '/quickbooks',\r\n redirectTo: 'quickbooks.accessgranted',\r\n abstract: false,\r\n data: { requiresAuth: false },\r\n component: QuickbooksContainerComponent\r\n};\r\n// export const QuickbooksRouteAccessGrantedRoute: Ng2StateDeclaration = {\r\n// // name: 'quickbooks.**'\r\n// name: 'quickbooks.accessgranted',\r\n// url: '/accessgranted/:companyName',\r\n// // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n// data: { requiresAuth: true },\r\n// resolve: [\r\n// {\r\n// token: 'companyName',\r\n// deps: [Transition],\r\n// resolveFn: t => t.params().companyName\r\n// }\r\n// ],\r\n// component: AccessGrantedComponent\r\n// };\r\n//http://localhost:4200/efc/quickbooks/accessgranted?code=AB11715717157wE9Gp437bt5m1q17wMC74DgH5hv6CwULTUSF5&state=18ae83aed94aaa1a3fb0cfc38a2e554a1f1ff93a3824c6b370d5647173b08147&realmId=4620816365225809380\r\nexport const QuickbooksRouteAccessGrantedRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'quickbooks.accessgranted',\r\n url: '/accessgranted?code&state&realmId',\r\n params: {\r\n code: { value: null, squash: true },\r\n state: { value: null, squash: true },\r\n realmId: { value: null, squash: true }\r\n },\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n resolve: [\r\n {\r\n token: 'code',\r\n deps: [Transition],\r\n resolveFn: t => t.params().code\r\n },\r\n {\r\n token: 'state',\r\n deps: [Transition],\r\n resolveFn: t => t.params().state\r\n },\r\n {\r\n token: 'realmId',\r\n deps: [Transition],\r\n resolveFn: t => t.params().realmId\r\n }\r\n ],\r\n component: AccessGrantedComponent\r\n};\r\nexport const QuickbooksConnectRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'quickbooksauth',\r\n url: '/quickbooksauth',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: QuickBooksConnectComponent\r\n};\r\n\r\nexport const QuickbooksRouteAccessRevokedRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'qbaccessrevoked',\r\n url: '/qbaccessrevoked',\r\n\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: false },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: AccessRevokedComponent\r\n};\r\nexport const QuickbooksImportListsRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'qbsynclists',\r\n url: '/qbsynclists',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: SyncListsComponent\r\n};\r\nexport const QuickbooksSendHoursRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'qbsendhours',\r\n url: '/qbsendhours',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: SendHoursContainerComponent\r\n};\r\nexport const QuickbooksJournalEntryRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'qbsendjournalentry',\r\n url: '/qbsendjournalentry',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: SendJournalEntryContainerComponent\r\n};\r\nexport const QuickbooksRevokeAccessRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'qbrevoke',\r\n url: '/qbrevoke',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: QuickbooksRevokeAccessComponent\r\n};\r\nexport const QuickbooksProcessPeriodRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'qbprocessperiod',\r\n // url: '/qbprocessperiod',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n redirectTo: 'period.reprocessing'\r\n};\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable, of } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { EmployeeModel } from '../models/EmployeeModel';\r\nimport { LoggingService } from '../shared/services/logging';\r\nimport * as fromDataServices from '../data-services';\r\nimport * as moment from 'moment';\r\nimport { IGenericResponse } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QuickbooksService {\r\n private uri = `${environment.apiLocation}/QuickbooksOnline`;\r\n private employeeUri = `${environment.apiLocation}/Employee`;\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n private store: Store\r\n ) {}\r\n public async Connect(code: string, state: string, realmId: string) {\r\n this.log.verbose({\r\n type: 'QuickbooksService:Connect',\r\n code,\r\n state,\r\n realmId\r\n });\r\n return this.http\r\n .get(\r\n `${this.uri}/Callback?code=${code}&state=${state}&realmId=${realmId}`\r\n )\r\n .toPromise();\r\n }\r\n public async SyncTransactions(\r\n ProcessScheduleID_List: string,\r\n SyncGLOnly = false\r\n ) {\r\n this.log.verbose({ type: 'QuickbooksService:SyncTransactions' });\r\n return this.http\r\n .post(`${this.uri}/SyncTransactions`, {\r\n ProcessScheduleIds: ProcessScheduleID_List,\r\n SyncGLOnly\r\n })\r\n .toPromise();\r\n }\r\n public async SyncCompanyInfo() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncCompanyInfo' });\r\n return this.http.get(`${this.uri}/SyncCompanyInfo`).toPromise();\r\n }\r\n public async SyncCustomers() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncCustomers' });\r\n return this.http.get(`${this.uri}/SyncCustomers`).toPromise();\r\n }\r\n public async SyncAccounts() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncAccounts' });\r\n return this.http.get(`${this.uri}/SyncAccounts`).toPromise();\r\n }\r\n public async SyncEmployees() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncEmployees' });\r\n return this.http.get(`${this.uri}/SyncEmployees`).toPromise();\r\n }\r\n public async SyncVendors() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncVendors' });\r\n return this.http.get(`${this.uri}/SyncVendors`).toPromise();\r\n }\r\n public async SyncServiceItems() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncServiceItems' });\r\n return this.http.get(`${this.uri}/SyncServiceItems`).toPromise();\r\n }\r\n public SyncInventory() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncInventory' });\r\n return this.http.get(`${this.uri}/SyncInventory`).toPromise();\r\n }\r\n public async SyncNonInventory() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncNonInventory' });\r\n return this.http.get(`${this.uri}/SyncNonInventory`).toPromise();\r\n }\r\n public async SyncOtherItems() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncOtherItems' });\r\n return this.http.get(`${this.uri}/SyncOtherItems`).toPromise();\r\n }\r\n public async SyncClasses() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncClasses' });\r\n return this.http.get(`${this.uri}/SyncClasses`).toPromise();\r\n }\r\n public SyncCustomerJobs() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncCustomerJobs' });\r\n return this.http.get(`${this.uri}/SyncCustomerJobs`).toPromise();\r\n }\r\n public async SyncPreferences() {\r\n this.log.verbose({ type: 'QuickbooksService:SyncPreferences' });\r\n return this.http.get(`${this.uri}/SyncPreferences`).toPromise();\r\n }\r\n public HasValidTokens(): Observable {\r\n this.log.verbose({ type: 'QuickbooksService:HasValidTokens' });\r\n return this.http.get(`${this.uri}/HasValidTokens`);\r\n }\r\n public GetAuthUrl(): Observable {\r\n this.log.verbose({ type: 'QuickbooksService:GetAuthUrl' });\r\n return this.http.get(`${this.uri}/GetAuthUrl`);\r\n }\r\n public GetEmployeesWithHours(\r\n startDate: Date,\r\n endDate: Date,\r\n resend = false\r\n ): Observable {\r\n this.log.verbose({\r\n type: 'QuickbooksService:GetEmployeesWithTime',\r\n startDate,\r\n endDate\r\n });\r\n const params = {\r\n StartDate: startDate\r\n ? moment(startDate).format('YYYY-MM-DD')\r\n : (null as any),\r\n EndDate: endDate\r\n ? moment(endDate).format('YYYY-MM-DD')\r\n : (null as any),\r\n Resend: resend\r\n };\r\n return this.http.post(\r\n `${this.employeeUri}/GetEmployeesWithTime`,\r\n params\r\n );\r\n }\r\n public GetContractorsWithHours(\r\n startDate: Date,\r\n endDate: Date,\r\n resend = false\r\n ): Observable {\r\n this.log.verbose({ type: 'QuickbooksService:GetContractorsWithTime' });\r\n const params = {\r\n StartDate: startDate\r\n ? moment(startDate).format('YYYY-MM-DD')\r\n : (null as any),\r\n EndDate: endDate\r\n ? moment(endDate).format('YYYY-MM-DD')\r\n : (null as any),\r\n Resend: resend\r\n };\r\n return this.http.post(\r\n `${this.employeeUri}/GetContractorsWithTime`,\r\n params\r\n );\r\n }\r\n public GetEmployeesWithPurchases(\r\n startDate: Date,\r\n endDate: Date,\r\n resend = false\r\n ) {\r\n this.log.verbose({\r\n type: 'QuickbooksService:GetEmployeesWithPurchases',\r\n startDate,\r\n endDate,\r\n resend\r\n });\r\n const params = {\r\n StartDate: startDate\r\n ? moment(startDate).format('YYYY-MM-DD')\r\n : null,\r\n EndDate: endDate ? moment(endDate).format('YYYY-MM-DD') : null,\r\n Resend: resend\r\n };\r\n return this.http.post(\r\n `${this.employeeUri}/GetEmployeesWithPurchases`,\r\n params\r\n );\r\n }\r\n public GetMinApprovedTimeNotSent() {\r\n return this.http.get(`${this.uri}/GetMinApprovedTimeNotSent`);\r\n }\r\n public GetMaxApprovedTimeNotSent() {\r\n return this.http.get(`${this.uri}/GetMaxApprovedTimeNotSent`);\r\n }\r\n public SendHours(\r\n EmployeeListID: string,\r\n startDate: Date,\r\n endDate: Date,\r\n resend: boolean\r\n ) {\r\n this.log.verbose({ type: 'QuickbooksService:SendHours' });\r\n return this.http.post(`${this.uri}/SendTimeActivity`, {\r\n EmployeeListID,\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n Resend: resend\r\n });\r\n }\r\n public SendJournalEntries(filter: {\r\n EndDate: Date;\r\n ReversalDate: Date;\r\n JournalType: string;\r\n }): Observable {\r\n this.log.verbose({\r\n type: 'QuickbooksService:SendJournalEntries',\r\n filter\r\n });\r\n return this.http.post(`${this.uri}/SendJournalEntries`, filter);\r\n }\r\n public SendExpenses(\r\n EmployeeListID: string,\r\n startDate: Date,\r\n endDate: Date,\r\n Resend: boolean,\r\n sendImages: boolean\r\n ) {\r\n this.log.verbose({ type: 'QuickbooksService:SendExpenses' });\r\n return this.http.post(`${this.uri}/SendExpenses`, {\r\n EmployeeListID,\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n Resend: Resend,\r\n SendImages: sendImages\r\n });\r\n }\r\n public SendInvoices(\r\n items: fromDataServices.Invoice.InvoiceModel[]\r\n ): Observable> {\r\n this.log.verbose({ type: 'QuickbooksService:SendInvoices' });\r\n return this.http.post<\r\n IGenericResponse\r\n >(\r\n `${this.uri}/SendInvoices`,\r\n items.map(x => ({\r\n ...x,\r\n CustJobListID: x.listid\r\n }))\r\n );\r\n }\r\n public async SendEmployees() {\r\n this.log.verbose({ type: 'QuickbooksService:SendEmployees' });\r\n return this.http.get(`${this.uri}/SendEmployees`).toPromise();\r\n }\r\n public RevokeAccess(): Observable {\r\n this.log.verbose({ type: 'QuickbooksService:RevokeAccess' });\r\n return this.http.get(`${this.uri}/RevokeAccess`);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { EmployeeModel } from '../../../models';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-send-bill-presenter',\r\n templateUrl: './send-bill-presenter.component.html',\r\n styleUrls: ['./send-bill-presenter.component.scss']\r\n})\r\nexport class SendBillPresenterComponent implements OnInit {\r\n @Input() public items: EmployeeModel[] = [];\r\n @Output() public SendBills = new ReplaySubject(1);\r\n public selectedContractors: EmployeeModel[];\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { CombineLatestSubscriber } from 'rxjs/internal/observable/combineLatest';\r\nimport { filter, map, takeWhile, withLatestFrom } from 'rxjs/operators';\r\nimport { EmployeeModel } from '../../../models';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromShared from '../../../shared';\r\nimport * as fromSettings from '../../../company-setting';\r\nimport {\r\n GetContractorsWithHours,\r\n GetEmployeesWithHours,\r\n GetMaxApprovedTimeNotSent,\r\n GetMinApprovedTimeNotSent,\r\n SendBills,\r\n SendHours,\r\n SetEmployeesWithHours\r\n} from '../../store/quickbooks.actions';\r\nimport {\r\n getEmployeesWithHours,\r\n getContractorsWithHours,\r\n getMinApprovedTimeNotSent,\r\n getMaxApprovedTimeNotSent\r\n} from '../../store/quickbooks.selectors';\r\n\r\n@Component({\r\n selector: 'ef-send-hours-container',\r\n templateUrl: './send-hours-container.component.html',\r\n styleUrls: ['./send-hours-container.component.scss']\r\n})\r\nexport class SendHoursContainerComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n process$: Observable;\r\n public sendDoctoQB$: Observable;\r\n public employeesWithHours$: Observable;\r\n public contractorsWithHours$: Observable;\r\n public startDate$: Observable;\r\n public endDate$: Observable;\r\n private active = true;\r\n private filterSubject = new ReplaySubject<{\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }>(1);\r\n private sendHoursSubject = new ReplaySubject(1);\r\n private sendBillsSubject = new ReplaySubject(1);\r\n constructor(private store: Store, private log: LoggingService) {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.setupSubscriptions();\r\n this.store.dispatch(new SetEmployeesWithHours([])); //clear cache\r\n this.store.dispatch(new GetMinApprovedTimeNotSent());\r\n this.store.dispatch(new GetMaxApprovedTimeNotSent());\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'SendDoctoQB'\r\n })\r\n );\r\n }\r\n ngAfterViewInit(): void {}\r\n setupSubscriptions(): void {\r\n this.sendDoctoQB$ = this.store.pipe(select(fromSettings.SendDoctoQB));\r\n this.employeesWithHours$ = this.store.pipe(\r\n select(getEmployeesWithHours),\r\n map(items =>\r\n items?.map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n )\r\n );\r\n this.contractorsWithHours$ = this.store.pipe(\r\n select(getContractorsWithHours),\r\n map(items =>\r\n items?.map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }))\r\n )\r\n );\r\n this.filterSubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n this.store.dispatch(new GetEmployeesWithHours(value));\r\n this.store.dispatch(new GetContractorsWithHours(value));\r\n });\r\n this.sendHoursSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.filterSubject)\r\n )\r\n .subscribe(([items, filter]) => {\r\n items.forEach(item => {\r\n this.store.dispatch(\r\n new SendHours({\r\n EmployeeListID: item.value,\r\n startDate: filter.StartDate,\r\n endDate: filter.EndDate,\r\n resend: filter.Resend\r\n })\r\n );\r\n });\r\n });\r\n this.sendBillsSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.filterSubject)\r\n )\r\n .subscribe(([items, filter]) => {\r\n items.forEach(item => {\r\n this.store.dispatch(\r\n new SendBills({\r\n EmployeeListID: item.value,\r\n startDate: filter.StartDate,\r\n endDate: filter.EndDate,\r\n resend: filter.Resend\r\n })\r\n );\r\n });\r\n });\r\n this.endDate$ = this.store.pipe(\r\n select(getMaxApprovedTimeNotSent),\r\n filter(x => !!x)\r\n );\r\n this.startDate$ = this.store.pipe(\r\n select(getMinApprovedTimeNotSent),\r\n filter(x => !!x)\r\n );\r\n }\r\n\r\n onFilter(value: {\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n SendDocumentation: boolean;\r\n }) {\r\n this.log.verbose({\r\n type: 'SendHoursContainerComponent:onFilter',\r\n value\r\n });\r\n this.filterSubject.next(value);\r\n }\r\n onSendHours(value: SelectItem[]) {\r\n this.log.verbose({\r\n type: 'SendHoursContainerComponent:onSendHours',\r\n value\r\n });\r\n this.sendHoursSubject.next(value);\r\n }\r\n onSendBills(value: SelectItem[]) {\r\n this.log.verbose({\r\n type: 'SendHoursContainerComponent:onSendHours',\r\n value\r\n });\r\n this.sendBillsSubject.next(value);\r\n }\r\n onSetSendDocumentation(value: boolean) {\r\n this.log.verbose({\r\n type: 'SendHoursContainerComponent:onSendDocumentation',\r\n value\r\n });\r\n this.store.dispatch(\r\n fromSettings.putCompanySettings({\r\n settings: [\r\n {\r\n SettingType: 'SendDoctoQB',\r\n SettingValue: value === true ? '1' : '0'\r\n }\r\n ]\r\n })\r\n );\r\n }\r\n}\r\n","import { AfterViewInit, Component, Input, OnInit, Output } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n@Component({\r\n selector: 'ef-send-hours-filter',\r\n templateUrl: './send-hours-filter.component.html',\r\n styleUrls: ['./send-hours-filter.component.scss']\r\n})\r\nexport class SendHoursFilterComponent implements AfterViewInit {\r\n public moment: any = moment;\r\n public filterFormGroup: FormGroup;\r\n @Input() SendDocumentation: boolean;\r\n @Input() public set StartDate(value: Date) {\r\n this.filterFormGroup.controls.StartDate.setValue(value);\r\n }\r\n @Input() public set EndDate(value: Date) {\r\n this.filterFormGroup.controls.EndDate.setValue(value);\r\n }\r\n @Output() public SetSendDocumentation = new ReplaySubject(1);\r\n @Output() public Filter = new ReplaySubject<{\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }>(1);\r\n constructor(private log: LoggingService) {\r\n this.filterFormGroup = new FormGroup({\r\n StartDate: new FormControl(null),\r\n EndDate: new FormControl(null),\r\n Resend: new FormControl(false)\r\n });\r\n this.filterFormGroup.valueChanges.subscribe(value => {\r\n this.log.verbose({\r\n type: 'SendHoursFilterComponent:filterFormGroup:valueChanges',\r\n value\r\n });\r\n if (\r\n value.StartDate &&\r\n value.EndDate &&\r\n moment(value.StartDate).isSameOrBefore(value.EndDate)\r\n ) {\r\n this.Filter.next({\r\n ...value,\r\n StartDate: moment(value.StartDate).toDate(),\r\n EndDate: moment(value.EndDate).toDate()\r\n });\r\n }\r\n });\r\n }\r\n ngAfterViewInit(): void {}\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { EmployeeModel } from '../../../models/EmployeeModel';\r\nimport { MessageService, SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ef-send-hours-presenter',\r\n templateUrl: './send-hours-presenter.component.html',\r\n styleUrls: ['./send-hours-presenter.component.scss']\r\n})\r\nexport class SendHoursPresenterComponent\r\n implements OnInit, OnDestroy, OnChanges\r\n{\r\n @Input() public items: SelectItem[] = [];\r\n @Output() public SendHours = new ReplaySubject(1);\r\n public selectedEmployees: SelectItem[];\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n private messageService: MessageService\r\n ) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.items) {\r\n this.selectedEmployees = [];\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.SendHours.pipe(takeWhile(() => this.active)).subscribe(() => {\r\n this.log.debug('SendHoursPresenterComponent', 'SendHours');\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'Sending Hours...',\r\n detail: 'Send hours in progress'\r\n });\r\n });\r\n }\r\n onSendHours(employees: SelectItem[]) {\r\n this.log.verbose({\r\n type: 'SendHoursPresenterComponent:onSendHours',\r\n employees\r\n });\r\n this.SendHours.next(employees);\r\n this.selectedEmployees = [];\r\n }\r\n}\r\n","export * from './send-invoice-container.component';\r\n","import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\r\nimport { filter, map, takeWhile, withLatestFrom } from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport * as fromShared from '../../../shared';\r\nimport * as fromUser from '../../../user-info';\r\nimport { ActionsSubject, Store, select } from '@ngrx/store';\r\nimport { SelectItem } from '../../../shared';\r\nimport * as fromStore from '../../store';\r\nimport * as moment from 'moment';\r\nimport { ofType } from '@ngrx/effects';\r\n\r\n@Component({\r\n selector: 'ef-send-invoice-container',\r\n templateUrl: './send-invoice-container.component.html',\r\n styleUrls: ['./send-invoice-container.component.scss']\r\n})\r\nexport class SendInvoiceContainerComponent implements OnInit, OnDestroy {\r\n selectedErrorWithStatus$: Observable;\r\n process$: Observable;\r\n public userInfo$: Observable;\r\n private sendInvoicesSubject = new ReplaySubject<\r\n fromDataServices.Invoice.InvoiceModel[]\r\n >(1);\r\n SendInvoiceModelDS: EntityCollectionService;\r\n SendInvoiceModel$: Observable;\r\n private filterSubject = new ReplaySubject<{\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }>(1);\r\n loading = false;\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store,\r\n private dispatcher: ActionsSubject\r\n ) {\r\n this.log.verbose({ type: 'SendInvoiceContainerComponent::' });\r\n this.SendInvoiceModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.SendInvoiceModelDS.clearCache();\r\n // this.SendInvoiceModelDS.getAll();\r\n this.SendInvoiceModel$ = this.SendInvoiceModelDS.entities$.pipe(\r\n map(items => clone(items)),\r\n map(items =>\r\n items.map(item => ({\r\n label: `${item.FullName} - ${item.InvoiceNbr}: ${moment(\r\n item.InvoiceEnd\r\n )\r\n .toDate()\r\n .toLocaleDateString()} (${item.InvoiceTotal.toLocaleString(\r\n Intl.NumberFormat().resolvedOptions().locale,\r\n { style: 'currency', currency: 'USD' }\r\n )})`,\r\n value: {\r\n CustJobListID: item.listid,\r\n InvoiceNbr: item.InvoiceNbr,\r\n InvoiceEnd: item.InvoiceEnd\r\n }\r\n }))\r\n )\r\n );\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupObservables(): void {\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.selectedErrorWithStatus$ = this.store.pipe(\r\n select(fromShared.Errors.selectErrorWithStatus)\r\n );\r\n }\r\n setupSubscriptions(): void {\r\n this.filterSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(value => !!value.StartDate && !!value.EndDate)\r\n )\r\n .subscribe(value => {\r\n this.SendInvoiceModelDS.clearCache();\r\n this.SendInvoiceModelDS.getWithQuery(value as any);\r\n });\r\n this.sendInvoicesSubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(items => {\r\n this.loading = true;\r\n this.store.dispatch(new fromStore.SendInvoices(items));\r\n });\r\n this.dispatcher\r\n .pipe(\r\n takeWhile(() => this.active),\r\n ofType(\r\n fromStore.ActionTypes.SendInvoicesSuccess\r\n ),\r\n withLatestFrom(this.filterSubject)\r\n )\r\n .subscribe(([action, filter]) => {\r\n this.loading = false;\r\n if (!filter.Resend) {\r\n setTimeout(() => {\r\n this.SendInvoiceModelDS.removeManyFromCache(\r\n action.payload\r\n );\r\n }, 3000);\r\n }\r\n // this.SendInvoiceModelDS.clearCache();\r\n // this.SendInvoiceModelDS.getWithQuery(filter as any);\r\n });\r\n this.dispatcher\r\n .pipe(\r\n takeWhile(() => this.active),\r\n ofType(\r\n fromShared.Errors.ErrorsSidenavActionTypes.SetErrors\r\n )\r\n )\r\n .subscribe(() => (this.loading = false));\r\n }\r\n onFilter(value: { StartDate: Date; EndDate: Date; Resend: boolean }) {\r\n this.log.verbose({\r\n type: 'SendInvoiceContainerComponent:onFilter',\r\n value\r\n });\r\n this.filterSubject.next(value);\r\n }\r\n onSendInvoices(items: fromDataServices.Invoice.InvoiceModel[]) {\r\n this.log.verbose({\r\n type: 'SendInvoiceContainerComponent:onSendInvoices',\r\n items\r\n });\r\n this.sendInvoicesSubject.next(items);\r\n }\r\n}\r\n","export * from './send-invoice-filter.component';\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-send-invoice-filter',\r\n templateUrl: './send-invoice-filter.component.html',\r\n styleUrls: ['./send-invoice-filter.component.scss']\r\n})\r\nexport class SendInvoiceFilterComponent implements OnChanges {\r\n @Input() startDate: Date;\r\n @Input() endDate: Date;\r\n public moment: any = moment;\r\n public filterFormGroup: FormGroup;\r\n @Output() public Filter = new ReplaySubject<{\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }>(1);\r\n\r\n constructor(private log: LoggingService) {\r\n this.filterFormGroup = new FormGroup({\r\n StartDate: new FormControl(null),\r\n EndDate: new FormControl(null),\r\n Resend: new FormControl(false)\r\n });\r\n\r\n this.filterFormGroup.valueChanges.subscribe(value => {\r\n this.log.verbose({\r\n type: 'SendInvoiceFilterComponent:filterFormGroup:valueChanges',\r\n value\r\n });\r\n this.Filter.next(value);\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.startDate) {\r\n this.filterFormGroup.patchValue({\r\n StartDate: changes.startDate.currentValue\r\n });\r\n }\r\n if (changes.endDate) {\r\n this.filterFormGroup.patchValue({\r\n EndDate: changes.endDate.currentValue\r\n });\r\n }\r\n }\r\n}\r\n","export * from './send-invoice-presenter.component';\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport * as fromShared from '../../../shared';\r\nimport * as fromDataServices from '../../../data-services';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { SelectItem } from '../../../shared';\r\nimport * as moment from 'moment';\r\nimport * as env from '../../../../environments/environment';\r\nimport { DisplayErrors } from '../../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-send-invoice-presenter',\r\n templateUrl: './send-invoice-presenter.component.html',\r\n styleUrls: ['./send-invoice-presenter.component.scss']\r\n})\r\nexport class SendInvoicePresenter\r\n extends DisplayErrors\r\n implements OnInit, OnChanges\r\n{\r\n moment: any;\r\n environment = env.environment;\r\n @Input() public items: fromDataServices.Invoice.InvoiceModel[] = [];\r\n @Output() public SendInvoices = new ReplaySubject<\r\n fromDataServices.Invoice.InvoiceModel[]\r\n >(1);\r\n public selectedInvoices: any[];\r\n numCols = 8;\r\n constructor() {\r\n super();\r\n this.moment = moment;\r\n }\r\n ngOnInit(): void {\r\n this.SendInvoices.subscribe(items => {\r\n this.selectedInvoices = [];\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { SendInvoiceContainerComponent } from './send-invoice-container';\r\nimport { SendInvoicePresenter } from './send-invoice-presenter';\r\nimport { SendInvoiceRoute } from './send-invoice.route';\r\nimport { SendInvoiceFilterComponent } from './send-invoice-filter';\r\n\r\n@NgModule({\r\n declarations: [\r\n SendInvoiceContainerComponent,\r\n SendInvoicePresenter,\r\n SendInvoiceFilterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [SendInvoiceRoute]\r\n })\r\n ]\r\n})\r\nexport class SendInvoiceModule {}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport { SendInvoiceContainerComponent } from './send-invoice-container';\r\nexport const SendInvoiceRoute: Ng2StateDeclaration = {\r\n name: 'qbsendinvoices',\r\n url: '/qbsendinvoices',\r\n data: { requiresAuth: true },\r\n // loadChildren: () => import('./send-invoice/send-invoice.module').then(r => r.SendInvoiceModule)\r\n component: SendInvoiceContainerComponent\r\n};\r\n","export * from './send-journal-entry-container';\r\nexport * from './send-journal-entry-presenter';\r\nexport * from './send-journal-entry-filter';\r\n","export * from './send-journal-entry-container.component';\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromScheduledDates from '../../../lookups/store/schedule-date.selectors';\r\nimport { map, takeWhile, withLatestFrom } from 'rxjs/operators';\r\nimport * as moment from 'moment';\r\nimport { ScheduledDate } from '../../../lookups';\r\nimport { SendJournalEntries } from '../../store';\r\nimport * as fromShared from '../../../shared';\r\n\r\n@Component({\r\n selector: 'ef-send-journal-entry-container',\r\n templateUrl: './send-journal-entry-container.component.html',\r\n styleUrls: ['./send-journal-entry-container.component.scss']\r\n})\r\nexport class SendJournalEntryContainerComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n payPeriodDatesSelectItems$: Observable;\r\n payPeriodDates$: Observable;\r\n private SendJournalEntries = new ReplaySubject(1);\r\n public FilterChanged = new ReplaySubject<{\r\n PayPeriodEndDate: string;\r\n LaborAccrualDate: Date;\r\n LeaveAccrualDate: Date;\r\n }>(1);\r\n private active = true;\r\n constructor(private store: Store, private log: LoggingService) {}\r\n\r\n ngOnInit(): void {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'SendJournalEntryContainerComponent: setupObservables'\r\n });\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.payPeriodDates$ = this.store.pipe(\r\n select(\r\n fromScheduledDates.selectScheduledDateType({\r\n ScheduledDateType: 'PPE'\r\n })\r\n )\r\n );\r\n this.payPeriodDatesSelectItems$ = this.payPeriodDates$.pipe(\r\n map(dates =>\r\n dates.map(d => ({\r\n label: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YY'\r\n )} - ${moment(d.ScheduledEndDate).format('MM/DD/YY')} ${\r\n d.ScheduledDatePurpose\r\n }`,\r\n value: d.ScheduledDateID\r\n }))\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'SendJournalEntryContainerComponent: setupSubscriptions'\r\n });\r\n this.SendJournalEntries.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.FilterChanged),\r\n withLatestFrom(this.payPeriodDates$)\r\n ).subscribe(([[journalEntryType, filter], payPeriods]) => {\r\n this.log.verbose({\r\n type: 'SendJournalEntryContainerComponent:SendJournalEntries:subscribe',\r\n message: 'Sending Journal Entries',\r\n data: {\r\n filter,\r\n journalEntryType,\r\n payPeriods\r\n }\r\n });\r\n const pped = payPeriods.find(\r\n x => x.ScheduledDateID === filter.PayPeriodEndDate\r\n );\r\n this.store.dispatch(\r\n new SendJournalEntries({\r\n EndDate:\r\n journalEntryType === 'labor'\r\n ? pped?.ScheduledEndDate ?? new Date()\r\n : filter.LaborAccrualDate,\r\n ReversalDate: filter.LeaveAccrualDate,\r\n JournalType: journalEntryType\r\n })\r\n );\r\n });\r\n }\r\n onFilterChanged($event: {\r\n PayPeriodEndDate: string;\r\n LaborAccrualDate: Date;\r\n LeaveAccrualDate: Date;\r\n }) {\r\n this.log.verbose({\r\n type: 'SendJournalEntryContainerComponent',\r\n message: 'filterChanged',\r\n data: $event\r\n });\r\n this.FilterChanged.next($event);\r\n }\r\n onSendPayPeriodLabor() {\r\n this.log.verbose({\r\n type: 'SendJournalEntryContainerComponent',\r\n message: 'onSendPayPeriodLabor'\r\n });\r\n //Send Labor Journal Entry\r\n this.SendJournalEntries.next('labor');\r\n }\r\n onSendAccruals() {\r\n this.log.verbose({\r\n type: 'SendJournalEntryContainerComponent',\r\n message: 'onSendAccruals'\r\n });\r\n //Send Accrual Journal Entry\r\n this.SendJournalEntries.next('accrual');\r\n //Send Reversal Journal Entry\r\n this.SendJournalEntries.next('reversal');\r\n }\r\n onSendLeaveAccruals() {\r\n this.log.verbose({\r\n type: 'SendJournalEntryContainerComponent',\r\n message: 'onSendLeaveAccruals'\r\n });\r\n //Send Leave Accrual Journal Entry\r\n this.SendJournalEntries.next('leave');\r\n }\r\n}\r\n","export * from './send-journal-entry-filter.component';\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { ScheduledDate } from '../../../lookups';\r\nimport { SelectItem } from '../../../shared';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'ef-send-journal-entry-filter',\r\n templateUrl: './send-journal-entry-filter.component.html',\r\n styleUrls: ['./send-journal-entry-filter.component.scss']\r\n})\r\nexport class SendJournalEntryFilterComponent implements OnInit, OnDestroy {\r\n @Input() payPeriods: ScheduledDate[];\r\n @Input() payPeriodsSelectItems: SelectItem[];\r\n filterFormGroup: FormGroup;\r\n @Output() FilterChanged = new EventEmitter();\r\n private active = true;\r\n constructor() {\r\n this.filterFormGroup = new FormGroup({\r\n PayPeriodEndDate: new FormControl(),\r\n LaborAccrualDate: new FormControl(),\r\n LeaveAccrualDate: new FormControl()\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterFormGroup.valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n this.FilterChanged.emit(value);\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n PayPeriodEndDateChanged($event) {\r\n const payPeriodStartDate =\r\n this.payPeriods.find(x => x.ScheduledDateID === $event.value)\r\n ?.ScheduledStartDate ?? new Date();\r\n const ppe =\r\n this.payPeriods.find(x => x.ScheduledDateID === $event.value)\r\n ?.ScheduledEndDate ?? new Date();\r\n const monthEnd = moment(payPeriodStartDate).endOf('month').toDate();\r\n const lad = monthEnd < ppe ? monthEnd : ppe;\r\n const controls = this.filterFormGroup.controls;\r\n controls.LaborAccrualDate.setValue(lad);\r\n controls.LeaveAccrualDate.setValue(moment(lad).add(1, 'days').toDate());\r\n }\r\n}\r\n","export * from './send-journal-entry-presenter.component';\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ef-send-journal-entry-presenter',\r\n templateUrl: './send-journal-entry-presenter.component.html',\r\n styleUrls: ['./send-journal-entry-presenter.component.scss']\r\n})\r\nexport class SendJournalEntryPresenterComponent implements OnInit {\r\n @Input() Filter: {\r\n PayPeriodEndDate: Date;\r\n LaborAccrualDate: Date;\r\n LeaveAccrualDate: Date;\r\n };\r\n @Output() SendPayPeriodLabor = new EventEmitter();\r\n @Output() SendAccruals = new EventEmitter();\r\n @Output() SendLeaveAccruals = new EventEmitter();\r\n constructor() {\r\n //todo: do stuff\r\n }\r\n\r\n ngOnInit(): void {\r\n //todo: do stuff\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActionsSubject, select, Store } from '@ngrx/store';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { SelectItem } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromShared from '../../../shared';\r\nimport * as fromUser from '../../../user-info';\r\nimport * as fromExpense from '../../store';\r\nimport {\r\n SetEmployeesWithHours,\r\n getEmployeesWithHours,\r\n getContractorsWithHours,\r\n GetEmployeesWithHours,\r\n GetContractorsWithHours,\r\n SendHours,\r\n SendBills,\r\n getEmployeesWithPurchases,\r\n GetEmployeesWithPurchases,\r\n SendPurchases\r\n} from '../../store';\r\nimport { ofType } from '@ngrx/effects';\r\n\r\n@Component({\r\n selector: 'ef-send-purchases-container',\r\n templateUrl: './send-purchases-container.component.html',\r\n styleUrls: ['./send-purchases-container.component.scss']\r\n})\r\nexport class SendPurchasesContainerComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n process$: Observable;\r\n private filterSubject = new ReplaySubject<{\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }>(1);\r\n private sendPurchasesSubject = new ReplaySubject<{\r\n items: SelectItem[];\r\n sendImages: boolean;\r\n }>(1);\r\n public items$: Observable;\r\n public userInfo$: Observable;\r\n public resend$: Observable;\r\n public IsLoading = true;\r\n private active = true;\r\n\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService,\r\n private dispatcher: ActionsSubject\r\n ) {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngAfterViewInit(): void {\r\n this.store.dispatch(new SetEmployeesWithHours([])); //clear cache\r\n }\r\n setupObservables(): void {\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.resend$ = this.filterSubject.pipe(map(filter => filter.Resend));\r\n }\r\n setupSubscriptions(): void {\r\n this.items$ = this.store.pipe(\r\n select(getEmployeesWithPurchases),\r\n map(items => {\r\n // this.IsLoading = false;\r\n return items?.map(item => ({\r\n label: item.EmployeeName,\r\n value: item.EmployeeListID\r\n }));\r\n })\r\n );\r\n this.store\r\n .pipe(\r\n select(getEmployeesWithPurchases),\r\n // filter(items => (items?.length ?? 0) > 0),\r\n take(1)\r\n )\r\n .subscribe(() => (this.IsLoading = false));\r\n this.filterSubject\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n this.store.dispatch(new GetEmployeesWithPurchases(value));\r\n });\r\n this.sendPurchasesSubject\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.filterSubject),\r\n tap()\r\n )\r\n .subscribe(([send, filter]) => {\r\n this.IsLoading = true;\r\n send.items.forEach(item => {\r\n this.store.dispatch(\r\n new SendPurchases({\r\n EmployeeListID: item.value,\r\n startDate: filter.StartDate,\r\n endDate: filter.EndDate,\r\n Resend: filter.Resend,\r\n sendImages: send.sendImages\r\n })\r\n );\r\n });\r\n });\r\n this.dispatcher\r\n .pipe(\r\n ofType(fromExpense.ActionTypes.SendPurchasesSuccess),\r\n takeWhile(() => this.active),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'SendPurchasesContainerComponent:SendPurchasesSuccess$',\r\n action\r\n })\r\n )\r\n )\r\n .subscribe(() => (this.IsLoading = false));\r\n\r\n this.dispatcher\r\n .pipe(\r\n ofType(fromShared.Errors.ErrorsSidenavActionTypes.SetErrors),\r\n takeWhile(() => this.active)\r\n )\r\n .subscribe(() => (this.IsLoading = false));\r\n }\r\n onFilter(value: { StartDate: Date; EndDate: Date; Resend: boolean }) {\r\n this.log.verbose({\r\n type: 'SendPurchasesContainerComponent:onFilter',\r\n value\r\n });\r\n this.filterSubject.next(value);\r\n }\r\n onSendPurchases($event: { items: SelectItem[]; sendImages: boolean }) {\r\n this.log.verbose({\r\n type: 'SendPurchasesContainerComponent:onSendPurchases',\r\n $event\r\n });\r\n this.sendPurchasesSubject.next($event);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-send-purchases-filter',\r\n templateUrl: './send-purchases-filter.component.html',\r\n styleUrls: ['./send-purchases-filter.component.scss']\r\n})\r\nexport class SendPurchasesFilterComponent implements OnChanges {\r\n @Input() startDate: Date;\r\n @Input() endDate: Date;\r\n public moment: any = moment;\r\n public filterFormGroup: FormGroup;\r\n @Output() public Filter = new ReplaySubject<{\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }>(1);\r\n constructor(private log: LoggingService) {\r\n this.filterFormGroup = new FormGroup({\r\n StartDate: new FormControl(null),\r\n EndDate: new FormControl(null),\r\n Resend: new FormControl(false)\r\n });\r\n this.filterFormGroup.valueChanges.subscribe(value => {\r\n this.log.verbose({\r\n type: 'SendPurchasesFilterComponent:filterFormGroup:valueChanges',\r\n value\r\n });\r\n if (\r\n value.StartDate &&\r\n value.EndDate &&\r\n moment(value.StartDate).isSameOrBefore(value.EndDate)\r\n ) {\r\n this.Filter.next({\r\n ...value,\r\n StartDate: moment(value.StartDate).toDate(),\r\n EndDate: moment(value.EndDate).toDate()\r\n });\r\n }\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.startDate) {\r\n this.filterFormGroup.patchValue({\r\n StartDate: changes.startDate.currentValue\r\n });\r\n }\r\n if (changes.endDate) {\r\n this.filterFormGroup.patchValue({\r\n EndDate: changes.endDate.currentValue\r\n });\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { EmployeeModel } from '../../../models';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport { Checkbox, MessageService, SelectItem } from '../../../shared';\r\n\r\n@Component({\r\n selector: 'ef-send-purchases-presenter',\r\n templateUrl: './send-purchases-presenter.component.html',\r\n styleUrls: ['./send-purchases-presenter.component.scss']\r\n})\r\nexport class SendPurchasesPresenterComponent implements OnChanges {\r\n @Input() public items: EmployeeModel[] = [];\r\n @Input() public resend = false;\r\n @Output() public SendPurchases = new ReplaySubject<{\r\n items: SelectItem[];\r\n sendImages: boolean;\r\n }>();\r\n @ViewChild('sendReceiptImages', { static: true })\r\n sendReceiptImages: Checkbox;\r\n public selectedEmployees: EmployeeModel[];\r\n constructor(\r\n private log: LoggingService,\r\n private messageService: MessageService\r\n ) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n changes &&\r\n changes.resend.currentValue != changes.resend.previousValue\r\n ) {\r\n this.selectedEmployees = [];\r\n }\r\n }\r\n public onSendPurchases(employees: SelectItem[]) {\r\n this.log.verbose({\r\n type: 'SendPurchasesPresenterComponent:onSendPurchases',\r\n employees\r\n });\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'Sending Expenses...',\r\n detail: 'Send expenses in progress'\r\n });\r\n this.SendPurchases.next({\r\n items: employees,\r\n sendImages: this.sendReceiptImages.checked()\r\n });\r\n this.selectedEmployees = [];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SendPurchasesContainerComponent } from './send-purchases-container/send-purchases-container.component';\r\nimport { SendPurchasesPresenterComponent } from './send-purchases-presenter/send-purchases-presenter.component';\r\nimport { SendPurchasesFilterComponent } from './send-purchases-filter/send-purchases-filter.component';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { QuickbooksSendPurchasesRoute } from './send-purchases.route';\r\n\r\n@NgModule({\r\n declarations: [\r\n SendPurchasesContainerComponent,\r\n SendPurchasesPresenterComponent,\r\n SendPurchasesFilterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [QuickbooksSendPurchasesRoute]\r\n })\r\n ]\r\n})\r\nexport class SendPurchasesModule {}\r\n","import { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport { SendPurchasesContainerComponent } from './send-purchases-container/send-purchases-container.component';\r\n\r\nexport const QuickbooksSendPurchasesRoute: Ng2StateDeclaration = {\r\n // name: 'quickbooks.**'\r\n name: 'qbsendexpenses',\r\n url: '/qbsendexpenses',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.IndirectRateModule)\r\n data: { requiresAuth: true },\r\n component: SendPurchasesContainerComponent\r\n};\r\n","export * from './quickbooks.actions';\r\nexport * from './quickbooks.effects';\r\nexport * from './quickbooks.reducer';\r\nexport * from './quickbooks.selectors';\r\n","import { Action } from '@ngrx/store';\r\nimport { EmployeeModel } from '../../models/EmployeeModel';\r\nimport * as fromDataServices from '../../data-services';\r\nexport enum ActionTypes {\r\n ValidateTokens = '[quickbooks] ValidateTokens',\r\n HasValidTokens = '[Quickbooks] HasValidTokens',\r\n GetAuthUrl = '[Quickbooks] GetAuthUrl',\r\n SetAuthUrl = '[Quickbooks] SetAuthUrl',\r\n GetEmployeesWithHours = '[Quickbooks] GetEmployeesWithHours',\r\n SetEmployeesWithHours = '[Quickbooks] SetEmployeesWithHours',\r\n GetContractorsWithHours = '[Quickbooks] GetContractorsWithHours',\r\n SetContractorsWithHours = '[Quickbooks] SetContractorsWithHours',\r\n SendHours = '[Quickbooks] SendHours',\r\n SendHoursSuccess = '[Quickbooks] SendHoursSuccess',\r\n SendBills = '[Quickbooks] SendBills',\r\n SendBillsSuccess = '[Quickbooks] SendBillsSuccess',\r\n SendJournalEntries = '[Quickbooks] SendJournalEntries',\r\n SendJournalEntriesSuccess = '[Quickbooks] SendJournalEntriesSuccess',\r\n RevokeAccess = '[Quickbooks] RevokeAccess',\r\n GetMinApprovedTimeNotSent = '[Quickbooks] GetMinApprovedTimeNotSent',\r\n SetMinApprovedTimeNotSent = '[Quickbooks] SetMinApprovedTimeNotSent',\r\n GetMaxApprovedTimeNotSent = '[Quickbooks] GetMaxApprovedTimeNotSent',\r\n SetMaxApprovedTimeNotSent = '[Quickbooks] SetMaxApprovedTimeNotSent',\r\n GetEmployeesWithPurchases = '[Quickbooks] GetEmployeesWithPurchases',\r\n SetEmployeesWithPurchases = '[Quickbooks] SetEmployeesWithPurchases',\r\n SendPurchases = '[Quickbooks] SendPurchases',\r\n SendPurchasesSuccess = '[Quickbooks] SendPurchasesSuccess',\r\n SendInvoices = '[Quickbooks] SendInvoices',\r\n SendInvoicesSuccess = '[Quickbooks] SendInvoicesSuccess'\r\n}\r\nexport class HasValidTokens implements Action {\r\n constructor(public payload: boolean) {}\r\n readonly type = ActionTypes.HasValidTokens;\r\n}\r\nexport class ValidateTokens implements Action {\r\n readonly type = ActionTypes.ValidateTokens;\r\n}\r\nexport class GetAuthUrl implements Action {\r\n readonly type = ActionTypes.GetAuthUrl;\r\n}\r\nexport class SetAuthUrl implements Action {\r\n constructor(public payload: string) {}\r\n readonly type = ActionTypes.SetAuthUrl;\r\n}\r\nexport class GetEmployeesWithHours implements Action {\r\n constructor(\r\n public payload: {\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.GetEmployeesWithHours;\r\n}\r\nexport class SetEmployeesWithHours implements Action {\r\n constructor(public payload: EmployeeModel[]) {}\r\n readonly type = ActionTypes.SetEmployeesWithHours;\r\n}\r\nexport class GetContractorsWithHours implements Action {\r\n constructor(\r\n public payload: {\r\n StartDate: Date;\r\n EndDate: Date;\r\n Resend: boolean;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.GetContractorsWithHours;\r\n}\r\nexport class SetContractorsWithHours implements Action {\r\n constructor(public payload: EmployeeModel[]) {}\r\n readonly type = ActionTypes.SetContractorsWithHours;\r\n}\r\nexport class SendHours implements Action {\r\n constructor(\r\n public payload: {\r\n EmployeeListID: string;\r\n startDate: Date;\r\n endDate: Date;\r\n resend: boolean;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.SendHours;\r\n}\r\nexport class SendHoursSuccess implements Action {\r\n readonly type = ActionTypes.SendHoursSuccess;\r\n}\r\nexport class SendBills implements Action {\r\n constructor(\r\n public payload: {\r\n EmployeeListID: string;\r\n startDate: Date;\r\n endDate: Date;\r\n resend: boolean;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.SendBills;\r\n}\r\nexport class SendBillsSuccess implements Action {\r\n readonly type = ActionTypes.SendBillsSuccess;\r\n}\r\nexport class SendJournalEntries implements Action {\r\n constructor(\r\n public payload: {\r\n EndDate: Date;\r\n ReversalDate: Date;\r\n JournalType: string;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.SendJournalEntries;\r\n}\r\nexport class SendJournalEntriesSuccess implements Action {\r\n readonly type = ActionTypes.SendJournalEntriesSuccess;\r\n}\r\nexport class RevokeAccess implements Action {\r\n readonly type = ActionTypes.RevokeAccess;\r\n}\r\nexport class GetMinApprovedTimeNotSent implements Action {\r\n readonly type = ActionTypes.GetMinApprovedTimeNotSent;\r\n}\r\nexport class SetMinApprovedTimeNotSent implements Action {\r\n constructor(public payload: Date) {}\r\n readonly type = ActionTypes.SetMinApprovedTimeNotSent;\r\n}\r\nexport class GetMaxApprovedTimeNotSent implements Action {\r\n readonly type = ActionTypes.GetMaxApprovedTimeNotSent;\r\n}\r\nexport class SetMaxApprovedTimeNotSent implements Action {\r\n constructor(public payload: Date) {}\r\n readonly type = ActionTypes.SetMaxApprovedTimeNotSent;\r\n}\r\nexport class GetEmployeesWithPurchases implements Action {\r\n constructor(\r\n public payload: { StartDate: Date; EndDate: Date; Resend: boolean }\r\n ) {}\r\n readonly type = ActionTypes.GetEmployeesWithPurchases;\r\n}\r\nexport class SetEmployeesWithPurchases implements Action {\r\n constructor(public payload: EmployeeModel[]) {}\r\n readonly type = ActionTypes.SetEmployeesWithPurchases;\r\n}\r\nexport class SendPurchases implements Action {\r\n constructor(\r\n public payload: {\r\n EmployeeListID: string;\r\n startDate: Date;\r\n endDate: Date;\r\n Resend: boolean;\r\n sendImages: boolean;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.SendPurchases;\r\n}\r\nexport class SendPurchasesSuccess implements Action {\r\n constructor(\r\n public payload: {\r\n startDate: Date;\r\n endDate: Date;\r\n Resend: boolean;\r\n }\r\n ) {}\r\n\r\n readonly type = ActionTypes.SendPurchasesSuccess;\r\n}\r\nexport class SendInvoices implements Action {\r\n constructor(public payload: fromDataServices.Invoice.InvoiceModel[]) {}\r\n readonly type = ActionTypes.SendInvoices;\r\n}\r\nexport class SendInvoicesSuccess implements Action {\r\n constructor(public payload: fromDataServices.Invoice.InvoiceModel[]) {}\r\n readonly type = ActionTypes.SendInvoicesSuccess;\r\n}\r\nexport type ActionsUnion =\r\n | HasValidTokens\r\n | ValidateTokens\r\n | GetAuthUrl\r\n | SetAuthUrl\r\n | GetEmployeesWithHours\r\n | SetEmployeesWithHours\r\n | GetContractorsWithHours\r\n | SetContractorsWithHours\r\n | SendHours\r\n | SendBills\r\n | SendJournalEntries\r\n | RevokeAccess\r\n | GetEmployeesWithPurchases\r\n | SetEmployeesWithPurchases\r\n | SendPurchases\r\n | SendInvoices\r\n | SendInvoicesSuccess\r\n | SendHoursSuccess\r\n | SendBillsSuccess\r\n | SendJournalEntriesSuccess\r\n | GetMinApprovedTimeNotSent\r\n | GetMaxApprovedTimeNotSent\r\n | SetMinApprovedTimeNotSent\r\n | SetMaxApprovedTimeNotSent;\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Action, select, Store } from '@ngrx/store';\r\nimport { combineLatest, EMPTY, of } from 'rxjs';\r\nimport {\r\n catchError,\r\n concatMap,\r\n debounce,\r\n debounceTime,\r\n delay,\r\n filter,\r\n map,\r\n mergeMap,\r\n switchMap,\r\n take,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromCompanySettings from '../../company-setting';\r\nimport * as fromShared from '../../shared';\r\nimport { MessageService, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ToasterService } from '../../toaster';\r\nimport * as fromUser from '../../user-info/store';\r\nimport { QuickbooksService } from '../quickbooks.services';\r\nimport * as actions from './quickbooks.actions';\r\nimport { getAuthUrl } from './quickbooks.selectors';\r\nimport * as moment from 'moment';\r\nimport {\r\n EntityActionFactory,\r\n EntityEffects,\r\n EntityOp,\r\n ofEntityOp,\r\n EntityAction,\r\n ofEntityType,\r\n EntityServices,\r\n EntityCollectionService\r\n} from '@ngrx/data';\r\nimport * as fromDataServices from '../../data-services';\r\n\r\n@Injectable()\r\nexport class QuickbooksEffects {\r\n SendInvoiceModelDS: EntityCollectionService;\r\n constructor(\r\n private log: LoggingService,\r\n private actions$: Actions,\r\n private service: QuickbooksService,\r\n private store: Store,\r\n private toaster: ToasterService,\r\n private messageService: MessageService,\r\n public entityServices: EntityServices,\r\n public actionFactory: EntityActionFactory\r\n ) {\r\n this.SendInvoiceModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Invoice.entityName\r\n );\r\n\r\n this.log.verbose({\r\n type: 'QuickbooksEffects::'\r\n });\r\n }\r\n notquickbooksOnline$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromCompanySettings.upsertCompanySettings),\r\n filter(action =>\r\n action.companySettings.some(\r\n setting =>\r\n setting.SettingType === 'QuickbooksOnline' &&\r\n (setting.SettingValue === '0' ||\r\n setting.SettingValue === 'false' ||\r\n setting.SettingValue === false ||\r\n setting.SettingValue === 0)\r\n )\r\n ),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:QuickbooksOnline$:not QBO',\r\n action\r\n })\r\n ),\r\n mergeMap(resp => [\r\n new actions.GetAuthUrl(),\r\n new actions.HasValidTokens(false)\r\n ])\r\n );\r\n });\r\n quickbooksOnline$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromCompanySettings.upsertCompanySettings),\r\n filter(action =>\r\n action.companySettings.some(\r\n setting =>\r\n setting.SettingType === 'QuickbooksOnline' &&\r\n (setting.SettingValue === '1' ||\r\n setting.SettingValue === 'true' ||\r\n setting.SettingValue === true ||\r\n setting.SettingValue === 1)\r\n )\r\n ),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:QuickbooksOnline$:QBO',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service.HasValidTokens().pipe(\r\n mergeMap(resp => [\r\n new actions.GetAuthUrl(),\r\n new actions.HasValidTokens(resp)\r\n ]),\r\n catchError(() => [\r\n new actions.GetAuthUrl(),\r\n new actions.HasValidTokens(false)\r\n ]),\r\n //not sure if this does anything\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n authUrl$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(actions.ActionTypes.GetAuthUrl),\r\n tap(a =>\r\n this.log.verbose({ type: 'QuickbooksEffects:authUrl$', a })\r\n ),\r\n switchMap(() =>\r\n this.service.GetAuthUrl().pipe(\r\n map(resp => new actions.SetAuthUrl(resp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n quickbooksValidateTokens$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(actions.ActionTypes.ValidateTokens),\r\n switchMap(() =>\r\n this.service.HasValidTokens().pipe(\r\n map(resp => new actions.HasValidTokens(resp)),\r\n catchError((e, c) => {\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:quickbooksValidateTokens$',\r\n e,\r\n c\r\n });\r\n return [\r\n new actions.GetAuthUrl(),\r\n new actions.HasValidTokens(false)\r\n ];\r\n })\r\n )\r\n )\r\n );\r\n });\r\n\r\n quickbooksUpdateQBOProcesses$ = createEffect(() => {\r\n return combineLatest([\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.HasValidTokens\r\n )\r\n ),\r\n this.store.pipe(\r\n select(getAuthUrl),\r\n filter(a => a !== null)\r\n ),\r\n this.store.pipe(\r\n select(fromUser.getUserProcessCategories),\r\n filter(x => x.length > 0),\r\n take(1)\r\n )\r\n ]).pipe(\r\n // take(1),\r\n tap(([action, authUrl, categories]) =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:quickbooksUpdateQBOProcesses$',\r\n action,\r\n categories,\r\n authUrl\r\n })\r\n ),\r\n map(([action, authUrl, categories]) => {\r\n return action.payload\r\n ? new fromUser.SetUserPermissions({\r\n UserProcessCategories: categories.map(category =>\r\n category.CategoryId === 10\r\n ? {\r\n ...category,\r\n UserProcesses:\r\n category.UserProcesses.filter(\r\n p => p.ProcessID > 0\r\n )\r\n .map(p => ({\r\n ...p,\r\n disabled: false\r\n }))\r\n .concat([\r\n {\r\n ProcessID: -4,\r\n RouteName: 'qbrevoke',\r\n ProcessName:\r\n 'Revoke QuickBooks Access',\r\n ProcessDesc:\r\n 'Revoke QuickBbooks Access',\r\n ProcessTitle:\r\n 'Revoke QuickBooks Access',\r\n ProcessLabel:\r\n 'Revoke eFAACT access to your QuickBooks account',\r\n // image: '/images/C2QB_green_btn_short_default.svg',\r\n // href: authUrl,\r\n disabled: false\r\n } as any\r\n ])\r\n }\r\n : category\r\n )\r\n } as any)\r\n : new fromUser.SetUserPermissions({\r\n UserProcessCategories: categories.map(category =>\r\n category.CategoryId === 10\r\n ? {\r\n ...category,\r\n UserProcesses: [\r\n {\r\n ProcessID: -5, // this has to be mapped in router.hooks.ts\r\n RouteName: 'quickbooksauth',\r\n ProcessName:\r\n 'Connect to QuickBooks',\r\n ProcessTitle:\r\n 'Connect to QuickBooks',\r\n ProcessDesc:\r\n 'Connect to Quickbooks',\r\n ProcessLabel:\r\n 'Connect your eFAACT account to QuickBooks',\r\n ProcessResourceImage:\r\n '/images/C2QB_green_btn_short_default.svg',\r\n ImageOnly: true,\r\n // ProcessUrl: authUrl,\r\n target: '_self'\r\n },\r\n ...category.UserProcesses.filter(\r\n p => p.ProcessID > 0\r\n ).map(process => ({\r\n ...process,\r\n disabled:\r\n // 8 is process period, should not disable it\r\n process.ProcessID === 8\r\n ? false\r\n : true\r\n }))\r\n ]\r\n }\r\n : category\r\n )\r\n } as any);\r\n }),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:quickbooksUpdateQBOProcesses$:categories mapped',\r\n a\r\n })\r\n )\r\n );\r\n });\r\n getEmployeesWithHours$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.GetEmployeesWithHours\r\n ),\r\n filter(a => !!a.payload.StartDate && !!a.payload.EndDate),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:getEmployeesWithHours$',\r\n a\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service\r\n .GetEmployeesWithHours(\r\n action.payload.StartDate,\r\n action.payload.EndDate,\r\n action.payload.Resend\r\n )\r\n .pipe(\r\n map(resp => new actions.SetEmployeesWithHours(resp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getMinApprovedTimeNotSent$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.GetMinApprovedTimeNotSent\r\n ),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:GetMinApprovedTimeNotSent$',\r\n a\r\n })\r\n ),\r\n switchMap(() =>\r\n this.service.GetMinApprovedTimeNotSent().pipe(\r\n map(\r\n resp =>\r\n new actions.SetMinApprovedTimeNotSent(\r\n moment(resp).toDate()\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n getMaxApprovedTimeNotSent$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.GetMaxApprovedTimeNotSent\r\n ),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:GetMaxApprovedTimeNotSent$',\r\n a\r\n })\r\n ),\r\n switchMap(() =>\r\n this.service.GetMaxApprovedTimeNotSent().pipe(\r\n map(\r\n resp =>\r\n new actions.SetMaxApprovedTimeNotSent(\r\n moment(resp).toDate()\r\n )\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n getContractorsWithHours$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.GetContractorsWithHours\r\n ),\r\n filter(a => !!a.payload.StartDate && !!a.payload.EndDate),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:getContractorsWithHours$',\r\n a\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service\r\n .GetContractorsWithHours(\r\n action.payload.StartDate,\r\n action.payload.EndDate,\r\n action.payload.Resend\r\n )\r\n .pipe(\r\n map(resp => new actions.SetContractorsWithHours(resp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n sendHours$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(actions.ActionTypes.SendHours),\r\n tap(a =>\r\n this.log.verbose({ type: 'QuickbooksEffects:sendHours$', a })\r\n ),\r\n concatMap(action =>\r\n this.service\r\n .SendHours(\r\n action.payload.EmployeeListID,\r\n action.payload.startDate,\r\n action.payload.endDate,\r\n action.payload.resend\r\n )\r\n .pipe(\r\n debounceTime(1000),\r\n concatMap(resp => [\r\n new actions.SendHoursSuccess(),\r\n new actions.SetEmployeesWithHours([]),\r\n new actions.GetEmployeesWithHours({\r\n StartDate: action.payload.startDate,\r\n EndDate: action.payload.endDate,\r\n Resend: action.payload.resend\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n sendHoursSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.SendHoursSuccess\r\n ),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendHoursSuccess$',\r\n a\r\n })\r\n ),\r\n map(() => {\r\n this.messageService.clear();\r\n setTimeout(() => {\r\n this.messageService.add({\r\n id: 'sendHoursSuccess',\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: 'Hours sent successfully'\r\n });\r\n }, 0);\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendHoursSuccess$'\r\n });\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n sendBills$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(actions.ActionTypes.SendBills),\r\n tap(a =>\r\n this.log.verbose({ type: 'QuickbooksEffects:sendBills$', a })\r\n ),\r\n //TODO: how to combine this with swtichmap so it doesn't stop on failure\r\n concatMap(action =>\r\n this.service\r\n .SendHours(\r\n action.payload.EmployeeListID,\r\n action.payload.startDate,\r\n action.payload.endDate,\r\n action.payload.resend\r\n )\r\n .pipe(\r\n debounceTime(1000),\r\n concatMap(resp => [\r\n new actions.SetContractorsWithHours([]),\r\n new actions.GetContractorsWithHours({\r\n StartDate: action.payload.startDate,\r\n EndDate: action.payload.endDate,\r\n Resend: action.payload.resend\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n sendBillsSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.SendBillsSuccess\r\n ),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendBillsSuccess$',\r\n a\r\n })\r\n ),\r\n map(() => {\r\n this.messageService.add({\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: 'Bills sent successfully'\r\n });\r\n // this.toaster.pop({\r\n // type: 'success',\r\n // title: 'Success',\r\n // body: 'Bills sent successfully',\r\n // sticky: true\r\n // });\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n sendJournalEntries$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.SendJournalEntries\r\n ),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendJournalEntries$',\r\n a\r\n })\r\n ),\r\n concatMap(action =>\r\n this.service.SendJournalEntries(action.payload).pipe(\r\n debounceTime(1000),\r\n map(() => new actions.SendJournalEntriesSuccess()),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n sendJournalEntriesSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.SendJournalEntriesSuccess\r\n ),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendJournalEntriesSuccess$',\r\n a\r\n })\r\n ),\r\n map(() => {\r\n this.messageService.add({\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: 'Journal Entries sent successfully'\r\n });\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendJournalEntriesSuccess$'\r\n });\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n getEmployeesWithPurchases$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.GetEmployeesWithPurchases\r\n ),\r\n filter(a => !!a.payload.StartDate && !!a.payload.EndDate),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:getEmployeesWithPurchases$',\r\n a\r\n })\r\n ),\r\n switchMap(action =>\r\n this.service\r\n .GetEmployeesWithPurchases(\r\n action.payload.StartDate,\r\n action.payload.EndDate,\r\n action.payload.Resend\r\n )\r\n .pipe(\r\n map(\r\n resp => new actions.SetEmployeesWithPurchases(resp)\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n sendPurchases$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(actions.ActionTypes.SendPurchases),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:SendPurchases$',\r\n a\r\n })\r\n ),\r\n mergeMap(action =>\r\n this.service\r\n .SendExpenses(\r\n action.payload.EmployeeListID,\r\n action.payload.startDate,\r\n action.payload.endDate,\r\n action.payload.Resend,\r\n action.payload.sendImages\r\n )\r\n .pipe(\r\n mergeMap(() => [\r\n new actions.SetEmployeesWithPurchases([]),\r\n new actions.SendPurchasesSuccess({\r\n ...action.payload\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n updateEmployeesWithPurchases$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.SendPurchasesSuccess\r\n ),\r\n debounceTime(1000),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:updateEmployeesWithPurchases$',\r\n a\r\n })\r\n ),\r\n map(\r\n action =>\r\n // new actions.SetEmployeesWithPurchases([]),\r\n new actions.GetEmployeesWithPurchases({\r\n StartDate: action.payload.startDate,\r\n EndDate: action.payload.endDate,\r\n Resend: action.payload.Resend\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n });\r\n sendPurchasesSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n actions.ActionTypes.SendPurchasesSuccess\r\n ),\r\n debounceTime(1000),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendPurchasesSuccess$',\r\n a\r\n })\r\n ),\r\n map(() => {\r\n this.messageService.clear();\r\n setTimeout(() => {\r\n this.messageService.add({\r\n id: 'sendPurchasesSuccess',\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: 'Expenses sent successfully'\r\n });\r\n }, 0);\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:sendPurchasesSuccess$'\r\n });\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n sendInvoices$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(actions.ActionTypes.SendInvoices),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:SendInvoices$',\r\n a\r\n })\r\n ),\r\n //TODO: how to combine this with switchmap so it doesn't stop on failure\r\n concatMap(action =>\r\n this.service.SendInvoices(action.payload).pipe(\r\n tap(resp =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:SendInvoices$',\r\n action,\r\n resp\r\n })\r\n ),\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(item => {\r\n return {\r\n ...action.payload.find(\r\n x => x.id === item.Status.MsgEntityID\r\n ),\r\n ...item,\r\n id: item.Status.MsgEntityID ?? item.id\r\n };\r\n })\r\n })),\r\n tap(resp =>\r\n this.log.verbose({\r\n type: 'QuickbooksEffects:SendInvoices$:2',\r\n action,\r\n resp\r\n })\r\n ),\r\n concatMap(resp => {\r\n const updated = this.actionFactory.create(\r\n fromDataServices.Invoice.entityName,\r\n EntityOp.QUERY_MANY_SUCCESS,\r\n resp.Items\r\n );\r\n return fromShared.Errors.IsSuccessStatus(\r\n resp.StatusCode\r\n )\r\n ? [\r\n new actions.SendInvoicesSuccess(resp.Items),\r\n new fromShared.Errors.RemoveErrors(),\r\n updated\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n updated\r\n ];\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n revokeAccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(actions.ActionTypes.RevokeAccess),\r\n tap(a => this.log.verbose({ type: 'revokeAccess$', a })),\r\n concatMap(action =>\r\n this.service\r\n .RevokeAccess()\r\n .pipe(\r\n debounceTime(1000),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n ),\r\n { dispatch: false }\r\n );\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { EmployeeModel } from '../../models/EmployeeModel';\r\nimport * as actions from './quickbooks.actions';\r\n\r\n// this is just to handle the keys\r\nexport const quickbooksFeatureKey = 'QuickbooksOnline';\r\nexport interface QuickbooksOnlineState {\r\n HasValidTokens: boolean;\r\n AuthUrl: string;\r\n EmployeesWithHours: EmployeeModel[] | null;\r\n ContractorsWithHours: EmployeeModel[] | null;\r\n EmployeesWithPurchases: EmployeeModel[] | null;\r\n MinApprovedTimeNotSent: Date | null;\r\n MaxApprovedTimeNotSent: Date | null;\r\n}\r\nexport const initialState: QuickbooksOnlineState = {\r\n HasValidTokens: false,\r\n AuthUrl: '',\r\n EmployeesWithHours: null,\r\n ContractorsWithHours: null,\r\n EmployeesWithPurchases: null,\r\n MinApprovedTimeNotSent: null,\r\n MaxApprovedTimeNotSent: null\r\n};\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: actions.ActionsUnion\r\n): QuickbooksOnlineState {\r\n switch (action.type) {\r\n case actions.ActionTypes.HasValidTokens:\r\n return {\r\n ...state,\r\n HasValidTokens: action.payload\r\n };\r\n case actions.ActionTypes.SetAuthUrl:\r\n return {\r\n ...state,\r\n AuthUrl: action.payload\r\n };\r\n case actions.ActionTypes.SetEmployeesWithHours:\r\n return {\r\n ...state,\r\n EmployeesWithHours: action.payload\r\n };\r\n case actions.ActionTypes.SetContractorsWithHours:\r\n return {\r\n ...state,\r\n ContractorsWithHours: action.payload\r\n };\r\n case actions.ActionTypes.SetEmployeesWithPurchases:\r\n return {\r\n ...state,\r\n EmployeesWithPurchases: action.payload\r\n };\r\n case actions.ActionTypes.SetMinApprovedTimeNotSent:\r\n return {\r\n ...state,\r\n MinApprovedTimeNotSent: action.payload\r\n };\r\n case actions.ActionTypes.SetMaxApprovedTimeNotSent:\r\n return {\r\n ...state,\r\n MaxApprovedTimeNotSent: action.payload\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport {\r\n quickbooksFeatureKey,\r\n QuickbooksOnlineState\r\n} from './quickbooks.reducer';\r\n\r\nexport const selectQuickbooksOnlineState =\r\n createFeatureSelector(quickbooksFeatureKey);\r\n\r\nexport const getHasValidTokens = createSelector(\r\n selectQuickbooksOnlineState,\r\n state => state.HasValidTokens\r\n);\r\n\r\nexport const getAuthUrl = createSelector(\r\n selectQuickbooksOnlineState,\r\n state => state.AuthUrl\r\n);\r\nexport const getEmployeesWithHours = createSelector(\r\n selectQuickbooksOnlineState,\r\n state => state.EmployeesWithHours\r\n);\r\nexport const getContractorsWithHours = createSelector(\r\n selectQuickbooksOnlineState,\r\n state => state.ContractorsWithHours\r\n);\r\nexport const getEmployeesWithPurchases = createSelector(\r\n selectQuickbooksOnlineState,\r\n state => state.EmployeesWithPurchases\r\n);\r\nexport const getMinApprovedTimeNotSent = createSelector(\r\n selectQuickbooksOnlineState,\r\n state => state.MinApprovedTimeNotSent\r\n);\r\nexport const getMaxApprovedTimeNotSent = createSelector(\r\n selectQuickbooksOnlineState,\r\n state => state.MaxApprovedTimeNotSent\r\n);\r\n","import { AfterViewInit, Component, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport { combineLatest, merge, Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, scan, take } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { QuickbooksService } from '../quickbooks.services';\r\nimport * as fromStore from '../store';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromSettings from '../../company-setting';\r\n@Component({\r\n selector: 'ef-sync-lists',\r\n templateUrl: './sync-lists.component.html',\r\n styleUrls: ['./sync-lists.component.scss']\r\n})\r\nexport class SyncListsComponent implements OnInit, AfterViewInit {\r\n /**\r\n *\r\n */\r\n public StatusSubject: ReplaySubject = new ReplaySubject(1);\r\n public SyncEnabledSubject: ReplaySubject =\r\n new ReplaySubject(1);\r\n public AllStatuses: Observable;\r\n private validTokens: boolean;\r\n process$: Observable;\r\n SendEmployeetoQB$: Observable;\r\n async syncLists() {\r\n // catch errors and display them\r\n this.SyncEnabledSubject.next(false);\r\n //INFO: DO NOT MESS WITH THE ORDER unless you are aware of the dependencies\r\n this.SendEmployeetoQB$.pipe(take(1)).subscribe(async sendtoQBO => {\r\n if (this.validTokens) {\r\n try {\r\n this.StatusSubject.next(\r\n '
Syncing Company Info...
'\r\n );\r\n await this.service.SyncCompanyInfo();\r\n this.StatusSubject.next(\r\n '
Syncing Company Info Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n\r\n try {\r\n this.StatusSubject.next(\r\n '
Syncing Preferences...
'\r\n );\r\n await this.service.SyncPreferences();\r\n this.StatusSubject.next(\r\n '
Syncing Preferences Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n\r\n try {\r\n this.StatusSubject.next('
Syncing Vendors...
');\r\n await this.service.SyncVendors();\r\n this.StatusSubject.next(\r\n '
Syncing Vendors Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n\r\n try {\r\n this.StatusSubject.next(\r\n '
Syncing Customer Jobs...
'\r\n );\r\n await this.service.SyncCustomerJobs();\r\n this.StatusSubject.next(\r\n '
Syncing Customer Jobs Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n\r\n try {\r\n this.StatusSubject.next('
Syncing Accounts...
');\r\n await this.service.SyncAccounts();\r\n this.StatusSubject.next(\r\n '
Syncing Accounts Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n\r\n try {\r\n this.StatusSubject.next(\r\n '
Syncing Service Items...
'\r\n );\r\n await this.service.SyncServiceItems();\r\n this.StatusSubject.next(\r\n '
Syncing Service Items Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n\r\n try {\r\n this.StatusSubject.next(\r\n '
Syncing Inventory Items...
'\r\n );\r\n await this.service.SyncInventory();\r\n this.StatusSubject.next(\r\n '
Syncing Inventory Items Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n\r\n try {\r\n this.StatusSubject.next(\r\n '
Syncing Non-Inventory Items...
'\r\n );\r\n await this.service.SyncNonInventory();\r\n this.StatusSubject.next(\r\n '
Syncing Non-Inventory Items Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n try {\r\n this.StatusSubject.next('
Syncing Classes...
');\r\n await this.service.SyncClasses();\r\n this.StatusSubject.next(\r\n '
Syncing Classes Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n //checking sendtoQBO is now handled in stored proc so don't need to check here\r\n //2023-12-10: what stored proc, where? - ef_qbi_employee_get does the check and filters, but we still need to call SendEmployees\r\n //but we don't want to display the messages...\r\n // if (sendtoQBO) {\r\n try {\r\n // this.StatusSubject.next(\r\n // '
Sending Employees...
'\r\n // );\r\n await this.service.SendEmployees();\r\n // this.StatusSubject.next(\r\n // '
Sending Employees Complete...
'\r\n // );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n // }\r\n try {\r\n this.StatusSubject.next('
Syncing Employees...
');\r\n await this.service.SyncEmployees();\r\n this.StatusSubject.next(\r\n '
Syncing Employees Complete...
'\r\n );\r\n } catch (error) {\r\n this.errorProc(error);\r\n }\r\n this.StatusSubject.next(\r\n '
Sync Complete
'\r\n );\r\n this.SyncEnabledSubject.next(true);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.SyncEnabledSubject.next(true);\r\n this.StatusSubject.next('');\r\n }, 0);\r\n\r\n const add = (value: any) => state => state + value;\r\n const clear = () => state => [];\r\n this.AllStatuses = merge(\r\n this.StatusSubject.pipe(map(add)),\r\n this.SyncEnabledSubject.pipe(\r\n filter(x => !x),\r\n map(clear)\r\n )\r\n ).pipe(scan((state, innerFn) => innerFn(state), []));\r\n\r\n this.store\r\n .pipe(select(fromStore.getHasValidTokens))\r\n .subscribe(valid => {\r\n this.validTokens = valid;\r\n if (!valid) {\r\n this.ss.go('main');\r\n }\r\n });\r\n\r\n this.SendEmployeetoQB$ = this.store.pipe(\r\n select(fromSettings.SendEmployeetoQB)\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n }\r\n errorProc = error => {\r\n this.log.error({\r\n type: 'SyncListsComponent:syncLists',\r\n error\r\n });\r\n this.StatusSubject.next(\r\n `
${\r\n error.Message ||\r\n error.message ||\r\n error.error?.ExceptionMessage ||\r\n error.error?.Message\r\n }
`\r\n );\r\n // this.SyncEnabledSubject.next(true);\r\n };\r\n constructor(\r\n private service: QuickbooksService,\r\n private store: Store,\r\n private ss: StateService,\r\n private log: LoggingService\r\n ) {\r\n this.store.dispatch(new fromStore.ValidateTokens());\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'SendEmployeetoQB'\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport { IChargeNumberManagement } from '../../contract-management/IChargeNumberManagement';\r\nimport * as fromCNStoreActions from '../../contract-management/store/charge-number-management.actions';\r\nimport * as fromCNStoreReducer from '../../contract-management/store/charge-number-management.reducer';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IUserGroup } from '../../lookups';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromUser from '../../user-info';\r\n@Component({\r\n selector: 'ef-rate-ceiling-feature',\r\n templateUrl: './rate-ceiling-feature.component.html',\r\n styleUrls: ['./rate-ceiling-feature.component.scss']\r\n})\r\nexport class RateCeilingFeatureComponent implements OnInit {\r\n active = true;\r\n\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n\r\n process$: Observable;\r\n\r\n public rateCeilings$: Observable<\r\n fromDataServices.RateCeiling.RateCeiling[]\r\n >;\r\n public contracts$: Observable;\r\n public chargeNumbers$: Observable;\r\n public costCenters$: Observable;\r\n public userInfo$: Observable;\r\n\r\n rateCeilingDataService: EntityCollectionService;\r\n contractDataService: EntityCollectionService;\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: fromShared.Services.Logging.LoggingService,\r\n private store: Store\r\n ) {\r\n this.rateCeilingDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.RateCeiling.entityName\r\n );\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.contractDataService.getAll();\r\n this.store.dispatch(new fromLookups.LoadUserGroups());\r\n this.rateCeilingDataService.getAll();\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.rateCeilingDataService.clearCache();\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.rateCeilings$ = this.rateCeilingDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n\r\n this.costCenters$ = this.store.pipe(\r\n select(fromLookups.getUserGroupsLookup),\r\n map(x => (x = x.filter(y => y.PrefixedGroupID.includes('C'))))\r\n );\r\n\r\n this.chargeNumbers$ = this.store.pipe(\r\n select(fromCNStoreReducer.selectAll)\r\n // map(chargenumbers => clone(chargenumbers))\r\n );\r\n\r\n this.contracts$ = this.contractDataService.entities$.pipe(\r\n map(x => (x = x.filter(y => y.IsActive === true))),\r\n map(x => clone(x)),\r\n map(x =>\r\n x.sort((a, b) => a.ContractDesc.localeCompare(b.ContractDesc))\r\n )\r\n );\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n\r\n onLoadChargeNumbers($event) {\r\n this.store.dispatch(\r\n fromCNStoreActions.getChargeNumbers({\r\n Contract: {\r\n ContractListID: $event.toString(),\r\n Activeonly: true\r\n }\r\n })\r\n );\r\n }\r\n\r\n onAddRateCeiling($event) {\r\n this.log.verbose({\r\n type: 'RateCeilingFeatureComponent:onAddRateCeiling',\r\n $event\r\n });\r\n this.rateCeilingDataService.getWithQuery($event);\r\n }\r\n\r\n onSaveRateCeiling($event) {\r\n this.rateCeilingDataService.upsert($event);\r\n }\r\n\r\n onDeleteRateCeiling($event) {\r\n this.rateCeilingDataService.delete($event);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { IChargeNumberManagement } from '../../contract-management/IChargeNumberManagement';\r\nimport { Contract } from '../../data-services';\r\nimport { RateCeiling } from '../../data-services/rate-ceiling';\r\nimport { Process, SelectItem, Table } from '../../shared';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IUserInfo } from '../../user-info';\r\nimport * as moment from 'moment';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-rate-ceiling-presenter',\r\n templateUrl: './rate-ceiling-presenter.component.html',\r\n styleUrls: ['./rate-ceiling-presenter.component.scss']\r\n})\r\nexport class RateCeilingPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit\r\n{\r\n @Input() process: Process;\r\n\r\n public editing: RateCeiling = {} as RateCeiling;\r\n clonedRateCeiling: { [i: string]: RateCeiling } = {};\r\n\r\n private RateCeilingSubject = new ReplaySubject>(1);\r\n private _rateceilings: Array;\r\n @Input() set rateCeilings(value: Array) {\r\n if (value && value.length > 0) {\r\n value.sort((a, b) => {\r\n if (a.Contractdesc < b.Contractdesc) {\r\n return -1;\r\n }\r\n if (a.Contractdesc > b.Contractdesc) {\r\n return 1;\r\n }\r\n if (a.Chargenumber > b.Chargenumber) {\r\n return 1;\r\n }\r\n if (a.Chargenumber < b.Chargenumber) {\r\n return -1;\r\n }\r\n });\r\n }\r\n this._rateceilings = value;\r\n this.RateCeilingSubject.next(value);\r\n\r\n this.contractsFilterSelectItem = value.map(x => ({\r\n value: x.Contractlistid,\r\n label: x.Contractdesc\r\n }));\r\n this.contractsFilterSelectItem = this.contractsFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.chargeNumbersFilterSelectItem = value.map(x => ({\r\n value: x.CNListid,\r\n label: x.Chargenumber\r\n }));\r\n this.chargeNumbersFilterSelectItem =\r\n this.chargeNumbersFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.costCentersFilterSelectItem = value.map(x => ({\r\n value: x.Costcenterdesc,\r\n label: x.Costcenterdesc\r\n }));\r\n this.costCentersFilterSelectItem =\r\n this.costCentersFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.startDatesFilterSelectItem = value.map(x => ({\r\n value: x.Startdate,\r\n label: moment(x.Startdate).format('MM/DD/YYYY')\r\n }));\r\n this.startDatesFilterSelectItem =\r\n this.startDatesFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n\r\n this.endDatesFilterSelectItem = value.map(x => ({\r\n value: x.Enddate,\r\n label: moment(x.Enddate).format('MM/DD/YYYY')\r\n }));\r\n this.endDatesFilterSelectItem = this.endDatesFilterSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n get rateCeilings(): Array {\r\n return this._rateceilings;\r\n }\r\n\r\n private ContractsSubject = new ReplaySubject>(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n\r\n this.contractsSelectItem = value.map(x => ({\r\n value: x.ContractListID,\r\n label: x.ContractDesc\r\n }));\r\n this.contractsSelectItem = this.contractsSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n private CNSubject = new ReplaySubject>(1);\r\n private _cn: Array;\r\n @Input() set chargeNumbers(value: Array) {\r\n this._cn = value;\r\n this.CNSubject.next(value);\r\n\r\n this.chargeNumbersSelectItem = value.map(x => ({\r\n value: x.CNListID,\r\n label: x.FullName\r\n }));\r\n this.chargeNumbersSelectItem = this.chargeNumbersSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n get chargeNumbers(): Array {\r\n return this._cn;\r\n }\r\n\r\n private CCSubject = new ReplaySubject>(1);\r\n private _cc: Array;\r\n @Input() set costCenters(value: Array) {\r\n this._cc = value;\r\n this.CCSubject.next(value);\r\n\r\n this.costCentersSelectItem = value.map(x => ({\r\n value: x.GroupID,\r\n label: x.GroupName\r\n }));\r\n this.costCentersSelectItem = this.costCentersSelectItem.filter(\r\n (v, i, a) => a.findIndex(t => t.label === v.label) === i\r\n );\r\n }\r\n get costCenters(): Array {\r\n return this._cc;\r\n }\r\n\r\n @Output() AddRateCeiling = new ReplaySubject(1);\r\n @Output() SaveRateCeiling = new ReplaySubject(1);\r\n @Output() DeleteRateCeiling = new ReplaySubject(1);\r\n @Output() LoadChargeNumbers = new ReplaySubject(1);\r\n\r\n @Input() userInfo: IUserInfo;\r\n\r\n @ViewChild(Table, { static: true }) RateTable: Table;\r\n\r\n active = true;\r\n\r\n addFormGroup: FormGroup;\r\n\r\n contractsSelectItem: SelectItem[] = [];\r\n chargeNumbersSelectItem: SelectItem[] = [];\r\n costCentersSelectItem: SelectItem[] = [];\r\n\r\n contractsFilterSelectItem: SelectItem[] = [];\r\n chargeNumbersFilterSelectItem: SelectItem[] = [];\r\n costCentersFilterSelectItem: SelectItem[] = [];\r\n startDatesFilterSelectItem: SelectItem[] = [];\r\n endDatesFilterSelectItem: SelectItem[] = [];\r\n\r\n selectedContracts: Contract.Contract;\r\n selectedChargeNumbers: IChargeNumberManagement[] = [];\r\n\r\n showFR: boolean;\r\n showMH: boolean;\r\n showM2: boolean;\r\n\r\n moment: any;\r\n\r\n IsDeleteError = false;\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n this.addFormGroup = new FormGroup({\r\n contract: new FormControl(null),\r\n chargenumber: new FormControl(null),\r\n costcenter: new FormControl(null),\r\n startdate: new FormControl(null),\r\n enddate: new FormControl(null),\r\n FR: new FormControl(null),\r\n OH: new FormControl(null),\r\n MH: new FormControl(null),\r\n MH2: new FormControl(null),\r\n GA: new FormControl(null)\r\n });\r\n\r\n this.moment = moment;\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupSubscriptions();\r\n if (this.userInfo) {\r\n this.showFR = this.userInfo.ShowFR;\r\n this.showMH = this.userInfo.ShowMH;\r\n this.showM2 = this.userInfo.ShowM2;\r\n }\r\n }\r\n\r\n setupSubscriptions() {\r\n this.addFormGroup.controls['contract'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedContracts = null;\r\n this.LoadChargeNumbers.next(value);\r\n this.selectedContracts = this.contracts.find(\r\n x => x.ContractListID == value\r\n );\r\n }\r\n });\r\n this.addFormGroup.controls['chargenumber'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.selectedChargeNumbers = [];\r\n value.forEach(el => {\r\n const cn = this.chargeNumbers.find(\r\n x => x.CNListID == el\r\n );\r\n this.selectedChargeNumbers.push(cn);\r\n });\r\n }\r\n });\r\n this.addFormGroup.controls['costcenter'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['startdate'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['enddate'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['FR'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['OH'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['MH'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['MH2'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n this.addFormGroup.controls['GA'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n }\r\n });\r\n }\r\n\r\n onEditInit($event: { data: RateCeiling }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: RateCeiling) {\r\n this.clonedRateCeiling[rowData.Rateceilingid] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: RateCeiling) {\r\n this.SaveRateCeiling.next(rowData);\r\n delete this.clonedRateCeiling[rowData.Rateceilingid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: RateCeiling) {\r\n delete this.clonedRateCeiling[item.Rateceilingid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n addRateCeiling() {\r\n const newRateCeiling = {\r\n ContractList: [this.selectedContracts],\r\n CNList: this.selectedChargeNumbers,\r\n Costcenterid: this.addFormGroup.controls['costcenter'].value,\r\n Startdate: this.addFormGroup.controls['startdate'].value,\r\n Enddate: this.addFormGroup.controls['enddate'].value,\r\n FRR: this.addFormGroup.controls['FR'].value,\r\n OHR: this.addFormGroup.controls['OH'].value,\r\n MHR: this.addFormGroup.controls['MH'].value,\r\n M2R: this.addFormGroup.controls['MH2'].value,\r\n GAR: this.addFormGroup.controls['GA'].value,\r\n Rateceilingid: null\r\n };\r\n this.AddRateCeiling.next(newRateCeiling);\r\n\r\n this.addFormGroup.controls['costcenter'].reset();\r\n this.addFormGroup.controls['startdate'].reset();\r\n this.addFormGroup.controls['enddate'].reset();\r\n this.addFormGroup.controls['FR'].reset();\r\n this.addFormGroup.controls['OH'].reset();\r\n this.addFormGroup.controls['MH'].reset();\r\n this.addFormGroup.controls['MH2'].reset();\r\n this.addFormGroup.controls['GA'].reset();\r\n }\r\n\r\n deleteRateCeiling(data) {\r\n if (data.Ceilinginuse == true) {\r\n alert(\r\n 'The selected rate ceiling period contains processed activity, it cannot be deleted.'\r\n );\r\n } else {\r\n this.DeleteRateCeiling.next(data);\r\n }\r\n }\r\n\r\n filterTable($event, filterType) {\r\n // use this for all table filters\r\n if (filterType == 'contract') {\r\n this.RateTable.filter($event.value, 'Contractlistid', 'in');\r\n } else if (filterType == 'cn') {\r\n this.RateTable.filter($event.value, 'CNListid', 'in');\r\n } else if (filterType == 'cc') {\r\n this.RateTable.filter($event.value, 'Costcenterdesc', 'in');\r\n } else if (filterType == 'startdate') {\r\n this.RateTable.filter($event.value, 'Startdate', 'in');\r\n } else if (filterType == 'enddate') {\r\n this.RateTable.filter($event.value, 'Enddate', 'in');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RateCeilingDataService } from '../data-services/rate-ceiling';\r\nimport { SharedModule } from '../shared';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { RateCeilingRoute } from './rate-ceiling.route';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport { entityName } from '../data-services/rate-ceiling/rate-ceiling.data-service';\r\n\r\n@NgModule({\r\n providers: [RateCeilingDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [RateCeilingRoute]\r\n })\r\n ]\r\n })\r\n export class RateCeilingModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n rateCeilingService: RateCeilingDataService\r\n ) {\r\n entityDataService.registerService(entityName, rateCeilingService);\r\n }\r\n }\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { RateCeilingFeatureComponent } from './rate-ceiling-feature/rate-ceiling-feature.component';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const RateCeilingRoute: Ng2StateDeclaration = {\r\n name: 'rateceiling',\r\n url: '/rateceiling',\r\n data: { requiresAuth: true },\r\n\r\n component: RateCeilingFeatureComponent\r\n};\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { Observable } from 'rxjs';\r\nimport { BudgetWorksheet } from '../../data-services/rate-planning';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { filter, map, take, takeWhile } from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport { select, Store } from '@ngrx/store';\r\nimport * as fromShared from '../../shared';\r\nimport moment from 'moment';\r\nimport * as fromLookups from '../../lookups/store';\r\n\r\n@Component({\r\n selector: 'ef-rate-planning-feature',\r\n templateUrl: './rate-planning-feature.component.html',\r\n styleUrls: ['./rate-planning-feature.component.scss']\r\n})\r\nexport class RatePlanningFeatureComponent implements OnInit {\r\n process$: Observable;\r\n public budgetWorksheet$: Observable;\r\n\r\n ratePlanningDataService: EntityCollectionService;\r\n\r\n fiscalYears$: Observable;\r\n\r\n active: boolean = true;\r\n\r\n constructor(private store: Store, public entityServices: EntityServices) {\r\n this.ratePlanningDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.RatePlanning.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.store.dispatch(\r\n // fromLookups.ScheduledDateActions.clearScheduledDates()\r\n // );\r\n fromLookups.ScheduledDateActions.clearScheduledDates();\r\n this.store.dispatch(\r\n fromLookups.ScheduledDateActions.getScheduledDates({\r\n ShowAll: true\r\n })\r\n );\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ratePlanningDataService.clearCache();\r\n this.active = false;\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.budgetWorksheet$ = this.ratePlanningDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.fiscalYears$ = this.store.pipe(\r\n select(\r\n fromLookups.ScheduledDateSelectors.selectScheduledDateType({\r\n ScheduledDateType: 'FYE'\r\n })\r\n ),\r\n\r\n //filter(dates => !!dates && dates.length > 0),\r\n //take(1),\r\n map(items =>\r\n items.map(item => ({\r\n label: moment(item.ScheduledEndDate).format('L'),\r\n value: moment(item.ScheduledEndDate).format('L')\r\n }))\r\n )\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n this.fiscalYears$\r\n .pipe(takeWhile(() => this.active), take(1))\r\n .subscribe(years => {\r\n this.ratePlanningDataService.clearCache();\r\n this.ratePlanningDataService.getWithQuery({\r\n BudgetEnd: years[0].value,\r\n costcenterid: null,\r\n CalcRates: 1 as any\r\n });\r\n });\r\n }\r\n\r\n onUpdateRatePlanning($event) {\r\n this.ratePlanningDataService.upsert($event);\r\n console.dir($event);\r\n }\r\n\r\n onLoadRatePlanning($event) {\r\n this.ratePlanningDataService.clearCache();\r\n this.ratePlanningDataService.getWithQuery({\r\n BudgetEnd: $event.BudgetEnd,\r\n costcenterid: null,\r\n CalcRates: $event.CalcRates\r\n });\r\n }\r\n\r\n onLoadCalcRates($event) {\r\n //this.ratePlanningDataService.clearCache();\r\n this.ratePlanningDataService.getWithQuery({\r\n BudgetEnd: $event.BudgetEnd,\r\n costcenterid: null,\r\n CalcRates: $event.CalcRates\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { EntityCollectionServiceElementsFactory } from '@ngrx/data';\r\nimport { borderimage } from 'modernizr';\r\nimport moment from 'moment';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { BudgetWorksheet } from '../../data-services/rate-planning';\r\n\r\n@Component({\r\n selector: 'ef-rate-planning-presenter',\r\n templateUrl: './rate-planning-presenter.component.html',\r\n styleUrls: ['./rate-planning-presenter.component.scss']\r\n})\r\nexport class RatePlanningPresenterComponent implements OnInit {\r\n private RatePlanningSubject = new ReplaySubject>(1);\r\n private _rateplanning: Array;\r\n @Input() set ratePlanning(value: Array) {\r\n if (value && value.length > 0) {\r\n this._rateplanning = value;\r\n this.RatePlanningSubject.next(value);\r\n\r\n if (this.isCalcRates == true) {\r\n if (this.isUpdate == false) {\r\n this.disableLoading();\r\n this.isCalcRates = false;\r\n this.budgetWorksheetData = value.filter(\r\n x => x.CostTypeGroup == 'ELM'\r\n );\r\n this.ratesData = value.filter(\r\n x =>\r\n x.CostTypeGroup == 'Rate' ||\r\n x.CostTypeGroup == 'Pool' ||\r\n x.CostTypeGroup == 'Base'\r\n );\r\n this.multipleCC = !this.isSameProp(value, 'CCDesc');\r\n this.recopyClone = true;\r\n this.recopyRatesClone = true;\r\n this.setupForBudgetWorksheet();\r\n this.setupForRates();\r\n }\r\n }\r\n\r\n // this.budgetWorksheetData = value.filter(\r\n // x => x.CostTypeGroup == 'ELM'\r\n // );\r\n // this.ratesData = value.filter(\r\n // x =>\r\n // x.CostTypeGroup == 'Rate' ||\r\n // x.CostTypeGroup == 'Pool' ||\r\n // x.CostTypeGroup == 'Base'\r\n // );\r\n\r\n const set_ccdesc = new Set(\r\n this.budgetWorksheetData.map(item => item.CCDesc)\r\n );\r\n const unique_ccdesc = [...set_ccdesc];\r\n\r\n const set_ct = new Set(\r\n this.budgetWorksheetData.map(item => item.CostType)\r\n );\r\n const unique_ct = [...set_ct];\r\n\r\n this.costTypesSelectItem = unique_ct.map(x => ({\r\n label: x.toString(),\r\n value: x.toString()\r\n }));\r\n\r\n this.costCentersSelectItem = unique_ccdesc.map(x => ({\r\n label: x.toString(),\r\n value: x.toString()\r\n }));\r\n\r\n const set_ratesccdesc = new Set(\r\n this.ratesData.map(item => item.CCDesc)\r\n );\r\n const unique_ratesccdesc = [...set_ratesccdesc];\r\n\r\n const set_ratesct = new Set(\r\n this.ratesData.map(item => item.CostType)\r\n );\r\n const unique_ratesct = [...set_ratesct];\r\n\r\n this.ratesCostTypesSelectItem = unique_ratesct.map(x => ({\r\n label: x.toString(),\r\n value: x.toString()\r\n }));\r\n\r\n this.ratesCostCentersSelectItem = unique_ratesccdesc.map(x => ({\r\n label: x.toString(),\r\n value: x.toString()\r\n }));\r\n\r\n //this.multipleCC = !this.isSameProp(value, 'CCDesc');\r\n\r\n this.budgetYearEnd = moment(\r\n this._rateplanning[0].BudgetYearEnd\r\n ).format('MM/DD/YYYY');\r\n\r\n this.isUpdate = false;\r\n\r\n //this.setupForBudgetWorksheet();\r\n //this.setupForRates();\r\n\r\n this.isFirstLoad = false;\r\n }\r\n }\r\n get ratePlanning(): Array {\r\n return this._rateplanning;\r\n }\r\n\r\n private FYESubject = new ReplaySubject>(1);\r\n private _fye: Array;\r\n @Input() set fyeSelectItem(value: Array) {\r\n if (value && value.length > 0) {\r\n value = value.sort((a, b) => new Date(b.value).getTime() - new Date(a.value).getTime());\r\n this._fye = value;\r\n this.FYESubject.next(value);\r\n\r\n this.selectedFYE = value.find(x => moment(x.value).year() == moment(new Date()).year()).value;\r\n }\r\n }\r\n get fyeSelectItem(): Array {\r\n return this._fye;\r\n }\r\n\r\n budgetWorksheetData: BudgetWorksheet[];\r\n ratesData: BudgetWorksheet[];\r\n\r\n showBudgetColumn: boolean;\r\n showForecastColumn: boolean;\r\n colspan: number;\r\n\r\n budgetYearEnd: string;\r\n\r\n clonedBudgetWorksheet: BudgetWorksheet[];\r\n clonedRates: BudgetWorksheet[];\r\n\r\n @Output() LoadCalcRates = new ReplaySubject(1);\r\n @Output() LoadRatePlanning = new ReplaySubject(1);\r\n @Output() UpdateRatePlanning = new ReplaySubject(1);\r\n\r\n multipleCC: boolean;\r\n\r\n ratesCostCentersSelectItem: SelectItem[] = [];\r\n selectedRatesCCDescFilterValue: any;\r\n ratesCostTypesSelectItem: SelectItem[] = [];\r\n selectedRatesCostTypeFilterValue: any;\r\n\r\n costCentersSelectItem: SelectItem[] = [];\r\n selectedCCDescFilterValue: any;\r\n costTypesSelectItem: SelectItem[] = [];\r\n selectedCostTypeFilterValue: any;\r\n\r\n columnDisplaySelectItem: SelectItem[];\r\n selectedColumnDisplay: any;\r\n\r\n table: HTMLElement;\r\n ratetable: HTMLElement;\r\n\r\n selectedFYE: any;\r\n\r\n recopyClone = true;\r\n recopyRatesClone = true;\r\n rebuildTable = false;\r\n rebuildRatesTable = false;\r\n\r\n loading = false;\r\n\r\n isCalcRates = true;\r\n isUpdate = false;\r\n\r\n isFirstLoad = true;\r\n\r\n constructor() {\r\n this.enableLoading();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.table = document.createElement('table');\r\n this.table.setAttribute('id', 'rateplanningtable');\r\n\r\n this.ratetable = document.createElement('table');\r\n this.table.setAttribute('id', 'ratestable');\r\n\r\n this.selectedColumnDisplay = 1;\r\n this.showBudgetColumn = true;\r\n this.showForecastColumn = false;\r\n this.colspan = 1;\r\n\r\n this.columnDisplaySelectItem = [\r\n {\r\n label: 'Budget & Forecast',\r\n value: 0\r\n },\r\n {\r\n label: 'Budget',\r\n value: 1\r\n },\r\n {\r\n label: 'Forecast',\r\n value: 2\r\n }\r\n ];\r\n }\r\n\r\n setupForRates() {\r\n this.createRatesClonedDataSource(this.ratesData);\r\n }\r\n\r\n createRatesClonedDataSource(dataSource) {\r\n if (this.recopyRatesClone == true) {\r\n this.clonedRates = dataSource;\r\n this.createRateTable(this.clonedRates);\r\n this.recopyRatesClone = false;\r\n } else {\r\n if (this.rebuildRatesTable == true) {\r\n this.createRateTable(this.clonedRates);\r\n this.rebuildRatesTable = false;\r\n }\r\n }\r\n }\r\n\r\n createRateTable(data) {\r\n this.removeRateTableElements();\r\n this.createRateTableFromJSON(data, this, this.ratetable);\r\n }\r\n\r\n setupForBudgetWorksheet() {\r\n this.createClonedDataSource(this.budgetWorksheetData);\r\n }\r\n\r\n createClonedDataSource(dataSource) {\r\n if (this.recopyClone == true) {\r\n this.clonedBudgetWorksheet = dataSource;\r\n this.createTable(this.clonedBudgetWorksheet);\r\n this.recopyClone = false;\r\n } else {\r\n if (this.rebuildTable == true) {\r\n this.createTable(this.clonedBudgetWorksheet);\r\n this.rebuildTable = false;\r\n }\r\n }\r\n }\r\n\r\n createTable(clone) {\r\n this.removeTableElements();\r\n this.createTableFromJSON(clone, this, this.table);\r\n }\r\n\r\n isSameProp(array, prop) {\r\n if (array.length === 0) return true;\r\n let isSame = true;\r\n const firstValue = array[0][prop];\r\n for (let i = 1; i < array.length; i++) {\r\n if (array[i][prop] !== firstValue) {\r\n isSame = false;\r\n break;\r\n }\r\n }\r\n return isSame;\r\n }\r\n\r\n createRateTableFromJSON(array, presenter, table) {\r\n //const table = document.createElement('table'); // the table elements\r\n table.classList.add('p-datatable-table');\r\n table.style.borderSpacing = '.25px';\r\n table.style.borderCollapse = 'separate';\r\n\r\n const rows = array;\r\n\r\n if (rows.length == 0) {\r\n const outerDiv = document.getElementById('rates');\r\n const noDataDiv = document.createElement('div');\r\n noDataDiv.setAttribute('id', 'no-data-div');\r\n noDataDiv.classList.add('no-data');\r\n noDataDiv.textContent = 'No Rates Available';\r\n\r\n outerDiv.appendChild(noDataDiv);\r\n } else {\r\n let index = 0;\r\n while (rows[index].Line == null) {\r\n index++;\r\n }\r\n const col = Object.keys(rows[index]); // the column group names\r\n\r\n // THEAD:\r\n const thead = table.createTHead();\r\n thead.classList.add('p-datatable-thead');\r\n\r\n // TBODY:\r\n const tbody = table.createTBody();\r\n tbody.setAttribute('id', 'tableBody');\r\n tbody.classList.add('p-element', 'p-datatable-tbody');\r\n\r\n // COLUMN GROUP HEADER:\r\n const tr = thead.insertRow(-1); // the col group row\r\n\r\n tr.classList.add('tabulator-header', 'first');\r\n let ccth;\r\n let taskth;\r\n col.forEach(key => {\r\n if (key == 'CostType') {\r\n taskth = document.createElement('th');\r\n taskth.colSpan = 1;\r\n taskth.style.minWidth = '20em';\r\n taskth.style.zIndex = '1001';\r\n taskth.textContent = key;\r\n\r\n taskth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'costtype'\r\n );\r\n\r\n if (this.multipleCC == true) {\r\n taskth.classList.add('frozen-left-col-2');\r\n } else {\r\n taskth.classList.add('frozen-left');\r\n }\r\n\r\n tr.appendChild(taskth);\r\n } else if (key == 'Line') {\r\n rows[index][key].forEach(line => {\r\n const th = document.createElement('th');\r\n th.colSpan = this.colspan;\r\n th.textContent = line.Month;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'line'\r\n );\r\n\r\n tr.appendChild(th);\r\n });\r\n } else if (key == 'CCDesc' && this.multipleCC == true) {\r\n ccth = document.createElement('th');\r\n ccth.colSpan = 1;\r\n ccth.style.minWidth = '20em';\r\n ccth.style.zIndex = '1001';\r\n ccth.textContent = 'Cost Center';\r\n\r\n ccth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'frozen-left',\r\n 'ccdesc'\r\n );\r\n\r\n // const resizeicon = document.createElement('i');\r\n // resizeicon.setAttribute('class', 'pi pi-arrows-h resize-i');\r\n // resizeicon.addEventListener('click', (e) => {\r\n // ccth.classList.toggle('desc-column-resize');\r\n // taskth.style.cssText = `left: 30em !important`;\r\n // });\r\n //ccth.appendChild(resizeicon);\r\n\r\n tr.appendChild(ccth);\r\n }\r\n });\r\n\r\n //HEADER:\r\n const tr2 = thead.insertRow(-1); // the header row\r\n\r\n tr2.classList.add('second');\r\n\r\n col.forEach(key => {\r\n if (key == 'Line') {\r\n const col2 = rows[index][key]; // header names\r\n col2.forEach(ele => {\r\n const headerArr = Object.keys(ele);\r\n headerArr.forEach(key2 => {\r\n const th = document.createElement('th');\r\n\r\n if (key2 == 'Budget' || key2 == 'Forecast') {\r\n if (this.selectedColumnDisplay == 0) {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n } else if (this.selectedColumnDisplay == 1) {\r\n if (key2 == 'Budget') {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n }\r\n } else if (this.selectedColumnDisplay == 2) {\r\n if (key2 == 'Forecast') {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n }\r\n } else {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n }\r\n }\r\n });\r\n });\r\n } else if (key == 'CostType') {\r\n const ctth = document.createElement('th');\r\n ctth.style.minWidth = '20em';\r\n ctth.style.paddingTop = '0';\r\n ctth.style.paddingBottom = '0';\r\n ctth.style.zIndex = '1001';\r\n ctth.textContent = '';\r\n\r\n const ct_dd = document.getElementById('rate_ct_dd');\r\n ct_dd.style.maxWidth = '100%';\r\n ct_dd.style.minWidth = '100%';\r\n ct_dd.style.lineHeight = '0px';\r\n ct_dd.style.maxHeight = '2em';\r\n\r\n ctth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell'\r\n );\r\n\r\n if (this.multipleCC == true) {\r\n ctth.classList.add('frozen-left-col-2');\r\n } else {\r\n ctth.classList.add('frozen-left');\r\n }\r\n ctth.appendChild(ct_dd);\r\n tr2.appendChild(ctth);\r\n } else if (key == 'CCDesc' && this.multipleCC == true) {\r\n const ccth = document.createElement('th');\r\n ccth.style.minWidth = '20em';\r\n ccth.style.paddingTop = '0';\r\n ccth.style.paddingBottom = '0';\r\n ccth.style.zIndex = '1001';\r\n ccth.textContent = '';\r\n\r\n const cc_dd = document.getElementById('rate_cc_dd');\r\n cc_dd.style.maxWidth = '100%';\r\n cc_dd.style.minWidth = '100%';\r\n cc_dd.style.lineHeight = '0px';\r\n cc_dd.style.maxHeight = '2em';\r\n\r\n ccth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'frozen-left'\r\n );\r\n\r\n ccth.appendChild(cc_dd);\r\n tr2.appendChild(ccth);\r\n }\r\n });\r\n\r\n // ROWS:\r\n array.forEach(obj => {\r\n const tr = tbody.insertRow(-1);\r\n tr.classList.add('p-element', 'tabulator-row');\r\n\r\n col.forEach(key => {\r\n if (key == 'Line') {\r\n if (\r\n Object.keys(obj).findIndex(x => x == 'Line') != -1\r\n ) {\r\n obj[key].forEach(x => {\r\n if (this.selectedColumnDisplay == 0) {\r\n const budgetCell = tr.insertCell(-1);\r\n budgetCell.classList.add(\r\n 'budget-cell',\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n const forecastCell = tr.insertCell(-1);\r\n forecastCell.classList.add(\r\n 'forecast-cell',\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n\r\n budgetCell.textContent = x.Budget;\r\n forecastCell.textContent = x.Forecast;\r\n } else if (this.selectedColumnDisplay == 1) {\r\n const budgetCell = tr.insertCell(-1);\r\n budgetCell.classList.add(\r\n 'budget-cell',\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n\r\n budgetCell.textContent = x.Budget;\r\n } else if (this.selectedColumnDisplay == 2) {\r\n const forecastCell = tr.insertCell(-1);\r\n forecastCell.classList.add(\r\n 'forecast-cell',\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n\r\n forecastCell.textContent = x.Forecast;\r\n }\r\n });\r\n }\r\n } else if (key == 'CostType') {\r\n const taskCell = tr.insertCell(-1);\r\n taskCell.textContent = obj[key];\r\n taskCell.style.minWidth = '20em';\r\n taskCell.classList.add('p-element', 'p-datatable-cell');\r\n if (this.multipleCC == true) {\r\n taskCell.classList.add('frozen-left-col-2');\r\n } else {\r\n taskCell.classList.add('frozen-left');\r\n }\r\n } else if (key == 'CCDesc' && this.multipleCC == true) {\r\n const ccCell = tr.insertCell(-1);\r\n ccCell.textContent = obj[key];\r\n ccCell.style.minWidth = '20em';\r\n ccCell.classList.add(\r\n 'p-element',\r\n 'p-datatable-cell',\r\n 'frozen-left'\r\n );\r\n }\r\n });\r\n });\r\n\r\n const outerDiv = document.getElementById('rates');\r\n outerDiv.classList.add(\r\n 'p-datatable',\r\n 'p-component',\r\n 'p-datatable-resizable',\r\n //'p-datatable-scrollable',\r\n //'p-datatable-scrollable-both',\r\n 'p-datatable-responsive-stack'\r\n );\r\n\r\n if (document.getElementById('no-data-div') != null) {\r\n outerDiv.removeChild(document.getElementById('no-data-div'));\r\n }\r\n\r\n const divContainer = document.createElement('div');\r\n divContainer.setAttribute('id', 'ratesDivContainer');\r\n divContainer.innerHTML = '';\r\n divContainer.style.overflowX = 'scroll';\r\n divContainer.style.overflowY = 'scroll';\r\n divContainer.style.maxHeight = '33vh';\r\n divContainer.classList.add('p-datatable-wrapper');\r\n divContainer.appendChild(table);\r\n\r\n outerDiv.appendChild(divContainer);\r\n }\r\n }\r\n\r\n createTableFromJSON(array, presenter, table) {\r\n //const table = document.createElement('table'); // the table elements\r\n table.classList.add('p-datatable-table');\r\n table.style.borderSpacing = '.25px';\r\n table.style.borderCollapse = 'separate';\r\n\r\n const rows = array;\r\n\r\n const col = Object.keys(rows[0]); // the column group names\r\n\r\n // THEAD:\r\n const thead = table.createTHead();\r\n thead.classList.add('p-datatable-thead');\r\n\r\n // TBODY:\r\n const tbody = table.createTBody();\r\n tbody.setAttribute('id', 'tableBody');\r\n tbody.classList.add('p-element', 'p-datatable-tbody');\r\n\r\n table.addEventListener('dblclick', e => {\r\n if (e.target.tagName === 'TH') {\r\n if (e.target.classList.contains('line')) {\r\n e.target.classList.toggle('line-column-resize');\r\n } else {\r\n e.target.classList.toggle('desc-column-resize');\r\n }\r\n }\r\n });\r\n\r\n // COLUMN GROUP HEADER:\r\n const tr = thead.insertRow(-1); // the col group row\r\n\r\n tr.classList.add('tabulator-header', 'first');\r\n let ccth;\r\n let taskth;\r\n col.forEach(key => {\r\n if (key == 'CostType') {\r\n taskth = document.createElement('th');\r\n taskth.colSpan = 1;\r\n taskth.style.minWidth = '20em';\r\n taskth.style.zIndex = '1001';\r\n taskth.textContent = key;\r\n\r\n taskth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'costtype'\r\n );\r\n\r\n if (this.multipleCC == true) {\r\n taskth.classList.add('frozen-left-col-2');\r\n } else {\r\n taskth.classList.add('frozen-left');\r\n }\r\n\r\n tr.appendChild(taskth);\r\n } else if (key == 'Line') {\r\n rows[0][key].forEach(line => {\r\n const th = document.createElement('th');\r\n th.colSpan = this.colspan;\r\n th.textContent = line.Month;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'line'\r\n );\r\n\r\n tr.appendChild(th);\r\n });\r\n } else if (key == 'CCDesc' && this.multipleCC == true) {\r\n ccth = document.createElement('th');\r\n ccth.colSpan = 1;\r\n ccth.style.minWidth = '20em';\r\n ccth.style.zIndex = '1001';\r\n ccth.textContent = 'Cost Center';\r\n\r\n ccth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'frozen-left',\r\n 'ccdesc'\r\n );\r\n\r\n // const resizeicon = document.createElement('i');\r\n // resizeicon.setAttribute('class', 'pi pi-arrows-h resize-i');\r\n // resizeicon.addEventListener('click', (e) => {\r\n // ccth.classList.toggle('desc-column-resize');\r\n // taskth.style.cssText = `left: 30em !important`;\r\n // });\r\n //ccth.appendChild(resizeicon);\r\n\r\n tr.appendChild(ccth);\r\n }\r\n });\r\n\r\n //HEADER:\r\n const tr2 = thead.insertRow(-1); // the header row\r\n\r\n tr2.classList.add('second');\r\n\r\n col.forEach(key => {\r\n if (key == 'Line') {\r\n const col2 = rows[0][key]; // header names\r\n col2.forEach(ele => {\r\n const headerArr = Object.keys(ele);\r\n headerArr.forEach(key2 => {\r\n const th = document.createElement('th');\r\n\r\n if (key2 == 'Budget' || key2 == 'Forecast') {\r\n if (this.selectedColumnDisplay == 0) {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n } else if (this.selectedColumnDisplay == 1) {\r\n if (key2 == 'Budget') {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n }\r\n } else if (this.selectedColumnDisplay == 2) {\r\n if (key2 == 'Forecast') {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n }\r\n } else {\r\n th.textContent = key2;\r\n th.classList.add(\r\n 'p-element',\r\n 'tabulator-header-filter',\r\n 'p-header-cell'\r\n );\r\n\r\n tr2.appendChild(th);\r\n }\r\n }\r\n });\r\n });\r\n } else if (key == 'CostType') {\r\n const ctth = document.createElement('th');\r\n ctth.style.minWidth = '20em';\r\n ctth.style.paddingTop = '0';\r\n ctth.style.paddingBottom = '0';\r\n ctth.style.zIndex = '1001';\r\n ctth.textContent = '';\r\n\r\n const ct_dd = document.getElementById('ct_dd');\r\n ct_dd.style.maxWidth = '100%';\r\n ct_dd.style.minWidth = '100%';\r\n ct_dd.style.lineHeight = '0px';\r\n ct_dd.style.maxHeight = '2em';\r\n\r\n ctth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell'\r\n );\r\n\r\n if (this.multipleCC == true) {\r\n ctth.classList.add('frozen-left-col-2');\r\n } else {\r\n ctth.classList.add('frozen-left');\r\n }\r\n ctth.appendChild(ct_dd);\r\n tr2.appendChild(ctth);\r\n } else if (key == 'CCDesc' && this.multipleCC == true) {\r\n const ccth = document.createElement('th');\r\n ccth.style.minWidth = '20em';\r\n ccth.style.paddingTop = '0';\r\n ccth.style.paddingBottom = '0';\r\n ccth.style.zIndex = '1001';\r\n ccth.textContent = '';\r\n\r\n const cc_dd = document.getElementById('cc_dd');\r\n cc_dd.style.maxWidth = '100%';\r\n cc_dd.style.minWidth = '100%';\r\n cc_dd.style.lineHeight = '0px';\r\n cc_dd.style.maxHeight = '2em';\r\n\r\n ccth.classList.add(\r\n 'p-element',\r\n 'tabulator-colgroup-header',\r\n 'p-header-cell',\r\n 'frozen-left'\r\n );\r\n\r\n ccth.appendChild(cc_dd);\r\n tr2.appendChild(ccth);\r\n }\r\n });\r\n\r\n // ROWS:\r\n array.forEach(obj => {\r\n const tr = tbody.insertRow(-1);\r\n tr.classList.add('p-element', 'tabulator-row');\r\n\r\n col.forEach(key => {\r\n if (key == 'Line') {\r\n if (Object.keys(obj).findIndex(x => x == 'Line') != -1) {\r\n obj[key].forEach(x => {\r\n if (this.selectedColumnDisplay == 0) {\r\n const budgetCell = tr.insertCell(-1);\r\n budgetCell.classList.add('budget-cell');\r\n const forecastCell = tr.insertCell(-1);\r\n forecastCell.classList.add('forecast-cell');\r\n\r\n const input_budget =\r\n document.createElement('input');\r\n input_budget.setAttribute('type', 'text');\r\n input_budget.setAttribute(\r\n 'value',\r\n x.Budget == null ? '' : x.Budget\r\n );\r\n input_budget.setAttribute('pInputText', '');\r\n input_budget.classList.add(\r\n 'p-inputtext',\r\n 'p-component',\r\n 'p-element',\r\n x.Month\r\n );\r\n input_budget.style.maxWidth = '100%';\r\n input_budget.addEventListener(\r\n 'focusout',\r\n event => {\r\n this.updateRatePlanning(\r\n event,\r\n obj,\r\n key,\r\n 'Budget'\r\n );\r\n }\r\n );\r\n budgetCell.classList.add(\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n budgetCell.appendChild(input_budget);\r\n\r\n const input_forecast =\r\n document.createElement('input');\r\n input_forecast.setAttribute('type', 'text');\r\n input_forecast.setAttribute(\r\n 'value',\r\n x.Forecast == null ? '' : x.Forecast\r\n );\r\n input_forecast.setAttribute('pInputText', '');\r\n input_forecast.classList.add(\r\n 'p-inputtext',\r\n 'p-component',\r\n 'p-element',\r\n x.Month\r\n );\r\n input_forecast.style.maxWidth = '100%';\r\n input_forecast.addEventListener(\r\n 'focusout',\r\n event => {\r\n this.updateRatePlanning(\r\n event,\r\n obj,\r\n key,\r\n 'Forecast'\r\n );\r\n }\r\n );\r\n\r\n forecastCell.classList.add(\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n forecastCell.appendChild(input_forecast);\r\n } else if (this.selectedColumnDisplay == 1) {\r\n const budgetCell = tr.insertCell(-1);\r\n budgetCell.classList.add('budget-cell');\r\n\r\n const input_budget =\r\n document.createElement('input');\r\n input_budget.setAttribute('type', 'text');\r\n input_budget.setAttribute(\r\n 'value',\r\n x.Budget == null ? '' : x.Budget\r\n );\r\n input_budget.setAttribute('pInputText', '');\r\n input_budget.classList.add(\r\n 'p-inputtext',\r\n 'p-component',\r\n 'p-element',\r\n x.Month\r\n );\r\n input_budget.style.maxWidth = '100%';\r\n input_budget.addEventListener(\r\n 'focusout',\r\n event => {\r\n this.updateRatePlanning(\r\n event,\r\n obj,\r\n key,\r\n 'Budget'\r\n );\r\n }\r\n );\r\n budgetCell.classList.add(\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n budgetCell.appendChild(input_budget);\r\n } else if (this.selectedColumnDisplay == 2) {\r\n const forecastCell = tr.insertCell(-1);\r\n forecastCell.classList.add('forecast-cell');\r\n\r\n const input_forecast =\r\n document.createElement('input');\r\n input_forecast.setAttribute('type', 'text');\r\n input_forecast.setAttribute(\r\n 'value',\r\n x.Forecast == null ? '' : x.Forecast\r\n );\r\n input_forecast.setAttribute('pInputText', '');\r\n input_forecast.classList.add(\r\n 'p-inputtext',\r\n 'p-component',\r\n 'p-element',\r\n x.Month\r\n );\r\n input_forecast.style.maxWidth = '100%';\r\n input_forecast.addEventListener(\r\n 'focusout',\r\n event => {\r\n this.updateRatePlanning(\r\n event,\r\n obj,\r\n key,\r\n 'Forecast'\r\n );\r\n }\r\n );\r\n\r\n forecastCell.classList.add(\r\n 'p-element',\r\n 'p-datatable-cell'\r\n );\r\n forecastCell.appendChild(input_forecast);\r\n }\r\n });\r\n }\r\n } else if (key == 'CostType') {\r\n const taskCell = tr.insertCell(-1);\r\n taskCell.textContent = obj[key];\r\n taskCell.style.minWidth = '20em';\r\n taskCell.classList.add('p-element', 'p-datatable-cell');\r\n if (this.multipleCC == true) {\r\n taskCell.classList.add('frozen-left-col-2');\r\n } else {\r\n taskCell.classList.add('frozen-left');\r\n }\r\n } else if (key == 'CCDesc' && this.multipleCC == true) {\r\n const ccCell = tr.insertCell(-1);\r\n ccCell.textContent = obj[key];\r\n ccCell.style.minWidth = '20em';\r\n ccCell.classList.add(\r\n 'p-element',\r\n 'p-datatable-cell',\r\n 'frozen-left'\r\n );\r\n }\r\n });\r\n });\r\n\r\n const outerDiv = document.getElementById('rate-planning');\r\n outerDiv.classList.add(\r\n 'p-datatable',\r\n 'p-component',\r\n 'p-datatable-resizable',\r\n //'p-datatable-scrollable',\r\n //'p-datatable-scrollable-both',\r\n 'p-datatable-responsive-stack'\r\n );\r\n\r\n const divContainer = document.createElement('div');\r\n divContainer.setAttribute('id', 'divContainer');\r\n divContainer.innerHTML = '';\r\n divContainer.style.overflowX = 'scroll';\r\n divContainer.style.overflowY = 'scroll';\r\n divContainer.style.maxHeight = '33vh';\r\n divContainer.classList.add('p-datatable-wrapper');\r\n divContainer.appendChild(table);\r\n\r\n outerDiv.appendChild(divContainer);\r\n }\r\n\r\n removeTableElements() {\r\n if (document.getElementById('rate-planning').firstChild != null) {\r\n let childrenToKeep;\r\n if (this.multipleCC == true) {\r\n childrenToKeep = [\r\n document.getElementById('cc_dd'),\r\n document.getElementById('ct_dd'),\r\n document.getElementById('rate-planning')\r\n ];\r\n } else {\r\n childrenToKeep = [\r\n document.getElementById('ct_dd'),\r\n document.getElementById('rate-planning')\r\n ];\r\n }\r\n const outerDiv = document.getElementById('rate-planning');\r\n outerDiv.removeChild(outerDiv.firstChild);\r\n while (this.table.firstChild) {\r\n this.table.removeChild(this.table.firstChild);\r\n }\r\n const tab = document.getElementById('bwtab');\r\n if (this.multipleCC == true) {\r\n tab.appendChild(childrenToKeep[0]);\r\n tab.appendChild(childrenToKeep[1]);\r\n } else {\r\n tab.appendChild(childrenToKeep[0]);\r\n }\r\n }\r\n }\r\n\r\n removeRateTableElements() {\r\n if (document.getElementById('rates').firstChild != null) {\r\n let childrenToKeep;\r\n if (this.multipleCC == true) {\r\n childrenToKeep = [\r\n document.getElementById('rate_cc_dd'),\r\n document.getElementById('rate_ct_dd'),\r\n document.getElementById('rates')\r\n ];\r\n } else {\r\n childrenToKeep = [\r\n document.getElementById('rate_ct_dd'),\r\n document.getElementById('rates')\r\n ];\r\n }\r\n const outerDiv = document.getElementById('rates');\r\n outerDiv.removeChild(outerDiv.firstChild);\r\n while (this.ratetable.firstChild) {\r\n this.ratetable.removeChild(this.ratetable.firstChild);\r\n }\r\n const tab = document.getElementById('ratestab');\r\n if (this.multipleCC == true) {\r\n tab.appendChild(childrenToKeep[0]);\r\n tab.appendChild(childrenToKeep[1]);\r\n } else {\r\n tab.appendChild(childrenToKeep[0]);\r\n }\r\n }\r\n }\r\n\r\n filterTable($event, prop) {\r\n this.recopyClone = false;\r\n this.rebuildTable = true;\r\n if (prop == 'CostType') {\r\n this.selectedCCDescFilterValue = null;\r\n } else {\r\n this.selectedCostTypeFilterValue = null;\r\n }\r\n if ($event.value.length > 0) {\r\n this.clonedBudgetWorksheet = this.budgetWorksheetData.filter(x =>\r\n $event.value.includes(x[prop])\r\n );\r\n } else {\r\n this.clonedBudgetWorksheet = this.budgetWorksheetData;\r\n }\r\n this.setupForBudgetWorksheet();\r\n //console.dir($event);\r\n }\r\n\r\n filterRatesTable($event, prop) {\r\n this.recopyRatesClone = false;\r\n this.rebuildRatesTable = true;\r\n\r\n if (prop == 'CostType') {\r\n this.selectedRatesCCDescFilterValue = null;\r\n } else {\r\n this.selectedRatesCostTypeFilterValue = null;\r\n }\r\n if ($event.value.length > 0) {\r\n this.clonedRates = this.ratesData.filter(x =>\r\n $event.value.includes(x[prop])\r\n );\r\n } else {\r\n this.clonedRates = this.ratesData;\r\n }\r\n this.setupForRates();\r\n //console.dir($event);\r\n }\r\n\r\n updateRatePlanning(event, data, key, innerKey) {\r\n if (event.currentTarget.value != '') {\r\n this.isUpdate = true;\r\n const index = this.clonedBudgetWorksheet.findIndex(\r\n x => x.CostType == data['CostType'] && x.CCID == data['CCID']\r\n );\r\n const monthIndex = data[key].findIndex(\r\n ele => ele.Month == event.currentTarget.classList[3]\r\n );\r\n if (innerKey == 'Budget') {\r\n this.clonedBudgetWorksheet[index][key][monthIndex][innerKey] =\r\n event.currentTarget.value;\r\n } else {\r\n this.clonedBudgetWorksheet[index][key][monthIndex][innerKey] =\r\n this.clonedBudgetWorksheet[index][key][monthIndex][\r\n innerKey\r\n ] == null\r\n ? null\r\n : event.currentTarget.value;\r\n }\r\n\r\n const cell = {\r\n CCID: this.clonedBudgetWorksheet[index].CCID,\r\n BudgetYearEnd: this.clonedBudgetWorksheet[index].BudgetYearEnd,\r\n CostType: this.clonedBudgetWorksheet[index].CostType,\r\n Month: this.clonedBudgetWorksheet[index][key][monthIndex].Month,\r\n Budget: this.clonedBudgetWorksheet[index][key][monthIndex]\r\n .Budget,\r\n Forecast:\r\n this.clonedBudgetWorksheet[index][key][monthIndex].Forecast\r\n };\r\n this.UpdateRatePlanning.next(cell);\r\n } else {\r\n if (event.currentTarget.defaultValue != '') {\r\n this.isUpdate = true;\r\n const index = this.clonedBudgetWorksheet.findIndex(\r\n x => x.CostType == data['CostType']\r\n );\r\n const monthIndex = data[key].findIndex(\r\n ele => ele.Month == event.currentTarget.classList[3]\r\n );\r\n if (innerKey == 'Budget') {\r\n this.clonedBudgetWorksheet[index][key][monthIndex][\r\n innerKey\r\n ] = event.currentTarget.value;\r\n } else {\r\n this.clonedBudgetWorksheet[index][key][monthIndex][\r\n innerKey\r\n ] =\r\n this.clonedBudgetWorksheet[index][key][monthIndex][\r\n innerKey\r\n ] == null\r\n ? null\r\n : event.currentTarget.value;\r\n }\r\n\r\n const cell = {\r\n CCID: this.clonedBudgetWorksheet[index].CCID,\r\n BudgetYearEnd:\r\n this.clonedBudgetWorksheet[index].BudgetYearEnd,\r\n CostType: this.clonedBudgetWorksheet[index].CostType,\r\n Month: this.clonedBudgetWorksheet[index][key][monthIndex]\r\n .Month,\r\n Budget: this.clonedBudgetWorksheet[index][key][monthIndex]\r\n .Budget,\r\n Forecast:\r\n this.clonedBudgetWorksheet[index][key][monthIndex]\r\n .Forecast\r\n };\r\n this.UpdateRatePlanning.next(cell);\r\n }\r\n }\r\n }\r\n\r\n columnDisplayChanged(event) {\r\n this.recopyClone = false;\r\n this.recopyRatesClone = false;\r\n this.rebuildTable = true;\r\n this.rebuildRatesTable = true;\r\n\r\n if (this.selectedColumnDisplay == 0) {\r\n this.showBudgetColumn = true;\r\n this.showForecastColumn = true;\r\n this.colspan = 2;\r\n } else if (this.selectedColumnDisplay == 1) {\r\n this.showBudgetColumn = true;\r\n this.showForecastColumn = false;\r\n this.colspan = 1;\r\n } else if (this.selectedColumnDisplay == 2) {\r\n this.showBudgetColumn = false;\r\n this.showForecastColumn = true;\r\n this.colspan = 1;\r\n }\r\n\r\n this.setupForBudgetWorksheet();\r\n this.setupForRates();\r\n }\r\n\r\n fyeChanged($event) {\r\n this.enableLoading();\r\n this.recopyClone = true;\r\n this.recopyRatesClone = true;\r\n this.isCalcRates = true;\r\n this.LoadRatePlanning.next({ BudgetEnd: $event.value, CalcRates: 1 });\r\n }\r\n\r\n calcRates() {\r\n this.enableLoading();\r\n this.recopyClone = true;\r\n this.recopyRatesClone = true;\r\n this.isCalcRates = true;\r\n this.LoadCalcRates.next({\r\n BudgetEnd: this.selectedFYE,\r\n CalcRates: 1\r\n });\r\n }\r\n\r\n enableLoading() {\r\n this.loading = true;\r\n }\r\n\r\n disableLoading() {\r\n this.loading = false;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared';\r\nimport { RatePlanningDataService } from '../data-services/rate-planning';\r\nimport { RatePlanningRoute } from '../indirect-rate/indirect-rate.route';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n providers: [RatePlanningDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [RatePlanningRoute]\r\n })\r\n ]\r\n})\r\nexport class RatePlanningModule {}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { RecalculateContract } from '../../data-services/recalculate-transactions/recalculate-contracts/recalculate-contracts.model';\r\nimport { RecalculateSchedule } from '../../data-services/recalculate-transactions/recalculate-schedules/recalculate-schedules.model';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-contracts-presenter',\r\n templateUrl: './contracts-presenter.component.html',\r\n styleUrls: ['./contracts-presenter.component.scss']\r\n})\r\nexport class ContractsPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit\r\n{\r\n private ContractsSubject = new ReplaySubject>(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n this.log.verbose(value);\r\n if (value && value.length > 0) {\r\n this.periodString = `CONTRACTS SCHEDULED or WITH ACTIVITY -- ${moment(\r\n value[0].PeriodStartDate\r\n ).format('MM/DD/YYYY')} - ${moment(value[0].PeriodEndDate).format(\r\n 'MM/DD/YYYY'\r\n )}`;\r\n this.dateText = `${moment(value[0].PeriodStartDate).format(\r\n 'MM/DD/YYYY'\r\n )} - ${moment(value[0].PeriodEndDate).format('MM/DD/YYYY')}`;\r\n } else {\r\n this.periodString = `CONTRACTS SCHEDULED`;\r\n }\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n private SchedulesSubject = new ReplaySubject>(1);\r\n private _schedules: Array;\r\n @Input() set schedules(value: Array) {\r\n this._schedules = value;\r\n this.SchedulesSubject.next(value);\r\n if (this._schedules.length > 0) {\r\n if (this._schedules[0].Timer == true) {\r\n } else {\r\n // check if a schedule is checked and if so enable step2 if not leave step 2 disabled\r\n // this.EnableStep2.next();\r\n if (this.selectedContracts.length > 0) {\r\n this.StopAnimation.next(null);\r\n const button = document.getElementById('applyButton');\r\n button.classList.remove('blinking');\r\n this.selectedContracts.forEach(contract => {\r\n this.ApplyInvoiceChanges.next({\r\n PeriodEndDate: contract.PeriodEndDate,\r\n ContractSelected: contract.ContractSelected,\r\n ContractListID: contract.ContractListID,\r\n CNListID: contract.CNListID,\r\n FPInvoiceAmount: contract.FPInvoiceAmount\r\n });\r\n });\r\n setTimeout(() => {\r\n this.GetSchedules.next({\r\n FyStartDate: null,\r\n FYEndDate: null\r\n });\r\n }, 1500);\r\n\r\n this.selectedContracts = [];\r\n }\r\n }\r\n }\r\n }\r\n get schedules(): Array {\r\n return this._schedules;\r\n }\r\n\r\n @Input() loading: boolean;\r\n\r\n @Input() dialogAction$: Observable;\r\n\r\n @Input() initialContracts: RecalculateContract[];\r\n selectedContracts: RecalculateContract[] = [];\r\n\r\n @Output() ApplyInvoiceChanges = new ReplaySubject(1);\r\n\r\n @Output() GetContracts = new ReplaySubject(1);\r\n\r\n @Output() StopAnimation = new ReplaySubject(1);\r\n\r\n @Output() DisableStep2 = new ReplaySubject(1);\r\n\r\n @Output() EnableStep2 = new ReplaySubject(1);\r\n\r\n @Output() GetSchedules = new ReplaySubject(1);\r\n\r\n public currencyFormatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n });\r\n\r\n active = true;\r\n\r\n periodString: string;\r\n buttonText = 'Apply Changes';\r\n dateText = '';\r\n\r\n dataBeforeUpdate: RecalculateContract;\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n setupSubscriptions() {\r\n if (this.dialogAction$) {\r\n this.dialogAction$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(x => {\r\n if (x && x == 'apply') {\r\n this.onApplyInvoiceChanges();\r\n } else if (x && x == 'discard') {\r\n this.onDiscardInvoiceChanges();\r\n }\r\n });\r\n }\r\n }\r\n\r\n onDialogAction($event) {\r\n if ($event && $event == 'apply') {\r\n this.onApplyInvoiceChanges();\r\n } else if ($event && $event == 'discard') {\r\n this.onDiscardInvoiceChanges();\r\n }\r\n }\r\n\r\n onCheckboxChange($event, rowData) {\r\n const index = this.contracts.findIndex(\r\n x => x.ContractListID == rowData.ContractListID\r\n );\r\n this.contracts[index] = rowData;\r\n const button = document.getElementById('applyButton');\r\n this.StopAnimation.next(button);\r\n const oldData = this.initialContracts.find(\r\n x => x.ContractDesc == rowData.ContractDesc\r\n );\r\n if ($event.checked != oldData.ContractSelected) {\r\n this.selectedContracts.push(rowData);\r\n button.classList.add('blinking');\r\n // this.DisableStep2.next();\r\n } else {\r\n if (\r\n this.selectedContracts.findIndex(\r\n x => x.ContractListID == rowData.ContractListID\r\n ) != -1\r\n ) {\r\n this.selectedContracts.splice(\r\n this.selectedContracts.findIndex(\r\n x => x.ContractListID == rowData.ContractListID\r\n ),\r\n 1\r\n );\r\n this.StopAnimation.next(null);\r\n }\r\n\r\n if (this.selectedContracts.length <= 0) {\r\n button.classList.remove('blinking');\r\n // this.EnableStep2.next();\r\n }\r\n }\r\n }\r\n\r\n onEditInit($event) {\r\n // this.dataBeforeUpdate = this.contracts.find(x => x.ContractDesc === $event.data.ContractDesc);\r\n }\r\n\r\n onEditComplete($event) {\r\n const button = document.getElementById('applyButton');\r\n this.StopAnimation.next(button);\r\n // this.DisableStep2.next();\r\n button.classList.remove('blinking');\r\n button.classList.add('blinking');\r\n const index = this.contracts.findIndex(\r\n x => x.ContractListID == $event.data.ContractListID\r\n );\r\n this.selectedContracts.push($event.data);\r\n }\r\n\r\n onDiscardInvoiceChanges() {\r\n this.StopAnimation.next(null);\r\n this.selectedContracts = [];\r\n const button = document.getElementById('applyButton');\r\n button.classList.remove('blinking');\r\n this.GetContracts.next({\r\n PeriodStartDate: this.contracts[0].PeriodStartDate,\r\n PeriodEndDate: this.contracts[0].PeriodEndDate\r\n });\r\n }\r\n\r\n onApplyInvoiceChanges() {\r\n this.GetSchedules.next({\r\n FyStartDate: null,\r\n FYEndDate: null\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { catchError, filter, map, take, takeWhile } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromUser from '../../user-info';\r\nimport * as fromSettings from '../../company-setting/store';\r\nimport * as fromQBO from '../../quickbooks/store';\r\nimport { QuickbooksService } from '../../quickbooks/quickbooks.services';\r\nimport { handleServiceError } from '../../shared/errors-sidenav';\r\n@Component({\r\n selector: 'ef-recalculate-transactions-feature',\r\n templateUrl: './recalculate-transactions-feature.component.html',\r\n styleUrls: ['./recalculate-transactions-feature.component.scss']\r\n})\r\nexport class RecalculateTransactionsFeatureComponent\r\n implements OnInit, OnDestroy\r\n{\r\n process$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n\r\n recalculateContractsDataService: EntityCollectionService;\r\n recalculateSchedulesDataService: EntityCollectionService;\r\n recalculateSettingsDataService: EntityCollectionService;\r\n private jobTimerDataService: EntityCollectionService;\r\n\r\n public schedules$: Observable<\r\n fromDataServices.RecalculateSchedules.RecalculateSchedule[]\r\n >;\r\n public schedules: fromDataServices.RecalculateSchedules.RecalculateSchedule[];\r\n public contracts$: Observable<\r\n fromDataServices.RecalculateContracts.RecalculateContract[]\r\n >;\r\n public initialContracts$: Observable<\r\n fromDataServices.RecalculateContracts.RecalculateContract[]\r\n >;\r\n public isQBOEnabled$: Observable;\r\n public hasValidTokens$: Observable;\r\n public settings$: Observable<\r\n fromDataServices.RecalculateSettings.RecalculateSetting[]\r\n >;\r\n public userInfo$: Observable;\r\n\r\n public clearSelectedSchedules$: ReplaySubject =\r\n new ReplaySubject(1);\r\n\r\n FYStart: any;\r\n FYEnd: any;\r\n\r\n active = true;\r\n\r\n scheduleTimer: any;\r\n showTimer = false;\r\n step1Timer$: Observable;\r\n\r\n CompanySettingsFYStartDate: any;\r\n CompanySettingsFYEndDate: any;\r\n\r\n processingText = 'Processing...';\r\n\r\n processScheduleIDsString: string;\r\n\r\n contractsLoading$: Observable;\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: fromShared.Services.Logging.LoggingService,\r\n private qbService: QuickbooksService,\r\n private store: Store\r\n ) {\r\n log.verbose({ type: 'RecalculateTransactionsFeatureComponent::' });\r\n this.recalculateContractsDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.RecalculateContracts.entityName\r\n );\r\n this.recalculateSchedulesDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.RecalculateSchedules.entityName\r\n );\r\n this.recalculateSettingsDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.RecalculateSettings.entityName\r\n );\r\n this.jobTimerDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.JobTimer.entityName\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.recalculateSettingsDataService.getWithQuery({ CatID: '8' });\r\n this.recalculateSettingsDataService.getWithQuery({\r\n SettingType: 'FYStartDate'\r\n });\r\n this.recalculateSettingsDataService.getWithQuery({\r\n SettingType: 'FYEndDate'\r\n });\r\n this.recalculateSchedulesDataService.getWithQuery({\r\n FyStartDate: this.CompanySettingsFYStartDate,\r\n FYEndDate: this.CompanySettingsFYEndDate\r\n });\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'QuickbooksOnline'\r\n })\r\n );\r\n // this.store.dispatch(new fromQBO.ValidateTokens());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.recalculateSchedulesDataService.clearCache();\r\n this.recalculateContractsDataService.clearCache();\r\n this.recalculateSettingsDataService.clearCache();\r\n if (this.scheduleTimer) {\r\n clearInterval(this.scheduleTimer);\r\n this.scheduleTimer = null;\r\n this.showTimer = false;\r\n }\r\n }\r\n\r\n setupObservables() {\r\n this.contractsLoading$ = this.recalculateContractsDataService.loading$;\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.isQBOEnabled$ = this.store.pipe(select(fromSettings.isQBOEnabled));\r\n this.hasValidTokens$ = this.store.pipe(\r\n select(fromQBO.getHasValidTokens)\r\n );\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.schedules$ = this.recalculateSchedulesDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.contracts$ = this.recalculateContractsDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.initialContracts$ =\r\n this.recalculateContractsDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n this.settings$ = this.recalculateSettingsDataService.entities$.pipe(\r\n map(x => clone(x))\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.userInfo$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(userInfo => {\r\n this.FYStart = userInfo.FYStartDate;\r\n this.FYEnd = userInfo.FYEndDate;\r\n });\r\n this.schedules$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.length > 0)\r\n )\r\n .subscribe(schedules => {\r\n // this.schedules = [];\r\n this.schedules = schedules;\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsFeatureComponent:setupSubscriptions:schedules',\r\n schedules,\r\n scheduleTimer: this.scheduleTimer\r\n });\r\n\r\n // if (schedules[0].Userlogdetail == null) {\r\n // this.processingText = 'Processing...';\r\n // } else {\r\n // this.processingText = schedules[0].Userlogdetail;\r\n // }\r\n this.processingText =\r\n schedules.find(x => x.Userlogdetail != null)\r\n ?.Userlogdetail ?? 'Processing...';\r\n\r\n if (schedules.some(schedule => schedule.Timer)) {\r\n if (this.scheduleTimer == null) {\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsFeatureComponent:setupSubscriptions:schedules:Timer=true',\r\n message: 'some timer is true',\r\n schedules: this.schedules.filter(\r\n x => x.Timer == true\r\n )\r\n });\r\n this.scheduleTimer = setInterval(() => {\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsFeatureComponent:setupSubscriptions:scheduleTimer',\r\n message: 'some timer is true',\r\n schedules: this.schedules.filter(\r\n x => x.Timer == true\r\n )\r\n });\r\n this.recalculateSchedulesDataService.getWithQuery({\r\n FYStartDate: this.CompanySettingsFYStartDate,\r\n FYEndDate: this.CompanySettingsFYEndDate\r\n });\r\n }, 1000);\r\n }\r\n } else {\r\n if (this.scheduleTimer != null) {\r\n this.clearSelectedSchedules$.next(true);\r\n clearInterval(this.scheduleTimer);\r\n this.scheduleTimer = null;\r\n }\r\n }\r\n\r\n if (this.scheduleTimer != null && this.showTimer == false) {\r\n this.clearSelectedSchedules$.next(true);\r\n clearInterval(this.scheduleTimer);\r\n this.scheduleTimer = null;\r\n this.recalculateSettingsDataService.getWithQuery({\r\n CatID: '8'\r\n });\r\n this.clearSelectedSchedules$.next(true);\r\n setTimeout(() => {\r\n this.recalculateSchedulesDataService.getWithQuery({\r\n FYStartDate: this.CompanySettingsFYStartDate,\r\n FYEndDate: this.CompanySettingsFYEndDate\r\n });\r\n }, 30000);\r\n }\r\n\r\n this.showTimer = schedules.some(x => x.Timer);\r\n });\r\n // this.showTimer = this.schedules$.pipe(\r\n // filter(x => x.some(y => y.Timer))\r\n // );\r\n\r\n this.settings$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.length > 0)\r\n )\r\n .subscribe(settings => {\r\n const fyStartDate = settings.find(\r\n x => x.SettingType == 'FYStartDate'\r\n );\r\n this.CompanySettingsFYStartDate =\r\n fyStartDate && fyStartDate.SettingValue;\r\n\r\n const fyEndDate = settings.find(\r\n x => x.SettingType == 'FYEndDate'\r\n );\r\n this.CompanySettingsFYEndDate =\r\n fyEndDate && fyEndDate.SettingValue;\r\n });\r\n }\r\n onStep1($event: { schedules: string; glOnly: boolean }) {\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsFeatureComponent:onStep1',\r\n schedules: this.schedules\r\n });\r\n clearInterval(this.scheduleTimer);\r\n this.scheduleTimer = null;\r\n this.showTimer = true;\r\n this.schedules[0] = { ...this.schedules[0], Timer: true };\r\n this.qbService\r\n .SyncTransactions($event.schedules, $event.glOnly)\r\n .then(() => {\r\n this.scheduleTimer = setInterval(() => {\r\n this.recalculateSchedulesDataService.getWithQuery({\r\n FYStartDate: this.CompanySettingsFYStartDate,\r\n FYEndDate: this.CompanySettingsFYEndDate\r\n });\r\n }, 1000);\r\n })\r\n .catch(err => {\r\n clearInterval(this.scheduleTimer);\r\n handleServiceError(err, of(null))\r\n .pipe(take(1))\r\n .subscribe(a => this.store.dispatch(a));\r\n this.showTimer = false;\r\n });\r\n }\r\n\r\n onStep2($event) {\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsFeatureComponent:onStep2',\r\n schedules: this.schedules\r\n });\r\n clearInterval(this.scheduleTimer);\r\n this.scheduleTimer = null;\r\n this.recalculateSchedulesDataService.getWithQuery({\r\n ProcessStep: '2',\r\n ProcessScheduleID_List: $event\r\n });\r\n this.showTimer = true;\r\n // start timer\r\n this.schedules[0] = { ...this.schedules[0], Timer: true };\r\n // this.recalculateSchedulesDataService.clearCache();\r\n this.scheduleTimer = setInterval(() => {\r\n this.recalculateSchedulesDataService\r\n .getWithQuery({\r\n FYStartDate: this.CompanySettingsFYStartDate,\r\n FYEndDate: this.CompanySettingsFYEndDate\r\n })\r\n .pipe(\r\n take(1),\r\n catchError(err => {\r\n clearInterval(this.scheduleTimer);\r\n return handleServiceError(err, of(null));\r\n })\r\n );\r\n }, 2000);\r\n }\r\n\r\n onStep3($event) {\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsFeatureComponent:onStep3',\r\n schedules: this.schedules\r\n });\r\n clearInterval(this.scheduleTimer);\r\n this.scheduleTimer = null;\r\n this.recalculateSchedulesDataService.getWithQuery({\r\n ProcessStep: $event\r\n });\r\n this.showTimer = true;\r\n // start timer\r\n this.schedules[0] = { ...this.schedules[0], Timer: true };\r\n this.scheduleTimer = setInterval(() => {\r\n this.recalculateSchedulesDataService\r\n .getWithQuery({\r\n FYStartDate: this.CompanySettingsFYStartDate,\r\n FYEndDate: this.CompanySettingsFYEndDate\r\n })\r\n .pipe(\r\n take(1),\r\n catchError(err => {\r\n clearInterval(this.scheduleTimer);\r\n return handleServiceError(err, of(null));\r\n })\r\n );\r\n }, 1000);\r\n }\r\n\r\n onGetSchedules($event) {\r\n this.recalculateSchedulesDataService.clearCache();\r\n this.recalculateSchedulesDataService.getWithQuery({\r\n FYStartDate: this.CompanySettingsFYStartDate,\r\n FYEndDate: this.CompanySettingsFYEndDate\r\n });\r\n }\r\n\r\n onGetContracts($event) {\r\n this.recalculateContractsDataService.clearCache();\r\n this.recalculateContractsDataService.getWithQuery($event);\r\n }\r\n\r\n onGetSettings($event) {\r\n this.recalculateSettingsDataService.clearCache();\r\n this.recalculateSettingsDataService.getWithQuery({ CatID: '8' });\r\n }\r\n\r\n onApplyInvoiceChanges($event) {\r\n this.recalculateContractsDataService.upsert($event);\r\n }\r\n\r\n onUpdateSettings($event) {\r\n this.recalculateSettingsDataService.upsert($event);\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { RecalculateContract } from '../../data-services/recalculate-transactions/recalculate-contracts';\r\nimport { RecalculateSetting } from '../../data-services/recalculate-transactions/recalculate-settings/recalculate-settings.model';\r\nimport * as fromShared from '../../shared';\r\nimport { Process } from '../../shared';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-recalculate-transactions-presenter',\r\n templateUrl: './recalculate-transactions-presenter.component.html',\r\n styleUrls: ['./recalculate-transactions-presenter.component.scss']\r\n})\r\nexport class RecalculateTransactionsPresenterComponent\r\n implements OnInit, OnDestroy\r\n{\r\n actionFormGroup: FormGroup;\r\n\r\n @Input() process: Process;\r\n @Input() qboEnabled: boolean;\r\n @Input() hasValidTokens: boolean;\r\n // @Input()\r\n // schedules: fromDataServices.RecalculateSchedules.RecalculateSchedule[];\r\n // public schedules$: Observable;\r\n\r\n private SchedulesSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _schedules: Array;\r\n step2msg: { severity: string; summary: string; detail: string }[];\r\n @Input() set schedules(\r\n value: Array\r\n ) {\r\n this._schedules = value;\r\n this.SchedulesSubject.next(value);\r\n if (this._schedules && this._schedules.length > 0) {\r\n //TODO: timer for step 1\r\n if (this.IsStep1 === true) {\r\n this.IsStep1BtnDisabled = true;\r\n this.IsStep2BtnDisabled = true;\r\n // this.Step1.next(this.processScheduleIDsString);\r\n }\r\n if (this.IsStep2 === true) {\r\n if (this._schedules[0].Timer == true) {\r\n this.IsStep2BtnDisabled = true;\r\n } else {\r\n if (this.applyInvoiceChangesBtn) {\r\n this.IsDialogVisible$.next(true);\r\n this.applyInvoiceChangesBtn = null;\r\n } else {\r\n // this.Step2.next(this.processScheduleIDsString);\r\n }\r\n }\r\n\r\n this.IsStep2 = false;\r\n }\r\n if (this.IsStep3 === true) {\r\n if (this._schedules[0].Timer == true) {\r\n this.IsStatusPending = false;\r\n } else {\r\n this.Step3.next('3');\r\n }\r\n\r\n this.IsStep3 = false;\r\n }\r\n }\r\n }\r\n get schedules(): Array {\r\n return this._schedules;\r\n }\r\n\r\n private ContractsSubject = new ReplaySubject>(1);\r\n private _contracts: Array;\r\n @Input() set contracts(value: Array) {\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n }\r\n get contracts(): Array {\r\n return this._contracts;\r\n }\r\n\r\n @Input() initialContracts: RecalculateContract[];\r\n\r\n @Input() settings: RecalculateSetting[];\r\n\r\n @Output() Step1 = new ReplaySubject<{ schedules: string; glOnly: boolean }>(\r\n 1\r\n );\r\n @Output() Step2 = new ReplaySubject(1);\r\n @Output() Step3 = new ReplaySubject(1);\r\n\r\n @Output() GetContracts = new ReplaySubject(1);\r\n\r\n @Output() GetSchedules = new ReplaySubject(1);\r\n\r\n @Output() GetSettings = new ReplaySubject(1);\r\n\r\n // @Output() GetProcessScheduleIDs = new ReplaySubject(1);\r\n\r\n @Output() ApplyInvoiceChanges = new ReplaySubject(1);\r\n\r\n @Output() UpdateSettings = new ReplaySubject(1);\r\n\r\n @Input() userInfo: IUserInfo;\r\n\r\n @Input() contractsLoading: boolean;\r\n\r\n FYStart: any;\r\n FYEnd: any;\r\n\r\n processScheduleIDsString: string;\r\n\r\n IsStep1BtnDisabled = true;\r\n IsStep2BtnDisabled = true;\r\n\r\n public IsDialogVisible$ = new BehaviorSubject(false);\r\n\r\n IsDialogVisible = false;\r\n\r\n applyInvoiceChangesBtn: any;\r\n\r\n public dialogAction$: ReplaySubject = new ReplaySubject(1);\r\n\r\n @Input() clearSelectedSchedules$: Observable;\r\n\r\n IsStep1 = false;\r\n IsStep2 = false;\r\n IsStep3 = false;\r\n\r\n pageInfo = `Recalcuate period transactions allows reprocessing a period to include eFAACT only changes without requiring import from QuickBooks (step 1).
\r\n All initial processing/QuickBooks changes will require step 1 and can be done from Process Period form in eFAACT Navigator.`;\r\n\r\n step1Tooltip = `\r\n This step imports QuickBooks transactions for the selected period and is required for initial period processing,\r\nand if changes are made to timecards or QuickBooks DIRECT charges.\r\n\r\nIf QuickBooks changes impact only INDIRECT costs, use the \"Re-Sync Indirect Costs\" feature (located bottom right).\r\n --- QuickBooks administrator access required ---`;\r\n\r\n step2Tooltip = `\r\n After selecting PERIODS and the CONTRACTS to be invoiced,\r\nthis step calculates daily details such as cost, invoice amount, burdens, and fees.\r\nUpon completion, daily and period cost/revenue reports are available for review.\r\n\r\nComplete Step 3 for full management reports including invoices and indirect rate schedules.`;\r\n\r\n step3Tooltip = `\r\n Completes all pending period(s).\r\n\r\nThis step calculates cumulative summaries, completes INVOICES and calculates experienced INDIRECT RATES.\r\n\r\nAfter completion, all period reporting is available.`;\r\n\r\n active = true;\r\n\r\n accordionTabHeader: string;\r\n\r\n IsStatusPending: boolean;\r\n\r\n constructor(private log: fromShared.Services.Logging.LoggingService) {\r\n this.actionFormGroup = new FormGroup({\r\n STEP1: new FormControl(),\r\n STEP2: new FormControl(),\r\n STEP3: new FormControl()\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n this.step2msg = [\r\n {\r\n severity: 'info',\r\n summary: '',\r\n detail: this.qboEnabled\r\n ? `Step 1 and Step 2 are activated as period(s) are selected. Step 3 completes all 'commit pending' periods.`\r\n : `Step 1 and Sync GL require eFAACT Desktop. Step 2 is activated as period(s) are selected. Step 3 completes all \"commit pending\" periods.`\r\n }\r\n ];\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n setupObservables() {}\r\n\r\n setupSubscriptions() {\r\n this.FYStart = this.userInfo.FYStartDate;\r\n this.FYEnd = this.userInfo.FYEndDate;\r\n\r\n this.accordionTabHeader = `Fiscal Year: ${moment(this.FYStart).format(\r\n 'MM/DD/YYYY'\r\n )} - ${moment(this.FYEnd).format('MM/DD/YYYY')}`;\r\n\r\n this.IsDialogVisible$.pipe(takeWhile(() => this.active)).subscribe(\r\n x => {\r\n this.IsDialogVisible = x;\r\n }\r\n );\r\n }\r\n\r\n step1Clicked(glOnly: boolean) {\r\n this.IsStep1 = true;\r\n this.Step1.next({ schedules: this.processScheduleIDsString, glOnly });\r\n // this.GetSchedules.next({\r\n // FyStartDate: null,\r\n // FYEndDate: null\r\n // });\r\n }\r\n step2Clicked() {\r\n this.IsStep2 = true;\r\n // this.GetSchedules.next({\r\n // FyStartDate: null,\r\n // FYEndDate: null\r\n // });\r\n this.Step2.next(this.processScheduleIDsString);\r\n }\r\n\r\n step3Clicked() {\r\n this.IsStep3 = true;\r\n // this.GetSchedules.next({\r\n // FyStartDate: null,\r\n // FYEndDate: null\r\n // });\r\n this.Step3.next('3');\r\n }\r\n\r\n onDialogButtonClicked(action) {\r\n if (action == 'apply') {\r\n this.dialogAction$.next('apply');\r\n }\r\n if (action == 'discard') {\r\n this.dialogAction$.next('discard');\r\n }\r\n this.IsDialogVisible$.next(false);\r\n this.IsStep2BtnDisabled = true;\r\n }\r\n\r\n onGetProcessScheduleIDs($event) {\r\n this.processScheduleIDsString = $event;\r\n }\r\n\r\n onGetStep2BtnStatus($event) {\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsPresenterComponent',\r\n method: 'onGetStep2BtnStatus',\r\n data: $event\r\n });\r\n this.IsStep2BtnDisabled = $event;\r\n }\r\n\r\n onGetStep1BtnStatus($event) {\r\n this.log.verbose({\r\n type: 'RecalculateTransactionsPresenterComponent',\r\n method: 'onGetStep1BtnStatus',\r\n data: $event\r\n });\r\n this.IsStep1BtnDisabled = $event;\r\n }\r\n\r\n onGetContracts($event) {\r\n if (this.applyInvoiceChangesBtn) {\r\n this.IsDialogVisible$.next(true);\r\n this.applyInvoiceChangesBtn = null;\r\n } else {\r\n this.GetContracts.next($event);\r\n }\r\n }\r\n\r\n onGetSchedules($event) {\r\n this.GetSchedules.next($event);\r\n }\r\n\r\n onApplyInvoiceChanges($event) {\r\n this.ApplyInvoiceChanges.next($event);\r\n }\r\n\r\n onUpdateSettings($event) {\r\n this.UpdateSettings.next($event);\r\n }\r\n\r\n onStopAnimation($event) {\r\n this.applyInvoiceChangesBtn = $event;\r\n }\r\n\r\n onDisableStep2($event) {\r\n this.IsStep2BtnDisabled = true;\r\n }\r\n\r\n onEnableStep2($event) {\r\n this.IsStep2BtnDisabled = false;\r\n }\r\n\r\n onDialogAction($event) {}\r\n onStatusPending($event) {\r\n this.IsStatusPending = $event;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport {\r\n PeriodContainerComponent,\r\n PeriodRoute,\r\n RecalculateTransactionsRoute\r\n} from './recalculate-transactions.route';\r\nimport {\r\n entityName,\r\n RecalculateSchedulesDataService\r\n} from '../data-services/recalculate-transactions/recalculate-schedules/recalculate-schedules.data-service';\r\nimport { SchedulesPresenterComponent } from './schedules-presenter/schedules-presenter.component';\r\nimport { RecalculateTransactionsFeatureComponent } from './recalculate-transactions-feature/recalculate-transactions-feature.component';\r\nimport { ContractsPresenterComponent } from './contracts-presenter/contracts-presenter.component';\r\nimport { SettingsPresenterComponent } from './settings-presenter/settings-presenter.component';\r\nimport { RecalculateTransactionsPresenterComponent } from './recalculate-transactions-presenter/recalculate-transactions-presenter.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PeriodContainerComponent,\r\n SchedulesPresenterComponent,\r\n RecalculateTransactionsFeatureComponent,\r\n ContractsPresenterComponent,\r\n SettingsPresenterComponent,\r\n RecalculateTransactionsPresenterComponent\r\n ],\r\n providers: [RecalculateSchedulesDataService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n UIRouterModule.forChild({\r\n states: [PeriodRoute, RecalculateTransactionsRoute]\r\n })\r\n ]\r\n})\r\nexport class RecalculateTransactionsModule {}\r\n","import { Component } from '@angular/core';\r\nimport { Ng2StateDeclaration } from '@uirouter/angular';\r\nimport { RecalculateTransactionsFeatureComponent } from './recalculate-transactions-feature/recalculate-transactions-feature.component';\r\n\r\n@Component({ template: `` })\r\nexport class PeriodContainerComponent {}\r\nexport const PeriodRoute: Ng2StateDeclaration = {\r\n name: 'period',\r\n url: '/period',\r\n redirectTo: 'period.reprocessing',\r\n abstract: true,\r\n data: { requiresAuth: true },\r\n component: PeriodContainerComponent\r\n};\r\n\r\nexport const RecalculateTransactionsRoute: Ng2StateDeclaration = {\r\n name: 'period.reprocessing',\r\n url: '/reprocessing',\r\n data: { requiresAuth: true },\r\n component: RecalculateTransactionsFeatureComponent\r\n};\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { RecalculateSchedule } from '../../data-services/recalculate-transactions/recalculate-schedules';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-schedules-presenter',\r\n templateUrl: './schedules-presenter.component.html',\r\n styleUrls: ['./schedules-presenter.component.scss']\r\n})\r\nexport class SchedulesPresenterComponent\r\n extends DisplayErrors\r\n implements OnInit\r\n{\r\n private SchedulesSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _schedules: Array;\r\n\r\n @Input() set schedules(\r\n value: Array\r\n ) {\r\n // this._schedules = value;\r\n this._schedules = value.sort(\r\n (a, b) =>\r\n a.PeriodStartDate?.getTime() - b.PeriodStartDate?.getTime()\r\n );\r\n this.SchedulesSubject.next(value);\r\n if (value && value.length > 0) {\r\n this.IsStatusPending = value.some(\r\n x =>\r\n x.PeriodStatus.includes('pending') == true ||\r\n x.PeriodStatus.includes('PENDING') == true\r\n );\r\n this.log.verbose({\r\n type: 'schedules:set',\r\n IsStatusPending: this.IsStatusPending\r\n });\r\n this.StatusPending.next(this.IsStatusPending);\r\n this.processingText = value[0].Userlogdetail;\r\n this.processingMsg = [\r\n { severity: 'info', summary: '', detail: this.processingText }\r\n ];\r\n this.showTimer = value[0].Timer;\r\n }\r\n }\r\n get schedules(): Array {\r\n return this._schedules;\r\n }\r\n\r\n selectedSchedule: RecalculateSchedule;\r\n\r\n selectedProcessScheduleIDs: number[];\r\n\r\n processingScheduleString: string;\r\n\r\n moment: any;\r\n\r\n IsStep1BtnDisabled = true;\r\n IsStep2BtnDisabled = true;\r\n\r\n IsStatusPending: boolean;\r\n\r\n checkedRow: fromDataServices.RecalculateSchedules.RecalculateSchedule;\r\n\r\n @Output() GetProcessScheduleIDs = new ReplaySubject(1);\r\n\r\n @Output() GetStep1BtnStatus = new ReplaySubject(1);\r\n @Output() GetStep2BtnStatus = new ReplaySubject(1);\r\n\r\n @Output() GetContracts = new ReplaySubject(1);\r\n\r\n @Output() StatusPending = new ReplaySubject(1);\r\n\r\n @Input() IsDialogVisible$: BehaviorSubject;\r\n\r\n processingText: string;\r\n\r\n processingMsg: { severity: string; summary: string; detail: string }[];\r\n\r\n row: any;\r\n\r\n showTimer = false;\r\n\r\n rowData: RecalculateSchedule;\r\n\r\n processIDs: any[] = [];\r\n\r\n @Input() dialogAction$: Observable;\r\n dialogAction: string;\r\n\r\n @Input() clearSelectedSchedules$: Observable;\r\n clearSelectedSchedules: boolean;\r\n\r\n active = true;\r\n\r\n constructor(private log: LoggingService) {\r\n super();\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n if (this.schedules.length > 0) {\r\n this.selectedSchedule = this.schedules[0];\r\n this.onScheduleSelected({ data: this.selectedSchedule });\r\n }\r\n }, 500);\r\n\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n setupSubscriptions() {\r\n if (this.dialogAction$) {\r\n this.dialogAction$\r\n .pipe(takeWhile(() => this.active == true))\r\n .subscribe(x => {\r\n if (x && x == 'apply') {\r\n this.selectedSchedule = this.processIDs[0];\r\n } else if (x && x == 'discard') {\r\n this.selectedSchedule = this.processIDs[0];\r\n }\r\n });\r\n }\r\n if (this.clearSelectedSchedules$) {\r\n this.clearSelectedSchedules$\r\n .pipe(takeWhile(() => this.active == true))\r\n .subscribe(x => {\r\n if (x == true) {\r\n this.selectedProcessScheduleIDs = [];\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCheckboxChange($event, rowData) {\r\n if (rowData == this.selectedSchedule) {\r\n this.row = document.getElementById(\r\n `row-${rowData.ProcessScheduleID}`\r\n );\r\n this.row.classList.add('highlight');\r\n }\r\n this.checkedRow = rowData;\r\n this.processingScheduleString = '';\r\n this.selectedProcessScheduleIDs.forEach(id => {\r\n this.processingScheduleString += `${id},`;\r\n });\r\n this.GetProcessScheduleIDs.next(this.selectedProcessScheduleIDs.join());\r\n this.log.verbose({\r\n type: 'SchedulesPresenterComponent',\r\n method: 'onCheckboxChange',\r\n data: this.selectedProcessScheduleIDs\r\n });\r\n const index = this.schedules.findIndex(\r\n x => x.ProcessScheduleID == rowData.ProcessScheduleID\r\n );\r\n if (index != -1) {\r\n this.schedules[index] = {\r\n ...rowData,\r\n selected: $event.checked.includes(this.schedules[index].id)\r\n };\r\n if (this.schedules.some(x => x.selected == true)) {\r\n this.IsStep1BtnDisabled = false;\r\n if (\r\n this.schedules\r\n .filter(x => x.selected == true)\r\n .every(x => !!x.QBImportDate)\r\n ) {\r\n this.IsStep2BtnDisabled = false;\r\n }\r\n } else {\r\n this.IsStep1BtnDisabled = true;\r\n this.IsStep2BtnDisabled = true;\r\n }\r\n this.GetStep1BtnStatus.next(this.IsStep1BtnDisabled);\r\n this.GetStep2BtnStatus.next(this.IsStep2BtnDisabled);\r\n }\r\n }\r\n\r\n onScheduleSelected(value) {\r\n // this.IsDialogVisible$.next(true);\r\n this.processIDs.push(value.data);\r\n if (this.processIDs.length > 2) {\r\n this.processIDs.splice(0, 1);\r\n }\r\n this.rowData = value;\r\n if (this.row) {\r\n this.row.classList.remove('highlight');\r\n }\r\n this.GetContracts.next({\r\n PeriodStartDate: value.data.PeriodStartDate,\r\n PeriodEndDate: value.data.PeriodEndDate\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { RecalculateSchedule } from '../../data-services/recalculate-transactions/recalculate-schedules/recalculate-schedules.model';\r\nimport { RecalculateSetting } from '../../data-services/recalculate-transactions/recalculate-settings/recalculate-settings.model';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-settings-presenter',\r\n templateUrl: './settings-presenter.component.html',\r\n styleUrls: ['./settings-presenter.component.scss']\r\n})\r\nexport class SettingsPresenterComponent extends DisplayErrors implements OnInit {\r\n\r\n private SettingsSubject = new ReplaySubject>(1);\r\n private _settings: Array;\r\n @Input() set settings(value: Array) {\r\n if (value && value.length > 0 && value[0]) {\r\n value = value.map(x => ({\r\n ...x,\r\n SettingValue: x.SettingValue == '1' ? true : false\r\n }));\r\n }\r\n\r\n this._settings = value.filter(x => x.CatID == 8);\r\n this.SettingsSubject.next(value);\r\n }\r\n get settings(): Array {\r\n return this._settings;\r\n }\r\n\r\n private SchedulesSubject = new ReplaySubject>(1);\r\n private _schedules: Array;\r\n @Input() set schedules(value: Array) {\r\n this._schedules = value;\r\n this.SchedulesSubject.next(value);\r\n\r\n if (this._schedules.length > 0) {\r\n if (this._schedules[0].Timer == true) {\r\n\r\n } else {\r\n if (this.rowData) {\r\n this.UpdateSettings.next({\r\n SettingValue: this.checked == true ? '1' : '0',\r\n SettingType: this.rowData.SettingType\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n get schedules(): Array {\r\n return this._schedules;\r\n }\r\n\r\n @Output() UpdateSettings = new ReplaySubject(1);\r\n\r\n @Output() GetSchedules = new ReplaySubject(1);\r\n\r\n checked: boolean;\r\n rowData: RecalculateSetting;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n onCheckboxChange($event, rowData) {\r\n this.checked = $event.checked;\r\n this.rowData = rowData;\r\n this.GetSchedules.next({\r\n FyStartDate: null,\r\n FYEndDate: null\r\n });\r\n\r\n }\r\n\r\n}\r\n","export * from './reconciliation-container';\r\n","export * from './reconciliation-container.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, merge, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n skip,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromGroups from '../../groups';\r\nimport { LoadGroupMembers } from '../../groups/store';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n ProcessEnum,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport {\r\n DialogService,\r\n DynamicDialogRef,\r\n SelectItem\r\n} from '../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport { UserRoleEnum } from '../../user-info';\r\nimport { ReconciliationMemorizeTemplatePopupComponent } from '../reconciliation-memorize-template-popup/reconciliation-memorize-template-popup.component';\r\nimport { ReconciliationShareTemplatePopupComponent } from '../reconciliation-share-template-popup/reconciliation-share-template-popup.component';\r\n// import * as fromScheduledDates from '../../lookups/store/schedule-date.selectors';\r\n\r\n@Component({\r\n selector: 'ef-reconciliation-container',\r\n templateUrl: './reconciliation-container.component.html',\r\n styleUrls: ['./reconciliation-container.component.scss']\r\n})\r\nexport class ReconciliationContainerComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n reconciliationService: EntityCollectionService;\r\n reconciliationFieldsService: EntityCollectionService;\r\n reconciliationTemplateService: EntityCollectionService;\r\n fields$: Observable<\r\n fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[]\r\n >;\r\n templates$: Observable;\r\n users$: Observable;\r\n userInfo$: Observable;\r\n fieldsSelected$: Observable<\r\n fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[]\r\n >;\r\n process$: Observable;\r\n payPeriodDates$: Observable;\r\n payPeriodDatesSelectItems$: Observable;\r\n ShareTemplateSubject = new ReplaySubject(1);\r\n PayPeriodSelectedSubject = new ReplaySubject(1);\r\n DateSelectedSubject = new ReplaySubject(1);\r\n GroupSelectedSubject = new ReplaySubject(1);\r\n TemplateSelectedSubject = new ReplaySubject(1);\r\n DownloadSubject = new ReplaySubject(1);\r\n RebuildSubject = new ReplaySubject(1);\r\n GetReconDataSubject = new ReplaySubject<{\r\n dates: Date[];\r\n process: fromShared.Process;\r\n rebuild: boolean;\r\n }>(1);\r\n FieldSelectedSubject =\r\n new ReplaySubject(\r\n 1\r\n );\r\n FieldReorderSubject = new ReplaySubject<\r\n fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[]\r\n >(1);\r\n visible = true;\r\n private active = true;\r\n private dialogRef: DynamicDialogRef;\r\n showFilterDates = false;\r\n showPayPeriods = false;\r\n @ViewChild('divExport', { static: true }) divExport: ElementRef;\r\n constructor(\r\n private entityServices: EntityServices,\r\n private dialogService: DialogService,\r\n private store: Store,\r\n private log: LoggingService,\r\n private ss: StateService,\r\n private renderer: Renderer2,\r\n private confirmService: UnsavedChangesService\r\n ) {\r\n this.reconciliationService =\r\n this.entityServices.getEntityCollectionService(\r\n fromDataServices.Reconciliation.entityName\r\n );\r\n this.reconciliationFieldsService =\r\n this.entityServices.getEntityCollectionService(\r\n fromDataServices.Reconciliation.Fields.entityName\r\n );\r\n this.reconciliationTemplateService =\r\n this.entityServices.getEntityCollectionService(\r\n fromDataServices.Reconciliation.Template.entityName\r\n );\r\n\r\n this.log.verbose({ type: 'ReconciliationContainerComponent::' });\r\n }\r\n ngOnInit(): void {\r\n this.log.verbose({ type: 'ReconciliationContainerComponent:ngOnInit' });\r\n this.reconciliationTemplateService.clearCache();\r\n this.reconciliationTemplateService.getAll();\r\n this.reconciliationService.clearCache();\r\n this.store.dispatch(\r\n new LoadGroupMembers({ GroupID: UserRoleEnum.Administrator })\r\n );\r\n\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:ngOnDestroy'\r\n });\r\n this.active = false;\r\n if (this.dialogRef) {\r\n this.dialogRef.close();\r\n // this.dialogRef.destroy();\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.handleOnOpen([1]);\r\n }, 0);\r\n }\r\n setupObservables(): void {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:setupObservables'\r\n });\r\n\r\n this.users$ = this.store.pipe(\r\n select(fromGroups.getGroupMembers),\r\n // map(items => items.filter(d => d.IsActive)),\r\n // filter(x => !!x && x.length > 0),\r\n tap(admins =>\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:users$',\r\n admins\r\n })\r\n ),\r\n map(items =>\r\n items\r\n .filter(item => item.IsGroupMember)\r\n .map(item => ({\r\n label: item.UserName,\r\n value: item.ListID\r\n }))\r\n )\r\n );\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.templates$ = this.reconciliationTemplateService.entities$.pipe(\r\n map(items =>\r\n items.map(item => ({ label: item.Name, value: item.Name }))\r\n )\r\n );\r\n this.fields$ = this.reconciliationFieldsService.entities$.pipe(\r\n map(items => clone(items))\r\n );\r\n this.fieldsSelected$ = merge(\r\n this.FieldReorderSubject,\r\n this.fields$\r\n ).pipe(\r\n // withLatestFrom(this.fields$),\r\n map(fields => fields.filter(field => field.InUse)),\r\n tap(fields =>\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:fieldsSelected$',\r\n fields\r\n })\r\n )\r\n );\r\n this.payPeriodDates$ = this.store.pipe(\r\n select(\r\n fromLookups.ScheduledDateSelectors.selectScheduledDateType({\r\n ScheduledDateType: 'PPE'\r\n })\r\n )\r\n );\r\n this.payPeriodDatesSelectItems$ = this.payPeriodDates$.pipe(\r\n map(dates =>\r\n dates.map(d => ({\r\n label: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YY'\r\n )} - ${moment(d.ScheduledEndDate).format('MM/DD/YY')} ${\r\n d.ScheduledDatePurpose\r\n }`,\r\n value: d.ScheduledDateID\r\n }))\r\n )\r\n );\r\n }\r\n setupSubscriptions(): void {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:setupSubscriptions'\r\n });\r\n this.userInfo$.pipe(take(1)).subscribe(user => {\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user,\r\n activeOnly: false\r\n })\r\n );\r\n });\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n skip(1)\r\n )\r\n .subscribe(user => {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:userInfo$',\r\n user\r\n });\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user,\r\n activeOnly: false\r\n })\r\n );\r\n this.DateSelectedSubject.next([\r\n user.PrevPayPeriodStart,\r\n user.PrevPayPeriodEnd\r\n ]);\r\n this.RebuildSubject.next();\r\n });\r\n this.ShareTemplateSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.users$),\r\n withLatestFrom(this.userInfo$),\r\n withLatestFrom(this.process$)\r\n ).subscribe(([[[template, users], ui], process]) =>\r\n this.shareTemplate(\r\n template,\r\n users.filter(x => x.value !== ui.EmployeeListID),\r\n process\r\n )\r\n );\r\n this.GroupSelectedSubject.pipe(takeWhile(() => this.active)).subscribe(\r\n () => {\r\n this.reconciliationService.clearCache();\r\n $('#btnRebuild').addClass('blinking');\r\n }\r\n );\r\n combineLatest([this.userInfo$, this.FieldSelectedSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([user, field]) => {\r\n this.reconciliationFieldsService.upsert({\r\n ...field,\r\n PersonListID: user.EmployeeListID\r\n });\r\n });\r\n this.process$.pipe(takeWhile(() => this.active)).subscribe(process => {\r\n this.reconciliationFieldsService.getWithQuery({\r\n Processid: process.ProcessID.toString(),\r\n PersonListID: ''\r\n });\r\n switch (process.ProcessID) {\r\n case ProcessEnum.TimeLaborReconciliation:\r\n this.showPayPeriods = true;\r\n this.showFilterDates = false;\r\n break;\r\n\r\n default:\r\n this.showPayPeriods = false;\r\n this.showFilterDates = false;\r\n break;\r\n }\r\n });\r\n this.DateSelectedSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.process$),\r\n tap(([dates, process]) =>\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:DateSelectedSubject,process$',\r\n dates,\r\n process\r\n })\r\n )\r\n ).subscribe(([dates, process]) =>\r\n this.getReconData(dates, process, false)\r\n );\r\n this.RebuildSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.DateSelectedSubject),\r\n withLatestFrom(this.FieldSelectedSubject),\r\n withLatestFrom(this.process$),\r\n tap(([[[, dates], fields], process]) =>\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:RebuildSubject,DateSelectedSubject,FieldSelectedSubject,process$',\r\n dates,\r\n fields,\r\n process\r\n })\r\n )\r\n ).subscribe(([[[, dates], fields], process]) => {\r\n this.getReconData(dates, process, true);\r\n });\r\n combineLatest([this.PayPeriodSelectedSubject, this.payPeriodDates$])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(([selected, payPeriods]) =>\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:PayPeriodSelectedSubject,payPeriodDates$',\r\n selected,\r\n payPeriods\r\n })\r\n )\r\n )\r\n .subscribe(([selected, payPeriods]) => {\r\n const period = payPeriods.find(\r\n x => x.ScheduledDateID === selected\r\n );\r\n if (period) {\r\n this.DateSelectedSubject.next([\r\n period.ScheduledStartDate,\r\n period.ScheduledEndDate\r\n ]);\r\n }\r\n });\r\n this.GetReconDataSubject.pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:getReconData',\r\n x\r\n })\r\n ),\r\n distinctUntilChanged(\r\n (\r\n x: {\r\n dates: Date[];\r\n process: fromShared.Process;\r\n rebuild: boolean;\r\n },\r\n y: {\r\n dates: Date[];\r\n process: fromShared.Process;\r\n rebuild: boolean;\r\n }\r\n ) => {\r\n const result =\r\n x.dates[0].valueOf() === y.dates[0].valueOf() &&\r\n x.dates[1].valueOf() === y.dates[1].valueOf() &&\r\n x.process.ProcessID === y.process.ProcessID &&\r\n !y.rebuild;\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:getReconData:distinctUntilChanged',\r\n x,\r\n y,\r\n result\r\n });\r\n return result;\r\n }\r\n )\r\n ).subscribe(({ dates, process }) => {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:getReconData',\r\n dates,\r\n process\r\n });\r\n this.reconciliationService.clearCache();\r\n this.reconciliationService.getWithQuery({\r\n StartDate: moment(dates[0]).format('MM/DD/YYYY'),\r\n EndDate: moment(dates[1]).format('MM/DD/YYYY'),\r\n ProcessID: process.ProcessID.toString()\r\n });\r\n });\r\n }\r\n onRebuildClicked() {\r\n this.RebuildSubject.next();\r\n $('#btnRebuild').removeClass('blinking');\r\n }\r\n onDateRangeSelected($event: any) {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onDateRangeSelected',\r\n $event\r\n });\r\n if (this.showFilterDates) {\r\n this.DateSelectedSubject.next($event);\r\n }\r\n if (this.showPayPeriods) {\r\n this.PayPeriodSelectedSubject.next($event);\r\n }\r\n }\r\n onTemplateSelected($event) {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onTemplateSelected',\r\n $event\r\n });\r\n this.TemplateSelectedSubject.next($event);\r\n }\r\n onMemorize($event) {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onMemorize',\r\n $event\r\n });\r\n const ref = this.dialogService.open(\r\n ReconciliationMemorizeTemplatePopupComponent,\r\n {\r\n header: 'Memorize Template',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: true,\r\n modal: true,\r\n data: {\r\n // provide array of already existing template names\r\n names: ['test']\r\n }\r\n }\r\n );\r\n ref.onClose.pipe(take(1)).subscribe(data => {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onMemorize:afterClosed',\r\n data\r\n });\r\n });\r\n }\r\n onShareTemplate($event) {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onShareTemplate',\r\n $event\r\n });\r\n this.ShareTemplateSubject.next($event);\r\n }\r\n shareTemplate(template, users, process) {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:ShareTemplateSubject,users$',\r\n template,\r\n users,\r\n process\r\n });\r\n\r\n this.dialogRef = this.dialogService.open(\r\n ReconciliationShareTemplatePopupComponent,\r\n {\r\n header: 'Share Template',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: true,\r\n modal: true,\r\n data: {\r\n template,\r\n items: users,\r\n process\r\n }\r\n }\r\n );\r\n this.dialogRef.onClose.pipe(take(1)).subscribe(data => {\r\n this.dialogRef = null;\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onShareTemplate:afterClosed',\r\n data\r\n });\r\n if (data && data.Users) {\r\n this.reconciliationFieldsService\r\n .upsert({\r\n id: -1,\r\n ProcessID: process.ProcessID,\r\n UserDirectReports: data.Users.map(u => ({\r\n EmployeeListID: u,\r\n EmployeeName: '',\r\n IsActive: null\r\n }))\r\n } as any)\r\n .pipe(takeWhile(() => this.active))\r\n .pipe(filter(item => item.id === -1))\r\n .subscribe(result => {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onShareTemplate:afterUpdate',\r\n result\r\n });\r\n if (\r\n !!result &&\r\n result.Status.StatusCode < DisplayMessageMinimum\r\n ) {\r\n this.confirmService.confirm({\r\n showCancel: false,\r\n dialogText: 'Template share completed.',\r\n maxStatus: ResponseStatus.Success\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n onFieldSelected(\r\n item: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel\r\n ) {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onFieldSelected',\r\n item\r\n });\r\n this.FieldSelectedSubject.next(item);\r\n }\r\n onRowReorder(\r\n items: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[]\r\n ) {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:onRowReorder',\r\n items\r\n });\r\n this.FieldReorderSubject.next(items);\r\n }\r\n onGroupSelected() {\r\n this.GroupSelectedSubject.next();\r\n }\r\n getReconData(dates: Date[], process: fromShared.Process, rebuild: boolean) {\r\n this.GetReconDataSubject.next({ dates, process, rebuild });\r\n }\r\n handleOnOpen($event) {\r\n const baseHeight = 90;\r\n let accHeight = 0;\r\n if ($event === 0 || $event.includes(0)) {\r\n accHeight += 25;\r\n }\r\n if ($event === 1 || $event.includes(1)) {\r\n accHeight += 30;\r\n }\r\n // if ($event === 2 || $event.includes(2)) {\r\n // accHeight += 35;\r\n // }\r\n this.renderer.setStyle(\r\n this.divExport.nativeElement,\r\n 'height',\r\n `${baseHeight - accHeight}vh`\r\n );\r\n // this.cdRef.detach();\r\n // this.log.verbose({\r\n // type: 'ReconciliationContainerComponent:handleOnOpen',\r\n // height: this.divExport.nativeElement.style.height\r\n // });\r\n this.visible = false;\r\n setTimeout(() => {\r\n this.log.verbose({\r\n type: 'ReconciliationContainerComponent:handleOnOpen'\r\n });\r\n this.visible = true;\r\n // this.cdRef.reattach();\r\n // this.cdRef.detectChanges();\r\n }, 0);\r\n }\r\n}\r\n","import { AfterViewInit, Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { filter, takeWhile } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Table } from '../../shared/efaact-primeng.module';\r\n@Component({\r\n selector: 'ef-reconciliation-export',\r\n templateUrl: './reconciliation-export.component.html',\r\n styleUrls: ['./reconciliation-export.component.scss']\r\n})\r\nexport class ReconciliationExportComponent implements OnInit, OnDestroy, AfterViewInit {\r\n private itemsSubject = new ReplaySubject();\r\n private _items: any[];\r\n @Input() public set items(value: any[]) {\r\n this._items = value;\r\n this.itemsSubject.next(value);\r\n this.log.verbose({\r\n type: 'ReconciliationExportComponent:items:set',\r\n value\r\n });\r\n }\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n private fileFormatsSubject = new ReplaySubject<\r\n fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[]\r\n >();\r\n private _fileFormats: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[];\r\n @Input() public set fileFormats(\r\n value: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[]\r\n ) {\r\n this._fileFormats = value;\r\n this.fileFormatsSubject.next(value);\r\n this.log.verbose({\r\n type: 'ReconciliationExportComponent:fileFormats:set',\r\n value\r\n });\r\n }\r\n public get fileFormats(): fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[] {\r\n return this._fileFormats;\r\n }\r\n @Input() download: ReplaySubject;\r\n @ViewChild('dataTable', { static: true }) table: Table;\r\n\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n moment: any;\r\n filter: any;\r\n cols: {\r\n field: string;\r\n header: string;\r\n // include: boolean;\r\n // seq: number;\r\n }[] = [];\r\n private active = true;\r\n @ViewChild('dataTable', {static: true}) dataTable: Table;\r\n constructor(private log: LoggingService) {\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit(): void {}\r\n ngAfterViewInit(): void {\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.itemsSubject, this.fileFormatsSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(([items, fields]) => !!items && items.length > 0)\r\n )\r\n .subscribe(([items, fields]) => {\r\n this.log.verbose({\r\n type: 'ReconciliationExportComponent:itemsSubject,fileFormatsSubject',\r\n items,\r\n fields\r\n });\r\n const dCols = this.getDynamicColumns(items[0]);\r\n this.log.verbose({\r\n type: 'ReconciliationExportComponent:itemsSubject,fileFormatsSubject',\r\n dCols\r\n });\r\n this.cols = [\r\n ...fields.filter(x => dCols.findIndex(y => x.PropertyName === y) >= 0)\r\n .map(x => ({\r\n field: x.PropertyName,\r\n header: x.PropertyName\r\n }))\r\n ];\r\n this.log.verbose({\r\n type: 'ReconciliationExportComponent:itemsSubject,fileFormatsSubject',\r\n cols: this.cols\r\n });\r\n });\r\n\r\n this.download.pipe(takeWhile(() => this.active)).subscribe(() => {\r\n this.table.exportCSV();\r\n });\r\n }\r\n\r\n private getDynamicColumns(item: any): string[] {\r\n if (!item) {\r\n return [];\r\n }\r\n const keys = Object.keys(item);\r\n return (\r\n keys\r\n // .filter(x => Array.isArray(item[x]))\r\n // .filter(x => Object.keys(item[x]).length > 1)\r\n // .filter(x => x !== 'Status')\r\n // .filter(x => x !== 'AutoCalculateAmount')\r\n // .filter(x => x !== 'Row_Version')\r\n // .filter(x => x !== 'updates')\r\n .filter(x => x !== 'id')\r\n .filter(x => item[x] !== undefined)\r\n // .filter(x => !(item[x] instanceof Date))\r\n // .filter(x => typeof item[x] === 'object')\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { DataServiceEntity } from '../../data-services/data-service.entity';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Table } from '../../shared/efaact-primeng.module';\r\nimport { IUserInfo } from '../../user-info';\r\nimport * as fromDataServices from '../../data-services';\r\n\r\n@Component({\r\n selector: 'ef-reconciliation-file-format',\r\n templateUrl: './reconciliation-file-format.component.html',\r\n styleUrls: ['./reconciliation-file-format.component.scss']\r\n})\r\nexport class ReconciliationFileFormatComponent implements OnInit {\r\n @Input()\r\n public items: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[];\r\n @Output() FieldSelected =\r\n new ReplaySubject(\r\n 1\r\n );\r\n @Output() GroupSelected = new ReplaySubject(1);\r\n @Output() RowReorder = new ReplaySubject<\r\n fromDataServices.Reconciliation.Fields.ReconciliationFieldModel[]\r\n >(1);\r\n @ViewChild('fileFormat', { static: true }) table: Table;\r\n protected editing: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel =\r\n {} as any;\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit(): void {\r\n this.RowReorder.next(this.items);\r\n }\r\n onRowReorderHandler($event) {\r\n this.RowReorder.next(this.table.value);\r\n }\r\n onRowEditSave(\r\n item: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel\r\n ) {\r\n this.log.verbose({\r\n type: 'ReconciliationFileFormatComponent:onRowEditSave',\r\n item\r\n });\r\n this.FieldSelected.next(item);\r\n if (item.PropertyType.toLocaleLowerCase() === 'group') {\r\n this.GroupSelected.next();\r\n }\r\n }\r\n\r\n shouldDisable = (\r\n item: fromDataServices.Reconciliation.Fields.ReconciliationFieldModel\r\n ) => {\r\n switch (item.PropertyName) {\r\n case 'QBPayrollAmount':\r\n return this.items.some(\r\n i =>\r\n i.PropertyName === 'EmployeeWorkDate' &&\r\n i.InUse === true\r\n );\r\n break;\r\n case 'EmployeeWorkDate':\r\n return this.items.some(\r\n i =>\r\n i.PropertyName === 'QBPayrollAmount' &&\r\n i.InUse === true\r\n );\r\n break;\r\n\r\n default:\r\n return false;\r\n }\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { filter, takeWhile } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Calendar, SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-reconciliation-filters',\r\n templateUrl: './reconciliation-filters.component.html',\r\n styleUrls: ['./reconciliation-filters.component.scss']\r\n})\r\nexport class ReconciliationFiltersComponent implements OnInit, OnDestroy {\r\n @Input() templates: SelectItem[];\r\n private PayPeriodDatesSubject = new ReplaySubject(1);\r\n private _payPeriodDates: SelectItem[];\r\n @Input() public set payPeriodDates(value: SelectItem[]) {\r\n this._payPeriodDates = value;\r\n this.PayPeriodDatesSubject.next(value);\r\n }\r\n public get payPeriodDates(): SelectItem[] {\r\n return this._payPeriodDates;\r\n }\r\n @Input() public set userInfo(value: IUserInfo) {\r\n this.UserInfoSubject.next(value);\r\n if (value) {\r\n this.formGroup.controls['ReconDates'].setValue([\r\n value.PrevPayPeriodStart,\r\n value.PrevPayPeriodEnd\r\n ]);\r\n }\r\n }\r\n @Input() showFilterDates = false;\r\n @Input() showPayPeriods = false;\r\n @Input() showTemplates = false;\r\n @Output() public DateRangeSelected = new ReplaySubject(1);\r\n @Output() public TemplateSelected = new ReplaySubject(1);\r\n @Output() public Memorize = new ReplaySubject(1);\r\n @ViewChild('filterDates', { static: true }) filterDates: Calendar;\r\n formGroup: FormGroup;\r\n private active = true;\r\n private UserInfoSubject = new ReplaySubject(1);\r\n constructor(private log: LoggingService) {\r\n this.formGroup = new FormGroup({\r\n ReconDates: new FormControl(),\r\n ReconTemplate: new FormControl(),\r\n PayPeriod: new FormControl()\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupSubscriptions() {\r\n const form = this.formGroup.controls;\r\n form['ReconDates'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(dates => {\r\n this.log.verbose({\r\n type: 'ReconciliationFiltersComponent:ReconDates',\r\n dates\r\n });\r\n if (moment(dates[0]).isValid() && moment(dates[1]).isValid()) {\r\n this.DateRangeSelected.next(dates);\r\n this.filterDates.hideOverlay();\r\n }\r\n });\r\n form['PayPeriod'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(dates => {\r\n this.log.verbose({\r\n type: 'ReconciliationFiltersComponent:PayPeriod',\r\n dates\r\n });\r\n this.DateRangeSelected.next(dates);\r\n });\r\n form['ReconTemplate'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(template => {\r\n this.log.verbose({\r\n type: 'ReconciliationFiltersComponent:ReconTemplate',\r\n template\r\n });\r\n this.TemplateSelected.next(template);\r\n });\r\n combineLatest([this.UserInfoSubject, this.PayPeriodDatesSubject])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(([userinfo, payperiods]) => !!userinfo && !!payperiods)\r\n )\r\n .subscribe(([userinfo, payperiods]) => {\r\n const payPeriod = payperiods.find(x =>\r\n x.label.startsWith(\r\n moment(userinfo.PrevPayPeriodStart).format('MM/DD/YY')\r\n )\r\n );\r\n this.log.verbose({\r\n type: 'ReconciliationFiltersComponent:UserInfoSubject',\r\n payperiods,\r\n userinfo,\r\n payPeriod\r\n });\r\n if (payPeriod) {\r\n this.formGroup.controls['PayPeriod'].setValue(\r\n payPeriod.value\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef\r\n} from '../../shared/efaact-primeng.module';\r\n\r\n@Component({\r\n selector: 'ef-reconciliation-memorize-template-popup',\r\n templateUrl: './reconciliation-memorize-template-popup.component.html',\r\n styleUrls: ['./reconciliation-memorize-template-popup.component.scss']\r\n})\r\nexport class ReconciliationMemorizeTemplatePopupComponent implements OnInit {\r\n form: FormGroup;\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n private log: LoggingService,\r\n private config: DynamicDialogConfig\r\n ) {\r\n this.log.verbose({\r\n type: 'ReconciliationMemorizeTemplatePopupComponent::',\r\n config\r\n });\r\n this.form = new FormGroup({\r\n TemplateName: new FormControl(null, [\r\n Validators.required,\r\n this.forbiddenNameValidator(config.data.names)\r\n ])\r\n });\r\n }\r\n ngOnInit(): void {}\r\n forbiddenNameValidator(names: string[]): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const forbidden = names.findIndex(x => x === control.value) >= 0;\r\n return forbidden\r\n ? { forbiddenName: { value: `${control.value} is already in use.` } }\r\n : null;\r\n };\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IDirectReport } from '../../lookups';\r\nimport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef,\r\n SelectItem\r\n} from '../../shared/efaact-primeng.module';\r\nimport { IUser } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-reconciliation-share-template-popup',\r\n templateUrl: './reconciliation-share-template-popup.component.html',\r\n styleUrls: ['./reconciliation-share-template-popup.component.scss']\r\n})\r\nexport class ReconciliationShareTemplatePopupComponent implements OnInit {\r\n form: FormGroup;\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private log: LoggingService\r\n ) {\r\n this.form = new FormGroup({\r\n Users: new FormControl(null, Validators.required)\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { ReconciliationRouteModule } from './reconciliation.route';\r\nimport { ReconciliationContainerComponent } from './reconciliation-container/reconciliation-container.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { ReconciliationComponent } from './reconciliation/reconciliation.component';\r\nimport { ReconciliationFiltersComponent } from './reconciliation-filters/reconciliation-filters.component';\r\nimport { ReconciliationExportComponent } from './reconciliation-export/reconciliation-export.component';\r\nimport { ReconciliationFileFormatComponent } from './reconciliation-file-format/reconciliation-file-format.component';\r\nimport { ReconciliationShareTemplatePopupComponent } from './reconciliation-share-template-popup/reconciliation-share-template-popup.component';\r\nimport { ReconciliationMemorizeTemplatePopupComponent } from './reconciliation-memorize-template-popup/reconciliation-memorize-template-popup.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ReconciliationContainerComponent,\r\n ReconciliationComponent,\r\n ReconciliationFiltersComponent,\r\n ReconciliationExportComponent,\r\n ReconciliationFileFormatComponent,\r\n ReconciliationShareTemplatePopupComponent,\r\n ReconciliationMemorizeTemplatePopupComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n ReconciliationRouteModule,\r\n ]\r\n})\r\nexport class ReconciliationModule {}\r\n","import { UIRouterModule } from '@uirouter/angular';\r\nimport * as fromReconciliation from '.';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n UIRouterModule.forChild({\r\n // TODO: will having all these here mess with lazy loading of modules?\r\n // https://ui-router.github.io/guide/lazyloading\r\n states: [\r\n {\r\n // name: 'efcheckup.**',\r\n name: 'recon',\r\n url: '/recon',\r\n // loadChildren: () => import('./checkup.module').then(r => r.CheckupModule),\r\n data: { requiresAuth: true },\r\n component:\r\n fromReconciliation.ReconciliationContainerComponent\r\n },\r\n {\r\n name: 'recon.timecard',\r\n url: '/timecard',\r\n data: { requiresAuth: true },\r\n component:\r\n fromReconciliation.ReconciliationContainerComponent\r\n },\r\n {\r\n name: 'recon.fringe-labor',\r\n url: '/fringe-labor',\r\n data: { requiresAuth: true },\r\n component:\r\n fromReconciliation.ReconciliationContainerComponent\r\n },\r\n {\r\n name: 'recon.pay-period-labor',\r\n url: '/pay-period-labor',\r\n data: { requiresAuth: true },\r\n component:\r\n fromReconciliation.ReconciliationContainerComponent\r\n }\r\n ]\r\n })\r\n ]\r\n})\r\nexport class ReconciliationRouteModule {}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n\r\n@Component({\r\n selector: 'ef-reconciliation',\r\n templateUrl: './reconciliation.component.html',\r\n styleUrls: ['./reconciliation.component.scss']\r\n})\r\nexport class ReconciliationComponent implements OnInit {\r\n @Input() items: fromDataServices.Reconciliation.ReconciliationModel[];\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n}\r\n","export * from './registration-container';\r\nexport * from './registration-presenter';\r\nexport * from './registration.module';\r\n","export * from './registration-container.component';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n DataServiceError,\r\n EntityCollectionService,\r\n EntityServices\r\n} from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { catchError, filter, map, withLatestFrom } from 'rxjs/operators';\r\nimport * as fromUserInfo from '../../user-info/store';\r\nimport * as fromAuth from '../../auth/store';\r\nimport { RegistrationModel } from '../../data-services/registration';\r\nimport { StateService } from '@uirouter/core';\r\n\r\n@Component({\r\n selector: 'ef-registration-container',\r\n templateUrl: './registration-container.component.html',\r\n styleUrls: ['./registration-container.component.scss']\r\n})\r\nexport class RegistrationContainerComponent {\r\n dataService: EntityCollectionService;\r\n public needsRegistration = false;\r\n\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store,\r\n private ss: StateService\r\n ) {\r\n this.dataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Registration.entityName\r\n );\r\n this.dataService.clearCache();\r\n try {\r\n this.dataService.getByKey('').subscribe(\r\n () => {},\r\n (dataserviceerrorFn: () => DataServiceError) => {\r\n this.log.verbose({\r\n type: 'RegistrationContainerComponent',\r\n err: dataserviceerrorFn()\r\n });\r\n this.ss.go('dashboard');\r\n }\r\n );\r\n } catch (err) {\r\n this.log.verbose({\r\n type: 'RegistrationContainerComponent',\r\n err\r\n });\r\n this.ss.go('dashboard');\r\n }\r\n this.dataService.entities$\r\n .pipe(\r\n filter(x => x.length > 0),\r\n withLatestFrom(this.store.pipe(select(fromAuth.getAuth)))\r\n )\r\n .subscribe(([entities, auth]) => {\r\n const registration = entities.find(\r\n x => x.CustomerId === auth.CustomerID\r\n ) as RegistrationModel;\r\n this.needsRegistration =\r\n registration?.NeedsRegistration ?? false;\r\n this.log.verbose({\r\n type: 'RegistrationContainerComponent',\r\n entities,\r\n auth,\r\n registration,\r\n needsRegistration: this.needsRegistration\r\n });\r\n\r\n if (!this.needsRegistration) {\r\n this.ss.go('dashboard');\r\n }\r\n });\r\n }\r\n\r\n onSaveRegistration($event: {\r\n ProductCode: string;\r\n CustomerId: string;\r\n EIN: string;\r\n }) {\r\n this.log.verbose({\r\n type: 'RegistrationContainerComponent:onSaveRegistration',\r\n $event\r\n });\r\n this.dataService.update({ ...$event, id: $event.CustomerId });\r\n }\r\n}\r\n","export * from './registration-presenter.component';\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-registration-presenter',\r\n templateUrl: './registration-presenter.component.html',\r\n styleUrls: ['./registration-presenter.component.scss']\r\n})\r\nexport class RegistrationPresenterComponent {\r\n public RegistrationForm: FormGroup;\r\n @Output() SaveRegistration: EventEmitter<{\r\n ProductCode: string;\r\n CustomerId: string;\r\n EIN: string;\r\n }> = new EventEmitter();\r\n constructor(private log: LoggingService) {\r\n this.RegistrationForm = new FormGroup({\r\n ProductCode: new FormControl('', [Validators.required]),\r\n CustomerId: new FormControl('', [Validators.required]),\r\n EIN: new FormControl('', [Validators.required])\r\n });\r\n }\r\n\r\n onSubmit($event: { ProductCode: string; CustomerId: string; EIN: string }) {\r\n this.log.verbose({ type: 'RegistrationPresenterComponent', $event });\r\n this.SaveRegistration.emit($event);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RegistrationPresenterComponent } from './registration-presenter/registration-presenter.component';\r\nimport { RegistrationContainerComponent } from './registration-container/registration-container.component';\r\nimport { RegistrationRouteModule } from './registration.route';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n RegistrationPresenterComponent,\r\n RegistrationContainerComponent\r\n ],\r\n imports: [CommonModule, SharedModule, RegistrationRouteModule]\r\n})\r\nexport class RegistrationModule {}\r\n","import { UIRouterModule } from '@uirouter/angular';\r\nimport * as fromRegistration from '.';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n UIRouterModule.forChild({\r\n // TODO: will having all these here mess with lazy loading of modules?\r\n // https://ui-router.github.io/guide/lazyloading\r\n states: [\r\n {\r\n // name: 'efcheckup.**',\r\n name: 'register',\r\n url: '/register',\r\n // loadChildren: () => import('./checkup.module').then(r => r.CheckupModule),\r\n data: { requiresAuth: true },\r\n component: fromRegistration.RegistrationContainerComponent\r\n }\r\n ]\r\n })\r\n ]\r\n})\r\nexport class RegistrationRouteModule {}\r\n","export * from './store';\r\nexport * from './reminder-container';\r\nexport * from './reminder';\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport { flatDeep } from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Reminder } from '../store';\r\n\r\n@Component({\r\n selector: 'ef-reminder-add',\r\n templateUrl: './reminder-add.component.html',\r\n styleUrls: ['./reminder-add.component.scss']\r\n})\r\nexport class ReminderAddComponent implements OnInit {\r\n addReminderForm: FormGroup;\r\n @Input() reminderTypes: SelectItem[];\r\n @Input() reminderScheduleTypes: SelectItem[];\r\n @Input() recipients: IGroup[];\r\n @Input() reminderGroups: Array<{ id: number; groups: number[] }>;\r\n @Input() reminderReviewPeriods: SelectItem[];\r\n @Input() show = false;\r\n @Output() Save = new EventEmitter();\r\n @Output() Cancel = new EventEmitter();\r\n reminder: Reminder = {} as Reminder;\r\n constructor(\r\n private log: LoggingService,\r\n private confirmservice: UnsavedChangesService\r\n ) {\r\n this.addReminderForm = new FormGroup({\r\n Reminderinstanceid: new FormControl(-1),\r\n Reminderinstancename: new FormControl(\r\n this.reminder.Reminderinstancename,\r\n Validators.required\r\n ),\r\n Remindertypeid: new FormControl(\r\n this.reminder.Remindertypeid,\r\n Validators.required\r\n ),\r\n Reminderreviewperiod: new FormControl(\r\n this.reminder.Reminderreviewperiod,\r\n Validators.required\r\n ),\r\n Groupid: new FormControl(\r\n this.reminder.Groupid,\r\n Validators.required\r\n ),\r\n Notifysupervisor: new FormControl(\r\n this.reminder.Notifysupervisor || false\r\n ),\r\n ReminderScheduleID: new FormControl(\r\n this.reminder.ReminderScheduleID,\r\n Validators.required\r\n ),\r\n Scheduletime: new FormControl(\r\n this.reminder.Scheduletime,\r\n Validators.required\r\n ),\r\n Subject: new FormControl(\r\n this.reminder.Subject,\r\n Validators.required\r\n ),\r\n Comment: new FormControl(this.reminder.Comment, Validators.required)\r\n });\r\n }\r\n ngOnInit() {}\r\n onSave() {\r\n const form = this.addReminderForm;\r\n this.log.verbose({\r\n type: 'ReminderAddComponent:SaveNewReminder',\r\n value: form.value\r\n });\r\n form.markAsTouched();\r\n Object.keys(form.controls).forEach(key => {\r\n form.controls[key].markAsTouched();\r\n form.controls[key].markAsDirty();\r\n });\r\n form.updateValueAndValidity();\r\n if (form.valid) {\r\n this.Save.next(this.addReminderForm.value);\r\n this.addReminderForm.reset({ Reminderinstanceid: -1 });\r\n }\r\n }\r\n onCancel() {\r\n this.Cancel.emit();\r\n }\r\n\r\n groupsForReminderType(typeId: number) {\r\n const groups = flatDeep(\r\n this.reminderGroups.filter(y => y.id === typeId).map(x => x.groups)\r\n ) as number[];\r\n const results = this.recipients\r\n .filter(x => groups.includes(x.GroupID) || x.IsRole === false)\r\n .map(x => ({ label: x.GroupName, value: x.GroupID } as SelectItem));\r\n this.log.verbose({\r\n type: 'ReminderAddComponent:groupsForReminderType',\r\n typeId,\r\n groups,\r\n results\r\n });\r\n return results;\r\n }\r\n}\r\n","export * from './reminder-container.component';\r\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport { combineLatest, Observable, ReplaySubject, Subscriber } from 'rxjs';\r\nimport { filter, map, takeWhile, tap, withLatestFrom } from 'rxjs/operators';\r\nimport * as fromSettings from '../../company-setting/store';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport * as fromLoading from '../../shared/loading';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\nimport { Reminder } from '../store/reminder.model';\r\n@Component({\r\n selector: 'ef-reminder-container',\r\n templateUrl: './reminder-container.component.html',\r\n styleUrls: ['./reminder-container.component.scss']\r\n})\r\nexport class ReminderContainerComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n showAddReminder = false;\r\n public reminders$: Observable;\r\n public loading$: Observable;\r\n public reminderStatus$: Observable;\r\n public reminderScheduleTypes$: Observable;\r\n public reminderTypes$: Observable;\r\n public recipients$: Observable;\r\n public selectedError$: Observable;\r\n public selectedErrorWithStatus$: Observable;\r\n public reminderReviewPeriods$: Observable;\r\n public reminderSuccess$: Observable;\r\n public reminderGroups$: Observable<{ id: number; groups: number[] }>;\r\n private reminderGroupsSubscriber: Subscriber<{\r\n id: number;\r\n groups: number[];\r\n }>;\r\n active = true;\r\n showPopup = false;\r\n messages: string[];\r\n process$: Observable;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {\r\n this.setupObservables();\r\n }\r\n\r\n ngOnInit() {\r\n this.store.dispatch(fromSettings.getCompanySettings());\r\n this.store.dispatch(fromStore.getReminderReviewPeriods());\r\n this.store.dispatch(fromStore.getReminderTypes());\r\n this.store.dispatch(fromStore.getReminderScheduleTypes());\r\n this.store.dispatch(fromStore.getReminderRecipients());\r\n this.store.dispatch(fromStore.getReminders());\r\n this.reminderGroups$ = new Observable(s => {\r\n this.reminderGroupsSubscriber = s;\r\n\r\n this.setReminderGroups(s);\r\n\r\n return function unsubscribe() {};\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.setupSubscriptions();\r\n }\r\n setReminderGroups(subscriber) {\r\n subscriber.next([\r\n { id: 1, groups: [12027, 12028] },\r\n { id: 2, groups: [12027, 12028] },\r\n { id: 5, groups: [12027, 12028] },\r\n { id: 3, groups: [12024, 12025] },\r\n { id: 4, groups: [12024, 12025] }\r\n ]);\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.reminders$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n map(reminders =>\r\n clone(reminders).sort((a: Reminder, b: Reminder) =>\r\n a.Remindertypename.localeCompare(b.Remindertypename) === 0\r\n ? a.Reminderinstancename.localeCompare(\r\n b.Reminderinstancename\r\n )\r\n : a.Remindertypename.localeCompare(b.Remindertypename)\r\n )\r\n )\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.reminders$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'PayrollItemFeatureComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(\r\n ([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )[0]\r\n ),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'PayrollItemFeatureComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n this.reminderSuccess$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n map(reminders =>\r\n reminders.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n fromCommon.ResponseStatus.Success\r\n )\r\n ),\r\n filter(x => !!x && x.length > 0)\r\n );\r\n\r\n this.reminderScheduleTypes$ = this.store.pipe(\r\n select(fromStore.selectReminderScheduleTypes),\r\n map(items =>\r\n items.map(i => ({\r\n label: i.ReminderScheduleDesc,\r\n value: i.ReminderScheduleID\r\n }))\r\n )\r\n );\r\n this.reminderTypes$ = this.store.pipe(\r\n select(fromStore.selectReminderTypes),\r\n map(items =>\r\n items.map(i => ({\r\n label: i.Remindertypename,\r\n value: i.Remindertypeid\r\n }))\r\n )\r\n );\r\n this.recipients$ = this.store.pipe(\r\n select(fromStore.selectReminderRecipients),\r\n map(items =>\r\n items.map(item => ({\r\n ...item,\r\n GroupName: `${item.GroupName}${\r\n item.IsRole ? '' : ' (custom)'\r\n }`\r\n }))\r\n )\r\n // map(items =>\r\n // items.map(i => ({\r\n // label: i.GroupName,\r\n // value: i.GroupID\r\n // }))\r\n // )\r\n );\r\n\r\n this.loading$ = this.store.pipe(select(fromLoading.getLoading));\r\n this.reminderStatus$ = this.store.pipe(\r\n select(fromSettings.getReminderStatus),\r\n map(x =>\r\n x && (x.SettingValue === '1' || x.SettingValue === 1)\r\n ? true\r\n : false\r\n )\r\n );\r\n this.reminderReviewPeriods$ = this.store.pipe(\r\n select(fromStore.selectReminderReviewPeriods),\r\n map(items =>\r\n items.map(i => ({\r\n label: i.Reminderreviewperiodname,\r\n value: i.Reminderreviewperiod\r\n }))\r\n )\r\n );\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n setupSubscriptions() {\r\n // combineLatest([this.reminderStatus$, this.reminderSuccess$])\r\n this.reminderSuccess$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.reminderStatus$),\r\n tap(([status, reminders]) =>\r\n this.log.verbose({\r\n type: 'ReminderContainerComponent:updatedreminder',\r\n status,\r\n reminders\r\n })\r\n )\r\n )\r\n .subscribe(([reminders, status]) => {\r\n if (!status) {\r\n this.messages = [\r\n 'Reminders successfully saved. Remember to turn \"ON\" reminders using the toggle at the top of the page.'\r\n ];\r\n this.showPopup = true;\r\n }\r\n });\r\n }\r\n CancelNewReminder() {\r\n this.showAddReminder = false;\r\n }\r\n onSaveReminder($event: Reminder) {\r\n this.log.verbose({\r\n type: 'ReminderContainerComponent:onSaveReminder',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putReminders({ reminders: [$event] }));\r\n }\r\n onApplyAction($event: Reminder) {\r\n this.log.verbose({\r\n type: 'ReminderContainerComponent:onApplyAction',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromStore.removeReminder({ id: $event.Reminderinstanceid })\r\n );\r\n }\r\n onRunNow($event: Reminder) {\r\n this.store.dispatch(\r\n fromStore.runReminder({\r\n Reminderinstanceid: $event.Reminderinstanceid\r\n })\r\n );\r\n }\r\n onAddReminder(reminder: Reminder) {\r\n this.store.dispatch(fromStore.putReminders({ reminders: [reminder] }));\r\n this.showAddReminder = false;\r\n }\r\n onToggleReminders($event) {\r\n this.log.verbose({\r\n type: 'ReminderContainerComponent:onToggleReminders',\r\n $event\r\n });\r\n this.store.dispatch(\r\n fromSettings.putCompanySettings({\r\n settings: [\r\n {\r\n CtrlType: 'checkbox',\r\n SettingType: 'RmdrStatus',\r\n SettingValue: $event ? 1 : 0\r\n }\r\n ]\r\n })\r\n );\r\n }\r\n onShowError(event) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromReminder from './store/reminder.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { ReminderEffects } from './store/reminder.effects';\r\nimport { ReminderContainerComponent } from './reminder-container/reminder-container.component';\r\nimport { ReminderComponent } from './reminder/reminder.component';\r\nimport { ReminderRoute } from './reminder.route';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { ReminderAddComponent } from './reminder-add/reminder-add.component';\r\n\r\n@NgModule({\r\n declarations: [ReminderContainerComponent, ReminderComponent, ReminderAddComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(\r\n fromReminder.remindersFeatureKey,\r\n fromReminder.reducer\r\n ),\r\n EffectsModule.forFeature([ReminderEffects]),\r\n UIRouterModule.forChild({\r\n states: [ReminderRoute]\r\n })\r\n ]\r\n})\r\nexport class ReminderModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\nimport * as fromReminder from '.';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const ReminderRoute: Ng2StateDeclaration = {\r\n // name: 'Reminder.**'\r\n name: 'reminders',\r\n url: '/reminders',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.ReminderModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromReminder.ReminderContainerComponent\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { LoadingService } from '../shared/loading';\r\nimport * as fromRoot from '../store';\r\nimport { Store } from '@ngrx/store';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { Reminder } from './store/reminder.model';\r\nimport { Observable } from 'rxjs';\r\nimport { IGenericResponse } from '../shared';\r\nimport { ReminderType, ReminderScheduleType } from './store';\r\nimport * as moment from 'moment';\r\nimport { IGroup } from '../groups/IGroups';\r\nimport { ReminderReviewPeriodModel } from './store/reminder-review-period.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReminderService extends LoadingService {\r\n private uri = `${environment.apiLocation}/Reminder`;\r\n private reminderTypeUri = `${environment.apiLocation}/ReminderType`;\r\n private reminderScheduleTypeUri = `${environment.apiLocation}/ReminderScheduleType`;\r\n private reminderRecipientUri = `${environment.apiLocation}/Group`;\r\n private reminderReviewPeriodUri = `${environment.apiLocation}/ReminderReviewPeriod`;\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n public get(): Observable {\r\n super.Load();\r\n this.log.verbose({ type: 'ReminderService:get' });\r\n return this.http.get(this.uri).pipe(\r\n map(items =>\r\n items.map(item => ({\r\n ...item,\r\n Scheduletime: moment(item.Scheduletime).toDate()\r\n }))\r\n ),\r\n tap(() => super.Stop())\r\n );\r\n }\r\n public put(reminders: Reminder[]): Observable> {\r\n return this.http\r\n .put>(this.uri, {\r\n ReminderList: reminders\r\n })\r\n .pipe(\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(item => ({\r\n ...item,\r\n Scheduletime: moment(item.Scheduletime).toDate()\r\n }))\r\n })),\r\n tap(resp =>\r\n this.log.verbose({ type: 'ReminderService:put', resp })\r\n )\r\n );\r\n }\r\n public post(Reminderinstanceid: number): Observable> {\r\n return this.http\r\n .post>(this.uri, {\r\n Reminderinstanceid\r\n })\r\n .pipe(\r\n map(items =>\r\n items.map(item => ({\r\n ...item,\r\n Scheduletime: moment(item.Scheduletime).toDate()\r\n }))\r\n ),\r\n tap(resp =>\r\n this.log.verbose({ type: 'ReminderService:post', resp })\r\n )\r\n );\r\n }\r\n public delete(id: number): Observable> {\r\n return this.http.request>(\r\n 'DELETE',\r\n this.uri,\r\n {\r\n body: { EntityIDs: [id] }\r\n }\r\n );\r\n // return this.http.delete>(`${this.uri}/${id}`);\r\n }\r\n public getReminderTypes(): Observable {\r\n return this.http.get(this.reminderTypeUri);\r\n }\r\n public getReminderScheduleTypes(): Observable {\r\n return this.http.get(\r\n this.reminderScheduleTypeUri\r\n );\r\n }\r\n public getReminderRecipients(): Observable {\r\n return this.http.post(this.reminderRecipientUri, {\r\n Categoryid: 'REMINDER'\r\n });\r\n }\r\n public getReminderReviewPeriods(): Observable {\r\n return this.http.get(\r\n this.reminderReviewPeriodUri\r\n );\r\n }\r\n}\r\n","export * from './reminder.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport {\r\n flatDeep,\r\n IStatusMessage,\r\n Process,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { SelectItem, Table } from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav/IShowErrors';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ReminderAddComponent } from '../reminder-add/reminder-add.component';\r\nimport { Reminder } from '../store/reminder.model';\r\n\r\n@Component({\r\n selector: 'ef-reminder',\r\n templateUrl: './reminder.component.html',\r\n styleUrls: ['./reminder.component.scss']\r\n})\r\nexport class ReminderComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() items: Reminder[];\r\n @Input() reminderTypes: SelectItem[];\r\n @Input() reminderScheduleTypes: SelectItem[];\r\n @Input() recipients: IGroup[];\r\n @Input() reminderReviewPeriods: SelectItem[];\r\n @Input() reminderGroups: Array<{ id: number; groups: number[] }>;\r\n @Input() process: Process;\r\n @Input() reminderStatus: boolean;\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'PayrollItemComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n @Output() public ShowAdd = new EventEmitter();\r\n remindersToggleForm: FormGroup;\r\n public moment: any;\r\n public editing: Reminder = {} as Reminder;\r\n @Output() public ShowError = new ReplaySubject(1);\r\n @Output() SaveReminder = new ReplaySubject(1);\r\n @Output() ApplyAction = new EventEmitter();\r\n @Output() ToggleReminders = new ReplaySubject(1);\r\n @Output() AddReminder = new EventEmitter();\r\n @Output() RunNow = new EventEmitter();\r\n @ViewChild('dtReminder', { static: true }) reminderTable: Table;\r\n @ViewChild('addReminder', { static: true })\r\n addReminderComponent: ReminderAddComponent;\r\n cloned: { [i: number]: Reminder } = {};\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n private confirmservice: UnsavedChangesService\r\n ) {\r\n this.moment = moment;\r\n this.remindersToggleForm = new FormGroup({\r\n remindersEnabled: new FormControl()\r\n });\r\n }\r\n ngOnInit(): void {}\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngAfterViewInit() {\r\n this.remindersToggleForm.controls['remindersEnabled'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n this.ToggleReminders.next(value);\r\n });\r\n }\r\n\r\n onEditInit($event: { data: Reminder }) {\r\n const reminder = this.items.find(\r\n x => x.Reminderinstanceid === $event.data.Reminderinstanceid\r\n );\r\n this.log.verbose({\r\n type: 'ReminderComponent:onEditInit',\r\n $event,\r\n editing: this.editing,\r\n setting: reminder\r\n });\r\n this.editing = { ...$event.data };\r\n }\r\n onEditComplete($event: { data: Partial }) {\r\n this.log.verbose({\r\n type: 'ReminderComponent:onEditComplete',\r\n $event\r\n });\r\n const reminder = this.items.find(\r\n x => x.Reminderinstanceid === $event.data.Reminderinstanceid\r\n );\r\n\r\n const newVal = reminder;\r\n this.log.verbose({\r\n type: 'ReminderComponent:onEditComplete',\r\n $event,\r\n setting: reminder,\r\n editing: this.editing\r\n });\r\n if (newVal === this.editing) {\r\n // this.editing = null;\r\n return;\r\n }\r\n this.SaveReminder.next(newVal);\r\n }\r\n onRowEditInit(item: Reminder) {\r\n this.log.verbose({\r\n type: 'ReminderComponent:onRowEditInit',\r\n r: item,\r\n clonedReminders: this.cloned\r\n });\r\n this.cloned[item.Reminderinstanceid] = { ...item };\r\n this.editing = item;\r\n }\r\n onRowEditSave(item: Reminder) {\r\n this.log.verbose({\r\n type: 'ReminderComponent:onRowEditSave',\r\n r: item,\r\n clonedReminders: this.cloned\r\n });\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n this.SaveReminder.next(item);\r\n delete this.cloned[item.Reminderinstanceid];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: Reminder) {\r\n this.log.verbose({\r\n type: 'ReminderComponent:onRowEditCancel',\r\n r: item,\r\n clonedReminders: this.cloned\r\n });\r\n\r\n const index = this.items.findIndex(\r\n x => x.Reminderinstanceid === item.Reminderinstanceid\r\n );\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.Reminderinstanceid]);\r\n }\r\n this.items = [...this.items];\r\n\r\n delete this.cloned[item.Reminderinstanceid];\r\n delete this.editing;\r\n }\r\n confirm(emitter: EventEmitter, reminder: Reminder) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: 'Are you sure you want to delete this reminder?'\r\n })\r\n .then(() => {\r\n emitter.emit(reminder);\r\n })\r\n .catch(() => {});\r\n }\r\n onDelete(r: Reminder) {\r\n this.confirm(this.ApplyAction, r);\r\n this.log.verbose({\r\n type: 'ReminderComponent:onDelete',\r\n r\r\n });\r\n }\r\n onApplyAction(r: Reminder) {\r\n this.log.verbose({\r\n type: 'ReminderComponent:onApplyAction',\r\n r,\r\n clonedReminders: this.cloned\r\n });\r\n this.ApplyAction.next(r);\r\n }\r\n groupsForReminderType(typeId: number) {\r\n const groups = flatDeep(\r\n this.reminderGroups.filter(y => y.id === typeId).map(x => x.groups)\r\n ) as number[];\r\n const results = this.recipients\r\n .filter(x => groups.includes(x.GroupID) || x.IsRole === false)\r\n .map(x => ({ label: x.GroupName, value: x.GroupID } as SelectItem));\r\n this.log.verbose({\r\n type: 'ReminderComponent:groupsForReminderType',\r\n typeId,\r\n groups,\r\n reminderGroups: this.reminderGroups,\r\n recipients: this.recipients,\r\n results\r\n });\r\n return results;\r\n }\r\n}\r\n","export * from './reminder.actions';\r\nexport * from './reminder.reducer';\r\nexport * from './reminder.selectors';\r\nexport * from './reminder.effects';\r\nexport * from './reminder.model';\r\nexport * from './reminder-type.model';\r\nexport * from './reminder-schedule-type.model';\r\n","export interface ReminderScheduleType {\r\n ReminderScheduleID: number;\r\n ReminderScheduleType: string;\r\n ReminderScheduleDesc: string;\r\n}\r\n","export interface ReminderType {\r\n Remindertypeid: number;\r\n Remindertypename: string;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Reminder } from './reminder.model';\r\nimport { ReminderScheduleType } from './reminder-schedule-type.model';\r\nimport { ReminderType } from './reminder-type.model';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport { ReminderReviewPeriodModel } from './reminder-review-period.model';\r\n\r\nexport const loadReminders = createAction(\r\n '[Reminder/API] Load Reminders',\r\n props<{ reminders: Reminder[] }>()\r\n);\r\n\r\nexport const addReminder = createAction(\r\n '[Reminder/API] Add Reminder',\r\n props<{ reminder: Reminder }>()\r\n);\r\n\r\nexport const upsertReminder = createAction(\r\n '[Reminder/API] Upsert Reminder',\r\n props<{ reminder: Reminder }>()\r\n);\r\n\r\nexport const addReminders = createAction(\r\n '[Reminder/API] Add Reminders',\r\n props<{ reminders: Reminder[] }>()\r\n);\r\n\r\nexport const upsertReminders = createAction(\r\n '[Reminder/API] Upsert Reminders',\r\n props<{ reminders: Reminder[] }>()\r\n);\r\n\r\nexport const updateReminder = createAction(\r\n '[Reminder/API] Update Reminder',\r\n props<{ reminder: Update }>()\r\n);\r\n\r\nexport const updateReminders = createAction(\r\n '[Reminder/API] Update Reminders',\r\n props<{ reminders: Update[] }>()\r\n);\r\n\r\nexport const deleteReminder = createAction(\r\n '[Reminder/API] Delete Reminder',\r\n props<{ id: number }>()\r\n);\r\n\r\nexport const deleteReminders = createAction(\r\n '[Reminder/API] Delete Reminders',\r\n props<{ ids: number[] }>()\r\n);\r\n\r\nexport const clearReminders = createAction('[Reminder/API] Clear Reminders');\r\nexport const getReminders = createAction('[Reminder/API] Get Reminders');\r\nexport const putReminders = createAction(\r\n '[Reminder.API] Put Reminders',\r\n props<{ reminders: Reminder[] }>()\r\n);\r\nexport const runReminder = createAction(\r\n '[Reminder.API] Run Reminder',\r\n props<{ Reminderinstanceid: number }>()\r\n);\r\n\r\nexport const getReminderTypes = createAction(\r\n '[Reminder/API] Get Reminder Types'\r\n);\r\nexport const loadReminderTypes = createAction(\r\n '[Reminder/API] Load Reminder Types',\r\n props<{ reminderTypes: ReminderType[] }>()\r\n);\r\nexport const getReminderScheduleTypes = createAction(\r\n '[Reminder/API] Get Reminder Schedule Types'\r\n);\r\nexport const loadReminderScheduleTypes = createAction(\r\n '[Reminder/API] Load Reminder Schedule Types',\r\n props<{ reminderScheduleTypes: ReminderScheduleType[] }>()\r\n);\r\nexport const getReminderRecipients = createAction(\r\n '[Reminder/API] Get Reminder Recipients'\r\n);\r\nexport const loadReminderRecipients = createAction(\r\n '[Reminder/API] Load Reminder Recipients',\r\n props<{ recipients: IGroup[] }>()\r\n);\r\nexport const getReminderReviewPeriods = createAction(\r\n '[Reminder/API] Get Reminder Review Period Types'\r\n);\r\nexport const loadReminderReviewPeriods = createAction(\r\n '[Reminder/API] Load Reminder Review Period Types',\r\n props<{ reminderReviewPeriods: ReminderReviewPeriodModel[] }>()\r\n);\r\nexport const removeReminder = createAction(\r\n '[Reminder/API] Remove Reminder',\r\n props<{ id: number }>()\r\n);\r\nexport const putRemindersSuccess = createAction(\r\n '[Reminder/API] Put Reminder Success',\r\n props<{ reminders: Reminder[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport {\r\n concatMap,\r\n switchMap,\r\n map,\r\n catchError,\r\n withLatestFrom,\r\n filter\r\n} from 'rxjs/operators';\r\n\r\nimport { Store, select } from '@ngrx/store';\r\nimport { ReminderService } from '../reminder.service';\r\nimport * as ReminderActions from './reminder.actions';\r\nimport * as ReminderReducer from './reminder.reducer';\r\nimport * as ReminderSelectors from './reminder.selectors';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus, DisplayMessageMinimum } from '../../shared';\r\n\r\n@Injectable()\r\nexport class ReminderEffects {\r\n getReminders$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ReminderActions.getReminders),\r\n switchMap(() =>\r\n this.service.get().pipe(\r\n map(resp =>\r\n ReminderActions.loadReminders({ reminders: resp })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n getReminderTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ReminderActions.getReminderTypes),\r\n withLatestFrom(\r\n this.store.pipe(select(ReminderSelectors.selectReminderTypes))\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(() =>\r\n this.service.getReminderTypes().pipe(\r\n map(data =>\r\n ReminderActions.loadReminderTypes({\r\n reminderTypes: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getReminderScheduleTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ReminderActions.getReminderScheduleTypes),\r\n withLatestFrom(\r\n this.store.pipe(\r\n select(ReminderSelectors.selectReminderScheduleTypes)\r\n )\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(() =>\r\n this.service.getReminderScheduleTypes().pipe(\r\n map(data =>\r\n ReminderActions.loadReminderScheduleTypes({\r\n reminderScheduleTypes: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getReminderRecipients$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ReminderActions.getReminderRecipients),\r\n withLatestFrom(\r\n this.store.pipe(\r\n select(ReminderSelectors.selectReminderRecipients)\r\n )\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(() =>\r\n this.service.getReminderRecipients().pipe(\r\n map(data =>\r\n ReminderActions.loadReminderRecipients({\r\n recipients: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getReminderReviewPeriods$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ReminderActions.getReminderReviewPeriods),\r\n withLatestFrom(\r\n this.store.pipe(\r\n select(ReminderSelectors.selectReminderReviewPeriods)\r\n )\r\n ),\r\n filter(([, items]) => items.length === 0),\r\n switchMap(() =>\r\n this.service.getReminderReviewPeriods().pipe(\r\n map(data =>\r\n ReminderActions.loadReminderReviewPeriods({\r\n reminderReviewPeriods: data\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putRemindersStatus$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ReminderActions.putReminders),\r\n map(a =>\r\n ReminderActions.updateReminders({\r\n reminders: a.reminders.map(x => ({\r\n id: x.Remindertypeid,\r\n changes: {\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Loading'\r\n }\r\n }\r\n }))\r\n })\r\n )\r\n )\r\n );\r\n putReminders$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ReminderActions.putReminders),\r\n switchMap(a =>\r\n this.service.put(a.reminders).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n ReminderActions.putRemindersSuccess({\r\n reminders: resp.Items\r\n })\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n runReminders$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(ReminderActions.runReminder),\r\n switchMap(a =>\r\n this.service.post(a.Reminderinstanceid).pipe(\r\n map(resp => resp[0]),\r\n map(resp => ({\r\n StatusCode: resp.Status.StatusCode,\r\n ErrorMessages: [\r\n resp.Status.StatusCode >= ResponseStatus.Failed\r\n ? resp.Status.Message\r\n : ''\r\n ],\r\n WarningMessages: [\r\n resp.Status.StatusCode === ResponseStatus.Warning\r\n ? resp.Status.Message\r\n : ''\r\n ],\r\n Items: [resp],\r\n StatusType: null\r\n })),\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n ReminderActions.putRemindersSuccess({\r\n reminders: resp.Items\r\n })\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n putReminderSuccess$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ReminderActions.putRemindersSuccess),\r\n map(action =>\r\n ReminderActions.upsertReminders({\r\n reminders: action.reminders\r\n })\r\n )\r\n );\r\n });\r\n removeReminder$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ReminderActions.removeReminder),\r\n switchMap(action =>\r\n this.service.delete(action.id).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n ReminderActions.deleteReminder({\r\n id: action.id\r\n })\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus({\r\n ...resp,\r\n id: action.id\r\n })\r\n ),\r\n ReminderActions.updateReminder({\r\n reminder: {\r\n id: action.id,\r\n changes: {\r\n Status: {\r\n StatusCode: resp.StatusCode,\r\n Message:\r\n resp.ErrorMessages.reduce(\r\n (a, c) =>\r\n `${a}\\n${c}`,\r\n ''\r\n )\r\n }\r\n }\r\n }\r\n })\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private service: ReminderService,\r\n private store: Store\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\n\r\nexport interface Reminder {\r\n Comment: string;\r\n Groupid: number;\r\n Groupname: string;\r\n Notifysupervisor: boolean;\r\n ReminderScheduleID: number;\r\n Reminderinstanceid: number;\r\n Reminderinstancename: string;\r\n Reminderreviewperiod: number;\r\n Reminderreviewperiodname: string;\r\n Remindertypeid: number;\r\n Remindertypename: string;\r\n Scheduletime: Date;\r\n Sendemail: true;\r\n Sendmessage: true;\r\n Status: IStatusMessage;\r\n Subject: string;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { IGroup } from '../../groups/IGroups';\r\nimport { ReminderReviewPeriodModel } from './reminder-review-period.model';\r\nimport { ReminderScheduleType } from './reminder-schedule-type.model';\r\nimport { ReminderType } from './reminder-type.model';\r\nimport * as ReminderActions from './reminder.actions';\r\nimport { Reminder } from './reminder.model';\r\n\r\nexport const remindersFeatureKey = 'reminders';\r\n\r\nexport interface State extends EntityState {\r\n reminderTypes: ReminderType[];\r\n reminderReviewPeriods: ReminderReviewPeriodModel[];\r\n reminderScheduleTypes: ReminderScheduleType[];\r\n recipients: IGroup[];\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: Reminder) => model.Reminderinstanceid\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n reminderTypes: [],\r\n reminderReviewPeriods: [],\r\n reminderScheduleTypes: [],\r\n recipients: []\r\n});\r\n\r\nconst reminderReducer = createReducer(\r\n initialState,\r\n on(ReminderActions.addReminder, (state, action) =>\r\n adapter.addOne(action.reminder, state)\r\n ),\r\n on(ReminderActions.upsertReminder, (state, action) =>\r\n adapter.upsertOne(action.reminder, state)\r\n ),\r\n on(ReminderActions.addReminders, (state, action) =>\r\n adapter.addMany(action.reminders, state)\r\n ),\r\n on(ReminderActions.upsertReminders, (state, action) =>\r\n adapter.upsertMany(action.reminders, state)\r\n ),\r\n on(ReminderActions.updateReminder, (state, action) =>\r\n adapter.updateOne(action.reminder, state)\r\n ),\r\n on(ReminderActions.updateReminders, (state, action) =>\r\n adapter.updateMany(action.reminders, state)\r\n ),\r\n on(ReminderActions.deleteReminder, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(ReminderActions.deleteReminders, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(ReminderActions.loadReminders, (state, action) =>\r\n adapter.setAll(action.reminders, state)\r\n ),\r\n on(ReminderActions.loadReminderScheduleTypes, (state, action) => ({\r\n ...state,\r\n reminderScheduleTypes: action.reminderScheduleTypes\r\n })),\r\n on(ReminderActions.loadReminderTypes, (state, action) => ({\r\n ...state,\r\n reminderTypes: action.reminderTypes\r\n })),\r\n on(ReminderActions.loadReminderRecipients, (state, action) => ({\r\n ...state,\r\n recipients: action.recipients\r\n })),\r\n on(ReminderActions.clearReminders, state => adapter.removeAll(state)),\r\n on(ReminderActions.loadReminderReviewPeriods, (state, action) => ({\r\n ...state,\r\n reminderReviewPeriods: action.reminderReviewPeriods\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return reminderReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector, State } from '@ngrx/store';\r\nimport * as fromReminder from './reminder.reducer';\r\n\r\nexport const selectReminderState = createFeatureSelector(\r\n fromReminder.remindersFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromReminder.adapter.getSelectors(selectReminderState);\r\n\r\nexport const selectReminderTypes = createSelector(\r\n selectReminderState,\r\n (state: fromReminder.State) => state.reminderTypes\r\n);\r\nexport const selectReminderScheduleTypes = createSelector(\r\n selectReminderState,\r\n (state: fromReminder.State) => state.reminderScheduleTypes\r\n);\r\nexport const selectReminderRecipients = createSelector(\r\n selectReminderState,\r\n (state: fromReminder.State) => state.recipients\r\n);\r\nexport const selectReminderReviewPeriods = createSelector(\r\n selectReminderState,\r\n (state: fromReminder.State) => state.reminderReviewPeriods\r\n);\r\n","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { IReport } from '../report/IReport';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { State } from '../store/reducers';\r\nimport * as fromUser from '../user-info/store';\r\n@Component({\r\n selector: 'ef-report-list',\r\n templateUrl: './report-list.component.html',\r\n styleUrls: ['./report-list.component.scss']\r\n})\r\nexport class ReportListComponent implements OnInit, OnDestroy {\r\n private active = true;\r\n constructor(\r\n private store: Store,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n @Input() public reports: IReport[];\r\n\r\n ngOnInit(): void {\r\n this.store\r\n .pipe(select(fromUser.getUser))\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(user => {\r\n this.log.verbose({\r\n type: 'ReportListComponent:user-subscribe',\r\n user\r\n });\r\n this.reports = user.UserReportsMain;\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { IReport } from './IReport';\r\n\r\n@Component({\r\n selector: 'ef-report',\r\n templateUrl: './report.component.html',\r\n styleUrls: ['./report.component.css']\r\n})\r\nexport class ReportComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n @Input() public report: IReport;\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { filter, map, takeWhile, withLatestFrom } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromAuth from '../../auth/store/auth.reducer';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport { ScheduledDate } from '../../lookups/store/schedule-date.model';\r\nimport { Process } from '../../shared';\r\nimport { UITreeNode } from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport { IUserInfo } from '../../user-info';\r\nimport { ReportingComponent } from '../presenters/reporting.component';\r\nimport * as fromReports from '../store';\r\nimport { ReportParams } from '../store/report-params.model';\r\n\r\n@Component({\r\n selector: 'ef-reporting-feature',\r\n templateUrl: './reporting-feature.component.html',\r\n styleUrls: ['./reporting-feature.component.scss']\r\n})\r\nexport class ReportingFeatureComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private auth$: Observable;\r\n public maxReports$: Observable;\r\n public userInfo$: Observable;\r\n public reports$: Observable>;\r\n public scheduledDates$: Observable>;\r\n public directReports$: Observable>;\r\n public costCenters$: Observable>;\r\n public contracts$: Observable>;\r\n public process$: Observable;\r\n public selectedScheduledDate: ScheduledDate;\r\n private RunReportsSubject = new ReplaySubject<{\r\n reports: Array;\r\n queryparams: any;\r\n params: ReportParams;\r\n }>(1);\r\n private active = true;\r\n popup: Window;\r\n environment: any;\r\n contractDataService: EntityCollectionService;\r\n @ViewChild('reportingPresenter', { static: false })\r\n reportingPresenter: ReportingComponent;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.environment = environment;\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.setupObservables();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n // this.contractDataService.getAll();\r\n this.setupSubscriptions();\r\n }\r\n\r\n setupObservables() {\r\n this.reports$ = this.store.pipe(\r\n select(fromReports.selectAll),\r\n map(reports => {\r\n const groupsIds = Array.from(\r\n reports.reduce((a, c) => a.add(c.CatID), new Set())\r\n );\r\n const groups = groupsIds.reduce(\r\n (a, c) => [\r\n ...a,\r\n {\r\n label: reports.find(r => r.CatID === c)\r\n .CatDescription,\r\n rowNode: c,\r\n key: c\r\n }\r\n ],\r\n []\r\n );\r\n this.log.verbose({\r\n type: 'ReportingFeatureComponent:reports$',\r\n groups\r\n });\r\n groups.forEach(group => {\r\n group.children = reports\r\n .filter(r => r.CatID === group.rowNode)\r\n .map(r => ({\r\n label: `${r.RptNbr} - ${r.RptTitle}`,\r\n rowNode: r,\r\n key: r.RptNbr\r\n }));\r\n this.log.verbose({\r\n type: 'ReportingFeatureComponent:reports$',\r\n group\r\n });\r\n });\r\n this.log.verbose({\r\n type: 'ReportingFeatureComponent:reports$',\r\n groups\r\n });\r\n return groups;\r\n })\r\n );\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.process$ = this.store.pipe(\r\n select(fromUser.getUserProcessesMainByName, {\r\n ProcessName: 'Reports'\r\n })\r\n );\r\n this.directReports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n map(logins => logins.map(item => ({ ...item })))\r\n );\r\n this.costCenters$ = this.store.pipe(\r\n select(fromLookups.getUserGroupsLookup)\r\n );\r\n this.contracts$ = this.contractDataService.entities$;\r\n this.auth$ = this.store.pipe(select(fromAuth.getAuth));\r\n this.maxReports$ = this.store.pipe(select(fromUser.getMaxReports));\r\n this.scheduledDates$ = this.store.pipe(\r\n select(fromLookups.ScheduledDateSelectors.selectAll),\r\n filter(dates => !!dates && dates.length > 0)\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n this.RunReportsSubject.pipe(withLatestFrom(this.auth$, this.userInfo$))\r\n .pipe(takeWhile(x => this.active))\r\n .subscribe(([{ reports, queryparams, params }, auth, userInfo]) => {\r\n for (\r\n let i = 0;\r\n i < reports.length && i < userInfo.MaxNbrofReports;\r\n i++\r\n ) {\r\n const report = reports[i];\r\n\r\n this.store.dispatch(\r\n fromReports.runReport({\r\n report: {\r\n report,\r\n params: {\r\n ...params,\r\n EmployeeListID: userInfo.EmployeeListID,\r\n RptID: report.RptID\r\n },\r\n queryparams: {\r\n ...queryparams,\r\n User: userInfo.EmployeeListID,\r\n Cust: auth.CustomerID,\r\n GroupId: -1\r\n }\r\n }\r\n })\r\n );\r\n }\r\n });\r\n }\r\n onRunReports({\r\n reports,\r\n queryparams,\r\n params\r\n }: {\r\n reports: Array;\r\n queryparams: any;\r\n params: any;\r\n }) {\r\n this.log.verbose({\r\n type: 'ReportingFeatureComponent:onRunReports',\r\n reports,\r\n queryparams,\r\n params\r\n });\r\n this.RunReportsSubject.next({ reports, queryparams, params });\r\n }\r\n clear() {\r\n this.reportingPresenter.clearReports();\r\n }\r\n}\r\n","export * from './store';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ActionsSubject } from '@ngrx/store';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, ReplaySubject } from 'rxjs';\r\nimport { filter, startWith, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { LoginModel } from '../../data-services/manage-users/login.model';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IDirectReport } from '../../lookups';\r\nimport { ScheduledDate } from '../../lookups/store/schedule-date.model';\r\nimport { Process } from '../../shared';\r\nimport {\r\n Button,\r\n MenuItem,\r\n SelectItem,\r\n Tree,\r\n UITreeNode\r\n} from '../../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ActionTypes } from '../../store/actions';\r\nimport * as fromReports from '../store';\r\nimport { ReportParams } from '../store/report-params.model';\r\n@Component({\r\n selector: 'ef-reporting',\r\n templateUrl: './reporting.component.html',\r\n styleUrls: ['./reporting.component.scss']\r\n})\r\nexport class ReportingComponent\r\n implements OnInit, OnDestroy, AfterViewInit, OnChanges\r\n{\r\n private _process: Process;\r\n @Input() public set process(value: Process) {\r\n this._process = value;\r\n if (value) {\r\n this.urlDemo = this._process.UrlDemo;\r\n this.urlTip = this._process.UrlTip;\r\n this.UrlDocumentation = this._process.UrlDocumentation;\r\n }\r\n }\r\n public get process(): Process {\r\n return this._process;\r\n }\r\n @Input() reports: UITreeNode[];\r\n private _contracts: fromDataServices.Contract.Contract[];\r\n private ContractsSubject = new ReplaySubject<\r\n fromDataServices.Contract.Contract[]\r\n >(1);\r\n @Input() public set contracts(value: fromDataServices.Contract.Contract[]) {\r\n this._contracts = value;\r\n this.ContractsSubject.next(value);\r\n }\r\n public get contracts(): fromDataServices.Contract.Contract[] {\r\n return this._contracts;\r\n }\r\n public selectedContracts: fromDataServices.Contract.Contract[];\r\n private _directReports: IDirectReport[];\r\n private DirectReportsSubject = new ReplaySubject(1);\r\n @Input() public set directReports(value: Array) {\r\n this.log.verbose({\r\n type: 'ReportingComponent:directReports:set',\r\n value\r\n });\r\n this._directReports = value;\r\n this.DirectReportsSubject.next(value);\r\n }\r\n public get directReports(): IDirectReport[] {\r\n return this._directReports;\r\n }\r\n public selectedPeople: LoginModel[];\r\n @Input() public costCenters: Array;\r\n private ScheduledDatesSubject = new ReplaySubject>(1);\r\n private _scheduledDates: Array;\r\n @Input() public set scheduledDates(value: Array) {\r\n this.log.verbose({\r\n type: 'ReportingComponent:scheduledDates:set',\r\n value\r\n });\r\n this._scheduledDates = value;\r\n this.ScheduledDatesSubject.next(value);\r\n }\r\n public get scheduledDates(): Array {\r\n return this._scheduledDates;\r\n }\r\n private _selectedScheduledDate: ScheduledDate;\r\n @Input() public set selectedScheduledDate(value: ScheduledDate) {\r\n this._selectedScheduledDate = value;\r\n }\r\n public get selectedScheduledDate(): ScheduledDate {\r\n return this._selectedScheduledDate;\r\n }\r\n @Input() userEntryStartDate: Date;\r\n @Input() userEntryEndDate: Date;\r\n public scheduledDateItems: Array;\r\n public directReportItems: Array = [];\r\n public contractItems: Array;\r\n private _maxReports;\r\n @Input() public set maxReports(value: number) {\r\n if (value) {\r\n this._maxReports = value;\r\n }\r\n }\r\n public get maxReports(): number {\r\n return this._maxReports;\r\n }\r\n @Output() RunReports = new ReplaySubject<{\r\n reports: Array;\r\n queryparams: any;\r\n params: Partial;\r\n }>(1);\r\n @ViewChild('reportTree', { static: true }) reportTree: Tree;\r\n selectedReports: UITreeNode[];\r\n reportForm: FormGroup;\r\n public msgs: Array<{\r\n severity: string;\r\n summary: string;\r\n detail: string;\r\n }> = [];\r\n\r\n private active = true;\r\n public treestyle = {\r\n 'max-height': '60vh',\r\n height: '60vh',\r\n overflow: 'hidden',\r\n width: '100%',\r\n 'padding-bottom': '3rem'\r\n };\r\n public clearOptions: MenuItem[] = [\r\n {\r\n label: 'Filters',\r\n title: 'Clear Filters',\r\n command: () => {\r\n this.clearFilters();\r\n }\r\n },\r\n {\r\n label: 'Reports',\r\n title: 'Clear Reports',\r\n command: () => {\r\n this.clearReports();\r\n }\r\n }\r\n ];\r\n urlDemo: string;\r\n urlTip: string;\r\n UrlDocumentation: string;\r\n\r\n treeFilterContainer: any;\r\n filterResetBtn: any;\r\n\r\n constructor(\r\n private log: LoggingService,\r\n private dispatcher: ActionsSubject\r\n ) {\r\n this.reportForm = new FormGroup({\r\n useScheduledDates: new FormControl(false),\r\n reportDates: new FormControl(),\r\n contracts: new FormControl(),\r\n directReports: new FormControl(),\r\n scheduledDates: new FormControl(),\r\n showAllContracts: new FormControl(false),\r\n showAllPeople: new FormControl(false)\r\n });\r\n }\r\n ngOnInit() {\r\n this.setupSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngAfterViewInit() {\r\n this.log.verbose({\r\n type: 'ReportingComponent:ngAfterViewInit',\r\n selectedScheduledDate: this.selectedScheduledDate\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.log.verbose({\r\n type: 'ReportingComponent:ngOnChanges',\r\n changes\r\n });\r\n\r\n var controls = this.reportForm.controls;\r\n if (\r\n changes &&\r\n changes.userEntryStartDate &&\r\n changes.userEntryStartDate.currentValue &&\r\n changes.userEntryEndDate &&\r\n changes.userEntryEndDate.currentValue\r\n ) {\r\n controls['reportDates'].setValue([\r\n changes.userEntryStartDate.currentValue,\r\n changes.userEntryEndDate.currentValue\r\n ]);\r\n }\r\n }\r\n setupSubscriptions() {\r\n this.dispatcher\r\n .pipe(\r\n ofType(\r\n ActionTypes.Reset,\r\n ActionTypes.Logout,\r\n ActionTypes.Login\r\n ),\r\n takeWhile(() => this.active)\r\n )\r\n .subscribe(resp => {\r\n this.log.verbose({\r\n type: 'ReportingComponent:Logout'\r\n });\r\n this.selectedReports = [];\r\n this.reportForm.reset();\r\n this.reportForm.controls['useScheduledDates'].setValue(false);\r\n });\r\n\r\n this.ScheduledDatesSubject.pipe(\r\n takeWhile(() => this.active),\r\n filter(dates => !!dates)\r\n ).subscribe(dates => {\r\n this.log.verbose({\r\n type: 'ReportingComponent:ScheduledDatesSubject',\r\n dates\r\n });\r\n this.scheduledDateItems = dates.map(d => ({\r\n label: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YY'\r\n )} - ${moment(d.ScheduledEndDate).format('MM/DD/YY')} ${\r\n d.ScheduledDatePurpose\r\n }`,\r\n value: d.ScheduledDateID\r\n }));\r\n const selected = dates.find(d1 =>\r\n moment(d1.ScheduledEndDate).isSameOrAfter()\r\n );\r\n this.log.verbose({\r\n type: 'ReportingComponent:ScheduledDatesSubject',\r\n selected\r\n });\r\n\r\n if (!!selected) {\r\n setTimeout(() => {\r\n this.reportForm.controls['scheduledDates'].setValue(\r\n selected.ScheduledDateID\r\n );\r\n }, 0);\r\n }\r\n });\r\n\r\n combineLatest([\r\n this.DirectReportsSubject.pipe(filter(x => !!x && x.length > 0)),\r\n this.reportForm.controls['showAllPeople'].valueChanges.pipe(\r\n startWith(false)\r\n )\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(([reports, showAll]) =>\r\n this.log.verbose({\r\n type: 'ReportingComponent:combineLatest(DirectReportsSubject, showAllPeople)',\r\n reports,\r\n showAll\r\n })\r\n )\r\n )\r\n .subscribe(([reports, showall]) => {\r\n this.directReportItems = reports\r\n .filter(dr => (showall ? showall : dr.IsActive))\r\n .map(dr => ({\r\n ...dr,\r\n id: dr.EmployeeListID,\r\n SupervisorName: reports.find(\r\n x => x.EmployeeListID === dr.SupervisorListID\r\n )\r\n ? reports.find(\r\n x => x.EmployeeListID === dr.SupervisorListID\r\n ).EmployeeName\r\n : '',\r\n CostCenterName: this.costCenters.find(\r\n x => x.GroupID === dr.CostCenterID\r\n )\r\n ? this.costCenters.find(\r\n x => x.GroupID === dr.CostCenterID\r\n ).GroupName\r\n : '',\r\n Status: null,\r\n Row_Version: null\r\n }));\r\n });\r\n combineLatest([\r\n this.ContractsSubject,\r\n this.reportForm.controls['showAllContracts'].valueChanges.pipe(\r\n startWith(false)\r\n )\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([contracts, showall]) => {\r\n this.contractItems = contracts.filter(c =>\r\n showall ? showall : c.IsActive\r\n );\r\n });\r\n }\r\n onNodeSelect($event) {\r\n this.log.verbose({\r\n type: 'ReportingComponent:onNodeSelect',\r\n $event,\r\n reportTree: this.reportTree\r\n });\r\n }\r\n onSelectionChange($event: Array) {\r\n const reports = $event.filter(x => x.rowNode.RptID);\r\n this.log.verbose({\r\n type: 'ReportingComponent:onSelectionChange',\r\n $event,\r\n reports\r\n });\r\n if (reports.length > this.maxReports) {\r\n this.msgs = [\r\n {\r\n severity: 'warn',\r\n summary: 'Max Reports Exceeded',\r\n detail: `You have selected more than the maximum number of simultaneous reports. Only the first ${this.maxReports} will be run.`\r\n }\r\n ];\r\n this.treestyle = {\r\n 'max-height': '49vh',\r\n height: '60vh',\r\n overflow: 'hidden',\r\n width: '100%',\r\n 'padding-bottom': '3rem'\r\n };\r\n } else {\r\n this.msgs = [];\r\n this.treestyle = {\r\n 'max-height': '60vh',\r\n height: '60vh',\r\n overflow: 'hidden',\r\n width: '100%',\r\n 'padding-bottom': '3rem'\r\n };\r\n }\r\n }\r\n runReports($event: UITreeNode[]) {\r\n const reports = $event.filter(x => x.rowNode.RptID);\r\n const controls = this.reportForm.controls;\r\n this.log.verbose({\r\n type: 'ReportingComponent:runReports',\r\n reports,\r\n form: this.reportForm,\r\n selectedPeople: this.selectedPeople,\r\n selectedContracts: this.selectedContracts,\r\n dates: controls['reportDates'].value,\r\n scheduledDates: controls['scheduledDates'].value,\r\n useScheduledDates: controls['useScheduledDates'].value\r\n });\r\n let reportDates: Date[] = [new Date(), new Date()];\r\n if (controls['useScheduledDates'].value) {\r\n const scheduledDate = this.scheduledDates.find(\r\n x => x.ScheduledDateID === controls['scheduledDates'].value\r\n );\r\n if (scheduledDate) {\r\n reportDates[0] = scheduledDate.ScheduledStartDate;\r\n reportDates[1] = scheduledDate.ScheduledEndDate;\r\n }\r\n } else {\r\n reportDates = controls['reportDates'].value || reportDates;\r\n }\r\n const directReports = controls['directReports'].value as string[];\r\n const contractList = controls['contracts'].value as string[];\r\n const data = {\r\n reports: reports.map(x => x.rowNode),\r\n queryparams: {\r\n StartDate: moment(reportDates[0]).isValid()\r\n ? moment(reportDates[0]).format('YYYY-MM-DD')\r\n : null,\r\n EndDate: moment(reportDates[1]).isValid()\r\n ? moment(reportDates[1]).format('YYYY-MM-DD')\r\n : moment(reportDates[0]).isValid()\r\n ? moment(reportDates[0]).format('YYYY-MM-DD')\r\n : null\r\n },\r\n params: {\r\n DirectReportList: this.selectedPeople\r\n ? this.selectedPeople.map(x => ({\r\n id: x.EmployeeListID,\r\n EmployeeListID: x.EmployeeListID,\r\n EmployeeName: x.EmployeeName,\r\n Status: null,\r\n Row_Version: null\r\n }))\r\n : [],\r\n ContractList: this.selectedContracts\r\n }\r\n };\r\n // TODO: check if API wants this to be null or non-existent\r\n if (!data.queryparams.StartDate) {\r\n delete data.queryparams.StartDate;\r\n }\r\n this.RunReports.next(data);\r\n }\r\n onClear() {\r\n this.log.verbose({\r\n type: 'ReportingComponent:onClear'\r\n });\r\n this.clearFilters();\r\n this.clearReports();\r\n }\r\n clearReportFilter() {\r\n this.reportTree.resetFilter();\r\n }\r\n clearFilters() {\r\n this.log.verbose({\r\n type: 'ReportingComponent:clearFilters'\r\n });\r\n this.reportForm.reset({\r\n useScheduledDates: false,\r\n showAllContracts: false,\r\n showAllPeople: false\r\n });\r\n this.selectedPeople = [];\r\n this.selectedContracts = [];\r\n this.selectedScheduledDate = null;\r\n this.ScheduledDatesSubject.next(this.scheduledDates);\r\n }\r\n clearReports() {\r\n this.log.verbose({\r\n type: 'ReportingComponent:clearReports'\r\n });\r\n this.reportTree.resetFilter();\r\n this.selectedReports = [];\r\n this.reportForm.reset();\r\n //// this.reportForm.controls['useScheduledDates'].setValue(true);\r\n //this.selectedPeople = [];\r\n //this.selectedContracts = [];\r\n this.onSelectionChange([]);\r\n this.reportForm.controls['reportDates'].setValue([\r\n this.userEntryStartDate,\r\n this.userEntryEndDate\r\n ]);\r\n this.ScheduledDatesSubject.next(this._scheduledDates);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { ReportParams } from './store/report-params.model';\r\nimport { Report } from './store/report.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportService {\r\n private reportUri = `${environment.apiLocation}/Reports`;\r\n private paramsUri = `${environment.apiLocation}/ReportParms`;\r\n\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n public get(EmployeeListID: string): Observable> {\r\n return this.http\r\n .get>(`${this.reportUri}/${EmployeeListID}`)\r\n .pipe(\r\n // retryBackoff({\r\n // initialInterval: 1000,\r\n // maxRetries: 5\r\n // }),\r\n tap(data =>\r\n this.log.verbose({ type: 'ReportService:get', data })\r\n )\r\n );\r\n }\r\n public postParams(params: ReportParams): Observable {\r\n this.log.verbose({ type: 'ReportService:postParams', params });\r\n return this.http.post(this.paramsUri, params).pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'ReportService:postParams:response',\r\n x\r\n })\r\n )\r\n );\r\n // .toPromise()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReportingFeatureComponent } from './features/reporting-feature.component';\r\nimport { ReportingComponent } from './presenters/reporting.component';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport * as fromReports from './store';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ReportingFeatureComponent,\r\n ReportingComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n EfaactMaterialModule,\r\n SharedModule,\r\n StoreModule.forFeature(\r\n fromReports.reportsFeatureKey,\r\n fromReports.reducer\r\n ),\r\n EffectsModule.forFeature([fromReports.ReportEffects])\r\n ],\r\n exports: [\r\n ReportingFeatureComponent,\r\n ReportingComponent\r\n ]\r\n})\r\nexport class ReportingModule { }\r\n\r\n","export * from './report.actions';\r\nexport * from './report.reducer';\r\nexport * from './report.effects';\r\nexport * from './report.model';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Report } from './report.model';\r\nimport { ReportParams } from './report-params.model';\r\n\r\nexport const loadReports = createAction(\r\n '[Report/API] Load Reports',\r\n props<{ reports: Report[] }>()\r\n);\r\n\r\nexport const addReport = createAction(\r\n '[Report/API] Add Report',\r\n props<{ report: Report }>()\r\n);\r\n\r\nexport const upsertReport = createAction(\r\n '[Report/API] Upsert Report',\r\n props<{ report: Report }>()\r\n);\r\n\r\nexport const addReports = createAction(\r\n '[Report/API] Add Reports',\r\n props<{ reports: Report[] }>()\r\n);\r\n\r\nexport const upsertReports = createAction(\r\n '[Report/API] Upsert Reports',\r\n props<{ reports: Report[] }>()\r\n);\r\n\r\nexport const updateReport = createAction(\r\n '[Report/API] Update Report',\r\n props<{ report: Update }>()\r\n);\r\n\r\nexport const updateReports = createAction(\r\n '[Report/API] Update Reports',\r\n props<{ reports: Update[] }>()\r\n);\r\n\r\nexport const deleteReport = createAction(\r\n '[Report/API] Delete Report',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteReports = createAction(\r\n '[Report/API] Delete Reports',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearReports = createAction('[Report/API] Clear Reports');\r\n\r\nexport const getReports = createAction(\r\n '[Report/API] Get Reports',\r\n props<{ EmployeeListID: string }>()\r\n);\r\nexport const setReportParams = createAction(\r\n '[Report/API] Set Report Params',\r\n props<{ params: ReportParams }>()\r\n);\r\n\r\nexport const runReport = createAction(\r\n '[Report/API] Run Report',\r\n props<{\r\n report: {\r\n report: Report;\r\n params: ReportParams;\r\n queryparams: any;\r\n };\r\n }>()\r\n);\r\nexport const setPopupBlocker = createAction(\r\n '[Report/API] Set Popup Blocker',\r\n props<{ value: boolean }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, concatMap, filter, map, switchMap } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ReportService } from '../report.service';\r\nimport * as FeatureActions from './report.actions';\r\nimport * as fromReports from './report.actions';\r\n\r\n@Injectable()\r\nexport class ReportEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: ReportService,\r\n private store: Store,\r\n private log: LoggingService\r\n ) {}\r\n\r\n GetReports$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FeatureActions.getReports),\r\n switchMap(\r\n action =>\r\n this.service.get(action.EmployeeListID).pipe(\r\n map(data =>\r\n FeatureActions.loadReports({ reports: data })\r\n ),\r\n // retryBackoff(1000),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n // catchError(error => of(FeatureActions.actionFailure({ error }))))\r\n )\r\n );\r\n });\r\n\r\n setReportParams$ = createEffect(\r\n () => {\r\n return this.actions$.pipe(\r\n ofType(FeatureActions.setReportParams),\r\n map(a => this.service.postParams(a.params))\r\n );\r\n },\r\n { dispatch: false }\r\n );\r\n runReport$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FeatureActions.runReport),\r\n concatMap(action => {\r\n return this.service.postParams(action.report.params).pipe(\r\n map(() => {\r\n // .then(() => {\r\n const popup = window.open(\r\n `${environment.reportsLocation}?RptID=${\r\n action.report.report.RptID\r\n }&${Object.keys(action.report.queryparams).reduce(\r\n (a, c) =>\r\n `${a}&${c}=${action.report.queryparams[c]}`,\r\n ''\r\n )}`,\r\n `_${action.report.report.RptID}`\r\n );\r\n return fromReports.setPopupBlocker({\r\n value:\r\n !popup ||\r\n popup.closed ||\r\n typeof popup.closed === 'undefined'\r\n });\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n );\r\n })\r\n );\r\n });\r\n\r\n popupBlocker$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(FeatureActions.setPopupBlocker),\r\n filter(a => !!a.value),\r\n switchMap(() =>\r\n of(\r\n new fromShared.Errors.SetErrors([\r\n {\r\n Message:\r\n 'A pop-up block is turned on and preventing multiple reports from opening at once using additional browser tabs.
Perform a web search on \" allowing pop-ups from a specific site\" for your internet browser version and set https://reports.efaactcentral.com as a safe site.',\r\n StatusCode: ResponseStatus.Failed\r\n }\r\n ])\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","export interface Report {\r\n EmployeeListID: string;\r\n CatID: number;\r\n RptID: number;\r\n CatDescription: string;\r\n SeqNumber: number;\r\n RptNbr: number;\r\n RptTitle: string;\r\n GroupID: number;\r\n}\r\n","import {\r\n Action,\r\n createReducer,\r\n on,\r\n createFeatureSelector,\r\n createSelector\r\n} from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { Report } from './report.model';\r\nimport * as ReportActions from './report.actions';\r\n\r\nexport const reportsFeatureKey = 'reports';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n popupBlocker: boolean;\r\n}\r\n\r\n// have to specify function to get the uniqueid column since we're not using \"id\"\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (r: Report) => r.RptID\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n popupBlocker: false\r\n});\r\n\r\nconst reportReducer = createReducer(\r\n initialState,\r\n on(ReportActions.addReport, (state, action) =>\r\n adapter.addOne(action.report, state)\r\n ),\r\n on(ReportActions.upsertReport, (state, action) =>\r\n adapter.upsertOne(action.report, state)\r\n ),\r\n on(ReportActions.addReports, (state, action) =>\r\n adapter.addMany(action.reports, state)\r\n ),\r\n on(ReportActions.upsertReports, (state, action) =>\r\n adapter.upsertMany(action.reports, state)\r\n ),\r\n on(ReportActions.updateReport, (state, action) =>\r\n adapter.updateOne(action.report, state)\r\n ),\r\n on(ReportActions.updateReports, (state, action) =>\r\n adapter.updateMany(action.reports, state)\r\n ),\r\n on(ReportActions.deleteReport, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(ReportActions.deleteReports, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(ReportActions.loadReports, (state, action) =>\r\n adapter.setAll(action.reports, state)\r\n ),\r\n on(ReportActions.clearReports, state => adapter.removeAll(state)),\r\n on(ReportActions.setPopupBlocker, (state, action) => ({\r\n ...state,\r\n popupBlocker: action.value\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return reportReducer(state, action);\r\n}\r\nexport const reportState = createFeatureSelector(reportsFeatureKey);\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = adapter.getSelectors(reportState);\r\n\r\nexport const getPopupBlocker = createSelector(reportState, x => x.popupBlocker);\r\n","import { Injector } from '@angular/core';\r\nimport { EntityServices } from '@ngrx/data';\r\nimport { Store } from '@ngrx/store';\r\nimport { Category, UIRouter } from '@uirouter/core';\r\n// import { Visualizer } from '@uirouter/visualizer';\r\nimport { environment } from '../environments/environment';\r\n// import { googleAnalyticsHook } from './util/ga';\r\nimport { routerHooks } from './router.hooks';\r\nimport { LoggingService } from './shared/services/logging/logging.service';\r\n\r\nexport function routerConfigFn(router: UIRouter, injector: Injector) {\r\n const log = injector.get(LoggingService);\r\n log.verbose('routerConfigFn');\r\n const store = injector.get(Store) as any;\r\n const transitionService = router.transitionService;\r\n const entityServices = injector.get(EntityServices);\r\n routerHooks(transitionService, log, store, entityServices);\r\n // googleAnalyticsHook(transitionService);\r\n\r\n if (!environment.production) {\r\n router.trace.enable(Category.RESOLVE);\r\n router.trace.enable(Category.TRANSITION);\r\n router.trace.enable(Category.HOOK);\r\n router.trace.enable(Category.UIVIEW);\r\n router.trace.enable(Category.VIEWCONFIG);\r\n // router.plugin(Visualizer);\r\n }\r\n}\r\n","import { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport {\r\n HookMatchCriteria,\r\n Transition,\r\n TransitionHookFn,\r\n TransitionService\r\n} from '@uirouter/core';\r\nimport { combineLatest } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { AuthenticationService } from './auth/authentication.service';\r\nimport * as fromShared from './shared';\r\nimport { ILoggingService } from './shared/services/logging/logging.service';\r\nimport * as fromRoot from './store';\r\nimport * as fromDataServices from './data-services';\r\nimport * as fromAuth from './auth/store';\r\nimport * as fromUserInfo from './user-info';\r\nimport * as fromUserRole from './user-role';\r\nimport { RegistrationModel } from './data-services/registration';\r\n\r\n/**\r\n * This file contains a Transition Hook which protects a\r\n * route that requires authentication.\r\n *\r\n * This hook redirects to /login when both:\r\n * - The user is not authenticated\r\n * - The user is navigating to a state that requires authentication\r\n */\r\nexport function routerHooks(\r\n transitionService: TransitionService,\r\n log: ILoggingService,\r\n store: Store,\r\n entityServices: EntityServices\r\n) {\r\n const registrationDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Registration.entityName\r\n );\r\n // Matches if the destination state's data property has a truthy 'requiresAuth' property\r\n const requiresAuthCriteria: HookMatchCriteria = {\r\n to: state => state?.data && state.data.requiresAuth\r\n };\r\n\r\n const clearErrorsCriteria: HookMatchCriteria = {\r\n entering: '*'\r\n };\r\n\r\n // Function that returns a redirect for the current transition to the login state\r\n // if the user is not currently authenticated (according to the AuthService)\r\n\r\n const redirectToLogin: TransitionHookFn = (transition: Transition) => {\r\n const authService: AuthenticationService = transition\r\n .injector()\r\n .get(AuthenticationService);\r\n // log.verbose({\r\n // type: 'routerHooks:redirectToLogin',\r\n // authenticated: authService.isAuthenticated()\r\n // });\r\n const $state = transition.router.stateService;\r\n if (!authService.isAuthenticated()) {\r\n authService.openDialog();\r\n // return $state.target('main', undefined, { location: false });\r\n }\r\n };\r\n\r\n const clearErrors: TransitionHookFn = (transition: Transition) => {\r\n // log.verbose({ type: 'routerHooks:clearErrors', transition });\r\n store.dispatch(new fromShared.Errors.ClearErrors());\r\n };\r\n\r\n const hasAccess: TransitionHookFn = (t: Transition) => {\r\n combineLatest([\r\n store.pipe(select(fromUserInfo.getUserProcessCategories)),\r\n store.pipe(select(fromUserInfo.getUserProcessesMain))\r\n ])\r\n .pipe(take(1))\r\n .subscribe(upc => {\r\n const processes: fromShared.Process[] = upc[0]\r\n .reduce(\r\n (a, c) => a.concat(c.UserProcesses),\r\n [] as fromShared.Process[]\r\n )\r\n .concat([\r\n {\r\n ProcessID: 0,\r\n ProcessName: 'Main',\r\n RouteName: 'Main',\r\n ProcessDesc: '',\r\n ProcessTitle: ''\r\n },\r\n {\r\n ProcessID: -1,\r\n ProcessName: 'Receipts',\r\n RouteName: 'receipt',\r\n ProcessDesc: '',\r\n ProcessTitle: ''\r\n },\r\n {\r\n ProcessID: -2,\r\n ProcessName: 'Attachment',\r\n RouteName: 'attachment',\r\n ProcessDesc: '',\r\n ProcessTitle: ''\r\n },\r\n {\r\n ProcessID: -3,\r\n ProcessName: 'Dashboard',\r\n RouteName: 'dashboard',\r\n ProcessDesc: '',\r\n ProcessTitle: ''\r\n },\r\n {\r\n ProcessID: -4,\r\n ProcessName: 'qbrevoke',\r\n RouteName: 'qbrevoke',\r\n ProcessDesc: 'Revoke QuickBooks access',\r\n ProcessTitle: 'Revoke QuickBooks Access'\r\n },\r\n {\r\n ProcessID: -5,\r\n ProcessName: 'quickbooksauth',\r\n RouteName: 'quickbooksauth',\r\n ProcessDesc: '',\r\n ProcessTitle: ''\r\n },\r\n {\r\n ProcessID: -6,\r\n ProcessName: 'accessgranted',\r\n RouteName: 'quickbooks.accessgranted',\r\n ProcessDesc: 'Access Granted',\r\n ProcessTitle: 'Access Granted'\r\n },\r\n {\r\n ProcessID: -7,\r\n ProcessName: 'register',\r\n RouteName: 'register',\r\n ProcessDesc: 'Registration',\r\n ProcessTitle: 'Registration'\r\n },\r\n {\r\n ProcessID: -8,\r\n ProcessName: 'Period Processing',\r\n RouteName: 'period.reprocessing',\r\n ProcessDesc: 'Period Processing',\r\n ProcessTitle: 'Period Processing'\r\n },\r\n {\r\n ProcessID: -9,\r\n ProcessName: 'Task Timer',\r\n RouteName: 'tasktimer',\r\n ProcessDesc: 'Task Timer',\r\n ProcessTitle: 'Task Timer'\r\n },\r\n {\r\n ProcessID: -10,\r\n ProcessName: 'About',\r\n RouteName: 'about',\r\n ProcessDesc: 'About',\r\n ProcessTitle: 'About'\r\n },\r\n {\r\n ProcessID: -11,\r\n ProcessName: 'Employee Validation',\r\n RouteName: 'employeevalidation',\r\n ProcessDesc: 'Employee Validation',\r\n ProcessTitle: 'Employee Validation'\r\n },\r\n {\r\n ProcessID: -12,\r\n ProcessName: 'qbaccessrevoked',\r\n RouteName: 'qbaccessrevoked',\r\n ProcessDesc: 'QB Access Revoked',\r\n ProcessTitle: 'QB Access Revoked'\r\n }\r\n // {\r\n // ProcessID: -10,\r\n // ProcessName: 'Internal Admin',\r\n // RouteName: 'admin',\r\n // ProcessDesc: 'Internal Admin',\r\n // ProcessTitle: 'Internal Admin'\r\n // }\r\n // {\r\n // ProcessID: -99,\r\n // ProcessName: 'vendor',\r\n // RouteName: 'vendor',\r\n // ProcessDesc: 'Vendor',\r\n // ProcessTitle: 'Vendor'\r\n // }\r\n ])\r\n .concat(upc[1])\r\n .sort((a, b) => a.ProcessID - b.ProcessID);\r\n log.verbose({\r\n type: 'routerHooks:hasAccess',\r\n processes,\r\n upc,\r\n store,\r\n toState: t.targetState().name()\r\n });\r\n const process =\r\n processes &&\r\n processes.find(p => {\r\n if (p.RouteName) {\r\n return (\r\n p.RouteName.toLocaleLowerCase().replace(\r\n '/',\r\n '.'\r\n ) === t.targetState().name().toLocaleLowerCase()\r\n );\r\n }\r\n });\r\n log.verbose({\r\n type: 'routerHooks:hasAccess',\r\n process\r\n });\r\n // return !!process;\r\n // if (environment.production !== false) {\r\n if (!process) {\r\n t.router.stateService.go('main');\r\n }\r\n // }\r\n });\r\n };\r\n\r\n const needsRegistration: TransitionHookFn = (t: Transition) => {\r\n combineLatest([\r\n store.pipe(select(fromUserRole.getUserRoles)),\r\n store.pipe(select(fromAuth.getAuth)),\r\n registrationDataService.entities$\r\n ])\r\n .pipe(take(1))\r\n .subscribe(([roles, auth, registrations]) => {\r\n if (t.targetState().name().toLocaleLowerCase() !== 'register') {\r\n log.verbose({\r\n type: 'routerHooks:needsRegistration',\r\n roles,\r\n auth,\r\n registrations,\r\n store,\r\n toState: t.targetState().name()\r\n });\r\n if (\r\n roles.some(\r\n x =>\r\n x.RoleGroupID ===\r\n fromUserInfo.UserRoleEnum.Administrator\r\n )\r\n ) {\r\n log.verbose({\r\n type: 'routerHooks:needsRegistration: user is admin',\r\n roles\r\n });\r\n const registration = registrations.find(\r\n x => x.CustomerId === auth.CustomerID\r\n );\r\n log.verbose({\r\n type: 'routerHooks:needsRegistration: registration',\r\n registration\r\n });\r\n if (registration?.NeedsRegistration) {\r\n log.verbose({\r\n type: 'routerHooks:needsRegistration: registration needed',\r\n registration\r\n });\r\n t.abort();\r\n // t.router.stateService.go('register');\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n // Register the \"requires auth\" hook with the TransitionsService\r\n transitionService.onBefore(requiresAuthCriteria, redirectToLogin, {\r\n priority: 1\r\n });\r\n transitionService.onBefore(requiresAuthCriteria, needsRegistration, {\r\n priority: 10\r\n });\r\n transitionService.onEnter(requiresAuthCriteria, hasAccess, {\r\n priority: 11\r\n });\r\n transitionService.onEnter(clearErrorsCriteria, clearErrors, {\r\n priority: 12\r\n });\r\n\r\n transitionService.onEnter(\r\n { entering: '*' },\r\n (t: Transition) => {\r\n store\r\n .pipe(select(fromUserInfo.getUserProcessCategories), take(1))\r\n .subscribe(upc => {\r\n const processes: fromShared.Process[] = upc.reduce(\r\n (a, c) => a.concat(c.UserProcesses),\r\n []\r\n );\r\n log.verbose({\r\n type: 'routerHooks:process',\r\n toState: t.targetState().name(),\r\n processes,\r\n upc,\r\n store\r\n });\r\n const process =\r\n processes &&\r\n processes.find(p => {\r\n if (p.RouteName) {\r\n return (\r\n p.RouteName.toLocaleLowerCase().replace(\r\n '/',\r\n '.'\r\n ) ===\r\n t.targetState().name().toLocaleLowerCase()\r\n );\r\n }\r\n });\r\n if (process) {\r\n store.dispatch(fromShared.clearProcess());\r\n store.dispatch(fromShared.upsertProcess({ process }));\r\n }\r\n });\r\n },\r\n { priority: 99 }\r\n );\r\n\r\n transitionService.onError({ to: state => state?.name !== 'main' }, t => {\r\n // const authService: AuthenticationService = transition\r\n // .injector()\r\n // .get(AuthenticationService);\r\n // log.verbose({\r\n // type: 'routerHooks:onError',\r\n // authenticated: authService.isAuthenticated()\r\n // });\r\n // if (authService.isAuthenticated()) {\r\n // t.router.stateService.go('main');\r\n // }\r\n });\r\n}\r\n","import { Component, OnInit, OnDestroy, AfterViewInit, ViewChild, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ef-rows-per-page',\r\n templateUrl: './rows-per-page.component.html',\r\n styleUrls: ['./rows-per-page.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RowsPerPageComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class RowsPerPageComponent implements AfterViewInit, ControlValueAccessor {\r\n @ViewChild('pageCount', { static: true }) pageCount;\r\n private formControlChanged: Function;\r\n private formControlTouched: Function;\r\n ngAfterViewInit (): void {\r\n this.pageCount.registerOnChange(this.formControlChanged);\r\n this.pageCount.registerOnTouched(this.formControlTouched);\r\n }\r\n writeValue (obj: any): void {\r\n if (this.pageCount) {this.pageCount.writeValue(obj); }\r\n }\r\n registerOnChange (fn: any): void {\r\n this.formControlChanged = fn || function() {};\r\n }\r\n registerOnTouched (fn: any): void {\r\n this.formControlTouched = fn || function() {};\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.pageCount.setDisabledState(isDisabled);\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RowsPerPageComponent } from './rows-per-page.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n , MatSelectModule\r\n ]\r\n , declarations: [RowsPerPageComponent]\r\n , exports: [RowsPerPageComponent]\r\n})\r\nexport class RowsPerPageModule { }\r\n","export * from './store';\r\nexport * from './service-item-container';\r\nexport * from './service-item';\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Process } from '../../shared';\r\nimport { PostingType } from '../../lookups';\r\nimport { ServiceItem } from '../store/service-item.model';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { ResponseStatus, IStatusMessage } from '../../shared';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-posting-item',\r\n templateUrl: './posting-item.component.html',\r\n styleUrls: ['./posting-item.component.scss']\r\n})\r\nexport class PostingItemComponent implements OnInit {\r\n @Input() process: Process;\r\n @Input() loading = false;\r\n @Input() items: PostingType[];\r\n @Input() serviceItems: ServiceItem[];\r\n @Output() SavePostingType = new ReplaySubject(1);\r\n @Output() public ShowError = new EventEmitter();\r\n public get SelectServiceItems(): SelectItem[] {\r\n return this.serviceItems.map(x => ({\r\n label: x.ServiceItemDescription,\r\n value: x.SIListID\r\n }));\r\n }\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const row = document.getElementById(\r\n `row-${value.MsgEntityID.toString()}`\r\n );\r\n this.log.verbose({\r\n type: 'PostingItemComponent:selectedError',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n row.classList.add('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n row.classList.add('highlight-danger');\r\n }\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n\r\n cloned: { [i: number]: PostingType } = {};\r\n\r\n public editing: PostingType = {} as PostingType;\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit() {}\r\n onEditInit($event: { data: PostingType }) {\r\n const item = this.items.find(\r\n x => x.PostingType === $event.data.PostingType\r\n );\r\n this.log.verbose({\r\n type: 'PostingItemComponent:onEditInit',\r\n $event,\r\n editing: this.editing,\r\n item\r\n });\r\n this.editing = { ...$event.data };\r\n }\r\n onEditComplete($event: { data: Partial }) {\r\n this.log.verbose({\r\n type: 'PostingItemComponent:onEditComplete',\r\n $event\r\n });\r\n const item = this.items.find(x => x.ListID === $event.data.ListID);\r\n\r\n if (item === this.editing) {\r\n // this.editing = null;\r\n this.log.verbose({\r\n type: 'PostingItemComponent:onEditComplete',\r\n value: 'no change'\r\n });\r\n return;\r\n }\r\n this.SavePostingType.next(item);\r\n item.Description = this.serviceItems.findIndex(\r\n x => x.SIListID === item.ListID\r\n )\r\n ? this.serviceItems.find(x => x.SIListID === item.ListID)\r\n .ServiceItemDescription\r\n : '';\r\n this.log.verbose({\r\n type: 'PostingItemComponent:onEditComplete',\r\n $event,\r\n item,\r\n editing: this.editing\r\n });\r\n }\r\n onRowEditInit(item: PostingType) {\r\n this.log.verbose({\r\n type: 'PostingItemComponent:onRowEditInit',\r\n r: item,\r\n clonedItems: this.cloned\r\n });\r\n this.cloned[item.PostingType] = { ...item };\r\n this.editing = item;\r\n }\r\n onRowEditSave(item: PostingType) {\r\n this.log.verbose({\r\n type: 'PostingItemComponent:onRowEditSave',\r\n item,\r\n clonedItems: this.cloned\r\n });\r\n item.Status = {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n };\r\n this.SavePostingType.next(item);\r\n item.Description = this.serviceItems.findIndex(\r\n x => x.SIListID === item.ListID\r\n )\r\n ? this.serviceItems.find(x => x.SIListID === item.ListID)\r\n .ServiceItemDescription\r\n : '';\r\n delete this.cloned[item.PostingType];\r\n delete this.editing;\r\n }\r\n onRowEditCancel(item: PostingType) {\r\n this.log.verbose({\r\n type: 'PostingItemComponent:onRowEditCancel',\r\n item,\r\n clonedItems: this.cloned\r\n });\r\n\r\n const index = this.items.findIndex(\r\n x => x.PostingType === item.PostingType\r\n );\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.PostingType]);\r\n }\r\n this.items = [...this.items];\r\n\r\n delete this.cloned[item.PostingType];\r\n delete this.editing;\r\n }\r\n\r\n onStatusClick(item: PostingType) {\r\n this.ShowError.next({\r\n open: true,\r\n MsgEntityID: item.PostingType.toString()\r\n });\r\n }\r\n\r\n getServiceItemsForPosting(postingType: string) {\r\n return this.serviceItems\r\n .filter(x => x.Postingtype === postingType)\r\n .map(x => ({\r\n label: x.ServiceItemDescription,\r\n value: x.SIListID\r\n }));\r\n }\r\n}\r\n","export * from './service-item-container.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n share,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { ServiceItem } from '..';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { ServiceItemHistory } from '../../data-services/service-item/history';\r\nimport { PostingType } from '../../lookups';\r\nimport * as fromCommon from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { DialogService, Process, SelectItem, uniqBy } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport * as fromStore from '../store';\r\nimport { SyncDialogContainerComponent } from '../sync-dialog/sync-dialog-container/sync-dialog-container.component';\r\n@Component({\r\n selector: 'ef-service-item-container',\r\n templateUrl: './service-item-container.component.html',\r\n styleUrls: ['./service-item-container.component.scss']\r\n})\r\nexport class ServiceItemContainerComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n process$: Observable;\r\n serviceItems$: Observable;\r\n serviceItemsSelectItems$: Observable;\r\n sessionsSelectItems$: Observable;\r\n serviceItemHistories$: Observable;\r\n postingItems$: Observable;\r\n selectedError$: Observable;\r\n selectedErrorWithStatus$: Observable;\r\n userInfo$: Observable;\r\n serviceItemHistoryDataService: EntityCollectionService;\r\n active = true;\r\n historyDates: Date[] = [];\r\n SavePostingType = new ReplaySubject(1);\r\n ShowErrorSubject = new ReplaySubject(1);\r\n SelectItemSubject = new ReplaySubject(1);\r\n DatesChangedSubject = new ReplaySubject(1);\r\n SyncServiceitemsSubject = new ReplaySubject(1);\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n formAddErrors: {\r\n severity: string;\r\n detail: string;\r\n }[];\r\n syncFormGroup: FormGroup;\r\n moment: any;\r\n public tabHeight = '15vh';\r\n activeIndex: number[] = [0, 1];\r\n private dialogRef: fromCommon.DynamicDialogRef;\r\n // @ViewChild('divHistory', { static: true }) divHistory: ElementRef;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private renderer: Renderer2,\r\n private store: Store,\r\n private dialogService: DialogService\r\n ) {\r\n this.serviceItemHistoryDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ServiceItem.History.entityName\r\n );\r\n this.syncFormGroup = new FormGroup({\r\n SIListID: new FormControl(null, Validators.required),\r\n FromSession: new FormControl(null, Validators.required),\r\n syncType: new FormControl()\r\n // PIListID: new FormControl(null, Validators.required)\r\n });\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent::'\r\n });\r\n this.moment = moment;\r\n }\r\n\r\n ngOnInit() {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:ngOnInit'\r\n });\r\n\r\n this.store.dispatch(fromStore.getServiceItems());\r\n this.serviceItemHistoryDataService.clearCache();\r\n this.setupObservables();\r\n this.handleOnOpen([0, 1]);\r\n }\r\n ngAfterViewInit(): void {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:ngAfterViewInit'\r\n });\r\n\r\n setTimeout(() => {\r\n this.setupSubscriptions();\r\n }, 0);\r\n }\r\n ngOnDestroy() {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:ngOnDestroy'\r\n });\r\n this.active = false;\r\n if (this.dialogRef) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:setupObservables'\r\n });\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(\r\n select(fromUser.getUserInfo),\r\n filter(u => !!u)\r\n );\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n map(u => [u.FYStartDate, u.FYEndDate]),\r\n filter(([start, end]) => !!start && !!end)\r\n )\r\n .subscribe(([start, end]) => {\r\n this.historyDates[0] = start;\r\n this.historyDates[1] = end;\r\n this.onHistoryDatesChanged();\r\n });\r\n\r\n this.serviceItems$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n share(),\r\n tap(serviceItems =>\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:setupObservables:serviceItems',\r\n serviceItems\r\n })\r\n ),\r\n map(items =>\r\n clone(items).sort((a: ServiceItem, b: ServiceItem) =>\r\n a.ServiceItem.toLocaleLowerCase().localeCompare(\r\n b.ServiceItem.toLocaleLowerCase()\r\n )\r\n )\r\n )\r\n );\r\n this.serviceItemsSelectItems$ = this.serviceItems$.pipe(\r\n map(items =>\r\n items\r\n .map(i => ({ value: i.SIListID, label: i.ServiceItem }))\r\n .sort((a, b) =>\r\n a.label\r\n .toLocaleLowerCase()\r\n .localeCompare(b.label.toLocaleLowerCase())\r\n )\r\n )\r\n );\r\n this.postingItems$ = this.store.pipe(\r\n select(fromStore.selectServiceItemPostingTypes),\r\n map(items => clone(items) as PostingType[]),\r\n withLatestFrom(this.serviceItems$),\r\n map(([items, serviceItems]) =>\r\n items.map(x => ({\r\n ...x,\r\n ServiceItemDescription:\r\n serviceItems.findIndex(y => y.SIListID === x.ListID) >=\r\n 0\r\n ? serviceItems.find(y => y.SIListID === x.ListID)\r\n .ServiceItemDescription\r\n : ''\r\n }))\r\n )\r\n );\r\n this.serviceItemHistories$ =\r\n this.serviceItemHistoryDataService.entities$.pipe(\r\n map(items => clone(items))\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:selectedError$',\r\n selected\r\n })\r\n )\r\n );\r\n const errors$ = this.store.pipe(select(fromShared.Errors.getErrors));\r\n this.selectedErrorWithStatus$ = combineLatest([\r\n this.selectedError$,\r\n errors$,\r\n this.serviceItems$.pipe(filter(x => !!x))\r\n ]).pipe(\r\n tap(([selected, errors]) =>\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:errors$',\r\n errors,\r\n selected\r\n })\r\n ),\r\n map(([selected, errors]) =>\r\n errors.filter(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n )\r\n ),\r\n map(items => ({ ...items[0] })),\r\n tap(selected =>\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:errors$:filtered',\r\n selected\r\n })\r\n )\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:setupSubscriptions'\r\n });\r\n this.SavePostingType.pipe(\r\n takeWhile(() => this.active),\r\n tap(pt =>\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:SavePostingType',\r\n pt\r\n })\r\n ),\r\n withLatestFrom(this.serviceItems$)\r\n ).subscribe(x => {\r\n // this.log.verbose({\r\n // type: 'ServiceItemContainerComponent:SavePostingType',\r\n // item,\r\n // serviceItems\r\n // });\r\n // const si = serviceItems.find(x => x.SIListID === item.ListID);\r\n // this.store.dispatch(\r\n // fromStore.putServiceItems({\r\n // items: [{ ...si, Postingtype: item.PostingType }]\r\n // })\r\n // );\r\n });\r\n\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:this.process$, this.ShowErrorSubject'\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n combineLatest([\r\n this.SelectItemSubject,\r\n this.DatesChangedSubject.pipe(\r\n filter(x => Array.isArray(x) && x.length === 2),\r\n filter(([start, end]) => !!start && !!end),\r\n tap(x => this.log.verbose({ type: 'DatesChangedSubject', x }))\r\n )\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([item, dates]) => {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:SelectItemSubject,DatesChangedSubject',\r\n item,\r\n dates\r\n });\r\n this.serviceItemHistoryDataService.clearCache();\r\n if (item) {\r\n this.serviceItemHistoryDataService.getWithQuery({\r\n SIListIDs: item.map(x => ({ SIListID: x })) as any,\r\n StartDate: moment(dates[0]).format('MM/DD/YYYY'),\r\n EndDate: moment(dates[1]).format('MM/DD/YYYY')\r\n });\r\n }\r\n });\r\n\r\n this.SyncServiceitemsSubject.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.DatesChangedSubject),\r\n withLatestFrom(\r\n this.serviceItemHistories$.pipe(\r\n map(items =>\r\n items.map(item => ({\r\n label: `${moment(item.SessionStart).format(\r\n 'MM/DD/YYYY'\r\n )} - ${moment(item.SessionEnd).format(\r\n 'MM/DD/YYYY'\r\n )}`,\r\n value: `${moment(item.SessionStart).format(\r\n 'MM/DD/YYYY'\r\n )} - ${moment(item.SessionEnd).format(\r\n 'MM/DD/YYYY'\r\n )}`\r\n }))\r\n ),\r\n map(items => uniqBy(items, x => x.value))\r\n )\r\n )\r\n ).subscribe(([[syncType, dates], fromPeriods]) => {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:syncFormGroup',\r\n syncType,\r\n dates\r\n });\r\n this.dialogRef = this.dialogService.open(\r\n SyncDialogContainerComponent,\r\n {\r\n header: 'Sync with current rates', // default choice\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: true,\r\n modal: true,\r\n data: {\r\n syncType,\r\n dates,\r\n fromPeriods\r\n }\r\n }\r\n );\r\n this.dialogRef.onClose\r\n .pipe(withLatestFrom(this.SelectItemSubject), take(1))\r\n .subscribe(([result, selected]) => {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:syncFormGroup:dialogRef:onClose',\r\n result,\r\n selected\r\n });\r\n if (result) {\r\n this.onSaveServiceItemHistory({\r\n ServiceItems: selected.map(si => ({\r\n SIListID: si,\r\n ServiceItem: '',\r\n ServiceItemDesc: ''\r\n })),\r\n SessionStart: result.ToPeriod.split('-')[0].trim(),\r\n SessionEnd: result.ToPeriod.split('-')[1].trim(),\r\n FromStartDate:\r\n result.FromPeriod && result.FromPeriod.length\r\n ? result.FromPeriod.split('-')[0].trim()\r\n : null,\r\n FromEndDate:\r\n result.FromPeriod && result.FromPeriod.length\r\n ? result.FromPeriod.split('-')[1].trim()\r\n : null,\r\n SyncSI: true\r\n } as any);\r\n }\r\n });\r\n });\r\n }\r\n onSave($event: ServiceItem) {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:onSave',\r\n $event\r\n });\r\n this.store.dispatch(fromStore.putServiceItems({ items: [$event] }));\r\n }\r\n onSavePostingType($event: PostingType) {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:onSavePostingType',\r\n $event\r\n });\r\n // this.SavePostingType.next($event);\r\n }\r\n onSaveServiceItemHistory(item: ServiceItemHistory) {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:onSaveServiceItemHistory',\r\n item\r\n });\r\n this.serviceItemHistoryDataService.upsert(item);\r\n }\r\n onShowError($event) {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:onShowError',\r\n $event\r\n });\r\n this.ShowErrorSubject.next($event);\r\n }\r\n onHistoryDatesChanged() {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:onHistoryDatesChanged',\r\n historyDates: this.historyDates\r\n });\r\n this.DatesChangedSubject.next(this.historyDates);\r\n }\r\n handleOnOpen($event) {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:handleOnOpen',\r\n $event,\r\n activeIndex: this.activeIndex\r\n });\r\n const baseHeight = 68;\r\n\r\n this.tabHeight = `${\r\n baseHeight / ($event && $event.length ? $event.length : 1) - 1\r\n }vh`;\r\n }\r\n onSelect($event: ServiceItem[]) {\r\n this.log.verbose({\r\n type: 'ServiceItemContainerComponent:onSelect',\r\n $event\r\n });\r\n if ($event && Array.isArray($event)) {\r\n this.SelectItemSubject.next($event.map(x => x.SIListID));\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Output } from '@angular/core';\r\nimport clone from 'just-clone';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { environment } from '../../../environments/environment';\r\nimport { ServiceItemHistory } from '../../data-services/service-item/history';\r\nimport { EditGrid, ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n@Component({\r\n selector: 'ef-service-item-history',\r\n templateUrl: './service-item-history.component.html',\r\n styleUrls: ['./service-item-history.component.scss']\r\n})\r\nexport class ServiceItemHistoryComponent\r\n extends EditGrid\r\n implements OnInit\r\n{\r\n editing: ServiceItemHistory;\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n @Output() public Save = new ReplaySubject>(1);\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n ngOnInit(): void {}\r\n onRowEditInit(item: ServiceItemHistory) {\r\n this.cloned[item.id] = clone(item);\r\n this.editing = clone(item);\r\n this.log.verbose({\r\n type: 'ProjectBudgetComponent:onRowEditInit',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing\r\n });\r\n // this.Select.next(item);\r\n // this.selected = [];\r\n }\r\n onRowEditSave(item: ServiceItemHistory) {\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n this.Save.next(item);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n // this.selected = [];\r\n }\r\n onRowEditCancel(item: ServiceItemHistory) {\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n this.items = [...this.items];\r\n // this.selected = [];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { PostingItemComponent } from './posting-item/posting-item.component';\r\nimport { ServiceItemContainerComponent } from './service-item-container/service-item-container.component';\r\nimport { ServiceItemHistoryComponent } from './service-item-history/service-item-history.component';\r\nimport { ServiceItemRoute } from './service-item.route';\r\nimport { ServiceItemComponent } from './service-item/service-item.component';\r\nimport { ServiceItemEffects } from './store/service-item.effects';\r\nimport * as fromServiceItem from './store/service-item.reducer';\r\nimport { SyncDialogContainerComponent } from './sync-dialog/sync-dialog-container/sync-dialog-container.component';\r\nimport { SyncDialogPresenterComponent } from './sync-dialog/sync-dialog-presenter/sync-dialog-presenter.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ServiceItemComponent,\r\n ServiceItemContainerComponent,\r\n PostingItemComponent,\r\n ServiceItemHistoryComponent,\r\n SyncDialogContainerComponent,\r\n SyncDialogPresenterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(\r\n fromServiceItem.serviceItemsFeatureKey,\r\n fromServiceItem.reducer\r\n ),\r\n EffectsModule.forFeature([ServiceItemEffects]),\r\n UIRouterModule.forChild({\r\n states: [ServiceItemRoute]\r\n })\r\n ]\r\n})\r\nexport class ServiceItemModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\nimport * as fromServiceItem from '.';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const ServiceItemRoute: Ng2StateDeclaration = {\r\n // name: 'ServiceItem.**'\r\n name: 'serviceitemsetting',\r\n url: '/serviceitemsetting',\r\n // , loadChildren: () => import('./payroll-item.module').then(r => r.ServiceItemModule)\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromServiceItem.ServiceItemContainerComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { ServiceItem } from '.';\r\nimport { environment } from '../../environments/environment';\r\nimport { PostingType } from '../lookups';\r\nimport { Guid, IGenericResponse, IStatusMessage } from '../shared';\r\nimport { LoadingService } from '../shared/loading';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromRoot from '../store';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceItemService extends LoadingService {\r\n private uri = `${environment.apiLocation}/ServiceItemSetting`;\r\n private serviceItemPostingTypeUri = `${environment.apiLocation}/ServiceItemPostingType`;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n protected log: LoggingService,\r\n protected rootStore: Store\r\n ) {\r\n super(rootStore);\r\n }\r\n public get(): Observable {\r\n super.Load();\r\n return this.http\r\n .get(this.uri)\r\n .pipe(tap(() => super.Stop()));\r\n }\r\n public post(SIListIds: string[]): Observable {\r\n super.Load();\r\n return this.http\r\n .post(this.uri, { SIListId: SIListIds })\r\n .pipe(tap(() => super.Stop()));\r\n }\r\n public put(items): Observable> {\r\n // return getTestServiceError(17, items as ServiceItem[], 'SIListID');\r\n\r\n return this.http.put>(this.uri, {\r\n ServiceItemSettingList: items\r\n });\r\n }\r\n public getServiceItemPostingTypes(): Observable {\r\n return this.http.get(this.serviceItemPostingTypeUri).pipe(\r\n map(items =>\r\n items.map(x => ({\r\n id: Guid.newGuid(),\r\n PostingType: x.SIpostingtype as string,\r\n Description: x.SIpostingtypedesc as string,\r\n ListID: x.SIListID as string,\r\n Status: x.Status as IStatusMessage,\r\n Row_Version: null\r\n }))\r\n )\r\n );\r\n }\r\n}\r\n","export * from './service-item.component';\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport compare from 'just-compare';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus, SelectItem } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ServiceItem } from '../store/service-item.model';\r\n\r\n@Component({\r\n selector: 'ef-service-item',\r\n templateUrl: './service-item.component.html',\r\n styleUrls: ['./service-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ServiceItemComponent\r\n extends fromShared.Errors.DisplayErrors\r\n implements OnInit, OnChanges\r\n{\r\n @Input() serviceItemsSelectItems: SelectItem[] = [];\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n @Output() public Save = new ReplaySubject>(1);\r\n @Output() public SelectItem = new ReplaySubject(1);\r\n selected: ServiceItem[] = [];\r\n private editing: ServiceItem;\r\n constructor(private log: LoggingService) {\r\n super();\r\n }\r\n ngOnInit() {}\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n this.log.verbose({\r\n type: 'ServiceItemComponent:ngOnChanges',\r\n changes\r\n });\r\n if (changes.items) {\r\n this.selected =\r\n changes.items.currentValue && changes.items.currentValue.length\r\n ? [changes.items.currentValue[0]]\r\n : [];\r\n this.SelectItem.next(this.selected);\r\n }\r\n }\r\n onEditComplete($event: { data: ServiceItem }) {\r\n this.log.verbose({\r\n type: 'ServiceItemComponent:onEditComplete',\r\n $event\r\n });\r\n if (!compare($event.data, this.editing)) {\r\n const item = this.items.find(\r\n x => x.SIListID === $event.data.SIListID\r\n );\r\n if (!!item) {\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n this.onSave($event.data);\r\n }\r\n }\r\n }\r\n protected onSave(item: ServiceItem) {\r\n const _pi: ServiceItem = {\r\n ...item,\r\n Status: {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: ''\r\n }\r\n };\r\n this.log.verbose({\r\n type: 'ServiceItemComponent:onSave',\r\n pi: item,\r\n _pi\r\n });\r\n\r\n this.Save.next(_pi);\r\n }\r\n}\r\n","export * from './service-item.actions';\r\nexport * from './service-item.reducer';\r\nexport * from './service-item.selectors';\r\nexport * from './service-item.effects';\r\nexport * from './service-item.model';\r\n","import { Update } from '@ngrx/entity';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { PostingType } from '../../lookups';\r\nimport { ServiceItem } from './service-item.model';\r\n\r\nexport const loadServiceItems = createAction(\r\n '[ServiceItem/API] Load ServiceItems',\r\n props<{ serviceItems: ServiceItem[] }>()\r\n);\r\n\r\nexport const addServiceItem = createAction(\r\n '[ServiceItem/API] Add ServiceItem',\r\n props<{ serviceItem: ServiceItem }>()\r\n);\r\n\r\nexport const upsertServiceItem = createAction(\r\n '[ServiceItem/API] Upsert ServiceItem',\r\n props<{ serviceItem: ServiceItem }>()\r\n);\r\n\r\nexport const addServiceItems = createAction(\r\n '[ServiceItem/API] Add ServiceItems',\r\n props<{ serviceItems: ServiceItem[] }>()\r\n);\r\n\r\nexport const upsertServiceItems = createAction(\r\n '[ServiceItem/API] Upsert ServiceItems',\r\n props<{ serviceItems: ServiceItem[] }>()\r\n);\r\n\r\nexport const updateServiceItem = createAction(\r\n '[ServiceItem/API] Update ServiceItem',\r\n props<{ serviceItem: Update }>()\r\n);\r\n\r\nexport const updateServiceItems = createAction(\r\n '[ServiceItem/API] Update ServiceItems',\r\n props<{ serviceItems: Update[] }>()\r\n);\r\n\r\nexport const deleteServiceItem = createAction(\r\n '[ServiceItem/API] Delete ServiceItem',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteServiceItems = createAction(\r\n '[ServiceItem/API] Delete ServiceItems',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearServiceItems = createAction(\r\n '[ServiceItem/API] Clear ServiceItems'\r\n);\r\n\r\nexport const getServiceItems = createAction(\r\n '[ServiceItem/API] Get ServiceItems'\r\n);\r\n\r\nexport const postServiceItems = createAction(\r\n '[ServiceItem/API] Post ServiceItems',\r\n props<{ SIListIds: string[] }>()\r\n);\r\n\r\nexport const putServiceItems = createAction(\r\n '[ServiceItem/API] Put ServiceItems',\r\n props<{ items: Partial[] }>()\r\n);\r\n\r\nexport const getServiceItemPostingTypes = createAction(\r\n '[ServiceItem/API] Get Service Item Posting Types'\r\n);\r\n\r\nexport const loadServiceItemPostingTypes = createAction(\r\n '[ServiceItem/API] Load Service Item Posting Types',\r\n props<{ ServiceItemPostingTypes: PostingType[] }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { catchError, concatMap, map, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { ServiceItemService } from '../service-item.service';\r\nimport * as ServiceItemActions from './service-item.actions';\r\nimport * as fromStore from './service-item.reducer';\r\n\r\n@Injectable()\r\nexport class ServiceItemEffects {\r\n getServiceItems$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ServiceItemActions.getServiceItems),\r\n switchMap(a =>\r\n this.service.get().pipe(\r\n concatMap(resp => [\r\n ServiceItemActions.loadServiceItems({\r\n serviceItems: resp.map(item => ({\r\n ...item,\r\n id: item.SIListID\r\n }))\r\n }),\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapItemsToStatus(resp)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n postServiceItems$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ServiceItemActions.postServiceItems),\r\n switchMap(action =>\r\n this.service.post(action.SIListIds).pipe(\r\n concatMap(resp => [\r\n ServiceItemActions.loadServiceItems({\r\n serviceItems: resp.map(item => ({\r\n ...item,\r\n id: item.SIListID\r\n }))\r\n }),\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapItemsToStatus(resp)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putServiceItems$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ServiceItemActions.putServiceItems),\r\n switchMap(a =>\r\n this.service.put(a.items).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n ServiceItemActions.upsertServiceItems({\r\n serviceItems: resp.Items\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.SIListID.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n ServiceItemActions.upsertServiceItems({\r\n serviceItems: resp.Items\r\n })\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getServiceItemPostingTypes$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(ServiceItemActions.getServiceItemPostingTypes),\r\n // withLatestFrom(\r\n // this.store.pipe(\r\n // select(fromSelectors.selectServiceItemPostingTypes)\r\n // )\r\n // ),\r\n // filter(([action, items]) => !items || items.length === 0),\r\n switchMap(() =>\r\n this.service.getServiceItemPostingTypes().pipe(\r\n map(resp =>\r\n ServiceItemActions.loadServiceItemPostingTypes({\r\n ServiceItemPostingTypes: resp\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n constructor(\r\n private actions$: Actions,\r\n private service: ServiceItemService,\r\n private store: Store\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\nimport { DataServiceEntity } from '../../data-services/data-service.entity';\r\n\r\nexport interface ServiceItem extends DataServiceEntity {\r\n SIListID: string;\r\n ServiceItem: string;\r\n ServiceItemDescription: string;\r\n DisplaySIRate: boolean;\r\n IsLeaveRequestSI: boolean;\r\n Postingtype: string;\r\n Account: string;\r\n Serviceitemcost: number;\r\n Serviceitemprice: number;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { ServiceItem } from './service-item.model';\r\nimport * as ServiceItemActions from './service-item.actions';\r\nimport * as fromServiceItem from './service-item.reducer';\r\nimport { PostingType } from '../../lookups';\r\n\r\nexport const serviceItemsFeatureKey = 'serviceItems';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n ServiceItemPostingTypes: PostingType[];\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter<\r\n ServiceItem\r\n>({ selectId: (model: ServiceItem) => model.SIListID });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n ServiceItemPostingTypes: []\r\n});\r\n\r\nconst serviceItemReducer = createReducer(\r\n initialState,\r\n on(ServiceItemActions.addServiceItem, (state, action) =>\r\n adapter.addOne(action.serviceItem, state)\r\n ),\r\n on(ServiceItemActions.upsertServiceItem, (state, action) =>\r\n adapter.upsertOne(action.serviceItem, state)\r\n ),\r\n on(ServiceItemActions.addServiceItems, (state, action) =>\r\n adapter.addMany(action.serviceItems, state)\r\n ),\r\n on(ServiceItemActions.upsertServiceItems, (state, action) =>\r\n adapter.upsertMany(action.serviceItems, state)\r\n ),\r\n on(ServiceItemActions.updateServiceItem, (state, action) =>\r\n adapter.updateOne(action.serviceItem, state)\r\n ),\r\n on(ServiceItemActions.updateServiceItems, (state, action) =>\r\n adapter.updateMany(action.serviceItems, state)\r\n ),\r\n on(ServiceItemActions.deleteServiceItem, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(ServiceItemActions.deleteServiceItems, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(ServiceItemActions.loadServiceItems, (state, action) =>\r\n adapter.setAll(action.serviceItems, state)\r\n ),\r\n on(ServiceItemActions.clearServiceItems, state => adapter.removeAll(state)),\r\n on(ServiceItemActions.loadServiceItemPostingTypes, (state, action) => ({\r\n ...state,\r\n ServiceItemPostingTypes: action.ServiceItemPostingTypes\r\n }))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return serviceItemReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromServiceItem from './service-item.reducer';\r\n\r\nexport const selectServiceItemState =\r\n createFeatureSelector(\r\n fromServiceItem.serviceItemsFeatureKey\r\n );\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromServiceItem.adapter.getSelectors(selectServiceItemState);\r\n\r\nexport const selectServiceItemPostingTypes = createSelector(\r\n selectServiceItemState,\r\n (state: fromServiceItem.State) => state.ServiceItemPostingTypes\r\n);\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ServiceItem } from '../..';\r\nimport * as fromLookups from '../../../lookups';\r\nimport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef,\r\n SelectItem\r\n} from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging';\r\nimport * as fromStore from '../../store';\r\n@Component({\r\n selector: 'ef-sync-dialog-container',\r\n templateUrl: './sync-dialog-container.component.html',\r\n styleUrls: ['./sync-dialog-container.component.scss']\r\n})\r\nexport class SyncDialogContainerComponent implements OnInit {\r\n public SyncType: string;\r\n payperiodSelectItems$: Observable;\r\n scheduledDates$: Observable;\r\n serviceItems$: Observable;\r\n startDate: Date;\r\n endDate: Date;\r\n fromPeriods: SelectItem[];\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n private config: DynamicDialogConfig,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'SyncDialogContainerComponent', config });\r\n if (config && config.data) {\r\n this.SyncType = config.data.syncType;\r\n [this.startDate, this.endDate] = config.data.dates;\r\n this.fromPeriods = config.data.fromPeriods;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.scheduledDates$ = this.store.pipe(\r\n select(fromLookups.ScheduledDateSelectors.selectAll),\r\n filter(dates => !!dates && dates.length > 0)\r\n );\r\n this.payperiodSelectItems$ = this.scheduledDates$.pipe(\r\n filter(dates => !!dates && dates.length > 0),\r\n filter(() => !!this.startDate && !!this.endDate),\r\n map(dates =>\r\n dates\r\n .filter(d => d.ScheduledDateType === 'PPE')\r\n .filter(\r\n d =>\r\n moment(d.ScheduledStartDate).isBetween(\r\n moment(this.startDate),\r\n moment(this.endDate)\r\n ) ||\r\n moment(d.ScheduledEndDate).isBetween(\r\n moment(this.startDate),\r\n moment(this.endDate)\r\n )\r\n )\r\n .map(d => ({\r\n label: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YYYY'\r\n )} - ${moment(d.ScheduledEndDate).format(\r\n 'MM/DD/YYYY'\r\n )}`,\r\n value: `${moment(d.ScheduledStartDate).format(\r\n 'MM/DD/YYYY'\r\n )}-${moment(d.ScheduledEndDate).format('MM/DD/YYYY')}`\r\n }))\r\n )\r\n );\r\n this.serviceItems$ = this.store.pipe(\r\n select(fromStore.selectAll),\r\n filter(items => !!items && items.length > 0),\r\n map(items => clone(items))\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport * as $ from 'jquery';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { SelectItem } from '../../../shared';\r\n\r\n@Component({\r\n selector: 'ef-sync-dialog-presenter',\r\n templateUrl: './sync-dialog-presenter.component.html',\r\n styleUrls: ['./sync-dialog-presenter.component.scss']\r\n})\r\nexport class SyncDialogPresenterComponent\r\n implements OnInit, OnChanges, OnDestroy {\r\n @Input() FromPeriodSelectItems: SelectItem[];\r\n private _toPeriods: SelectItem[] = [];\r\n @Input() public set ToPeriodSelectItems(value: SelectItem[]) {\r\n this._toPeriods = value;\r\n }\r\n public get ToPeriodSelectItems(): SelectItem[] {\r\n return this._toPeriods.map(item => {\r\n return {\r\n label: item.label,\r\n value: item.value,\r\n disabled:\r\n this.syncFormGroup.controls['FromPeriod'].value ===\r\n item.value\r\n };\r\n });\r\n }\r\n @Output() onCancel: EventEmitter = new EventEmitter();\r\n @Output() onOk: EventEmitter = new EventEmitter();\r\n dropdownItemHeight = environment.dropdownItemHeight;\r\n syncFormGroup: FormGroup;\r\n private active = true;\r\n constructor() {\r\n this.syncFormGroup = new FormGroup({\r\n FromPeriod: new FormControl(null),\r\n ToPeriod: new FormControl(null, Validators.required),\r\n syncType: new FormControl('Quickbooks')\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n const controls = this.syncFormGroup.controls;\r\n controls['syncType'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n switch (value) {\r\n case 'Quickbooks':\r\n $('.p-dialog-title').text('Sync with current rates');\r\n controls['FromPeriod'].setValidators(null);\r\n break;\r\n case 'Session':\r\n $('.p-dialog-title').text('Sync with Processed Period');\r\n controls['FromPeriod'].setValidators(\r\n Validators.required\r\n );\r\n controls['ToPeriod'].setValue(null);\r\n break;\r\n default:\r\n }\r\n });\r\n controls['FromPeriod'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(value => {\r\n if (controls['ToPeriod'].value === value) {\r\n controls['ToPeriod'].setValue(null);\r\n }\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes.SyncType && changes.SyncType.currentValue) {\r\n this.syncFormGroup\r\n .get('syncType')\r\n .setValue(changes.SyncType.currentValue);\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n}\r\n","import { Component, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { ResponseStatus } from '../common/Interfaces';\r\nimport { DataServiceEntity } from '../data-services/data-service.entity';\r\nimport { DisplayErrors } from './errors-sidenav';\r\nimport { LoggingService } from './services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\nexport type CloneIndex = string | number;\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport class EditGrid>\r\n extends DisplayErrors\r\n implements OnChanges\r\n{\r\n public editing?: T = undefined;\r\n selected: any = null; // (T | undefined)[] | T;\r\n cloned: { [i in CloneIndex]: T } = {};\r\n private savedItem: T;\r\n @Output() SelectItem = new ReplaySubject(1);\r\n @Output() SaveItem = new ReplaySubject(1);\r\n @Output() DeleteItem = new ReplaySubject(1);\r\n @Output() CancelItem = new ReplaySubject(1);\r\n @Output() EditItem = new ReplaySubject(1);\r\n onRowEditInit(item: T) {\r\n log.verbose({ type: `EditGrid<${typeof this}>:onRowEditInit`, item });\r\n this.selected = [item];\r\n this.onRowSelect({ data: item });\r\n this.cloned[item.id] = { ...item };\r\n this.editing = item;\r\n this.EditItem.next(item);\r\n }\r\n onRowEditCancel(item: T) {\r\n log.verbose({\r\n type: `EditGrid<${typeof this}>:onRowEditCancel`,\r\n item\r\n });\r\n let index = this.items.findIndex(x => x.id === item.id);\r\n\r\n if (index >= 0) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n }\r\n index = this.items.findIndex(x => x.id === 'add');\r\n if (index >= 0) {\r\n this.items.splice(index, 1);\r\n }\r\n this.items = [...this.items];\r\n this.selected = [];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n this.CancelItem.next(item);\r\n }\r\n onRowEditSave(item: T) {\r\n log.verbose({\r\n type: `EditGrid<${typeof this}>:onRowEditSave`,\r\n item\r\n });\r\n item.Status = item.Status || { StatusCode: 0, Message: '' };\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n if ((item.isValid && item.isValid()) || !item.isValid) {\r\n this.SaveItem.next([item]);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n } else {\r\n item.Status.StatusCode = ResponseStatus.Error;\r\n item.Status.Message = 'Invalid';\r\n }\r\n }\r\n onRowSelect($event) {\r\n log.verbose({\r\n type: `EditGrid<${typeof this}>:onRowSelect`,\r\n $event,\r\n editing: this.editing,\r\n selected: this.selected\r\n });\r\n if (this.editing) {\r\n setTimeout(() => {\r\n this.selected = [this.editing];\r\n }, 0);\r\n } else {\r\n this.SelectItem.next($event.data);\r\n }\r\n }\r\n onRowEditDelete(item: T, index: number) {\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n\r\n this.DeleteItem.next([item]);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n return;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes && changes.items) {\r\n if (this.savedItem) {\r\n const idx = this.items.findIndex(\r\n item => item.id.toString() === this.savedItem.id.toString()\r\n );\r\n this.dataTable.scrollToVirtualIndex(idx);\r\n }\r\n }\r\n }\r\n trackById = (item: T) => item.id;\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\nimport { LoggingService } from './services/logging';\r\n\r\n@Directive({\r\n selector: '[stop-click-propagation]'\r\n})\r\nexport class StopClickPropagationDirective {\r\n constructor(private log: LoggingService) {}\r\n @HostListener('click', ['$event'])\r\n public onClick(event: any): void {\r\n this.log.verbose({\r\n type: 'StopClickPropagationDirective:onClick',\r\n event\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n public onMousedown(event: any): void {\r\n this.log.verbose({\r\n type: 'StopClickPropagationDirective:onMousedown',\r\n event\r\n });\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { Category } from '../../shared/category/category.model';\r\nimport * as fromShared from '../../shared/process';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { State } from '../../store/reducers';\r\nimport * as fromUser from '../../user-info/store';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CategoriesService implements OnDestroy {\r\n constructor(\r\n private store: Store,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {\r\n this.categories = new ReplaySubject>();\r\n\r\n // TODO: how to subscribe just to UserProcessCategories?\r\n this.store\r\n .pipe(select(fromUser.getUser))\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(user => {\r\n this.log.verbose({\r\n type: 'CategoriesService:user-subscribe',\r\n user\r\n });\r\n this.categories.next(user.UserProcessCategories);\r\n this._categories = user.UserProcessCategories;\r\n // this.categories = user.UserProcessCategories;\r\n this._processesMain = user.UserProcessesMain;\r\n });\r\n }\r\n private categories: ReplaySubject>;\r\n private _categories: Array;\r\n private _processesMain: Array;\r\n private active = true;\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n /**\r\n * getCategories\r\n */\r\n public getCategories(): Array {\r\n // will this get updated when categories get's updated? Probably need to convert to observable.\r\n return this._categories;\r\n }\r\n getProcessesMain(): Array {\r\n return this._processesMain;\r\n }\r\n\r\n public getCategory(catId: number): Category {\r\n return this._categories[catId - 1];\r\n }\r\n\r\n public getProcess(catId: number, procId: number): fromShared.Process {\r\n const category = this.getCategory(catId);\r\n this.log.debug({\r\n type: 'CategoriesService:getProcess',\r\n catId,\r\n procId,\r\n category\r\n });\r\n const process = category.UserProcesses.filter(\r\n i => i.ProcessID === procId\r\n )[0];\r\n this.log.debug({ type: 'CategoriesService:getProcess', process });\r\n return process;\r\n }\r\n public updateStoreProcess(process: fromShared.Process) {\r\n this.store.dispatch(fromShared.clearProcess());\r\n this.store.dispatch(fromShared.upsertProcess({ process }));\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Category } from '../category.model';\r\n\r\n@Component({\r\n selector: 'ef-category-detail',\r\n templateUrl: './category-detail.component.html',\r\n styleUrls: ['./category-detail.component.css']\r\n})\r\nexport class CategoryDetailComponent implements OnInit {\r\n @Input() public category: Category;\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n}\r\n","export * from './category-detail.component';\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Category } from '../category.model';\r\nimport { CategoriesService } from '../categories.service';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\n\r\n@Component({\r\n selector: 'ef-category-list',\r\n templateUrl: './category-list.component.html',\r\n styleUrls: ['./category-list.component.scss']\r\n})\r\nexport class CategoryListComponent implements OnInit, OnDestroy {\r\n private _categoryService: CategoriesService;\r\n public categories: Category[];\r\n\r\n constructor(private log: LoggingService, cs: CategoriesService) {\r\n log.debug({ type: 'CategoryListComponent:ctor' });\r\n this._categoryService = cs;\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n\r\n ngOnInit() {\r\n this.log.debug({ type: 'CategoryListComponent:ngOnInit' });\r\n this.categories = this._categoryService\r\n .getCategories()\r\n .filter(x => x.CategoryName);\r\n }\r\n}\r\n","export * from './category-list.component';\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Category } from './category.model';\r\n\r\n@Component({\r\n selector: 'ef-category',\r\n templateUrl: './category.component.html',\r\n styleUrls: ['./category.component.scss']\r\n})\r\nexport class CategoryComponent implements OnInit {\r\n @Input() public category: Category;\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","import { Process } from '../../shared';\r\n\r\nexport interface Category {\r\n CategoryId: number;\r\n CategoryName: string;\r\n CURRCategory: string;\r\n CategoryStatusImage: string;\r\n CatSequenceNb: number;\r\n UserProcesses: Process[];\r\n RouteName: string;\r\n}\r\n","export * from './categories.service';\r\nexport * from './category-detail';\r\nexport * from './category-list';\r\nexport * from './category.component';\r\nexport * from './category.model';\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ef-column-search',\r\n templateUrl: './column-search.component.html',\r\n styleUrls: ['./column-search.component.scss']\r\n})\r\nexport class ColumnSearchComponent {\r\n columnSearchValue: string | null;\r\n columnIndex: number | null;\r\n @Input() elements: HTMLCollectionOf;\r\n filteredElements: Array;\r\n icon = 'pi pi-search';\r\n oldEle: any;\r\n clearSearch() {\r\n this.columnSearchValue = null;\r\n this.columnIndex = null;\r\n this.icon = 'pi pi-search';\r\n\r\n if (this.oldEle != null) {\r\n this.oldEle.style.color = 'white';\r\n }\r\n }\r\n\r\n searchTextChanged() {\r\n this.columnIndex = null;\r\n this.icon = 'pi pi-search';\r\n }\r\n scrollToColumn(id) {\r\n if (this.oldEle != null) {\r\n this.oldEle.style.color = 'white';\r\n }\r\n\r\n //var elements = document.getElementsByClassName('p-header-cell');\r\n let ele;\r\n const elementsArr = Array.from(this.elements);\r\n this.filteredElements = elementsArr.filter(x =>\r\n x.textContent\r\n ?.toLowerCase()\r\n .trim()\r\n .includes(id.toLowerCase().trim())\r\n );\r\n for (let i = 0; i < this.filteredElements.length; i++) {\r\n if (this.columnIndex != null) {\r\n if (i > +this.columnIndex) {\r\n ele = this.filteredElements[i];\r\n this.columnIndex = i;\r\n ele.style.color = 'yellow';\r\n ele.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n this.oldEle = ele;\r\n if (this.filteredElements.length - 1 == i) {\r\n this.columnIndex = null;\r\n }\r\n break;\r\n }\r\n } else {\r\n if (this.filteredElements[i]) {\r\n ele = this.filteredElements[i];\r\n this.columnIndex = i;\r\n ele.style.color = 'yellow';\r\n ele.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n this.oldEle = ele;\r\n break;\r\n }\r\n }\r\n }\r\n if (this.filteredElements.length > 1) {\r\n this.icon = 'pi pi-angle-right';\r\n } else {\r\n this.icon = 'pi pi-search';\r\n }\r\n }\r\n}\r\n","export function columnResize($event, numOfFrozenCols, table) {\r\n var colIndex = $event.element.cellIndex + 1;\r\n var change = $event.delta;\r\n\r\n var tableStyle = getComputedStyle(table);\r\n var width = tableStyle.getPropertyValue('width');\r\n var widthArr = width.split('p');\r\n var widthValue = widthArr[0];\r\n var newWidthValue = +widthValue + $event.delta;\r\n table.style.width = `${newWidthValue}px`;\r\n //expand\r\n if (colIndex <= numOfFrozenCols) {\r\n for (var i = colIndex; i < numOfFrozenCols; i++) {\r\n var columnTdCells = Array.from(\r\n table.querySelectorAll(`td:nth-child(${i})`)\r\n ) as Array;\r\n for (var y = 0; y < columnTdCells.length; y++) {\r\n var style = getComputedStyle(columnTdCells[y].nextSibling);\r\n var left = style.getPropertyValue('left');\r\n var leftArr = left.split('p');\r\n var leftValue = leftArr[0];\r\n var newLeftValue;\r\n\r\n newLeftValue = +leftValue + change;\r\n columnTdCells[y].nextSibling.style.left = `${newLeftValue}px`;\r\n }\r\n var columnThCells = Array.from(\r\n table.querySelectorAll(`th:nth-child(${i})`)\r\n ) as Array;\r\n for (var z = 0; z < columnThCells.length; z++) {\r\n var style = getComputedStyle(columnThCells[z].nextSibling);\r\n var left = style.getPropertyValue('left');\r\n var leftArr = left.split('p');\r\n var leftValue = leftArr[0];\r\n var newLeftValue;\r\n\r\n newLeftValue = +leftValue + change;\r\n columnThCells[z].nextSibling.style.left = `${newLeftValue}px`;\r\n }\r\n }\r\n }\r\n\r\n //fit\r\n // if (colIndex < numOfFrozenCols) {\r\n // var columnTdCells = Array.from(table.querySelectorAll(`td:nth-child(${colIndex})`)) as Array;\r\n // for (var y = 0; y < columnTdCells.length; y++) {\r\n // var style = getComputedStyle(columnTdCells[y].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnTdCells[y].nextSibling.style.left = `${newLeftValue}px`;\r\n\r\n // }\r\n // var columnThCells = Array.from(table.querySelectorAll(`th:nth-child(${colIndex})`)) as Array;\r\n // for (var z = 0; z < columnThCells.length; z++) {\r\n // var style = getComputedStyle(columnThCells[z].nextSibling);\r\n // var left = style.getPropertyValue(\"left\");\r\n // var leftArr = left.split(\"p\");\r\n // var leftValue = leftArr[0];\r\n // var newLeftValue;\r\n\r\n // newLeftValue = +leftValue + change;\r\n // columnThCells[z].nextSibling.style.left = `${newLeftValue}px`;\r\n\r\n // }\r\n // }\r\n}\r\n","import { ɵɵdirectiveInject as directiveInject } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\n\r\nfunction FromStore(config: {\r\n [k: string]: (state: T) => K;\r\n props;\r\n}) {\r\n return (cmpType: any) => {\r\n const originalFactory = cmpType.ngComponentDef.factory;\r\n cmpType.ngComponentDef.factory = () => {\r\n const cmp = originalFactory(cmpType.ngComponentDef.type);\r\n const store = directiveInject(Store);\r\n Object.keys(config).forEach((key: string) => {\r\n // cmp[key] = store.pipe(select(config[key]));\r\n });\r\n return cmp;\r\n };\r\n };\r\n}\r\n","export * from './with-logging';\r\nexport * from './from-store';\r\n","import { LoggingService } from '../services/logging';\r\nimport { LogLevel } from '../services/logging/LogLevelEnum';\r\nexport function withLogging(level: LogLevel = LogLevel.Verbose) {\r\n return cmpType => {\r\n const originalFactory = cmpType.ɵfac;\r\n cmpType.ɵcmp.factory = (...args) => {\r\n const cmp = originalFactory(...args);\r\n const proto = cmp.__proto__;\r\n\r\n const log = new LoggingService();\r\n const funcs = Object.getOwnPropertyNames(proto).filter(\r\n item => typeof proto[item] === 'function'\r\n );\r\n funcs.forEach(f => {\r\n const orig = proto[f];\r\n proto[f] = (...a) => {\r\n log.log({\r\n type: `${cmpType.name}:${f} start`,\r\n args: a,\r\n component: { ...cmp }\r\n }, level);\r\n orig.apply(cmp, a);\r\n log.log({ type: `${cmpType.name}:${f} end` }, level);\r\n };\r\n });\r\n return cmp;\r\n };\r\n return cmpType;\r\n };\r\n}\r\n","export * from './let/ef-let';\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\ninterface LetContext {\r\n efLet: T;\r\n}\r\n\r\n@Directive({\r\n selector: '[efLet]'\r\n})\r\nexport class LetDirective {\r\n private _context: LetContext = { efLet: null };\r\n\r\n constructor(\r\n _viewContainer: ViewContainerRef,\r\n _templateRef: TemplateRef>\r\n ) {\r\n _viewContainer.createEmbeddedView(_templateRef, this._context);\r\n }\r\n\r\n @Input()\r\n set efLet(value: T) {\r\n this._context.efLet = value;\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ef-checkbox',\r\n templateUrl: './ef-checkbox.component.html',\r\n styleUrls: ['./ef-checkbox.component.scss']\r\n})\r\nexport class EfCheckboxComponent implements OnInit {\r\n @Input() rowData: any;\r\n @Input() property: any;\r\n @Input() disabled: boolean;\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n // this.log.verbose('ef-checkbox ngModel: ' + this.rowData[this.property]);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { SelectItem } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'ef-dropdown',\r\n templateUrl: './ef-dropdown.component.html',\r\n styleUrls: ['./ef-dropdown.component.scss']\r\n})\r\nexport class EfDropdownComponent implements OnInit {\r\n @Input() items: SelectItem[];\r\n @Input() rowData: any;\r\n @Input() property: any;\r\n @Input() disabled: boolean;\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n // this.log.verbose(\"ef-dropdown ngModel: \" + this.rowData[this.property]);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Router } from '@angular/router'; // splitbutton needs this\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { DynamicDialogModule } from 'primeng/dynamicdialog';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { FullCalendarModule } from 'primeng/fullcalendar';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { TableModule } from 'primeng/table';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { TreeModule } from 'primeng/tree';\r\nimport { TreeTableModule } from 'primeng/treetable';\r\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\r\nimport { ChartModule } from 'primeng/chart';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { ToastModule } from 'primeng/toast';\r\n@NgModule({\r\n imports: [\r\n ProgressSpinnerModule,\r\n InputTextModule,\r\n CalendarModule,\r\n PanelModule,\r\n RadioButtonModule,\r\n DialogModule,\r\n SplitButtonModule,\r\n ToggleButtonModule,\r\n ButtonModule,\r\n CardModule,\r\n AccordionModule,\r\n InputSwitchModule,\r\n DropdownModule,\r\n InputTextareaModule,\r\n OverlayPanelModule,\r\n FieldsetModule,\r\n TableModule,\r\n PasswordModule,\r\n DynamicDialogModule,\r\n ToolbarModule,\r\n MultiSelectModule,\r\n TabViewModule,\r\n SidebarModule,\r\n TreeModule,\r\n TreeTableModule,\r\n CalendarModule,\r\n MessagesModule,\r\n CheckboxModule,\r\n FullCalendarModule,\r\n ScrollPanelModule,\r\n MessageModule,\r\n MessagesModule,\r\n FileUploadModule,\r\n AutoCompleteModule,\r\n ColorPickerModule,\r\n TriStateCheckboxModule,\r\n TooltipModule,\r\n MenuModule,\r\n ChartModule,\r\n BadgeModule,\r\n SelectButtonModule,\r\n ToastModule\r\n ],\r\n exports: [\r\n ProgressSpinnerModule,\r\n InputTextModule,\r\n CalendarModule,\r\n PanelModule,\r\n RadioButtonModule,\r\n DialogModule,\r\n SplitButtonModule,\r\n ToggleButtonModule,\r\n ButtonModule,\r\n CardModule,\r\n AccordionModule,\r\n InputSwitchModule,\r\n DropdownModule,\r\n InputTextareaModule,\r\n CheckboxModule,\r\n OverlayPanelModule,\r\n FieldsetModule,\r\n TableModule,\r\n PasswordModule,\r\n DynamicDialogModule,\r\n ToolbarModule,\r\n MultiSelectModule,\r\n TabViewModule,\r\n SidebarModule,\r\n TreeModule,\r\n TreeTableModule,\r\n CalendarModule,\r\n MessagesModule,\r\n FullCalendarModule,\r\n ScrollPanelModule,\r\n MessageModule,\r\n MessagesModule,\r\n FileUploadModule,\r\n AutoCompleteModule,\r\n ColorPickerModule,\r\n TriStateCheckboxModule,\r\n TooltipModule,\r\n MenuModule,\r\n ChartModule,\r\n BadgeModule,\r\n SelectButtonModule,\r\n ToastModule\r\n ],\r\n providers: [{ provide: Router, useValue: {} }]\r\n})\r\nexport class EfaactPrimeNGModule {}\r\n\r\nexport * from 'primeng/accordion';\r\nexport * from 'primeng/api';\r\nexport * from 'primeng/autocomplete';\r\nexport * from 'primeng/button';\r\nexport * from 'primeng/calendar';\r\nexport * from 'primeng/card';\r\nexport * from 'primeng/checkbox';\r\nexport * from 'primeng/colorpicker';\r\nexport * from 'primeng/dialog';\r\nexport * from 'primeng/dropdown';\r\nexport * from 'primeng/dynamicdialog';\r\nexport * from 'primeng/fieldset';\r\nexport * from 'primeng/fileupload';\r\nexport * from 'primeng/fullcalendar';\r\nexport * from 'primeng/inputswitch';\r\nexport * from 'primeng/inputtext';\r\nexport * from 'primeng/inputtextarea';\r\nexport * from 'primeng/menu';\r\nexport * from 'primeng/message';\r\nexport * from 'primeng/messages';\r\nexport * from 'primeng/multiselect';\r\nexport * from 'primeng/overlaypanel';\r\nexport * from 'primeng/panel';\r\nexport * from 'primeng/password';\r\nexport * from 'primeng/radiobutton';\r\nexport * from 'primeng/scrollpanel';\r\nexport * from 'primeng/sidebar';\r\nexport * from 'primeng/splitbutton';\r\nexport * from 'primeng/table';\r\nexport * from 'primeng/tabview';\r\nexport * from 'primeng/togglebutton';\r\nexport * from 'primeng/toolbar';\r\nexport * from 'primeng/tooltip';\r\nexport * from 'primeng/tree';\r\nexport * from 'primeng/treetable';\r\nexport * from 'primeng/utils';\r\nexport * from 'primeng/menu';\r\nexport * from 'primeng/chart';\r\nexport * from 'primeng/badge';\r\nexport * from 'primeng/selectbutton';\r\nexport * from 'primeng/toast';\r\n// export * from './efaact-primeng-interfaces';\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n IModelBase,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../common/Interfaces';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Table } from '../efaact-primeng.module';\r\nimport { IShowErrors } from './IShowErrors';\r\n\r\nconst log = new LoggingService();\r\n@Component({\r\n template: ''\r\n})\r\nexport class DisplayErrors implements OnChanges {\r\n @Input() public items: T[];\r\n @Input() public selectedError: IStatusMessage;\r\n @Output() public ShowError = new EventEmitter();\r\n @ViewChild('dataTable', { read: Table, static: true }) dataTable: Table;\r\n onStatusClick(item: { id: string | number }) {\r\n this.ShowError.emit({ open: true, MsgEntityID: item.id.toString() });\r\n }\r\n\r\n highlightRow(rowId: string, ...styles: string[]) {\r\n const row = document.getElementById(rowId);\r\n if (!row) {\r\n return;\r\n }\r\n log.verbose({\r\n type: `DisplayErrors<${typeof this}>:highlightRow`,\r\n classList: row.classList,\r\n row\r\n });\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add(...styles);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes.selectedError) {\r\n const value = changes.selectedError.currentValue;\r\n const oldValue = changes.selectedError.previousValue;\r\n log.verbose({\r\n type: `DisplayErrors<${typeof this}>:selectedError:set`,\r\n value,\r\n oldValue\r\n });\r\n if (!value) {\r\n return;\r\n }\r\n try {\r\n if (oldValue && oldValue.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${oldValue.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('p-highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const styles: string[] = [];\r\n styles.push('p-highlight');\r\n styles.push('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n styles.push('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n styles.push('highlight-danger');\r\n }\r\n const rowId = `row-${value.MsgEntityID.toString()}`;\r\n const row = document.getElementById(rowId);\r\n log.verbose({\r\n type: `DisplayErrors<${typeof this}>:selectedError`,\r\n value,\r\n row\r\n });\r\n if (this.dataTable && !this.dataTable.loading) {\r\n if (!row) {\r\n if (!this.items) {\r\n return;\r\n }\r\n // virtual row?\r\n const idx = this.items.findIndex(\r\n item =>\r\n item.id.toString() ===\r\n value.MsgEntityID.toString()\r\n );\r\n this.dataTable.scrollToVirtualIndex(idx);\r\n setTimeout(() => {\r\n this.highlightRow(rowId, ...styles);\r\n }, 0);\r\n return;\r\n } else {\r\n const idx = this.items.findIndex(\r\n item =>\r\n item.id.toString() ===\r\n value.MsgEntityID.toString()\r\n );\r\n this.dataTable.scrollTo({\r\n top:\r\n row && row.offsetHeight\r\n ? row.offsetHeight * idx\r\n : 0,\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n }\r\n this.highlightRow(rowId, ...styles);\r\n }\r\n } catch (e) {\r\n log.error(e);\r\n }\r\n }\r\n }\r\n}\r\n","export interface IShowErrors {\r\n open?: boolean;\r\n MsgEntityID?: string | number;\r\n MsgProcessID?: number;\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n AfterViewInit,\r\n Inject,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { IStatusMessage, ResponseStatus } from '../../common/Interfaces';\r\nimport { tap } from 'rxjs/operators';\r\nimport { SetShowErrors } from './store/actions';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IShowErrors } from './IShowErrors';\r\nimport { isElementVisible } from '../util/is-element-visible';\r\nimport * as fromErrors from './store';\r\n\r\n@Component({\r\n selector: 'ef-errors-sidenav',\r\n templateUrl: './errors-sidenav.component.html',\r\n styleUrls: ['./errors-sidenav.component.scss']\r\n})\r\nexport class ErrorsSidenavComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n public errorsStore: Store,\r\n private myElement: ElementRef\r\n ) {}\r\n public errors$: Observable>;\r\n public showError$: Observable;\r\n active = true;\r\n public itemClass(item: IStatusMessage): string {\r\n switch (item.StatusCode) {\r\n case ResponseStatus.Warning:\r\n case ResponseStatus.PartialSuccess:\r\n case ResponseStatus.LoginExpired:\r\n return 'alert-warning';\r\n break;\r\n case ResponseStatus.Failed:\r\n case ResponseStatus.ConcurrencyViolation:\r\n return 'alert-danger';\r\n break;\r\n default:\r\n return 'alert-danger';\r\n break;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.errors$ = this.errorsStore.pipe(\r\n select(fromErrors.getErrors)\r\n );\r\n this.showError$ = this.errorsStore.pipe(\r\n select(fromErrors.getShowErrors),\r\n tap(e => {\r\n if (e.MsgEntityID) {\r\n const ele = document.getElementById(\r\n e.MsgEntityID.toString()\r\n );\r\n this.log.verbose({\r\n TYPE: 'ErrorsSidenavComponent:showErrors$',\r\n e,\r\n ele\r\n });\r\n setTimeout(() => {\r\n if (\r\n ele &&\r\n !isElementVisible(\r\n ele,\r\n this.myElement.nativeElement.parentElement\r\n )\r\n ) {\r\n ele.scrollIntoView();\r\n }\r\n }, 100);\r\n } else {\r\n this.log.warn({\r\n type: 'ErrorsSidenavComponent:showErrors$ with no MsgEntityID',\r\n e\r\n });\r\n }\r\n })\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {}\r\n\r\n selectError(item: IStatusMessage) {\r\n this.log.debug({ type: 'ErrorsSidenavComponent:SelectError', item });\r\n this.errorsStore.dispatch(\r\n new SetShowErrors({\r\n open: true,\r\n MsgProcessID: item.MsgProcessID,\r\n MsgEntityID: item.MsgEntityID\r\n })\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ErrorsSidenavComponent } from './errors-sidenav.component';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { ErrorEffects } from './store/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromErrors from './store';\r\nimport { MessageModule } from '../efaact-primeng.module';\r\n\r\n@NgModule({\r\n imports: [\r\n MessageModule,\r\n CommonModule,\r\n StoreModule.forFeature('errors', fromErrors.reducer),\r\n EffectsModule.forFeature([ErrorEffects])\r\n ],\r\n declarations: [ErrorsSidenavComponent],\r\n exports: [ErrorsSidenavComponent]\r\n})\r\nexport class ErrorsSidenavModule {}\r\n","export * from './store';\r\nexport * from './errors-sidenav.component';\r\nexport * from './IShowErrors';\r\nexport * from './DisplayErrors';\r\nexport * from './util';\r\n","import { Action } from '@ngrx/store';\r\nimport { IShowErrors } from '../IShowErrors';\r\nimport { ResponseStatus, IStatusMessage } from '../../../common/Interfaces';\r\n\r\nexport enum ErrorsSidenavActionTypes {\r\n SetErrors = '[ErrorsSidenav] SetErrors',\r\n SetErrorsForProcess = '[ErrorsSidenav] SetErrorsForProcess',\r\n RemoveErrors = '[ErrorsSidenav] RemoveErrors',\r\n ClearErrors = '[ErrorsSidenav] Clear Errors',\r\n SetShowErrors = '[ErrorsSidenav] SetShowErrors'\r\n}\r\n\r\nexport class SetErrors implements Action {\r\n constructor(public payload: Array) {\r\n this.payload = payload || [];\r\n }\r\n readonly type = ErrorsSidenavActionTypes.SetErrors;\r\n}\r\nexport class RemoveErrors implements Action {\r\n constructor(public payload?: Array) {}\r\n readonly type = ErrorsSidenavActionTypes.RemoveErrors;\r\n}\r\nexport class SetErrorsForProcess implements Action {\r\n constructor(\r\n public payload: { errors: Array; processId: number }\r\n ) {}\r\n readonly type = ErrorsSidenavActionTypes.SetErrorsForProcess;\r\n}\r\nexport class ClearErrors implements Action {\r\n constructor() {}\r\n readonly type = ErrorsSidenavActionTypes.ClearErrors;\r\n}\r\nexport function UnknownResponse() {\r\n return new SetErrors([\r\n {\r\n Message: 'An Unknown result was returned.',\r\n StatusCode: ResponseStatus.Failed\r\n }\r\n ]);\r\n}\r\n\r\nexport class SetShowErrors implements Action {\r\n constructor(public payload: IShowErrors) {}\r\n readonly type = ErrorsSidenavActionTypes.SetShowErrors;\r\n}\r\n\r\nexport type ErrorsSidenavActionsUnion =\r\n | SetErrors\r\n | SetErrorsForProcess\r\n | ClearErrors\r\n | SetShowErrors\r\n | RemoveErrors;\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { filter, map, take, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { DisplayMessageMinimum } from '../../../common';\r\nimport * as fromShared from '../../../shared';\r\nimport { ResponseStatus } from '../../../shared';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { ConfirmComponent } from '../../modal-dialog/confirm/confirm.component';\r\nimport * as actions from './actions';\r\nimport { State } from './reducers';\r\n\r\n@Injectable()\r\nexport class ErrorEffects {\r\n dialogRef?: MatDialogRef;\r\n constructor(\r\n private log: LoggingService,\r\n private actions$: Actions,\r\n private store: Store,\r\n public dialog: MatDialog\r\n ) {}\r\n\r\n @Effect() SetErrors$ = this.actions$\r\n .pipe(\r\n ofType(\r\n actions.ErrorsSidenavActionTypes.SetErrors\r\n )\r\n )\r\n .pipe(\r\n withLatestFrom(this.store.pipe(select(fromShared.selectAll))),\r\n map(\r\n ([action, processes]) =>\r\n new fromShared.Errors.SetErrorsForProcess({\r\n errors: action.payload,\r\n processId: processes[0] && processes[0].ProcessID\r\n })\r\n )\r\n );\r\n @Effect({ dispatch: false }) ErrorDialog$ = this.actions$.pipe(\r\n ofType(actions.ErrorsSidenavActionTypes.SetErrors),\r\n filter(action =>\r\n action.payload\r\n .filter(x => !!x)\r\n .some(\r\n x =>\r\n !(x.MsgEntityID && x.MsgProcessID) &&\r\n x.StatusCode >= DisplayMessageMinimum\r\n )\r\n ),\r\n tap(action => {\r\n if (!this.dialogRef) {\r\n const maxStatus = action.payload.reduce(\r\n (a, c) => (c.StatusCode > a ? c.StatusCode : a),\r\n ResponseStatus.Success\r\n );\r\n let headerText = 'ERROR';\r\n switch (maxStatus) {\r\n case ResponseStatus.Success:\r\n headerText = 'SUCCESS';\r\n break;\r\n case ResponseStatus.Warning:\r\n headerText = 'WARNING';\r\n break;\r\n default:\r\n headerText = 'ERROR';\r\n break;\r\n }\r\n this.dialogRef = this.dialog.open(ConfirmComponent, {\r\n data: {\r\n dialogText: action.payload.find(\r\n x => !(x.MsgEntityID && x.MsgProcessID)\r\n )?.Message,\r\n headerText,\r\n maxStatus,\r\n showCancel: false,\r\n okClass: 'p-button-danger p-button-text',\r\n dialogStyle: 'max-width: 50%'\r\n }\r\n // data: { name: username, animal: '' }\r\n });\r\n this.dialogRef\r\n .afterClosed()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.dialogRef = undefined;\r\n });\r\n }\r\n })\r\n );\r\n}\r\n","export * from './actions';\r\nexport * from './reducers';\r\n","import * as fromErrors from './actions';\r\nimport { createSelector, createFeatureSelector } from '@ngrx/store';\r\nimport * as fromCommon from '../../../shared';\r\nimport { IShowErrors } from '../IShowErrors';\r\nimport { uniqBy } from '../../util/uniqby';\r\nimport { LoggingService } from '../../services/logging';\r\n\r\nexport interface State {\r\n errors: Array;\r\n showErrors: IShowErrors;\r\n}\r\n\r\nexport const initialState: State = {\r\n errors: [],\r\n showErrors: {\r\n open: false,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n }\r\n};\r\nconst log = new LoggingService();\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: fromErrors.ErrorsSidenavActionsUnion\r\n): State {\r\n switch (action.type) {\r\n case fromErrors.ErrorsSidenavActionTypes.SetErrorsForProcess: {\r\n return {\r\n ...state,\r\n errors: [...state.errors, ...action.payload.errors].filter(\r\n x =>\r\n x.MsgProcessID === action.payload.processId ||\r\n x.MsgProcessID === 0 ||\r\n !x.MsgProcessID\r\n ),\r\n showErrors: {}\r\n };\r\n }\r\n case fromErrors.ErrorsSidenavActionTypes.ClearErrors:\r\n return {\r\n ...state,\r\n errors: [],\r\n showErrors: {}\r\n };\r\n case fromErrors.ErrorsSidenavActionTypes.SetShowErrors:\r\n return {\r\n ...state,\r\n showErrors: action.payload\r\n };\r\n case fromErrors.ErrorsSidenavActionTypes.RemoveErrors: {\r\n return {\r\n ...state,\r\n errors:\r\n action.payload && action.payload.length > 0\r\n ? [\r\n ...state.errors.filter(x =>\r\n x.MsgEntityID\r\n ? !action.payload.includes(\r\n x.MsgEntityID.toString()\r\n )\r\n : true\r\n )\r\n ]\r\n : []\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst errorsState = createFeatureSelector('errors');\r\nexport const getErrors = createSelector(errorsState, x => x.errors);\r\nexport const getShowErrors = createSelector(errorsState, x => x.showErrors);\r\nexport const selectErrorWithStatus = createSelector(\r\n getShowErrors,\r\n getErrors,\r\n (selected, errors) => {\r\n const result =\r\n errors.find(\r\n e =>\r\n e.MsgEntityID === selected.MsgEntityID &&\r\n e.MsgProcessID === selected.MsgProcessID\r\n ) ?? errors[0];\r\n log.verbose({\r\n type: 'errors-sidenav:reducer:selectErrorWithStatus',\r\n selected,\r\n errors,\r\n result\r\n });\r\n return result;\r\n }\r\n);\r\n// TODO: make a memoized selector to cache for each processid: https://blog.angularindepth.com/ngrx-parameterized-selector-e3f610529f8\r\n","import { Action, Store } from '@ngrx/store';\r\nimport { EMPTY, Observable, of } from 'rxjs';\r\nimport {\r\n DisplayMessageMinimum,\r\n IGenericResponse,\r\n IModelBase,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../common/Interfaces';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromErrors from './store';\r\n\r\n// TODO: make this into a module so we can inject store, etc\r\n\r\nconst log = new LoggingService();\r\nexport const wait = delay => new Promise(resolve => setTimeout(resolve, delay));\r\nexport const filterErrors = (i, p, o) => i && o.indexOf(i) === p;\r\nexport const IsSuccessStatus = (statusCode: ResponseStatus) =>\r\n statusCode === ResponseStatus.Success ||\r\n statusCode === ResponseStatus.Warning ||\r\n statusCode === ResponseStatus.PartialSuccess;\r\n\r\nexport function MapItemsToStatus<\r\n T extends {\r\n id?: string | number;\r\n processId?: number;\r\n Status?: IStatusMessage;\r\n }\r\n>(items: T[]): IStatusMessage[] {\r\n return items\r\n .filter(\r\n x =>\r\n !(\r\n x.Status.StatusCode === ResponseStatus.Success ||\r\n x.Status.StatusCode === ResponseStatus.None\r\n )\r\n )\r\n .map(x => x.Status);\r\n}\r\nexport function MapErrorsToStatus<\r\n T extends {\r\n id?: string | number;\r\n processId?: number;\r\n Status?: IStatusMessage;\r\n }\r\n>(resp: IGenericResponse): IStatusMessage[] {\r\n const payload: IGenericResponse =\r\n resp.Items && resp.Items.length\r\n ? resp\r\n : ({\r\n ...resp,\r\n Items: [\r\n {\r\n id: resp.id,\r\n Status: {\r\n MsgProcessID: resp.processId,\r\n MsgEntityID: resp.id,\r\n StatusCode: resp.StatusCode,\r\n Message:\r\n resp.ErrorMessages.reduce(\r\n (a, c) => `${c}\\n${a}`,\r\n ''\r\n ) +\r\n resp.WarningMessages.reduce(\r\n (a, c) => `${c}\\n${a}`,\r\n ''\r\n )\r\n } as IStatusMessage\r\n }\r\n ]\r\n } as IGenericResponse);\r\n log.verbose({ type: 'util:MapErrorsToStatus', resp, payload });\r\n const messages = payload.Items.filter(\r\n x => x && x.Status && x.Status.StatusCode >= DisplayMessageMinimum\r\n );\r\n log.verbose({ type: 'util:MapErrorsToStatus', messages });\r\n\r\n let result =\r\n messages && messages.length > 0\r\n ? [...messages.map(x => x.Status)]\r\n : [\r\n ...getResponseErrors(resp)\r\n .map(\r\n x =>\r\n ({\r\n StatusCode: resp.StatusCode,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n )\r\n .filter(x => x.StatusCode >= DisplayMessageMinimum)\r\n ];\r\n result = result.filter(filterErrors);\r\n // const result = [\r\n // ...getResponseErrors(resp).map(\r\n // x =>\r\n // ({\r\n // StatusCode: resp.StatusCode,\r\n // Message: x,\r\n // MsgProcessID: 0,\r\n // MsgEntityID: ''\r\n // } as IStatusMessage)\r\n // ),\r\n // ...resp.Items.filter(\r\n // x => x && x.Status && x.Status.StatusCode >= DisplayMessageMinimum\r\n // ).map(x => x.Status)\r\n // // ({StatusCode: payload.StatusCode, Message: payload.StatusType, MsgProcessID: resp.processId, MsgEntityID: resp.id})\r\n // ].filter(filterErrors);\r\n log.verbose({ type: 'util:MapErrorsToStatus', resp, payload, result });\r\n return result;\r\n}\r\n\r\nexport function getResponseErrors(\r\n resp: IGenericResponse\r\n): string[] {\r\n return [\r\n ...(resp.ErrorMessages && resp.ErrorMessages.length\r\n ? resp.ErrorMessages\r\n : [resp.StatusType])\r\n ].filter(\r\n e =>\r\n resp.Items.findIndex(x => x && x.Status && x.Status.Message === e) <\r\n 0\r\n );\r\n}\r\nexport function handleDataServiceError(\r\n store: Store,\r\n e,\r\n c: Observable\r\n): Observable {\r\n let error;\r\n if (e instanceof Function) {\r\n error = e();\r\n } else {\r\n error = e;\r\n }\r\n if (\r\n !(\r\n (error && error.error && error.error.status === 401) ||\r\n (error && error.status === 401)\r\n )\r\n ) {\r\n log.error({ type: 'handleDataServiceError', error, c });\r\n store.dispatch(getErrorAction(error));\r\n }\r\n throw error;\r\n}\r\nexport function getErrorAction(e): Action {\r\n return new fromErrors.SetErrors([\r\n {\r\n StatusCode: ResponseStatus.Failed,\r\n Message: `${\r\n e &&\r\n (typeof e.error == 'string'\r\n ? e.error\r\n : (e.error &&\r\n e.error.InnerException &&\r\n e.error.InnerException.ExceptionMessage) ||\r\n (e?.error?.error && e.error.error.ExceptionMessage) ||\r\n (e?.error?.error && e.error.error.message) ||\r\n (e.error && e.error.ExceptionMessage) ||\r\n (e.Error && e.Error.message) ||\r\n (e.Error && e.Error.Message) ||\r\n (e.error && e.error.message) ||\r\n (e.error && e.error.Message) ||\r\n (e.error && e.error.statusText) ||\r\n e.message ||\r\n e.ExceptionMessage ||\r\n e.Message ||\r\n e.statusText ||\r\n e)\r\n }`,\r\n ...e\r\n }\r\n ]);\r\n}\r\nexport function handleServiceError(\r\n e: any,\r\n c: Observable\r\n): Observable {\r\n let error;\r\n if (e instanceof Function) {\r\n error = e();\r\n } else {\r\n error = e;\r\n }\r\n log.error({ type: 'handleServiceError', error });\r\n if (error.status === 401) {\r\n return EMPTY;\r\n }\r\n return of(getErrorAction(error));\r\n}\r\n\r\nexport function handleNullDataError(data, service): Action {\r\n return new fromErrors.SetErrors([\r\n {\r\n StatusCode: ResponseStatus.Failed,\r\n Message: `${service} failed to load data`\r\n }\r\n ]);\r\n}\r\n\r\nconst DEFAULT_MAX_RETRIES = 3;\r\nconst DEFAULT_BACKOFF = 1000;\r\nconst errorMessage = (maxRetry: number) =>\r\n `tried to load resource ${maxRetry} times with failure, giving up.`;\r\n\r\n// use whats in 'backoff-rxjs' instead?\r\n// export function delayedRetry(\r\n// delayMs,\r\n// maxRetry\r\n// ): (source: Observable) => Observable {\r\n// let retries = maxRetry;\r\n\r\n// return (src: Observable) =>\r\n// src.pipe(\r\n// retryWhen((errors: Observable) =>\r\n// errors.pipe(\r\n// delay(delayMs),\r\n// mergeMap(error =>\r\n// retries-- > 0\r\n// ? of(error)\r\n// : throwError(errorMessage(maxRetry))\r\n// )\r\n// )\r\n// )\r\n// );\r\n// }\r\n\r\n// export function delayedRetryWithBackoff(\r\n// delayMs: number = 1000,\r\n// maxRetry = DEFAULT_MAX_RETRIES,\r\n// backoffMs = DEFAULT_BACKOFF\r\n// ): (source: Observable) => Observable {\r\n// let retries = maxRetry;\r\n\r\n// return (src: Observable) =>\r\n// src.pipe(\r\n// retryWhen((errors: Observable) =>\r\n// errors.pipe(\r\n// mergeMap(error => {\r\n// if (retries-- > 0) {\r\n// const backoffTime =\r\n// delayMs + (maxRetry - retries) * backoffMs;\r\n// return of(error).pipe(delay(backoffTime));\r\n// }\r\n// return throwError(errorMessage(maxRetry));\r\n// })\r\n// )\r\n// )\r\n// );\r\n// }\r\n","import { environment } from '../../../environments/environment';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { Injectable } from '@angular/core';\r\n\r\nclass ConfigDictionary implements Dictionary {\r\n [id: string]: boolean;\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FeatureFlagConfig {\r\n config = new ConfigDictionary();\r\n constructor() {\r\n // protected rootStore: Store\r\n // TODO: pull this from API first, environment as backup\r\n\r\n if (environment && environment.flags) {\r\n const flags = environment.flags;\r\n Object.keys(flags).forEach(k => {\r\n this.config[k] = flags[k] === true;\r\n });\r\n } else {\r\n throw new Error('No flags set in environment');\r\n }\r\n }\r\n public isEnabled = (flag: string) =>\r\n this.config[flag] === true ||\r\n (this.config['*'] === true && this.config[flag] === undefined);\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n OnChanges,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { FeatureFlagConfig } from './feature-flag-config';\r\n\r\n@Directive({\r\n // tslint:disable-next-line: directive-selector\r\n selector: '[featureFlag]'\r\n})\r\nexport class FeatureFlagDirective implements OnChanges {\r\n @Input() featureFlag: string;\r\n\r\n constructor(\r\n private vcr: ViewContainerRef,\r\n private tpl: TemplateRef,\r\n private flags: FeatureFlagConfig // TODO: how to resolve at runtime?\r\n ) {}\r\n @Input() featureFlagElse?: TemplateRef;\r\n\r\n ngOnChanges() {\r\n if (!(this.flags && this.featureFlag)) { return; }\r\n if (\r\n this.flags.config[this.featureFlag] === true ||\r\n (this.flags.config['*'] === true &&\r\n this.flags.config[this.featureFlag] === undefined)\r\n ) {\r\n this.vcr.createEmbeddedView(this.tpl);\r\n } else if (this.featureFlagElse) {\r\n this.vcr.createEmbeddedView(this.featureFlagElse);\r\n }\r\n }\r\n}\r\n","import * as moment from 'moment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nconst log = new LoggingService();\r\n\r\nexport default function formatDateProperties(item: any): any {\r\n if (!item) {\r\n return item;\r\n }\r\n const newObject = { ...item };\r\n const keys = Object.keys(item);\r\n keys.forEach(key => {\r\n if (item.hasOwnProperty(key)) {\r\n let value = item[key];\r\n if (Array.isArray(value)) {\r\n value = value.map(x => formatDateProperties(x));\r\n }\r\n if (value instanceof Date) {\r\n log.verbose({ type: 'formatDateProperties', value });\r\n value = moment(value).format('YYYY-MM-DDTHH:mm:ss');\r\n log.verbose({ type: 'formatDateProperties', value });\r\n }\r\n // if (key.toLocaleLowerCase().includes('date')) {\r\n // let mdate = moment(value, 'MM-DD-YYYY');\r\n // if (mdate.isValid()) {\r\n // if (mdate.parsingFlags().unusedTokens.length === 0) {\r\n // value = moment(value).format('MM-DD-YYYY');\r\n // }\r\n // }\r\n // mdate = moment(value, 'YYYY-MM-DD');\r\n // if (mdate.isValid()) {\r\n // if (mdate.parsingFlags().unusedTokens.length === 0) {\r\n // value = moment(value).format('MM-DD-YYYY');\r\n // }\r\n // }\r\n // }\r\n newObject[key] = value;\r\n }\r\n });\r\n return newObject;\r\n}\r\n","import formatDateProperties from './formatDateProperties';\r\nexport default function formatForApiCall(item: any): any {\r\n // return item;\r\n return formatDateProperties(item);\r\n}\r\n","// tslint:disable:no-bitwise\r\nexport class Guid {\r\n static newGuid() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(\r\n c\r\n ) {\r\n const r = (Math.random() * 16) | 0,\r\n v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n","export * from '../common';\r\nexport * from './category';\r\nexport * as Decorators from './decorators';\r\nexport * from './directives';\r\nexport * from './EditGrid';\r\nexport * from './efaact-primeng.module';\r\nexport * as Errors from './errors-sidenav';\r\nexport * from './feature-flag/feature-flag';\r\nexport * from './guid';\r\nexport * as Loading from './loading';\r\nexport * as efModal from './modal-dialog';\r\nexport * from './p-datatable-editor.directive';\r\nexport * from './process';\r\nexport * as Services from './services';\r\nexport * from './status-icon';\r\nexport * from './util';\r\n","export * from './presenters';\r\nexport * from './loading-container';\r\nexport * from './loading-interceptor';\r\nexport * from './loading-service.service';\r\nexport * from './store';\r\n","export * from './loading-container.component';\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { merge, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { distinctUntilChanged, map, takeWhile, tap } from 'rxjs/operators';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport * as fromRoot from '../../../store';\r\nimport { Guid } from '../../guid';\r\nimport { getLoading } from '../loading';\r\n\r\n@Component({\r\n selector: 'ef-loading-container',\r\n templateUrl: './loading-container.component.html',\r\n styleUrls: ['./loading-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class LoadingContainerComponent implements OnInit, OnDestroy {\r\n private _observables: Observable[];\r\n @Input() public set observables(value: Observable[]) {\r\n if (value && value.length) {\r\n this._observables = value.filter(x => !!x);\r\n } else {\r\n this._observables = [];\r\n }\r\n }\r\n public get observables(): Observable[] {\r\n return this._observables;\r\n }\r\n\r\n @Input() public set loadingText(value: string) {\r\n this.log.verbose({ type: this.id, loadingText: value });\r\n if (value != null) {\r\n this.loadingText$ = of(value);\r\n }\r\n this._loadingTextSubject.next(value);\r\n }\r\n private _loadingTextSubject = new ReplaySubject(1);\r\n\r\n @Input() public set loading(value: boolean) {\r\n this.log.verbose({ type: this.id, loading: value });\r\n this._loadingSubject.next(value);\r\n }\r\n private _loadingSubject = new ReplaySubject(1);\r\n\r\n @Input() public set processing(value: boolean) {\r\n this.log.verbose({ type: this.id, processing: value });\r\n this._processingSubject.next(value);\r\n }\r\n private _processingSubject = new ReplaySubject(1);\r\n\r\n private active = true;\r\n public loading$: Observable;\r\n public processing$: Observable;\r\n public loadingText$: Observable;\r\n private id: string;\r\n constructor(\r\n private cdref: ChangeDetectorRef,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n this.id = 'LoadingContainerComponent_' + Guid.newGuid();\r\n }\r\n\r\n ngOnInit() {\r\n this.log.time(this.id);\r\n if (this.loading !== null && this.loading !== undefined) {\r\n this.log.timeEnd(this.id);\r\n } else {\r\n if (!(this.observables && this.observables.length > 0)) {\r\n this.loading$ = of(false);\r\n this.log.timeEnd(this.id);\r\n // return;\r\n }\r\n }\r\n this.loading$ = merge(\r\n this._loadingSubject,\r\n getLoading(this.observables, this.store)\r\n ).pipe(\r\n // share(),\r\n takeWhile(() => this.active),\r\n tap(loading => {\r\n this.log.timeLog(this.id);\r\n this.log.verbose({\r\n type: `${this.id}:loading$`,\r\n loading,\r\n observables: this.observables\r\n });\r\n }),\r\n map(x => x),\r\n distinctUntilChanged()\r\n );\r\n\r\n this.loading$.pipe(takeWhile(() => this.active)).subscribe(loading => {\r\n this.cdref.detectChanges();\r\n });\r\n\r\n // merge(this.observables)\r\n // .pipe(\r\n // takeWhile(() => this.active),\r\n // tap(observables =>\r\n // this.log.verbose({\r\n // type: `${id}:observables`,\r\n // observables\r\n // })\r\n // )\r\n // )\r\n // .subscribe((x) => {\r\n // // this.cdref.detectChanges();\r\n // this.log.timeStamp(id);\r\n // });\r\n this.cdref.detectChanges();\r\n }\r\n ngOnDestroy() {\r\n this.log.verbose({\r\n type: `${this.id}:ngOnDestroy`,\r\n observables: this.observables,\r\n loading: this.loading\r\n });\r\n this.active = false;\r\n this.log.timeEnd(this.id);\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport {\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpHandler,\r\n HttpRequest,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { LoggingService } from '../services/logging/logging.service';\r\nimport { Store } from '@ngrx/store';\r\nimport * as fromStore from './store';\r\n\r\n@Injectable()\r\nexport class LoadingInterceptor implements HttpInterceptor {\r\n /**\r\n *\r\n */\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService\r\n ) {}\r\n\r\n public intercept(\r\n req: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n // Clone the request to add the new header\r\n // if (!this.authService.bearerToken) { return; }\r\n if (req.url.indexOf('/api/') >= 0) {\r\n this.log.verbose({ type: 'LoadingInterceptor' });\r\n\r\n this.store.dispatch(new fromStore.SetLoading(true));\r\n }\r\n\r\n // Pass the cloned request instead of the original request to the next handle\r\n // return next.handle(clonedRequest)\r\n return next.handle(req).pipe(\r\n tap(() => {\r\n this.store.dispatch(new fromStore.SetLoading(false));\r\n })\r\n );\r\n }\r\n}\r\n","import * as fromStore from './store';\r\nimport { LoggingService } from '../services/logging/logging.service';\r\nimport { Store } from '@ngrx/store';\r\nimport { Injectable } from '@angular/core';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoadingService {\r\n constructor(protected rootStore: Store) {}\r\n\r\n public Load(): void {\r\n this.rootStore.dispatch(new fromStore.SetLoading(true));\r\n }\r\n\r\n public Stop(): void {\r\n this.rootStore.dispatch(new fromStore.SetLoading(false));\r\n }\r\n}\r\n","import {\r\n Observable,\r\n combineLatest,\r\n timer,\r\n of,\r\n merge,\r\n defer,\r\n Subject,\r\n race\r\n} from 'rxjs';\r\nimport {\r\n takeUntil,\r\n mapTo,\r\n finalize,\r\n tap,\r\n take,\r\n map,\r\n debounceTime\r\n} from 'rxjs/operators';\r\nimport { Guid } from '../guid';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromStore from './store';\r\nimport { select, Store } from '@ngrx/store';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport function getLoading(\r\n observables: Observable[],\r\n store: Store,\r\n delayTime: number = 100,\r\n minSpinnerTime: number = 1000\r\n): Observable {\r\n const id = 'getLoading_' + Guid.newGuid();\r\n // tslint:disable-next-line:no-console\r\n console.time(id);\r\n (console as any).timeLog(id);\r\n return merge(\r\n of(false),\r\n timer(delayTime).pipe(\r\n tap(() => {\r\n log.verbose({\r\n type: id,\r\n value: 'loading on after delay',\r\n delayTime\r\n });\r\n (console as any).timeLog(id);\r\n }),\r\n // takeUntil(\r\n // combineLatest(observables)\r\n // ),\r\n mapTo(true)\r\n ),\r\n combineLatest([...(observables || []), timer(minSpinnerTime)]).pipe(\r\n take(1),\r\n tap(x => {\r\n log.verbose({\r\n type: id,\r\n value: 'loading off after complete and spin time',\r\n minSpinnerTime,\r\n x\r\n });\r\n (console as any).timeLog(id);\r\n }),\r\n mapTo(false)\r\n ),\r\n store.pipe(\r\n select(fromStore.getLoading),\r\n debounceTime(minSpinnerTime),\r\n map(x => !!x)\r\n )\r\n );\r\n}\r\n\r\n\r\nexport function prepare(\r\n callback: () => void\r\n): (source: Observable) => Observable {\r\n return (source: Observable): Observable =>\r\n defer(() => {\r\n callback();\r\n return source;\r\n });\r\n}\r\n\r\nexport function indicate(\r\n indicator: Subject\r\n): (source: Observable) => Observable {\r\n return (source: Observable): Observable =>\r\n source.pipe(\r\n prepare(() => indicator.next(true)),\r\n finalize(() => indicator.next(false))\r\n );\r\n}\r\n","export * from './loading.component';\r\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { Guid } from '../../guid';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ef-loading',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss']\r\n})\r\nexport class LoadingComponent implements OnInit {\r\n @Input() loading: boolean;\r\n @Input() processing: boolean;\r\n @Input() processingText: string;\r\n\r\n private _loadingTextSubject = new ReplaySubject(1);\r\n private _loadingtext: string;\r\n @Input() public set loadingText(value: string) {\r\n this._loadingtext = value;\r\n this._loadingTextSubject.next(value);\r\n }\r\n get loadingText(): string {\r\n return this._loadingtext;\r\n }\r\n\r\n\r\n id: string = Guid.newGuid();\r\n // private shouldShow$ = new ReplaySubject(1);\r\n public get shouldShow() {\r\n const overlays = Array.from(\r\n document.getElementsByClassName('page-overlay')\r\n );\r\n // let visibleOverlays = overlays.filter(o => o['hidden'] === false);\r\n const overlayCount = overlays.length;\r\n // let firstOverlayId =\r\n // (visibleOverlays[0] && visibleOverlays[0].id) || null;\r\n const firstOverlayId = (overlays[0] && overlays[0].id) || null;\r\n return (\r\n (overlays.length > 1 && firstOverlayId === this.id) ||\r\n overlays.length === 0\r\n );\r\n }\r\n constructor(private element: ElementRef) {}\r\n\r\n ngOnInit() {\r\n if (this.loadingText == null) {\r\n this.loadingText = 'Loading...';\r\n }\r\n }\r\n}\r\n","import { Action } from '@ngrx/store';\r\n\r\nexport enum LoadingActionTypes {\r\n SetLoading = '[loading] Set Loading'\r\n}\r\n\r\nexport class SetLoading implements Action {\r\n constructor(public payload: boolean) {}\r\n readonly type = LoadingActionTypes.SetLoading;\r\n}\r\nexport type LoadingActionsUnion = SetLoading;\r\n","export * from './actions';\r\nexport * from './reducer';\r\n","import { LoadingActionTypes, LoadingActionsUnion } from './actions';\r\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\r\n\r\nexport interface LoadingState {\r\n loading: boolean;\r\n}\r\n\r\nexport const initialState: LoadingState = {\r\n loading: false\r\n};\r\n\r\nexport function reducer(\r\n state: LoadingState = initialState,\r\n action: LoadingActionsUnion\r\n): LoadingState {\r\n switch (action.type) {\r\n case LoadingActionTypes.SetLoading:\r\n return {\r\n ...state,\r\n loading: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst loadingState = createFeatureSelector('loading');\r\nexport const getLoading = createSelector(loadingState, x => x.loading);\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { LoggingService } from '../../services/logging/logging.service';\r\nimport { ConfirmData } from './confirm.component';\r\nimport { UnsavedChangesComponent } from './unsaved-changes.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UnsavedChangesService {\r\n promise: Promise;\r\n\r\n private resolve: any;\r\n private reject: any;\r\n constructor(private dialog: MatDialog, private log: LoggingService) {}\r\n\r\n confirmPromise(options?: Partial): Promise {\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n this.log.verbose({ type: 'UnsavedChangesService', options });\r\n const dialogConfig = new MatDialogConfig>();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.data = options || {};\r\n this.log.verbose({\r\n type: 'UnsavedChangesService:confirm',\r\n data: dialogConfig.data\r\n });\r\n\r\n this.dialog\r\n .open(UnsavedChangesComponent, dialogConfig)\r\n .afterClosed()\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n this.log.verbose({\r\n type: 'UnsavedChangesService:dialog:afterClosed',\r\n data\r\n });\r\n if (data) {\r\n this.resolve(true);\r\n } else {\r\n this.reject();\r\n }\r\n });\r\n\r\n return this.promise;\r\n }\r\n confirm(options?: Partial): Observable {\r\n const dialogConfig = new MatDialogConfig>();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.data = options || {};\r\n this.log.verbose({\r\n type: 'UnsavedChangesService:confirm',\r\n data: dialogConfig.data\r\n });\r\n\r\n return this.dialog\r\n .open(UnsavedChangesComponent, dialogConfig)\r\n .afterClosed() as Observable;\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n Inject\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n MatDialog,\r\n MatDialogRef,\r\n MAT_DIALOG_DATA\r\n} from '@angular/material/dialog';\r\nimport { LoggingService } from '../../services/logging/logging.service';\r\nimport { ResponseStatus } from '../../../common';\r\n\r\nexport interface ConfirmData {\r\n showOk: boolean;\r\n showCancel: boolean;\r\n okText: string;\r\n cancelText: string;\r\n dialogText: string;\r\n headerText: string;\r\n okClass: string;\r\n cancelClass: string;\r\n baseZIndex: number;\r\n maxStatus: ResponseStatus;\r\n dialogStyle?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ef-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss']\r\n})\r\nexport class ConfirmComponent implements OnInit {\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n protected log: LoggingService,\r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmData\r\n ) {\r\n const options = data || {};\r\n this.data = {\r\n ...{\r\n showOk: true,\r\n showCancel: true,\r\n okText: 'OK',\r\n cancelText: 'Cancel',\r\n dialogText: 'Are you sure?',\r\n headerText: 'Confirmation',\r\n okClass: 'p-button-success p-button-text',\r\n cancelClass: 'p-button-danger p-button-text',\r\n maxStatus: ResponseStatus.None,\r\n baseZIndex: 99999999\r\n },\r\n ...options\r\n };\r\n this.log.verbose({ type: 'ConfirmComponent', data: this.data });\r\n }\r\n\r\n ngOnInit() {}\r\n}\r\n","export * from './UnsavedChanges.service';\r\nexport * from './confirm.component';\r\nexport * from './unsaved-changes.component';\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { ConfirmComponent, ConfirmData } from './confirm.component';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { LoggingService } from '../../services/logging/logging.service';\r\nimport { ResponseStatus } from '../../../common/Interfaces';\r\n\r\n@Component({\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss']\r\n})\r\nexport class UnsavedChangesComponent extends ConfirmComponent {\r\n constructor (\r\n public dialogRef: MatDialogRef,\r\n protected log: LoggingService,\r\n\r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmData\r\n ) {\r\n super(dialogRef, log, data);\r\n this.log.verbose({ type: 'UnsavedChangesComponent', data });\r\n const options = data || {};\r\n this.data = {\r\n ...{\r\n showOk: true,\r\n showCancel: true,\r\n okText: 'OK',\r\n cancelText: 'Cancel',\r\n dialogText:\r\n 'You have unsaved changes on this page.
Navigate away and lose changes?',\r\n headerText: 'Confirmation',\r\n okClass: 'p-button-warning p-button-text',\r\n cancelClass: 'p-button-primary p-button-text',\r\n baseZIndex: 99999999,\r\n maxStatus: ResponseStatus.None\r\n },\r\n ...options\r\n };\r\n this.log.verbose({ type: 'UnsavedChangesComponent', data });\r\n }\r\n}\r\n","import { Component, OnInit, HostBinding } from '@angular/core';\r\nimport { wait } from '../errors-sidenav/util';\r\n\r\n@Component({\r\n selector: 'ef-app-dialog',\r\n template: `\r\n
\r\n
\r\n
\r\n

{{ message }}

\r\n
{{ details }}
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n `,\r\n styles: []\r\n})\r\nexport class DialogComponent implements OnInit {\r\n @HostBinding('class.dialog') dialog = true;\r\n @HostBinding('class.active') visible: boolean;\r\n\r\n message: string;\r\n details: string;\r\n yesMsg: string;\r\n noMsg: string;\r\n\r\n promise: Promise;\r\n\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => {\r\n this.yes = () => {\r\n this.visible = false;\r\n wait(300).then(resolve);\r\n };\r\n\r\n this.no = () => {\r\n this.visible = false;\r\n wait(300).then(reject);\r\n };\r\n });\r\n }\r\n\r\n yes() {}\r\n no() {}\r\n\r\n ngOnInit() {\r\n wait(50).then(() => (this.visible = true));\r\n }\r\n}\r\n","import { Injectable, ViewContainerRef, ComponentFactoryResolver, Injector, ComponentFactory } from '@angular/core';\r\nimport { DialogComponent } from './dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n vcRef: ViewContainerRef;\r\n private factory: ComponentFactory;\r\n\r\n constructor(resolver: ComponentFactoryResolver) {\r\n this.factory = resolver.resolveComponentFactory(DialogComponent);\r\n }\r\n\r\n confirm(message, details = 'Are you sure?', yesMsg = 'Yes', noMsg = 'No') {\r\n const componentRef = this.vcRef.createComponent(this.factory);\r\n const component = componentRef.instance;\r\n\r\n component.message = message;\r\n component.details = details;\r\n component.yesMsg = yesMsg;\r\n component.noMsg = noMsg;\r\n\r\n const destroy = () => componentRef.destroy();\r\n component.promise.then(destroy, destroy);\r\n return component.promise;\r\n }\r\n}\r\n","export * from './confirm';\r\nexport * from './dialog.component';\r\nexport * from './dialog.service';\r\n","import {\r\n Directive,\r\n Input,\r\n HostListener,\r\n Renderer2,\r\n ElementRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport { DefaultValueAccessor } from '@angular/forms';\r\nimport { EventEmitter } from 'events';\r\nimport { ILoggingService, LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n@Directive({\r\n selector: '[pDatatableEditor]',\r\n})\r\nexport class PTableEditorDirective extends DefaultValueAccessor {\r\n constructor(\r\n private log: LoggingService,\r\n _renderer: Renderer2,\r\n _elementRef: ElementRef,\r\n ) {\r\n super(_renderer, _elementRef, true);\r\n }\r\n @Input('pDatatableEditor') table: any;\r\n\r\n @HostListener('keydown', ['$event'])\r\n public onCellEditorKeydown(event: Event) {\r\n this.forwardEvent('onCellEditorKeydown', event);\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n public onCellEditorInput(event: Event) {\r\n this.forwardEvent('onCellEditorInput', event);\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n public onCellEditorBlur(event: Event) {\r\n this.forwardEvent('onEditComplete', event);\r\n }\r\n\r\n @HostListener('change', ['$event'])\r\n public onCellEditorChange(event: Event) {\r\n this.forwardEvent('onEditComplete', event);\r\n }\r\n\r\n private forwardEvent(eventName: string, event: Event) {\r\n this.log.verbose({\r\n type: 'pDatatableEditor:forwardEvent',\r\n eventName,\r\n event,\r\n });\r\n let emitter: EventEmitter;\r\n emitter = this.table[eventName];\r\n\r\n if (emitter) {\r\n const evt: any = {\r\n field: this.table.editingCellField,\r\n data: this.table.editingCellData,\r\n originalEvent: event,\r\n };\r\n emitter.emit(evt);\r\n }\r\n }\r\n}\r\n","export * from './store';\r\nexport * from './process.component';\r\nexport * from './process-detail';\r\nexport * from './process-list';\r\nexport * from './process.enum';\r\n","export * from './process-detail.component';\r\n","import { Component, Inject, Input, OnInit } from '@angular/core';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { Process } from '../store/process.model';\r\n\r\n@Component({\r\n selector: 'ef-process-detail',\r\n templateUrl: './process-detail.component.html',\r\n styleUrls: ['./process-detail.component.scss']\r\n})\r\nexport class ProcessDetailComponent implements OnInit {\r\n @Input() public process: Process;\r\n constructor(@Inject(LoggingService) private log: LoggingService) {}\r\n\r\n ngOnInit() {\r\n this.log.debug({\r\n type: 'ProcessDetailComponent:ngOnInit',\r\n process: this.process\r\n });\r\n }\r\n}\r\n","export * from './process-list.component';\r\n","import { Component, Inject, Input, OnInit } from '@angular/core';\r\nimport { Category } from '../../../shared/category/category.model';\r\nimport { LoggingService } from '../../../shared/services/logging/logging.service';\r\nimport { Process } from '../store/process.model';\r\n\r\n@Component({\r\n selector: 'ef-process-list',\r\n templateUrl: './process-list.component.html',\r\n styleUrls: ['./process-list.component.scss']\r\n})\r\nexport class ProcessListComponent implements OnInit {\r\n // private _processService: ProcessService;\r\n private _category: number;\r\n constructor(@Inject(LoggingService) private log: LoggingService) {}\r\n @Input() public category: Category;\r\n public processes?: Process[];\r\n\r\n ngOnInit() {\r\n this.log.debug({\r\n type: 'ProcessListComponent:ngOnInit',\r\n category: this.category\r\n });\r\n // this.processes = this._processService.getProcesses(this.categoryId);\r\n\r\n this.processes = this.category.UserProcesses;\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { StateService } from '@uirouter/core';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromShared from './store';\r\nimport { Process } from './store/process.model';\r\n// import { AppComponent } from '../../app.component';\r\n\r\n@Component({\r\n selector: 'ef-process',\r\n templateUrl: './process.component.html',\r\n styleUrls: ['./process.component.scss']\r\n})\r\nexport class ProcessComponent implements OnInit {\r\n constructor(\r\n private log: LoggingService,\r\n private ss: StateService,\r\n private store: Store\r\n ) {}\r\n\r\n @Input() public process: Process;\r\n @Input() public catId: number;\r\n public disabled: boolean;\r\n\r\n ngOnInit() {\r\n this.disabled = !this.process.RouteName;\r\n // this.log.verbose({type: 'ProcessComponent:ngOnInit', process: this.process, disabled: this.disabled});\r\n }\r\n\r\n public goto(process: Process) {\r\n this.store.dispatch(fromShared.clearProcess());\r\n this.store.dispatch(fromShared.upsertProcess({ process }));\r\n const stateName =\r\n process?.RouteName?.toLowerCase().replace('/', '.') ?? 'main';\r\n this.log.debug({ type: 'ProcessComponent:goto', process, stateName });\r\n this.ss.go(stateName, { process: { ...process, catId: this.catId } });\r\n // this.app.onMenuButtonClick(null);\r\n }\r\n}\r\n","export enum ProcessEnum {\r\n CompanySetting = 49,\r\n TimeLaborReconciliation = 165,\r\n PayrollExport = 174\r\n}\r\n","export * from './process.model';\r\nexport * from './process.actions';\r\nexport * from './process.reducer';\r\nexport * from './process.selectors';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { Process } from './process.model';\r\n\r\nexport const upsertProcess = createAction(\r\n '[Process/API] Upsert Process',\r\n props<{ process: Process }>()\r\n);\r\n\r\nexport const deleteProcess = createAction(\r\n '[Process/API] Delete Process',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const clearProcess = createAction(\r\n '[Process/API] Clear Process'\r\n);\r\n","export interface Process {\r\n ProcessID: number;\r\n ProcessDesc: string;\r\n ProcessName: string;\r\n ProcessTitle: string;\r\n ProcessLabel?: string;\r\n ProcessForWeb?: boolean;\r\n ProcessForSystem?: boolean;\r\n ProcessResource?: string;\r\n ProcessResourceImage?: string;\r\n ProcessUrl?: string; // url\r\n UrlDemo?: string; // url\r\n UrlTraining?: string; // url\r\n UrlDocumentation?: string;\r\n UrlTip?: string; // url\r\n CatProcessSeqenceNbr?: number;\r\n RouteName?: string;\r\n IsSuperUserProcess?: boolean;\r\n MsgCount?: number;\r\n CatSequenceNbr?: number;\r\n displayinmenu?: boolean;\r\n disabled?: boolean;\r\n href?: string;\r\n ImageOnly?: boolean;\r\n target?: string;\r\n}\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { Process } from './process.model';\r\nimport * as ProcessActions from './process.actions';\r\n\r\nexport const processesFeatureKey = 'processes';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: (model: Process) => model.ProcessID\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst processReducer = createReducer(\r\n initialState,\r\n on(ProcessActions.upsertProcess, (state, action) =>\r\n adapter.upsertOne(action.process, state)\r\n ),\r\n on(ProcessActions.deleteProcess, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(ProcessActions.clearProcess, state => adapter.removeAll(state))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return processReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromShared from './process.reducer';\r\nimport { adapter } from './process.reducer';\r\n\r\nexport const selectProcessState = createFeatureSelector(\r\n fromShared.processesFeatureKey\r\n);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = adapter.getSelectors(selectProcessState);\r\n\r\nexport const selectCurrent = createSelector(selectAll, x => x[0]);\r\n","import {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport formatForApiCall from './formatForApiCall';\r\n\r\nconst log = new LoggingService();\r\n@Injectable()\r\nexport class PUTInterceptor implements HttpInterceptor {\r\n intercept(\r\n req: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n let cloneReq = req.clone();\r\n if (\r\n req.method.toLocaleLowerCase() === 'put' ||\r\n req.method.toLocaleLowerCase() === 'post'\r\n ) {\r\n const body = req.body;\r\n let newBody;\r\n if (Array.isArray(body)) {\r\n newBody = body.map(x => formatForApiCall(x));\r\n } else {\r\n newBody = formatForApiCall(body);\r\n }\r\n cloneReq = req.clone({ body: newBody });\r\n // log.verbose({type: 'PUTInterceptor', req, cloneReq});\r\n }\r\n return next.handle(cloneReq);\r\n }\r\n}\r\n","export function selectEditor_withBlank(cell, onRendered, success, cancel, editorParams) {\r\n // cell - the cell component for the editable cell\r\n // onRendered - function to call when the editor has been rendered\r\n // success - function to call to pass the successfuly updated value to Tabulator\r\n // cancel - function to call to abort the edit and return to a normal cell\r\n // editorParams - params object passed into the editorParams column definition property\r\n\r\n // create and style editor\r\n const editor = document.createElement('SELECT') as any;\r\n editor.id = 'selectEditor_withBlank';\r\n\r\n editor.setAttribute('type', 'select');\r\n\r\n // create and style input\r\n editor.style.padding = '3px';\r\n editor.style.width = '100%';\r\n editor.style.height = '100%';\r\n editor.style.boxSizing = 'border-box';\r\n\r\n const option = document.createElement('OPTION');\r\n option.setAttribute('value', '');\r\n const label = document.createTextNode('');\r\n option.appendChild(label);\r\n editor.appendChild(option);\r\n\r\n editorParams.values.forEach(type => {\r\n const option = document.createElement('OPTION');\r\n option.setAttribute('value', type.value);\r\n const label = document.createTextNode(type.label);\r\n option.appendChild(label);\r\n editor.appendChild(option);\r\n });\r\n\r\n\r\n // set focus on the select box when the editor is selected (timeout allows for editor to be added to DOM)\r\n onRendered(function () {\r\n const val = editorParams.values.find(x => x.value == cell.getValue());\r\n editor.value = val.value;\r\n editor.title = val.label;\r\n editor.focus();\r\n });\r\n\r\n // when the value has been set, trigger the cell to update\r\n function successFunc() {\r\n const value = editor.selectedOptions;\r\n success(value[0].value);\r\n }\r\n\r\n editor.addEventListener('change', successFunc);\r\n editor.addEventListener('blur', successFunc);\r\n\r\n // return the editor element\r\n return editor;\r\n}\r\n\r\nexport function selectEditor(cell, onRendered, success, cancel, editorParams) {\r\n // cell - the cell component for the editable cell\r\n // onRendered - function to call when the editor has been rendered\r\n // success - function to call to pass the successfuly updated value to Tabulator\r\n // cancel - function to call to abort the edit and return to a normal cell\r\n // editorParams - params object passed into the editorParams column definition property\r\n\r\n // create and style editor\r\n const editor = document.createElement('SELECT') as any;\r\n editor.id = 'selectEditor';\r\n\r\n editor.setAttribute('type', 'select');\r\n\r\n // create and style input\r\n editor.style.padding = '3px';\r\n editor.style.width = '100%';\r\n editor.style.height = '100%';\r\n editor.style.boxSizing = 'border-box';\r\n\r\n const option = document.createElement('OPTION');\r\n option.setAttribute('value', '');\r\n const label = document.createTextNode('-- select an option --');\r\n option.appendChild(label);\r\n editor.appendChild(option);\r\n\r\n editorParams.values.forEach(type => {\r\n const option = document.createElement('OPTION');\r\n option.setAttribute('value', type.value);\r\n const label = document.createTextNode(type.label);\r\n option.appendChild(label);\r\n editor.appendChild(option);\r\n });\r\n\r\n\r\n // set focus on the select box when the editor is selected (timeout allows for editor to be added to DOM)\r\n onRendered(function () {\r\n const val = editorParams.values.find(x => x.value == cell.getValue());\r\n editor.value = val.value;\r\n editor.title = val.label;\r\n editor.focus();\r\n });\r\n\r\n // when the value has been set, trigger the cell to update\r\n function successFunc() {\r\n const value = editor.selectedOptions;\r\n success(value[0].value);\r\n }\r\n\r\n editor.addEventListener('change', successFunc);\r\n editor.addEventListener('blur', successFunc);\r\n\r\n // return the editor element\r\n return editor;\r\n}\r\n","export * as Logging from './logging';\r\n","export enum LogLevel {\r\n All = -2147483648,\r\n Verbose = 10000,\r\n Finest = 10000,\r\n Trace = 20000,\r\n Finer = 20000,\r\n Debug = 30000,\r\n Fine = 30000,\r\n Info = 40000,\r\n Notice = 50000,\r\n Warn = 60000,\r\n Error = 70000,\r\n Severe = 80000,\r\n Critical = 90000,\r\n Alert = 100000,\r\n Fatal = 110000,\r\n Emergency = 120000,\r\n Off = 2147483647\r\n}\r\n","export * from './logging.service';\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { LogLevel } from './LogLevelEnum';\r\n\r\nexport interface ILoggingService {\r\n log(message?: any);\r\n debug(message?: any);\r\n warn(message?: any);\r\n error(message?: any);\r\n info(message?: any);\r\n verbose(message?: any);\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoggingService implements ILoggingService {\r\n private static singleton: LoggingService;\r\n private logLevel: LogLevel;\r\n constructor() {\r\n if (LoggingService.singleton) {\r\n return LoggingService.singleton;\r\n } else {\r\n this.logLevel = environment.logLevel || LogLevel.Off;\r\n // tslint:disable-next-line:no-console\r\n console.info(\r\n `Logging service initialized at logging level ${this.logLevel}`\r\n );\r\n LoggingService.singleton = this;\r\n return this;\r\n }\r\n }\r\n\r\n /**\r\n * log\r\nitem: any */\r\n public log(\r\n message?: any,\r\n level: LogLevel = LogLevel.Info,\r\n ...optionalParams: any[]\r\n ) {\r\n if (this.logLevel <= level) {\r\n console.log(message, optionalParams);\r\n }\r\n }\r\n\r\n public debug(message?: any, ...optionalParams: any[]) {\r\n if (this.logLevel <= LogLevel.Debug) {\r\n // tslint:disable-next-line:no-console\r\n console.debug(message, ...optionalParams);\r\n }\r\n }\r\n public warn(message?: any, ...optionalParams: any[]) {\r\n if (this.logLevel <= LogLevel.Warn) {\r\n console.warn(message, ...optionalParams);\r\n }\r\n }\r\n public error(message?: any, ...optionalParams: any[]) {\r\n if (this.logLevel <= LogLevel.Error) {\r\n console.error(message, optionalParams);\r\n }\r\n }\r\n public info(message?: any, ...optionalParams: any[]) {\r\n if (this.logLevel <= LogLevel.Info) {\r\n // tslint:disable-next-line:no-console\r\n console.info(message, optionalParams);\r\n }\r\n }\r\n // alias for debug\r\n public verbose(message?: any, ...optionalParams: any[]) {\r\n if (this.logLevel <= LogLevel.Verbose) {\r\n this.debug(message, optionalParams);\r\n }\r\n }\r\n public time(label?: any) {\r\n // tslint:disable-next-line:no-console\r\n console.time(label);\r\n }\r\n public timeLog(label?: any) {\r\n // tslint:disable-next-line:no-console\r\n const x = console as any;\r\n if (x && x.timeLog) {\r\n (console as any).timeLog(label);\r\n }\r\n }\r\n public timeEnd(label?: any) {\r\n // tslint:disable-next-line:no-console\r\n console.timeEnd(label);\r\n }\r\n public timeStamp(label?: any) {\r\n // tslint:disable-next-line:no-console\r\n console.timeStamp(label);\r\n }\r\n public group(label?: any) {\r\n console.group(label);\r\n }\r\n public groupEnd() {\r\n console.groupEnd();\r\n }\r\n}\r\n\r\nexport class NullLogger implements ILoggingService {\r\n log(message?: any) {}\r\n debug(message?: any) {}\r\n warn(message?: any) {}\r\n error(message?: any) {}\r\n info(message?: any) {}\r\n verbose(message?: any) {}\r\n trace() {}\r\n time() {}\r\n timeLog() {}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport {\r\n AbstractFormGroupComponent,\r\n AbstractNgModelComponent,\r\n ProcessComponent,\r\n ProcessDetailComponent,\r\n ProcessListComponent,\r\n SafePipe\r\n} from '.';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { UnsavedChangesService } from '../shared/modal-dialog';\r\nimport {\r\n CategoryComponent,\r\n CategoryDetailComponent,\r\n CategoryListComponent\r\n} from './category';\r\nimport { ColumnSearchComponent } from './column-search/column-search.component';\r\nimport { LetDirective } from './directives/let/ef-let';\r\nimport { EfCheckboxComponent } from './ef-checkbox/ef-checkbox.component';\r\nimport { EfDropdownComponent } from './ef-dropdown/ef-dropdown.component';\r\nimport { EfaactPrimeNGModule } from './efaact-primeng.module';\r\nimport { ErrorsSidenavComponent } from './errors-sidenav';\r\nimport { ErrorsSidenavModule } from './errors-sidenav/errors-sidenav.module';\r\nimport { FeatureFlagDirective } from './feature-flag/feature-flag';\r\nimport { FeatureFlagConfig } from './feature-flag/feature-flag-config';\r\nimport { LoadingContainerComponent } from './loading/loading-container/loading-container.component';\r\nimport { LoadingComponent } from './loading/presenters/loading.component';\r\nimport { ConfirmComponent } from './modal-dialog/confirm/confirm.component';\r\nimport { UnsavedChangesComponent } from './modal-dialog/confirm/unsaved-changes.component';\r\nimport { DialogComponent } from './modal-dialog/dialog.component';\r\nimport { DialogService } from './modal-dialog/dialog.service';\r\nimport { PTableEditorDirective } from './p-datatable-editor.directive';\r\nimport { StatusIconComponent } from './status-icon';\r\nimport { StatusIconModule } from './status-icon/status-icon.module';\r\nimport { StopClickPropagationDirective } from './StopClickPropagation';\r\nimport { FilterByPipe } from './util/filter-by.pipe';\r\nimport { IsArrayPipe } from './util/is-array';\r\nimport { ItemLookupPipe } from './util/ItemLookup';\r\nimport { OrderByPipe } from './util/order-by.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n EfaactMaterialModule,\r\n EfaactPrimeNGModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ErrorsSidenavModule,\r\n UIRouterModule,\r\n StatusIconModule\r\n ],\r\n providers: [DialogService, UnsavedChangesService, FeatureFlagConfig],\r\n declarations: [\r\n ConfirmComponent,\r\n DialogComponent,\r\n UnsavedChangesComponent,\r\n LoadingContainerComponent,\r\n LoadingComponent,\r\n AbstractNgModelComponent,\r\n AbstractFormGroupComponent,\r\n ProcessListComponent,\r\n ProcessDetailComponent,\r\n ProcessComponent,\r\n CategoryComponent,\r\n CategoryListComponent,\r\n CategoryDetailComponent,\r\n PTableEditorDirective,\r\n StopClickPropagationDirective,\r\n FeatureFlagDirective,\r\n ItemLookupPipe,\r\n OrderByPipe,\r\n FilterByPipe,\r\n IsArrayPipe,\r\n SafePipe,\r\n LetDirective,\r\n ColumnSearchComponent,\r\n EfDropdownComponent,\r\n EfCheckboxComponent\r\n ],\r\n exports: [\r\n OrderByPipe,\r\n FilterByPipe,\r\n IsArrayPipe,\r\n SafePipe,\r\n ConfirmComponent,\r\n ItemLookupPipe,\r\n EfaactMaterialModule,\r\n EfaactPrimeNGModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n PTableEditorDirective,\r\n StopClickPropagationDirective,\r\n LoadingContainerComponent,\r\n LoadingComponent,\r\n FeatureFlagDirective,\r\n ProcessListComponent,\r\n ProcessDetailComponent,\r\n ProcessComponent,\r\n CategoryComponent,\r\n CategoryListComponent,\r\n CategoryDetailComponent,\r\n ErrorsSidenavComponent,\r\n StatusIconComponent,\r\n LetDirective,\r\n ColumnSearchComponent,\r\n EfDropdownComponent,\r\n EfCheckboxComponent\r\n ]\r\n})\r\nexport class SharedModule {}\r\n","export * from './status-icon.component';\r\nexport * from './status-icon';\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { getStatusIcon } from './status-icon';\r\nimport { ReplaySubject, combineLatest } from 'rxjs';\r\nimport { startWith, takeWhile, tap } from 'rxjs/operators';\r\nimport { LoggingService } from '../services/logging';\r\n\r\n@Component({\r\n selector: 'ef-status-icon',\r\n templateUrl: './status-icon.component.html',\r\n styleUrls: ['./status-icon.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class StatusIconComponent implements OnDestroy {\r\n public StatusSubject = new ReplaySubject(1);\r\n @Input() public set status(value) {\r\n this.StatusSubject.next(value);\r\n // this.result = getStatusIcon(value);\r\n }\r\n public MessageSubject = new ReplaySubject(1);\r\n @Input() public set message(value) {\r\n this.MessageSubject.next(value);\r\n }\r\n public result;\r\n private active = true;\r\n constructor(\r\n protected cdRef: ChangeDetectorRef,\r\n private log: LoggingService\r\n ) {\r\n combineLatest([\r\n this.StatusSubject,\r\n this.MessageSubject.pipe(startWith(''))\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active)\r\n // tap(([status, message]) =>\r\n // this.log.verbose({\r\n // type: 'StatusIconComponent::combineLatest',\r\n // status,\r\n // message\r\n // })\r\n // )\r\n )\r\n .subscribe(([status, message]) => {\r\n this.result = getStatusIcon(status, message);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StatusIconComponent } from './status-icon.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n StatusIconComponent\r\n ],\r\n exports: [StatusIconComponent],\r\n})\r\nexport class StatusIconModule { }\r\n","import { ResponseStatus } from '../../common/Interfaces';\r\nimport { LoggingService } from '../services/logging';\r\nconst log = new LoggingService();\r\nexport function getStatusIcon(\r\n status,\r\n message = ''\r\n): {\r\n isMaterial: boolean;\r\n isFontawesome: boolean;\r\n isFASpinner: boolean;\r\n icon: string;\r\n isSuccess: boolean;\r\n isAccent: boolean;\r\n isWarning: boolean;\r\n isError: boolean;\r\n iconText: string;\r\n} {\r\n const statusNumber = Number(status);\r\n const result = {\r\n isMaterial: false,\r\n isFontawesome: false,\r\n isFASpinner: false,\r\n icon: '',\r\n isSuccess: false,\r\n isAccent: false,\r\n isWarning: false,\r\n isError: false,\r\n iconText: ''\r\n };\r\n\r\n result.isMaterial = false;\r\n result.isFontawesome = false;\r\n result.isFASpinner = false;\r\n\r\n result.icon = '';\r\n result.isSuccess = false;\r\n result.isWarning = false;\r\n result.isError = false;\r\n switch (statusNumber) {\r\n case ResponseStatus.Success:\r\n result.isMaterial = true;\r\n result.icon = 'check_circle';\r\n result.iconText = 'pi pi-check-circle'\r\n result.isSuccess = true;\r\n break;\r\n case ResponseStatus.Warning:\r\n result.isMaterial = true;\r\n result.icon = 'report_problem';\r\n result.iconText = 'pi pi-exclamation-triangle'\r\n result.isWarning = true;\r\n break;\r\n case ResponseStatus.ClientError:\r\n case ResponseStatus.Failed:\r\n result.iconText = 'pi pi-times-circle'\r\n result.isError = true;\r\n case ResponseStatus.ConcurrencyViolation:\r\n case ResponseStatus.PartialSuccess:\r\n case ResponseStatus.LoginExpired:\r\n result.isMaterial = true;\r\n result.icon = 'highlight_off';\r\n result.isError = true;\r\n break;\r\n case ResponseStatus.Loading:\r\n result.isFontawesome = true;\r\n result.isFASpinner = true;\r\n break;\r\n case ResponseStatus.Adding:\r\n result.isMaterial = true;\r\n result.icon = 'add_circle';\r\n result.isAccent = true;\r\n break;\r\n default:\r\n result.iconText = '
';\r\n result.isError = false;\r\n result.isWarning = false;\r\n result.isSuccess = false;\r\n result.isMaterial = false;\r\n result.isFontawesome = false;\r\n result.isFASpinner = false;\r\n return result;\r\n break;\r\n }\r\n // const cssClass = `class=\"status-icon ${\r\n // result.isMaterial ? 'material-icons ' : ''\r\n // }${result.isFontawesome ? 'fa fas far ' : ''}${\r\n // result.isSuccess ? 'green ' : ''\r\n // }${result.isWarning ? 'yellow ' : ''}${result.isError ? 'red ' : ''}${\r\n // result.isFASpinner ? 'fa-spinner fa-spin ' : ''\r\n // }\"`;\r\n // result.iconText = `
${result.icon}
`;\r\n\r\n log.verbose({ type: 'getStatusIcon', status, message, result });\r\n return result;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\n@Pipe({\r\n name: 'itemlookup'\r\n})\r\nexport class ItemLookupPipe implements PipeTransform {\r\n transform(ary: any, field: string, id: any): any {\r\n try {\r\n const result =\r\n Array.isArray(ary) && ary.length\r\n ? ary.find(x => x[field].toString() === id.toString())\r\n : { [`${field}`]: id };\r\n // log.verbose({type: 'ItemLookupPipe', ary, field, id, result});\r\n return result || id;\r\n } catch (e) {\r\n return id;\r\n }\r\n }\r\n}\r\n","export function fastpivot(arr) {\r\n 'use strict';\r\n let obj = {};\r\n if (typeof arr !== 'string' && arr.length > 0) {\r\n // get columns\r\n const thekeys = Object.keys(arr[0]);\r\n\r\n const temp = {};\r\n\r\n // loop through columns\r\n thekeys.forEach(function (f) {\r\n temp[f] = {};\r\n temp[f]['_labels'] = [];\r\n temp[f]['_labelsdata'] = [];\r\n temp[f]['_data'] = {};\r\n });\r\n\r\n // loop all rows and for each column, store values\r\n arr.forEach(function (f, i) {\r\n thekeys.forEach(function (a) {\r\n const value = f[a];\r\n temp[a]['_data'][value] = (temp[a]['_data'][value] || 0) + 1;\r\n temp[a]['_labels'][value] = null;\r\n });\r\n });\r\n\r\n // now reloop the columns to store unique values\r\n thekeys.forEach(function (f) {\r\n for (const i in temp[f]['_data']) {\r\n temp[f]['_labelsdata'].push(temp[f]['_data'][i]);\r\n }\r\n temp[f]['_labels'] = Object.keys(temp[f]['_labels']);\r\n });\r\n\r\n obj = temp;\r\n }\r\n return obj as any;\r\n}\r\n","import { Pipe, PipeTransform, Predicate } from '@angular/core';\r\nimport { LoggingService } from '../services/logging';\r\n\r\n@Pipe({\r\n name: 'filterBy'\r\n})\r\nexport class FilterByPipe implements PipeTransform {\r\n constructor(private log: LoggingService) {}\r\n transform(values: Array, thisPredicate: string) {\r\n if (!values) {\r\n return [];\r\n }\r\n this.log.verbose({ type: 'FilterByPipe', thisPredicate, values });\r\n const pred: Predicate = eval(thisPredicate);\r\n return values.filter(pred);\r\n }\r\n}\r\n","export function getDynamicColumns(\r\n item: T,\r\n filterItems: string[] = []\r\n): string[] {\r\n const _filterItems =\r\n filterItems && filterItems.length > 0 ? filterItems : [];\r\n const keys = Object.keys(item);\r\n let result = keys;\r\n result = result.filter(x => !_filterItems.includes(x));\r\n result = result.filter(x => !!item[x]);\r\n result = result.filter(x => !(item[x] instanceof Date));\r\n result = result.filter(\r\n x => typeof item[x] === 'object'\r\n // || typeof item[x] === 'string'\r\n // || typeof item[x] === 'boolean'\r\n // || typeof item[x] === 'number'\r\n );\r\n return result;\r\n}\r\n","export function groupBy(ary: TItem[], property: any): TItem[][] {\r\n return ary.reduce(function (acc, obj) {\r\n // const key = obj[property];\r\n const key = property(obj);\r\n if (!acc[key]) {\r\n acc[key] = [];\r\n }\r\n acc[key].push(obj);\r\n return acc;\r\n }, []);\r\n}\r\n","import { LoggingService } from '../services/logging';\r\n\r\nconst log = new LoggingService();\r\n// this is the best way to handle accordion open/close\r\n// baseheight may need adjustment depending on anything outside the tabs\r\nexport function handleOnOpen(\r\n $event: number[],\r\n baseHeight: number,\r\n tabHeight: string\r\n) {\r\n log.verbose({\r\n type: 'shared:handleOnOpen',\r\n $event,\r\n activeState: this.activeState\r\n });\r\n tabHeight = `${\r\n baseHeight / ($event && $event.length ? $event.length : 1) - 1\r\n }vh`;\r\n // setTimeout(() => {\r\n // window.dispatchEvent(new Event('resize'));\r\n // }, 0);\r\n}\r\n","export * from './fastpivot';\r\nexport * from './filter-by.pipe';\r\nexport * from './get-dynamic-columns';\r\nexport * from './groupBy';\r\nexport * from './handleOnOpen';\r\nexport * from './is-array';\r\nexport * from './is-element-visible';\r\nexport * from './is-light-color';\r\nexport * from './ItemLookup';\r\nexport * from './key-value';\r\nexport * from './on-push-change-detection';\r\nexport * from './order-by.pipe';\r\nexport * from './uniqby';\r\nexport * from './is-array';\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'isArray'\r\n})\r\nexport class IsArrayPipe implements PipeTransform {\r\n transform(value: unknown): boolean {\r\n return Array.isArray(value);\r\n }\r\n}\r\n","import { LoggingService } from '../../shared/services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport function isElementVisible(el, holder) {\r\n holder = holder || document.body;\r\n const { top, bottom, height } = el.getBoundingClientRect();\r\n const holderRect = holder.getBoundingClientRect();\r\n const result = top <= holderRect.top\r\n ? holderRect.top - top <= height\r\n : bottom - holderRect.bottom <= height;\r\n log.verbose({type: 'isElementVisible', el, holder, result});\r\n\r\n return result;\r\n}\r\n","// tslint:disable: no-bitwise\r\nexport function isLight(color) {\r\n // Variables for red, green, blue values\r\n let r, g, b, hsp;\r\n\r\n // Check the format of the color, HEX or RGB?\r\n if (color.match(/^rgb/)) {\r\n // If RGB --> store the red, green, blue values in separate variables\r\n color = color.match(\r\n /^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/\r\n );\r\n\r\n r = color[1];\r\n g = color[2];\r\n b = color[3];\r\n } else {\r\n // If hex --> Convert it to RGB: http://gist.github.com/983661\r\n color = +(\r\n '0x' + color.slice(1).replace(color.length < 5 && /./g, '$&$&')\r\n );\r\n\r\n r = color >> 16;\r\n g = (color >> 8) & 255;\r\n b = color & 255;\r\n }\r\n\r\n // HSP (Highly Sensitive Poo) equation from http://alienryderflex.com/hsp.html\r\n hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\r\n\r\n // Using the HSP value, determine whether the color is light or dark\r\n if (hsp > 127.5) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n","export interface KeyValue {\r\n key: K;\r\n value: V;\r\n}\r\n","import { ChangeDetectorRef } from '@angular/core';\r\nimport { ComponentFixture } from '@angular/core/testing';\r\n\r\n// helper function to address test fixture.detectchanges not working for components with ChangeDetectionStrategy.OnPush https://github.com/angular/angular/issues/12313\r\nexport async function runOnPushChangeDetection(cf: ComponentFixture) {\r\n cf.detectChanges();\r\n const cd = cf.debugElement.injector.get(\r\n // tslint:disable-next-line:no-any\r\n ChangeDetectorRef as any\r\n );\r\n cd.detectChanges();\r\n await cf.whenStable();\r\n return;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'orderBy'\r\n})\r\nexport class OrderByPipe implements PipeTransform {\r\n private fieldSorter = fields => (a, b) =>\r\n fields\r\n .map(o => {\r\n let dir = 1;\r\n if (o[0] === '-') {\r\n dir = -1;\r\n o = o.substring(1);\r\n }\r\n return a[o] > b[o] ? dir : a[o] < b[o] ? -dir : 0;\r\n })\r\n .reduce((p, n) => (p ? p : n), 0);\r\n\r\n transform(value: Array, arg?: string): Array {\r\n if (!value) {\r\n return;\r\n }\r\n const newArray = Array.from(value);\r\n if (arg) {\r\n const props = arg.split(',');\r\n return newArray.sort(this.fieldSorter(props));\r\n } else {\r\n return newArray.sort((a, b) => a.localeCompare(b));\r\n }\r\n }\r\n}\r\n","export function uniqBy(\r\n a: T[],\r\n key: (x: T) => T[keyof T] | number | string\r\n): T[] {\r\n const seen = {};\r\n return a.filter(function (item) {\r\n if (item) {\r\n const k = key(item) && key(item).toString();\r\n return seen.hasOwnProperty(k) ? false : (seen[k] = true);\r\n } else {\r\n return false;\r\n }\r\n });\r\n}\r\n\r\nexport function uniqFilter(value, index, self) {\r\n return self.indexOf(value) === index;\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport {\r\n IAuthenticateRequest,\r\n IAuthenticateResponse\r\n} from '../auth/authentication.service';\r\nimport { IRememberMe } from '../auth/IRememberMe';\r\n\r\nexport enum ActionTypes {\r\n Login = '[root] Login',\r\n Logout = '[root] Logout',\r\n Reset = '[root] Reset',\r\n GetVersion = '[root] GetVersion',\r\n VersionSuccess = '[root] VersionSuccess'\r\n}\r\n\r\nexport class LoginAction implements Action {\r\n constructor(\r\n public payload: {\r\n req: IAuthenticateRequest | IRememberMe;\r\n resp: IAuthenticateResponse;\r\n }\r\n ) {}\r\n readonly type = ActionTypes.Login;\r\n}\r\n\r\nexport class LogoutAction implements Action {\r\n readonly type = ActionTypes.Logout;\r\n}\r\n\r\nexport class ResetAction implements Action {\r\n readonly type = ActionTypes.Reset;\r\n}\r\nexport class GetVersionAction implements Action {\r\n readonly type = ActionTypes.GetVersion;\r\n}\r\nexport class VersionSuccess implements Action {\r\n readonly type = ActionTypes.VersionSuccess;\r\n constructor(public payload: { version: string }) {}\r\n}\r\n\r\nexport type ActionsUnion =\r\n | LogoutAction\r\n | LoginAction\r\n | ResetAction\r\n | GetVersionAction\r\n | VersionSuccess;\r\n","import { Action } from '@ngrx/store';\r\n\r\nexport enum CoreActionTypes {\r\n SetDateFormat = '[core] Set Date Format',\r\n SetRedirect = '[core] Set Redirect'\r\n}\r\n\r\nexport class SetDateFormat implements Action {\r\n constructor(public payload: string) {}\r\n readonly type = CoreActionTypes.SetDateFormat;\r\n}\r\nexport class SetRedirect implements Action {\r\n constructor(public payload: string | null) {}\r\n readonly type = CoreActionTypes.SetRedirect;\r\n}\r\nexport type CoreActionsUnion = SetDateFormat | SetRedirect;\r\n","import { CoreActionTypes, CoreActionsUnion } from './core.actions';\r\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\r\n\r\nexport interface CoreState {\r\n dateFormat: string;\r\n redir: string;\r\n loading: boolean;\r\n}\r\n\r\nexport const initialState: CoreState = {\r\n dateFormat: 'MM/DD/YYYY',\r\n redir: '',\r\n loading: false\r\n};\r\n\r\nexport function reducer(\r\n state: CoreState = initialState,\r\n action: CoreActionsUnion\r\n): CoreState {\r\n switch (action.type) {\r\n case CoreActionTypes.SetDateFormat:\r\n return {\r\n ...state,\r\n dateFormat: action.payload\r\n };\r\n case CoreActionTypes.SetRedirect:\r\n return {\r\n ...state,\r\n redir: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst coreState = createFeatureSelector('core');\r\n\r\nexport const getDateFormat = createSelector(coreState, x => x.dateFormat);\r\nexport const getRedirect = createSelector(coreState, x => x.redir);\r\n","export * from './core.actions';\r\nexport * from './core.reducer';\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { Actions, Effect, createEffect, ofType } from '@ngrx/effects';\r\nimport { StateService } from '@uirouter/core';\r\nimport {\r\n catchError,\r\n concatMap,\r\n filter,\r\n map,\r\n mergeMap,\r\n switchMap,\r\n tap\r\n} from 'rxjs/operators';\r\nimport * as fromAuth from '../auth/store/auth.actions';\r\nimport * as fromSettings from '../company-setting';\r\nimport * as fromDataServices from '../data-services';\r\nimport * as fromLogo from '../logo/store/logo.actions';\r\nimport * as fromLookups from '../lookups';\r\nimport {\r\n LoadAuthorizationClasses,\r\n LoadAuthorizationTypes,\r\n LoadContractTypes,\r\n LoadDaysOfWeek,\r\n LoadDirectReports,\r\n LoadIndirectTypes,\r\n LoadPayrollItems,\r\n LoadServiceItems,\r\n LoadStates,\r\n LoadUserGroups,\r\n LookupActionTypes,\r\n SetDirectReports\r\n} from '../lookups/store/actions';\r\nimport * as fromReports from '../reporting/store';\r\nimport * as fromShared from '../shared';\r\nimport { ResponseStatus } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromUser from '../user-info/store/user.actions';\r\nimport * as fromUserRole from '../user-role/store/actions';\r\nimport * as fromRoot from './actions';\r\nimport { SetRedirect } from './core';\r\nimport { VersionService } from '../app.service';\r\n\r\n@Injectable()\r\nexport class EfaactEffects {\r\n contractDataService: EntityCollectionService;\r\n\r\n constructor(\r\n public entityServices: EntityServices,\r\n private actions$: Actions,\r\n private ss: StateService,\r\n private log: LoggingService,\r\n private versionService: VersionService\r\n ) {\r\n this.contractDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Contract.entityName\r\n );\r\n }\r\n\r\n @Effect() Login$ = this.actions$.pipe(\r\n ofType(fromRoot.ActionTypes.Login),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'rooteffect processing LoginAction',\r\n action\r\n })\r\n ),\r\n // concatmap processes items in sequence\r\n concatMap(action => [\r\n new fromAuth.RememberMe(action.payload.req),\r\n new fromAuth.LoginSuccess(action.payload.resp)\r\n ])\r\n );\r\n // Just using this to transform a logout to a sequence of actions (splitter pattern)\r\n @Effect({ dispatch: false })\r\n Logout$ = this.actions$.pipe(\r\n ofType(fromRoot.ActionTypes.Logout),\r\n map(() => new fromRoot.ResetAction()),\r\n tap(x => this.ss.go('main'))\r\n );\r\n @Effect() LoginSuccess$ = this.actions$.pipe(\r\n ofType(fromAuth.AuthActionTypes.LoginSuccess),\r\n tap(() =>\r\n this.contractDataService.getWithQuery({ Activeonly: false as any })\r\n ),\r\n concatMap(() => [\r\n new fromLookups.LoadPayrollItems([]),\r\n new fromLookups.LoadPayrollFrequency(),\r\n new fromUser.LoadUserInfo(),\r\n new fromUserRole.LoadUserRoles(),\r\n new LoadAuthorizationTypes(),\r\n new LoadUserGroups(),\r\n new LoadServiceItems(),\r\n new LoadAuthorizationClasses(),\r\n new LoadContractTypes(),\r\n new LoadIndirectTypes(),\r\n new LoadStates(),\r\n new fromLookups.LoadSplitday(),\r\n new LoadDaysOfWeek(),\r\n new fromLookups.LoadEntityFilter('User'),\r\n fromLookups.ScheduledDateActions.getScheduledDates({\r\n ShowAll: false\r\n }),\r\n // fromLookups.ContractActions.getContracts(), // this is loaded here for reports slide out\r\n new fromLookups.LoadTimeZones(),\r\n new fromLookups.LoadUserTimeZones(),\r\n // new fromManageUsers.LoadLogins({\r\n // userType: 7,\r\n // showInactive: false,\r\n // payrollItems: null,\r\n // serviceItems: null,\r\n // costCenters: null\r\n // }),\r\n new fromShared.Errors.ClearErrors(),\r\n new fromLookups.LoadColors(),\r\n new fromLookups.LoadMobileProviders(),\r\n fromSettings.getCompanySetting({\r\n SettingType: 'QuickbooksOnline'\r\n }),\r\n fromReports.setPopupBlocker({ value: false }),\r\n fromLogo.getLogo({ UploadType: 'Web Logo' })\r\n ])\r\n );\r\n\r\n // INFO: put anything that is required to be loaded for the logged in user in here\r\n @Effect() SetUserInfo$ = this.actions$.pipe(\r\n ofType(fromUser.UserActionTypes.SetUserInfo),\r\n mergeMap(action => [\r\n // new LoadTasks(), //removed this call from here and put it only where needed\r\n new fromUser.LoadUserPermissions(),\r\n new fromUser.LoadUserColors(action.payload.EmployeeListID),\r\n //new LoadDirectReports({ user: action.payload, activeOnly: false }), //removed this call from here and put it only where needed\r\n fromReports.getReports({\r\n // could maybe be removed and added to the LoginSuccess action\r\n EmployeeListID: action.payload.EmployeeListID\r\n })\r\n ]),\r\n catchError((e, c) => {\r\n this.log.error({ e, c });\r\n return c;\r\n })\r\n );\r\n\r\n // @Effect() DirectReports$ = this.actions$.pipe(\r\n // ofType(LookupActionTypes.SetDirectReports),\r\n // map(\r\n // a =>\r\n // new LoadPayrollItems([\r\n // ...((a.payload && a.payload.map(dr => dr.EmployeeListID)) ||\r\n // [])\r\n // ])\r\n // ),\r\n // catchError((e, c) => {\r\n // this.log.error({ e, c });\r\n // return c;\r\n // })\r\n // );\r\n\r\n @Effect() Errors$ = this.actions$.pipe(\r\n ofType(\r\n fromShared.Errors.ErrorsSidenavActionTypes.SetErrors\r\n ),\r\n filter(action =>\r\n action.payload.some(\r\n x =>\r\n !(x.MsgEntityID && x.MsgProcessID) &&\r\n x.StatusCode === ResponseStatus.Failed\r\n )\r\n ),\r\n map(() => new SetRedirect(null))\r\n );\r\n @Effect() version$ = this.actions$.pipe(\r\n ofType(fromRoot.ActionTypes.GetVersion),\r\n /** An EMPTY observable only emits completion. Replace with your own observable stream */\r\n switchMap(() =>\r\n this.versionService.getVersion().pipe(\r\n // tap(data => this.log.verbose({ type: 'version$:resp', data })),\r\n map(data => new fromRoot.VersionSuccess({ version: data })),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n}\r\n","export * from './actions';\r\nexport * from './reducers';\r\nexport * from './store.spec';\r\nexport * from './core/core.actions';\r\nexport * as Version from './versionReducer';\r\nexport { getDateFormat, getRedirect, CoreState } from './core/core.reducer';\r\n","// This reducer is for any state slices that are not lazily loaded. Any lazy loaded\r\n// state slices will extend this root state and add their own slice of state to it.\r\nimport { ActionReducer, ActionReducerMap, MetaReducer } from '@ngrx/store';\r\n// import * as fromRouter from '@ngrx/router-store';\r\n/**\r\n * storeFreeze prevents state from being mutated. When mutation occurs, an\r\n * exception will be thrown. This is useful during development mode to\r\n * ensure that none of the reducers accidentally mutates the state.\r\n */\r\nimport { storeFreeze } from 'ngrx-store-freeze';\r\nimport { localStorageSync } from 'ngrx-store-localstorage';\r\nimport { environment } from '../../environments/environment';\r\nimport * as fromAuthorization from '../auth';\r\nimport * as fromCompanySetting from '../company-setting';\r\nimport { LoginRequestStatus } from '../efaact-configuration/efaact-configuration.module';\r\nimport * as fromExpenses from '../expenses/store';\r\nimport * as fromLookups from '../lookups';\r\nimport * as fromOversign from '../oversign-time/store/oversign-time.reducer';\r\nimport * as fromReports from '../reporting';\r\nimport * as fromShared from '../shared';\r\nimport * as fromLoading from '../shared/loading/store';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromAuths from '../user-authorizations/store';\r\nimport * as fromUser from '../user-info';\r\nimport { userFeatureKey } from '../user-info';\r\nimport * as fromUserRole from '../user-role';\r\nimport * as fromVersion from './versionReducer';\r\nimport * as fromActions from './actions';\r\n/**\r\n * Every reducer module's default export is the reducer function itself. In\r\n * addition, each module should export a type or interface that describes\r\n * the state of the reducer plus any selector functions. The `* as`\r\n * notation packages up all of the exports into a single object.\r\n */\r\nimport * as fromCore from './core/core.reducer';\r\n\r\nconst log = new LoggingService();\r\n\r\n/**\r\n * As mentioned, we treat each reducer like a table in a database. This means\r\n * our top level state interface is just a map of keys to inner state types.\r\n */\r\n// TODO: everything other than layout is defined for testing right now,\r\n// see how to remove that so all these aren't hard coded in here.\r\nexport interface State {\r\n core: fromCore.CoreState;\r\n loading: fromLoading.LoadingState;\r\n auth: fromAuthorization.State;\r\n [userFeatureKey]: fromUser.State;\r\n lookups: fromLookups.LookupState;\r\n reports: fromReports.State;\r\n user_role: fromUserRole.UserRoleState;\r\n errors: fromShared.Errors.State;\r\n expenses: fromExpenses.State;\r\n companySettings: fromCompanySetting.State; // how to use fromCompanySetting.companySettingsFeatureKey?\r\n oversignTime: fromOversign.State;\r\n processes: fromShared.State;\r\n version: fromVersion.State;\r\n\r\n // router: fromRouter.RouterReducerState;\r\n}\r\n\r\nexport const initialState: State = {\r\n core: fromCore.initialState,\r\n loading: fromLoading.initialState,\r\n auth: fromAuthorization.initialState,\r\n [userFeatureKey]: fromUser.initialState,\r\n lookups: fromLookups.initialState,\r\n reports: fromReports.initialState,\r\n user_role: fromUserRole.initialState,\r\n errors: fromShared.Errors.initialState,\r\n expenses: fromExpenses.initialState,\r\n companySettings: fromCompanySetting.initialState, // how to use fromCompanySetting.companySettingsFeatureKey?\r\n oversignTime: fromOversign.initialState,\r\n processes: fromShared.initialState,\r\n version: fromVersion.initialState\r\n // , errors: fromShared.Errors.initialState\r\n // , expenses: fromExpenses.initialState\r\n};\r\n\r\n/**\r\n * Our state is composed of a map of action reducer functions.\r\n * These reducer functions are called with each dispatched action\r\n * and the current or initial state and return a new immutable state.\r\n */\r\nexport const reducers: ActionReducerMap = {\r\n core: fromCore.reducer,\r\n loading: fromLoading.reducer,\r\n auth: fromAuthorization.reducer,\r\n [userFeatureKey]: fromUser.reducer,\r\n lookups: fromLookups.reducer,\r\n reports: fromReports.reducer,\r\n user_role: fromUserRole.reducer,\r\n errors: fromShared.Errors.reducer,\r\n expenses: fromExpenses.reducer,\r\n companySettings: fromCompanySetting.reducer, // how to use fromCompanySetting.companySettingsFeatureKey?\r\n oversignTime: fromOversign.reducer,\r\n processes: fromShared.reducer,\r\n version: fromVersion.reducer\r\n // router: fromRouter.routerReducer,\r\n};\r\n\r\n// log all actions\r\nexport function logger(reducer: ActionReducer): ActionReducer {\r\n return function (state: State, action: any): State {\r\n log.verbose({ type: 'redux', state, action });\r\n\r\n return reducer(state, action);\r\n };\r\n}\r\n\r\n// TODO: do we need to move user for lazy loading?\r\nexport function localStorageSyncReducer(\r\n reducer: ActionReducer\r\n): ActionReducer {\r\n const loginKeys: string[] = [\r\n 'core',\r\n 'auth',\r\n userFeatureKey,\r\n 'lookups',\r\n 'logoes',\r\n 'reports',\r\n 'user_role',\r\n 'errors',\r\n 'scheduledDates'\r\n ];\r\n // localStorageSync({keys: [{todos: ['name', 'status'] }, ... ]})).\r\n return localStorageSync({\r\n // keys: [{ auth: ['username', 'pin', 'rememberMe', 'token', 'loggedIn'], }],\r\n keys: loginKeys,\r\n rehydrate: true\r\n })(reducer);\r\n}\r\n\r\nexport function sessionStorageSyncReducer(\r\n reducer: ActionReducer\r\n): ActionReducer {\r\n return localStorageSync({\r\n keys: [\r\n 'core',\r\n 'auth',\r\n userFeatureKey,\r\n fromAuths.userAuthorizationsFeatureKey,\r\n 'expenses',\r\n 'lookups',\r\n 'reports',\r\n 'user_role',\r\n 'manageusers',\r\n fromCompanySetting.companySettingsFeatureKey,\r\n fromLookups.ScheduledDateReducer.scheduledDatesFeatureKey,\r\n fromOversign.oversignTimeFeatureKey,\r\n fromShared.processesFeatureKey,\r\n 'entityCache'\r\n ],\r\n rehydrate: true,\r\n storage: sessionStorage\r\n })(reducer);\r\n}\r\n\r\nexport function clearState(reducer) {\r\n return function (state, action) {\r\n let result = state;\r\n // log.verbose({ type: 'root.reducer:clearState', action });\r\n if (\r\n action.type === fromActions.ActionTypes.Logout ||\r\n action.type === fromAuthorization.AuthActionTypes.Logout ||\r\n action.type === fromActions.ActionTypes.Reset\r\n ) {\r\n // log.verbose({ type: 'root.reducer:clearState:clearing', action });\r\n if (state.auth.rememberMe) {\r\n result = {\r\n auth: {\r\n username: state.auth.username,\r\n pin: state.auth.pin,\r\n rememberMe: state.auth.rememberMe,\r\n status: LoginRequestStatus.Undefined,\r\n token: undefined,\r\n loggedIn: false\r\n },\r\n logoes: {\r\n ...state.logoes\r\n }\r\n };\r\n } else {\r\n // state = undefined;\r\n result = {\r\n logoes: {\r\n ...state.logoes\r\n }\r\n };\r\n }\r\n }\r\n\r\n return reducer(result, action);\r\n };\r\n}\r\n\r\n// const metaReducers: Array> = [localStorageSyncReducer];\r\n/**\r\n * By default, @ngrx/store uses combineReducers with the reducer map to compose\r\n * the root meta-reducer. To add more meta-reducers, provide an array of meta-reducers\r\n * that will be composed to form the root meta-reducer.\r\n */\r\nexport const metaReducers: MetaReducer[] = !environment.production\r\n ? [\r\n clearState,\r\n localStorageSyncReducer,\r\n sessionStorageSyncReducer,\r\n storeFreeze\r\n // logger\r\n ]\r\n : [clearState, localStorageSyncReducer, sessionStorageSyncReducer];\r\n// export const metaReducers: MetaReducer[] = [resetState];\r\n","import { TestBedStatic } from '@angular/core/testing';\r\nimport { Store } from '@ngrx/store';\r\nimport { provideMockStore } from '@ngrx/store/testing';\r\nimport * as fromAuth from '../auth/store/auth.reducer';\r\nimport * as fromLookups from '../lookups';\r\nimport * as fromShared from '../shared';\r\nimport * as fromUserInfo from '../user-info/store';\r\nimport * as fromRoot from './reducers';\r\n/**\r\n * register an ngrx store in the TestBedStatic providers\r\n * @param testbed\r\n */\r\nexport function SetupMockStore(\r\n testbed: TestBedStatic,\r\n initialState: any = fromRoot.initialState\r\n) {\r\n testbed.configureTestingModule({\r\n providers: [provideMockStore({ initialState })],\r\n teardown: { destroyAfterEach: false }\r\n });\r\n}\r\n\r\n/**\r\n * This is currently a bit of a sledge hammer, break this down per test to only use the selectors they need when time permits\r\n * @param testbed\r\n */\r\nexport function SetupMockSelectors(testbed: TestBedStatic) {\r\n // most common selectors, you may need to add your own after calling setupMockStore in your tests configureTestingModule call.\r\n const mockStore = testbed.inject(Store) as any;\r\n\r\n mockStore.overrideSelector(fromShared.selectAll, [\r\n {\r\n ProcessID: 0,\r\n ProcessDesc: 'Unit Tests',\r\n ProcessName: 'Unit Tests',\r\n ProcessTitle: 'Unit Tests',\r\n ProcessLabel: 'Unit Tests'\r\n }\r\n ]);\r\n mockStore.overrideSelector(fromShared.selectCurrent, {\r\n ProcessID: 0,\r\n ProcessDesc: 'Unit Tests',\r\n ProcessName: 'Unit Tests',\r\n ProcessTitle: 'Unit Tests',\r\n ProcessLabel: 'Unit Tests'\r\n });\r\n\r\n // lookups\r\n mockStore.overrideSelector(\r\n fromLookups.getDaysOfWeek,\r\n fromLookups.initialState.daysOfWeek\r\n );\r\n mockStore.overrideSelector(\r\n fromLookups.getEntityFilters,\r\n fromLookups.initialState.entityFilters\r\n );\r\n mockStore.overrideSelector(\r\n fromLookups.getUserGroupsLookup,\r\n fromLookups.initialState.userGroups\r\n );\r\n mockStore.overrideSelector(\r\n fromLookups.getCostCenters,\r\n fromLookups.initialState.userGroups\r\n );\r\n mockStore.overrideSelector(\r\n fromLookups.getSplitdays,\r\n fromLookups.initialState.splitDays\r\n );\r\n mockStore.overrideSelector(\r\n fromLookups.getPayrollFrequency,\r\n fromLookups.initialState.payrollFrequency\r\n );\r\n mockStore.overrideSelector(\r\n fromLookups.getUserIdFormats,\r\n fromLookups.initialState.userIdFormats\r\n );\r\n mockStore.overrideSelector(\r\n fromLookups.getTimeZones,\r\n fromLookups.initialState.timeZones\r\n );\r\n\r\n // user-info\r\n mockStore.overrideSelector(\r\n fromUserInfo.getUserInfo,\r\n fromUserInfo.initialState.userInfo\r\n );\r\n mockStore.overrideSelector(fromUserInfo.getUser, fromUserInfo.initialState);\r\n\r\n // errors\r\n mockStore.overrideSelector(\r\n fromShared.Errors.getShowErrors,\r\n fromShared.Errors.initialState.showErrors\r\n );\r\n mockStore.overrideSelector(\r\n fromShared.Errors.getErrors,\r\n fromShared.Errors.initialState.errors\r\n );\r\n\r\n // auth\r\n mockStore.overrideSelector(\r\n fromAuth.getLoggedIn,\r\n fromAuth.initialState.loggedIn\r\n );\r\n mockStore.overrideSelector(\r\n fromAuth.getAuthToken,\r\n fromAuth.initialState.token\r\n );\r\n // Errors\r\n mockStore.overrideSelector(fromShared.Errors.getShowErrors, {});\r\n mockStore.overrideSelector(fromShared.Errors.getErrors, []);\r\n}\r\n\r\nexport { SetupMockStore as default };\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromActions from './actions';\r\n\r\nexport interface State {\r\n version: string;\r\n}\r\n\r\nexport const initialState: State = {\r\n version: '0.0.0'\r\n};\r\nexport function reducer(\r\n state: State | undefined = initialState,\r\n action: fromActions.ActionsUnion\r\n): State {\r\n switch (action.type) {\r\n case fromActions.ActionTypes.VersionSuccess:\r\n return {\r\n ...state,\r\n version: action.payload.version\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const selectReminderState = createFeatureSelector('version');\r\n\r\nexport const selectVersion = createSelector(\r\n selectReminderState,\r\n (state: State) => state.version\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport compare from 'just-compare';\r\nimport * as moment from 'moment';\r\nimport { Subject } from 'rxjs';\r\nimport { ResponseStatus } from './shared';\r\nimport { LoggingService } from './shared/services/logging/logging.service';\r\n\r\nconst log = new LoggingService();\r\nlet ts: TabulatorService;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n/// Contains any logic needed for display or conversion for tabulator\r\nexport class TabulatorService {\r\n // TODO: strongly type this to a RowComponent if possible\r\n private rowChangedSource = new Subject();\r\n public rowChanged$ = this.rowChangedSource.asObservable();\r\n private currentRowChanged = false;\r\n private _tabulator: any;\r\n public set tabulator(value: any) {\r\n this._tabulator = value;\r\n log.debug({\r\n type: 'TabulatorService:tabulator:set',\r\n tabulator: this._tabulator\r\n });\r\n }\r\n private currentRow: any;\r\n constructor() {\r\n ts = this;\r\n $(document).on('click', function (evt: any) {\r\n log.debug({\r\n type: 'TabulatorService:document:click',\r\n evt,\r\n tabulator: ts._tabulator\r\n });\r\n if (ts._tabulator && ts.currentRow) {\r\n if (\r\n !ts._tabulator.is(evt.target) && // if the target of the click isn't the container...\r\n ts._tabulator.has(evt.target).length === 0 && // ... nor a descendant of the container\r\n !evt.target.className.includes('tabulator')\r\n ) {\r\n log.debug({\r\n type: 'TabulatorService:document:click:outside',\r\n target: evt.target,\r\n tabulator: ts._tabulator\r\n });\r\n ts.checkForDifferentRow(undefined, undefined);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // INFO: be careful with the below, they should be wired up to tabulator events/editors,\r\n // and that makes \"this\" point to a tabulator instance, not a TabulatorService instance\r\n // cell - the cell component for the editable cell\r\n // onRendered - function to call when the editor has been rendered\r\n // success - function to call to pass the successfuly updated value to Tabulator\r\n // cancel - function to call to abort the edit and return to a normal cell\r\n // editorParams - params object passed into the editorParams column definition property\r\n public cellEdited(cell) {\r\n log.debug({\r\n type: 'TabulatorService:cellEdited',\r\n cell,\r\n tabulator: ts._tabulator\r\n });\r\n const row = cell.getRow();\r\n const data = cell.getData();\r\n ts.checkForDifferentRow(row, cell, true);\r\n ts.currentRow = row;\r\n\r\n if (\r\n data.Status &&\r\n !(\r\n data.Status.StatusCode === ResponseStatus.Success ||\r\n data.Status.StatusCode === ResponseStatus.Loading\r\n )\r\n ) {\r\n row.update({\r\n Status: { StatusCode: ResponseStatus.None, Message: '' }\r\n });\r\n }\r\n }\r\n public cellEditing(cell) {\r\n log.debug({\r\n type: 'TabulatorService:cellEditing',\r\n cell,\r\n tabulator: ts._tabulator\r\n });\r\n ts.checkForDifferentRow(cell.getRow(), cell);\r\n }\r\n public cellEditCancelled(cell) {\r\n log.debug({\r\n type: 'TabulatorService:cellEditCancelled',\r\n cell,\r\n tabulator: ts._tabulator\r\n });\r\n const row = cell.getRow();\r\n const data = cell.getData();\r\n if (\r\n data.Status &&\r\n !(\r\n data.Status.StatusCode === ResponseStatus.Success ||\r\n data.Status.StatusCode === ResponseStatus.Loading\r\n )\r\n ) {\r\n row.update({\r\n Status: { StatusCode: ResponseStatus.None, Message: '' }\r\n });\r\n }\r\n }\r\n public checkForDifferentRow(row, cell, updated = false) {\r\n log.verbose({\r\n type: 'TabulatorService:checkForDifferentRow',\r\n updated,\r\n value: cell && cell.getValue(),\r\n row,\r\n cell\r\n });\r\n ts.currentRowChanged = ts.currentRowChanged || updated;\r\n if (ts.currentRow) {\r\n const currentData = ts.currentRow.getData();\r\n const rowData = (row && row.getData()) || undefined;\r\n // TODO: would be nice if we could just check an ID here.\r\n if (compare(currentData, rowData)) {\r\n log.verbose({\r\n type: 'TabulatorService:checkForDifferentRow',\r\n currentData,\r\n rowData\r\n });\r\n if (cell) {\r\n log.verbose({\r\n type: 'TabulatorService:checkForDifferentRow-cancelEdit',\r\n cell\r\n });\r\n cell.cancelEdit();\r\n }\r\n if (ts.currentRowChanged) {\r\n ts.rowChangedSource.next(ts.currentRow);\r\n ts.currentRowChanged = false;\r\n }\r\n ts.currentRow = undefined;\r\n }\r\n }\r\n }\r\n public cellMouseHandler(e, cell) {\r\n ts.checkForDifferentRow(cell.getRow(), cell);\r\n }\r\n public rowMouseHandler(e, row) {\r\n ts.checkForDifferentRow(row, null);\r\n }\r\n // custom editors\r\n public dateEditor(cell, onRendered, success, cancel, editorParams) {\r\n const editor = document.createElement('input');\r\n\r\n editor.setAttribute('type', 'date');\r\n\r\n // style input\r\n editor.style.padding = '3px';\r\n editor.style.width = '100%';\r\n editor.style.boxSizing = 'border-box';\r\n\r\n // Set value of editor to the current value of the cell\r\n editor.value = moment(cell.getValue()).format('YYYY-MM-DD');\r\n // editor.value = cell.getValue();\r\n\r\n // set focus on the select box when the editor is selected (timeout allows for editor to be added to DOM)\r\n onRendered(function () {\r\n editor.focus();\r\n // editor.style.css = '100%';\r\n });\r\n\r\n // when the value has been set, trigger the cell to update\r\n function successFunc() {\r\n const newDate = moment(editor.value);\r\n const oldDate = moment(cell.getValue());\r\n const oldDateDayBefore = moment(cell.getValue());\r\n oldDateDayBefore.subtract(1, 'days');\r\n log.debug({\r\n type: 'TabulatorService:dateEditor:successFunc',\r\n oldDate,\r\n newDate,\r\n oldDateDayBefore\r\n });\r\n if (\r\n newDate.isSame(oldDate) ||\r\n (newDate.isAfter(oldDateDayBefore) && newDate.isBefore(oldDate))\r\n ) {\r\n log.debug({\r\n type: 'TabulatorService:dateEditor:successFunc:cancel()'\r\n });\r\n cancel();\r\n } else {\r\n log.debug({\r\n type: 'TabulatorService:dateEditor:successFunc:success()'\r\n });\r\n try {\r\n success(moment(editor.value).toDate());\r\n } catch (e) {\r\n cancel();\r\n }\r\n }\r\n }\r\n\r\n editor.addEventListener('blur', successFunc);\r\n\r\n // return the editor element\r\n return editor;\r\n }\r\n public numberOnly(cell, onRendered, success, cancel, editorParams) {\r\n const editor = document.createElement('input');\r\n const precision = editorParams.precision || 2;\r\n editor.setAttribute('type', 'text');\r\n // style input\r\n editor.style.padding = '3px';\r\n editor.style.width = '100%';\r\n editor.style.boxSizing = 'border-box';\r\n editor.value = cell.getValue();\r\n\r\n onRendered(function () {\r\n editor.focus();\r\n // editor.style.css = '100%';\r\n });\r\n function successFunc() {\r\n success(editor.value);\r\n }\r\n function validateNumber(e) {\r\n const reg = new RegExp(`^\\\\d+(\\\\.\\\\d{0,${precision}})?$`);\r\n if (e.keyCode === 8) {\r\n return;\r\n }\r\n if (!e.key.match(/^[\\d.]$/)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n if (!(editor.value + e.key).match(reg)) {\r\n e.preventDefault();\r\n }\r\n }\r\n editor.addEventListener('blur', successFunc);\r\n editor.addEventListener('keypress', validateNumber);\r\n editor.addEventListener('keydown', validateNumber);\r\n\r\n return editor;\r\n }\r\n public password(cell, onRendered, success, cancel, editorParams) {\r\n const editor = document.createElement('input');\r\n\r\n editor.setAttribute('type', 'password');\r\n editor.style.width = '100%';\r\n editor.style.height = '100%';\r\n editor.style.boxSizing = 'border-box';\r\n editor.value = cell.getValue();\r\n\r\n // set focus on the select box when the editor is selected (timeout allows for editor to be added to DOM)\r\n onRendered(function () {\r\n editor.focus();\r\n // editor.style.css = '100%';\r\n });\r\n\r\n // when the value has been set, trigger the cell to update\r\n function successFunc() {\r\n try {\r\n success(editor.value);\r\n } catch (e) {\r\n cancel();\r\n }\r\n }\r\n\r\n editor.addEventListener('blur', successFunc);\r\n\r\n // return the editor element\r\n return editor;\r\n }\r\n public validationFailed(cell, value, validators) {\r\n const row = cell.getRow();\r\n row.update({\r\n Status: {\r\n StatusCode: ResponseStatus.Failed,\r\n Message: `${value} is invalid.`\r\n }\r\n });\r\n }\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { TaskTimer } from '../../data-services/task-timer/task-timer.model';\r\n\r\nexport const getTaskTimer = createAction('[TaskTimer/API] GET TaskTimer');\r\n\r\nexport const putTaskTimer = createAction(\r\n '[TaskTimer/API] PUT TaskTimer',\r\n props<{ JsonString: any }>()\r\n);\r\n\r\nexport const putTaskTimerHistory = createAction(\r\n '[TaskTimer/API] PUT TaskTimerHistory',\r\n props<{ JsonString: any; StartDate?: string; EndDate?: string }>()\r\n);\r\n\r\nexport const loadTaskTimers = createAction(\r\n '[TaskTimer/API] Load TaskTimers',\r\n props<{ taskTimers: any[] }>()\r\n);\r\n\r\nexport const addTaskTimer = createAction(\r\n '[TaskTimer/API] Add TaskTimer',\r\n props<{ taskTimer: TaskTimer }>()\r\n);\r\n\r\nexport const upsertTaskTimer = createAction(\r\n '[TaskTimer/API] Upsert TaskTimer',\r\n props<{ taskTimer: TaskTimer }>()\r\n);\r\n\r\nexport const addTaskTimers = createAction(\r\n '[TaskTimer/API] Add TaskTimers',\r\n props<{ taskTimers: TaskTimer[] }>()\r\n);\r\n\r\nexport const upsertTaskTimers = createAction(\r\n '[TaskTimer/API] Upsert TaskTimers',\r\n props<{ taskTimers: TaskTimer[] }>()\r\n);\r\n\r\nexport const updateTaskTimer = createAction(\r\n '[TaskTimer/API] Update TaskTimer',\r\n props<{ taskTimer: Update }>()\r\n);\r\n\r\nexport const updateTaskTimers = createAction(\r\n '[TaskTimer/API] Update TaskTimers',\r\n props<{ taskTimers: Update[] }>()\r\n);\r\n\r\nexport const deleteTaskTimer = createAction(\r\n '[TaskTimer/API] Delete TaskTimer',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteTaskTimers = createAction(\r\n '[TaskTimer/API] Delete TaskTimers',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearTaskTimers = createAction('[TaskTimer/API] Clear TaskTimers');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { TaskTimerService } from '../task-timer.service';\r\nimport * as TimerActions from './task-timer.actions';\r\nimport * as TimerHistoryActions from './timer-history/task-timer-history.actions';\r\nimport moment from 'moment';\r\n\r\n@Injectable()\r\nexport class TaskTimerEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: TaskTimerService,\r\n ) {}\r\n\r\n get$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(TimerActions.getTaskTimer),\r\n switchMap(a =>\r\n this.service.get().pipe(\r\n flatMap(resp => [\r\n TimerActions.loadTaskTimers({\r\n taskTimers: JSON.parse(resp)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n put$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(TimerActions.putTaskTimer),\r\n switchMap(a =>\r\n this.service.put(a.JsonString).pipe(\r\n flatMap(c => [\r\n // TimerActions.updateTaskTimers({\r\n // taskTimers: [\r\n // {\r\n // id: `${JSON.parse(c)[0].empauthid}-${JSON.parse(c)[0].timerid}`,\r\n // changes: JSON.parse(c)[0]\r\n // }\r\n // ]\r\n // }),\r\n TimerActions.upsertTaskTimers({\r\n taskTimers: JSON.parse(c)\r\n })\r\n\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n putHist$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(TimerActions.putTaskTimerHistory),\r\n switchMap(a =>\r\n this.service.put(a.JsonString).pipe(\r\n flatMap(c => [\r\n // TimerActions.updateTaskTimers({\r\n // taskTimers: [\r\n // {\r\n // id: `${JSON.parse(c)[0].empauthid}-${JSON.parse(c)[0].timerid}`,\r\n // changes: JSON.parse(c)[0]\r\n // }\r\n // ]\r\n // }),\r\n TimerHistoryActions.upsertTaskTimerHistorys({\r\n TaskTimerHistorys: JSON.parse(c)\r\n }),\r\n TimerHistoryActions.postTaskTimerHistory({ StartDate: a.StartDate, EndDate: a.EndDate })\r\n\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TaskTimer } from '../../data-services/task-timer/task-timer.model';\r\nimport * as TaskTimerActions from './task-timer.actions';\r\n\r\nexport const taskTimersFeatureKey = 'taskTimers';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: TaskTimer) => `${model.empauthid}-${model.timerid}`\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const taskTimerReducer = createReducer(\r\n initialState,\r\n on(TaskTimerActions.addTaskTimer, (state, action) =>\r\n adapter.addOne(action.taskTimer, state)\r\n ),\r\n on(TaskTimerActions.upsertTaskTimer, (state, action) =>\r\n adapter.upsertOne(action.taskTimer, state)\r\n ),\r\n on(TaskTimerActions.addTaskTimers, (state, action) =>\r\n adapter.addMany(action.taskTimers, state)\r\n ),\r\n on(TaskTimerActions.upsertTaskTimers, (state, action) =>\r\n adapter.upsertMany(action.taskTimers, state)\r\n ),\r\n on(TaskTimerActions.updateTaskTimer, (state, action) =>\r\n adapter.updateOne(action.taskTimer, state)\r\n ),\r\n on(TaskTimerActions.updateTaskTimers, (state, action) =>\r\n adapter.updateMany(action.taskTimers, state)\r\n ),\r\n on(TaskTimerActions.deleteTaskTimer, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(TaskTimerActions.deleteTaskTimers, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(TaskTimerActions.loadTaskTimers, (state, action) =>\r\n adapter.setAll(action.taskTimers, state)\r\n ),\r\n on(TaskTimerActions.clearTaskTimers, state => adapter.removeAll(state))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return taskTimerReducer(state, action);\r\n}\r\n\r\nexport const selectTaskTimerState =\r\n createFeatureSelector(taskTimersFeatureKey);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectTaskTimerState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { TaskTimerHistory } from '../../../data-services/task-timer/task-timer.model';\r\n\r\nexport const postTaskTimerHistory = createAction(\r\n '[TaskTimerHistory/API] POST TaskTimerHistory',\r\n props<{ StartDate: string, EndDate: string }>()\r\n);\r\n\r\nexport const putTaskTimerHistory = createAction(\r\n '[TaskTimerHistory/API] PUT TaskTimerHistory',\r\n props<{ JsonString: any }>()\r\n);\r\n\r\nexport const loadTaskTimerHistorys = createAction(\r\n '[TaskTimerHistory/API] Load TaskTimerHistorys',\r\n props<{ TaskTimerHistorys: any[] }>()\r\n);\r\n\r\nexport const addTaskTimerHistory = createAction(\r\n '[TaskTimerHistory/API] Add TaskTimerHistory',\r\n props<{ TaskTimerHistory: TaskTimerHistory }>()\r\n);\r\n\r\nexport const upsertTaskTimerHistory = createAction(\r\n '[TaskTimerHistory/API] Upsert TaskTimerHistory',\r\n props<{ TaskTimerHistory: TaskTimerHistory }>()\r\n);\r\n\r\nexport const addTaskTimerHistorys = createAction(\r\n '[TaskTimerHistory/API] Add TaskTimerHistorys',\r\n props<{ TaskTimerHistorys: TaskTimerHistory[] }>()\r\n);\r\n\r\nexport const upsertTaskTimerHistorys = createAction(\r\n '[TaskTimerHistory/API] Upsert TaskTimerHistorys',\r\n props<{ TaskTimerHistorys: TaskTimerHistory[] }>()\r\n);\r\n\r\nexport const updateTaskTimerHistory = createAction(\r\n '[TaskTimerHistory/API] Update TaskTimerHistory',\r\n props<{ TaskTimerHistory: Update }>()\r\n);\r\n\r\nexport const updateTaskTimerHistorys = createAction(\r\n '[TaskTimerHistory/API] Update TaskTimerHistorys',\r\n props<{ TaskTimerHistorys: Update[] }>()\r\n);\r\n\r\nexport const deleteTaskTimerHistory = createAction(\r\n '[TaskTimerHistory/API] Delete TaskTimerHistory',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteTaskTimerHistorys = createAction(\r\n '[TaskTimerHistory/API] Delete TaskTimerHistorys',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearTaskTimerHistorys = createAction(\r\n '[TaskTimerHistory/API] Clear TaskTimerHistorys'\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, flatMap, mergeMap, switchMap } from 'rxjs/operators';\r\nimport * as fromShared from '../../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../../shared';\r\nimport { TaskTimerService } from '../../task-timer.service';\r\nimport * as HistoryActions from './task-timer-history.actions';\r\nimport moment from 'moment';\r\n\r\n@Injectable()\r\nexport class TaskTimerHistoryEffects {\r\n constructor(private actions$: Actions, private service: TaskTimerService) {}\r\n\r\n post$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(HistoryActions.postTaskTimerHistory),\r\n switchMap(a =>\r\n this.service.post(a.StartDate, a.EndDate).pipe(\r\n flatMap(resp => [\r\n HistoryActions.loadTaskTimerHistorys({\r\n TaskTimerHistorys: JSON.parse(resp)\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n // put$ = createEffect(() =>\r\n // this.actions$.pipe(\r\n // ofType(TimerActions.putTaskTimer),\r\n // switchMap(a =>\r\n // this.service.put(a.JsonString).pipe(\r\n // flatMap(c => [\r\n // // TimerActions.updateTaskTimers({\r\n // // taskTimers: [\r\n // // {\r\n // // id: `${JSON.parse(c)[0].empauthid}-${JSON.parse(c)[0].timerid}`,\r\n // // changes: JSON.parse(c)[0]\r\n // // }\r\n // // ]\r\n // // }),\r\n // TimerActions.upsertTaskTimers({\r\n // taskTimers: JSON.parse(c)\r\n // })\r\n\r\n // ]),\r\n // catchError(fromShared.Errors.handleServiceError)\r\n // )\r\n // )\r\n // )\r\n // );\r\n}\r\n","import { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TaskTimerHistory } from '../../../data-services/task-timer/task-timer.model';\r\nimport * as TaskTimerHistoryActions from './task-timer-history.actions';\r\n\r\nexport const TaskTimerHistorysFeatureKey = 'TaskTimerHistorys';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: TaskTimerHistory) =>\r\n `${model.empauthid}-${model.timerid}`\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nexport const TaskTimerHistoryReducer = createReducer(\r\n initialState,\r\n on(TaskTimerHistoryActions.addTaskTimerHistory, (state, action) =>\r\n adapter.addOne(action.TaskTimerHistory, state)\r\n ),\r\n on(TaskTimerHistoryActions.upsertTaskTimerHistory, (state, action) =>\r\n adapter.upsertOne(action.TaskTimerHistory, state)\r\n ),\r\n on(TaskTimerHistoryActions.addTaskTimerHistorys, (state, action) =>\r\n adapter.addMany(action.TaskTimerHistorys, state)\r\n ),\r\n on(TaskTimerHistoryActions.upsertTaskTimerHistorys, (state, action) =>\r\n adapter.upsertMany(action.TaskTimerHistorys, state)\r\n ),\r\n on(TaskTimerHistoryActions.updateTaskTimerHistory, (state, action) =>\r\n adapter.updateOne(action.TaskTimerHistory, state)\r\n ),\r\n on(TaskTimerHistoryActions.updateTaskTimerHistorys, (state, action) =>\r\n adapter.updateMany(action.TaskTimerHistorys, state)\r\n ),\r\n on(TaskTimerHistoryActions.deleteTaskTimerHistory, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(TaskTimerHistoryActions.deleteTaskTimerHistorys, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(TaskTimerHistoryActions.loadTaskTimerHistorys, (state, action) =>\r\n adapter.setAll(action.TaskTimerHistorys, state)\r\n ),\r\n on(TaskTimerHistoryActions.clearTaskTimerHistorys, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return TaskTimerHistoryReducer(state, action);\r\n}\r\n\r\nexport const selectTaskTimerHistoryState = createFeatureSelector(\r\n TaskTimerHistorysFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(selectTaskTimerHistoryState);\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { Observable } from 'rxjs';\r\nimport { TaskTimer, TaskTimerHistory } from '../../data-services/task-timer';\r\nimport { map } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { Store, select } from '@ngrx/store';\r\nimport * as fromActions from '../store/task-timer.actions';\r\nimport * as fromReducer from '../store/task-timer.reducer';\r\nimport * as fromHistActions from '../store/timer-history/task-timer-history.actions';\r\nimport * as fromHistReducer from '../store/timer-history/task-timer-history.reducer';\r\nimport clone from 'just-clone';\r\nimport { Process } from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromUserInfo from '../../user-info/store/user.reducer';\r\nimport { IUserInfo } from '../../user-info';\r\n@Component({\r\n selector: 'ef-task-timer-feature',\r\n templateUrl: './task-timer-feature.component.html',\r\n styleUrls: ['./task-timer-feature.component.scss']\r\n})\r\nexport class TaskTimerFeatureComponent implements OnInit {\r\n //taskTimerDataService: EntityCollectionService;\r\n items$: Observable;\r\n timerHistory$: Observable;\r\n process$: Observable;\r\n userInfo$: Observable;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {\r\n // this.taskTimerDataService =\r\n // entityServices.getEntityCollectionService(\r\n // fromDataServices.TaskTimer.entityName\r\n // );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(fromActions.getTaskTimer());\r\n this.setupObservables();\r\n //this.taskTimerDataService.getAll();\r\n }\r\n\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(fromUserInfo.getUserInfo));\r\n this.items$ = this.store.pipe(\r\n select(fromReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n this.timerHistory$ = this.store.pipe(\r\n select(fromHistReducer.selectAll),\r\n map(x => clone(x))\r\n );\r\n // this.items$ = this.taskTimerDataService.entities$.pipe(\r\n // map(x => JSON.parse(x[0]))\r\n // );\r\n }\r\n\r\n setupSubscriptions() {}\r\n\r\n onStartTimer(event) {\r\n this.store.dispatch(fromActions.putTaskTimer({ JsonString: event }));\r\n }\r\n onStopTimer(event) {\r\n this.store.dispatch(fromActions.putTaskTimer({ JsonString: event }));\r\n }\r\n onLoadTimerHistory(event) {\r\n this.store.dispatch(\r\n fromHistActions.postTaskTimerHistory({\r\n StartDate: event.StartDate,\r\n EndDate: event.EndDate\r\n })\r\n );\r\n }\r\n onUpdateTimerHistory(event) {\r\n const jsonstr = JSON.stringify(event);\r\n this.store.dispatch(\r\n fromActions.putTaskTimerHistory({\r\n JsonString: jsonstr,\r\n StartDate: event.HistoryStart,\r\n EndDate: event.HistoryEnd\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { TaskTimer, TaskTimerHistory } from '../../data-services/task-timer/task-timer.model';\r\nimport * as moment from 'moment-timezone';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { Table } from 'primeng/table';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { Checkbox } from 'primeng/checkbox';\r\nimport { IUserInfo } from '../../user-info';\r\n\r\n@Component({\r\n selector: 'ef-task-timer-presenter',\r\n templateUrl: './task-timer-presenter.component.html',\r\n styleUrls: ['./task-timer-presenter.component.scss']\r\n})\r\nexport class TaskTimerPresenterComponent implements OnInit {\r\n private ItemsSubject = new ReplaySubject(1);\r\n private _items: TaskTimer[];\r\n @Input() set items(value: TaskTimer[]) {\r\n if (value && value.length > 0) {\r\n value = value.map(x => ({\r\n ...x,\r\n uniqueid: `${x.empauthid}-${x.timerid}`,\r\n StatusText:\r\n x.Status == 1.4\r\n ? 'Status: Partial Validate'\r\n : x.Status == 1.5\r\n ? 'Status: Validated'\r\n : x.Status == 2\r\n ? 'Status: Approved'\r\n : x.Status == 3\r\n ? 'Status: Disapproved'\r\n : ''\r\n }));\r\n this._items = value;\r\n this.ItemsSubject.next(value);\r\n\r\n this.timerList = value.filter(x => x.stoptime == null);\r\n this.timerCbx = this.timerList.some(x => x.timeractive == true);\r\n if (this.timerList.findIndex(x => x.starttime != null) != -1) {\r\n this.selectedTask = [];\r\n this.selectedTask.push(\r\n this.timerList.find(x => x.starttime != null)\r\n );\r\n this.stopTimerDisabled = false;\r\n this.startTimerDisabled = true;\r\n }\r\n this.timerList = this.timerList.map(x => ({\r\n ...x,\r\n starttime:\r\n x.starttime != null\r\n ? moment(new Date(x.starttime)).format(\r\n 'MM/DD/YYYY HH:mm:ss'\r\n )\r\n : null\r\n }));\r\n this.tasksSelectItem = this.timerList.map(x => ({\r\n label: x.taskdisplay,\r\n value: x.empauthid\r\n }));\r\n this.history = value.filter(x => x.stoptime != null);\r\n this.history = this.history.sort((a, b) => {\r\n return (\r\n new Date(b.stoptime).getTime() -\r\n new Date(a.stoptime).getTime()\r\n );\r\n });\r\n this.history = this.history.map(x => ({\r\n ...x,\r\n starttime:\r\n x.starttime != null\r\n ? moment(x.starttime).format('MM/DD/YYYY HH:mm:ss')\r\n : null,\r\n stoptime:\r\n x.stoptime != null\r\n ? moment(x.stoptime).format('MM/DD/YYYY HH:mm:ss')\r\n : null\r\n }));\r\n }\r\n }\r\n get items(): TaskTimer[] {\r\n return this._items;\r\n }\r\n\r\n private TimerHistorySubject = new ReplaySubject(1);\r\n private _timerhistory: TaskTimerHistory[];\r\n @Input() set timerHistory(value: TaskTimerHistory[]) {\r\n if (value && value.length > 0) {\r\n value = value.map(x => ({\r\n ...x,\r\n readonly: (new Date(x.stoptime).getTime() < this.currentMonthStart.getTime() || new Date(x.stoptime).getTime() > this.currentMonthEnd.getTime()) ? true : false,\r\n uniqueid: `${x.empauthid}-${x.timerid}`,\r\n StatusText:\r\n x.status == 1.4\r\n ? 'Status: Partial Validate'\r\n : x.status == 1.5\r\n ? 'Status: Validated'\r\n : x.status == 2\r\n ? 'Status: Approved'\r\n : x.status == 3\r\n ? 'Status: Disapproved'\r\n : ''\r\n }));\r\n value = value.sort((a, b) => new Date(b.stoptime).getTime() - new Date(a.stoptime).getTime());\r\n this._timerhistory = value;\r\n this.TimerHistorySubject.next(value);\r\n this.TimerHistoryTable.value = value;\r\n }\r\n }\r\n get timerHistory(): TaskTimerHistory[] {\r\n return this._timerhistory;\r\n }\r\n\r\n private UserInfoSubject = new ReplaySubject(1);\r\n private _userinfo: IUserInfo;\r\n @Input() set userInfo (value: IUserInfo) {\r\n if (value) {\r\n this._userinfo = value;\r\n this.UserInfoSubject.next(value);\r\n\r\n this.currentMonthStart = new Date(value.UserEntryStartDate);\r\n this.currentMonthEnd = new Date(value.UserEntryEndDate);\r\n this.dateRange = [this.currentMonthStart, this.currentMonthEnd];\r\n }\r\n }\r\n get userInfo(): IUserInfo {\r\n return this._userinfo;\r\n }\r\n\r\n\r\n @ViewChild('TimerTable') TimerTable: Table;\r\n @ViewChild('TimerHistoryTable') TimerHistoryTable: Table;\r\n @ViewChild('ShowHistoryCbx') ShowHistoryCbx: Checkbox;\r\n\r\n @Output() StartTimer = new ReplaySubject(1);\r\n @Output() StopTimer = new ReplaySubject(1);\r\n @Output() LoadTimerHistory = new ReplaySubject(1);\r\n @Output() UpdateTimerHistory = new ReplaySubject(1);\r\n\r\n tasksSelectItem: SelectItem[];\r\n\r\n selectedTask: TaskTimer[];\r\n\r\n history: TaskTimer[];\r\n timerList: TaskTimer[];\r\n\r\n calculatedTime = null;\r\n\r\n timeZone: any;\r\n\r\n startTimerDisabled = true;\r\n stopTimerDisabled = true;\r\n\r\n statusText: string;\r\n\r\n editing?: TaskTimer;\r\n clonedTaskTimer: { [i: string]: TaskTimer } = {};\r\n\r\n showHistory = false;\r\n\r\n startDate: Date;\r\n endDate: Date;\r\n\r\n histStartTime: Date;\r\n histEndTime: Date;\r\n\r\n errorOnUpdate = false;\r\n uiErrorMessage: string;\r\n\r\n commentOnUpdate = false;\r\n comment: string;\r\n\r\n rowData: TaskTimerHistory;\r\n\r\n dateRange: Date[];\r\n currentMonthStart: Date;\r\n currentMonthEnd: Date;\r\n\r\n showErrorDialog = false;\r\n showTimerOverlapDialog = false;\r\n\r\n timerCbx = false;\r\n\r\n constructor(private log: LoggingService) {}\r\n\r\n ngOnInit(): void {\r\n this.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n }\r\n\r\n showHistoryCheckboxChanged($event) {\r\n this.TimerHistoryTable.clear();\r\n if ($event.checked == true) {\r\n this.historyDatesSelected(this.currentMonthStart);\r\n this.historyDatesSelected(this.currentMonthEnd);\r\n //this.TimerHistoryTable.value = this.timerHistory;\r\n } else {\r\n this.TimerHistoryTable.value = this.history;\r\n }\r\n }\r\n\r\n rowSelected(event) {\r\n this.selectedTask[0] = event.data;\r\n this.startTimerDisabled = false;\r\n this.stopTimerDisabled = true;\r\n }\r\n rowUnselected(event) {\r\n this.selectedTask = [];\r\n this.startTimerDisabled = true;\r\n this.stopTimerDisabled = true;\r\n }\r\n\r\n startTimer() {\r\n //this.ShowHistoryCbx.disabled = true;\r\n var splitarr = moment.tz(moment(), this.timeZone).format().split('-');\r\n var starttime = `${splitarr[0]}-${splitarr[1]}-${splitarr[2]}`;\r\n this.selectedTask[0] = {\r\n ...this.selectedTask[0],\r\n timersource: 'Web',\r\n timeractive: true,\r\n starttime: starttime\r\n };\r\n const jsonstr = JSON.stringify(this.selectedTask[0]);\r\n this.StartTimer.next(jsonstr);\r\n this.selectedTask = [];\r\n this.startTimerDisabled = true;\r\n this.stopTimerDisabled = false;\r\n }\r\n stopTimer() {\r\n //this.ShowHistoryCbx.disabled = false;\r\n var splitarr = moment.tz(moment(), this.timeZone).format().split('-');\r\n var stoptime = `${splitarr[0]}-${splitarr[1]}-${splitarr[2]}`;\r\n this.selectedTask[0] = {\r\n ...this.selectedTask[0],\r\n timersource: 'Web',\r\n timeractive: false,\r\n stoptime: stoptime\r\n };\r\n const jsonstr = JSON.stringify(this.selectedTask[0]);\r\n this.StopTimer.next(jsonstr);\r\n this.selectedTask = [];\r\n this.startTimerDisabled = true;\r\n this.stopTimerDisabled = true;\r\n }\r\n viewCalculatedTimeClicked(rowData) {\r\n var currentTime = new Date().getTime();\r\n var startTime = new Date(rowData.starttime).getTime();\r\n var diff = currentTime - startTime;\r\n var msec = diff;\r\n var hh = Math.floor(msec / 1000 / 60 / 60);\r\n msec -= hh * 1000 * 60 * 60;\r\n var mm = Math.floor(msec / 1000 / 60);\r\n msec -= mm * 1000 * 60;\r\n var ss = Math.floor(msec / 1000);\r\n msec -= ss * 1000;\r\n\r\n this.calculatedTime = `${hh} hr ${mm} min ${ss} sec`;\r\n\r\n const itemIndex = this.timerList.findIndex(\r\n x => x.starttime == rowData.starttime\r\n );\r\n\r\n this.timerList[itemIndex] = {\r\n ...this.timerList[itemIndex],\r\n CalculatedTime: this.calculatedTime\r\n };\r\n\r\n setTimeout(() => {\r\n this.calculatedTime = null;\r\n }, 5000);\r\n }\r\n\r\n historyDatesSelected($event) {\r\n this.timerHistory = [];\r\n if (moment($event).isValid()) {\r\n if (this.startDate != null) {\r\n if (this.startDate.getTime() > new Date($event).getTime()) {\r\n this.startDate = $event;\r\n } else {\r\n this.endDate = $event;\r\n }\r\n } else {\r\n this.startDate = $event;\r\n }\r\n if (this.startDate != null && this.endDate != null) {\r\n this.LoadTimerHistory.next({StartDate: this.startDate, EndDate: this.endDate});\r\n }\r\n }\r\n console.log($event);\r\n }\r\n\r\n filterTable($event, filterType) {\r\n // use this for all table filters\r\n if (filterType == 'task') {\r\n this.TimerTable.filter($event.value, 'empauthid', 'in');\r\n }\r\n }\r\n\r\n onEditInit($event: { data: TaskTimerHistory }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: TaskTimerHistory) {\r\n this.histStartTime = new Date(rowData.starttime);\r\n this.histEndTime = new Date(rowData.stoptime);\r\n //new Date(moment(rowData.starttime).hours(), moment(rowData.starttime).minutes(), moment(rowData.starttime).seconds());\r\n this.clonedTaskTimer[rowData.uniqueid] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n }\r\n\r\n onRowEditSave(rowData: TaskTimerHistory) {\r\n let timerOverlap = false;\r\n let hoursTotalForDay = 0;\r\n const calcHrsForRow = Math.floor((this.histEndTime.getTime() - this.histStartTime.getTime()) / 1000 / 60 / 60);\r\n this.timerHistory.forEach(timer => {\r\n if (timer.workdate == rowData.workdate && rowData.timerid != timer.timerid) {\r\n hoursTotalForDay += +timer.calculatedhours;\r\n if ((this.histStartTime.getTime() >= new Date(timer.starttime).getTime() && this.histStartTime.getTime() <= new Date(timer.stoptime).getTime()) || \r\n (this.histEndTime.getTime() >= new Date(timer.starttime).getTime() && this.histEndTime.getTime() <= new Date(timer.stoptime).getTime())) {\r\n timerOverlap = true;\r\n \r\n return;\r\n }\r\n } \r\n });\r\n\r\n if ((hoursTotalForDay + calcHrsForRow) < 24 && timerOverlap == false) {\r\n this.showCommentDialog(); \r\n } else { \r\n if ((hoursTotalForDay + calcHrsForRow) > 24) {\r\n this.showErrorDialog = true;\r\n }\r\n if (timerOverlap) {\r\n this.showTimerOverlapDialog = true;\r\n timerOverlap = false;\r\n }\r\n }\r\n \r\n this.rowData = rowData;\r\n this.log.verbose('onRowEditSave');\r\n }\r\n\r\n onRowEditCancel(item: TaskTimerHistory) {\r\n // const index = this.tableItemSource.findIndex(\r\n // x => x.uniqueid === item.uniqueid\r\n // );\r\n // if (index >= 0) {\r\n // this.tableItemSource.splice(\r\n // index,\r\n // 1,\r\n // this.clonedTaskTimer[item.uniqueid]\r\n // );\r\n // }\r\n // this.tableItemSource = [...this.tableItemSource];\r\n\r\n delete this.clonedTaskTimer[item.uniqueid];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n\r\n showCommentDialog() {\r\n this.commentOnUpdate = true;\r\n }\r\n addComment() {\r\n var splitstart = moment(this.histStartTime).format().split('-');\r\n var start = `${splitstart[0]}-${splitstart[1]}-${splitstart[2]}`;\r\n var splitstop = moment(this.histEndTime).format().split('-');\r\n var stop = `${splitstop[0]}-${splitstop[1]}-${splitstop[2]}`;\r\n this.rowData = {\r\n ...this.rowData,\r\n timecomment: this.comment,\r\n starttime: start,\r\n stoptime: stop,\r\n HistoryStart: moment(this.startDate).format('MM/DD/YYYY'),\r\n HistoryEnd: moment(this.endDate).format('MM/DD/YYYY')\r\n };\r\n\r\n this.UpdateTimerHistory.next(this.rowData);\r\n delete this.clonedTaskTimer[this.rowData.uniqueid];\r\n delete this.editing;\r\n this.commentOnUpdate = false;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport { entityName } from '../data-services/rate-ceiling/rate-ceiling.data-service';\r\n//import { TaskTimerDataService } from '../data-services/task-timer';\r\nimport { TaskTimerRoute } from './task-timer.route';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport * as reducer from './store/task-timer.reducer';\r\nimport * as histreducer from './store/timer-history/task-timer-history.reducer';\r\nimport { TaskTimerEffects } from './store/task-timer.effects';\r\nimport { TaskTimerHistoryEffects } from './store/timer-history/task-timer-history.effects';\r\n\r\n@NgModule({\r\n providers: [\r\n //TaskTimerDataService\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [TaskTimerRoute]\r\n }),\r\n StoreModule.forFeature(reducer.taskTimersFeatureKey, reducer.reducer),\r\n StoreModule.forFeature(\r\n histreducer.TaskTimerHistorysFeatureKey,\r\n histreducer.reducer\r\n ),\r\n EffectsModule.forFeature([TaskTimerEffects, TaskTimerHistoryEffects])\r\n ]\r\n})\r\nexport class TaskTimerModule {\r\n constructor(\r\n entityDataService: EntityDataService\r\n //taskTimerService: TaskTimerDataService\r\n ) {\r\n //entityDataService.registerService(entityName, taskTimerService);\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { TaskTimerFeatureComponent } from './task-timer-feature/task-timer-feature.component';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const TaskTimerRoute: Ng2StateDeclaration = {\r\n name: 'tasktimer',\r\n url: '/tasktimer',\r\n data: { requiresAuth: true },\r\n\r\n component: TaskTimerFeatureComponent\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IDeleteEntity, IGenericResponse } from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TaskTimerService {\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n private uri = `${environment.apiLocation}/TaskTimer`;\r\n private histUri = `${environment.apiLocation}/TaskTimerHistory`;\r\n\r\n public post(startDate: string, endDate: string): Observable {\r\n this.log.verbose({\r\n type: 'TaskTimerService:get',\r\n uri: this.uri\r\n });\r\n return this.http\r\n .post(this.histUri, { StartDate: startDate, EndDate: endDate })\r\n .pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'TaskTimerService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public get(): Observable {\r\n this.log.verbose({\r\n type: 'TaskTimerService:get',\r\n uri: this.uri\r\n });\r\n return this.http.get(this.uri).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'TaskTimerService:response',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public put(\r\n jsonstring: string,\r\n StartDate?: string,\r\n EndDate?: string\r\n ): Observable {\r\n return this.http\r\n .put(this.uri, {\r\n JsonString: jsonstring\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'TaskTimerService:put',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\r\n\r\n@Component({\r\n selector: 'ef-theme-toggle',\r\n templateUrl: './theme-toggle.component.html',\r\n styleUrls: ['./theme-toggle.component.scss']\r\n})\r\nexport class ThemeToggleComponent implements OnInit {\r\n\r\n isLightTheme: boolean;\r\n isDarkTheme: boolean;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n // onSetTheme(e: MatSlideToggleChange, theme: string) {\r\n\r\n // // if (theme == \"dark\") {\r\n // // document.getElementById('themeTag').classList.add('dark-theme');\r\n // // document.getElementById('themeTag').classList.remove('light-theme');\r\n // // document.getElementById('themeTag').classList.remove('default-theme');\r\n // // }\r\n\r\n // // if (theme == \"light\") {\r\n // // document.getElementById('themeTag').classList.add('light-theme');\r\n // // document.getElementById('themeTag').classList.remove('dark-theme');\r\n // // document.getElementById('themeTag').classList.remove('default-theme');\r\n // // }\r\n\r\n // // if (theme == \"default\") {\r\n // // document.getElementById('themeTag').classList.add('default-theme');\r\n // // document.getElementById('themeTag').classList.remove('light-theme');\r\n // // document.getElementById('themeTag').classList.remove('dark-theme');\r\n // // }\r\n\r\n // theme = null;\r\n // }\r\n\r\n onSetTheme(e: MatSlideToggleChange) {\r\n\r\n if (e.checked == true) {\r\n document.getElementById('themeTag').classList.add('dark-theme');\r\n document.getElementById('themeTag').classList.remove('default-theme');\r\n } else {\r\n document.getElementById('themeTag').classList.add('default-theme');\r\n document.getElementById('themeTag').classList.remove('dark-theme');\r\n }\r\n // if (theme == \"dark\") {\r\n // document.getElementById('themeTag').classList.add('dark-theme');\r\n // document.getElementById('themeTag').classList.remove('light-theme');\r\n // document.getElementById('themeTag').classList.remove('default-theme');\r\n // }\r\n\r\n // if (theme == \"light\") {\r\n // document.getElementById('themeTag').classList.add('light-theme');\r\n // document.getElementById('themeTag').classList.remove('dark-theme');\r\n // document.getElementById('themeTag').classList.remove('default-theme');\r\n // }\r\n\r\n // if (theme == \"default\") {\r\n // document.getElementById('themeTag').classList.add('default-theme');\r\n // document.getElementById('themeTag').classList.remove('light-theme');\r\n // document.getElementById('themeTag').classList.remove('dark-theme');\r\n // }\r\n }\r\n}\r\n","export * from './itime-card';\r\nexport * from './store';\r\nexport * from './time-card-documentation-feature';\r\nexport * from './time-card-documentation-presenter';\r\nexport * from './time-card-feature';\r\nexport * from './time-card-presenter';\r\n","import { IModelWithId, IStatusMessage } from '../shared';\r\n\r\nexport interface ITimeCard extends IModelWithId {\r\n InterfaceType: string;\r\n TimerCreate: string;\r\n EmployeeListID: string;\r\n ChangeComment: string;\r\n CreateDate: Date;\r\n DateLastModified: Date;\r\n NbrOfRows: number;\r\n EmpAuthStartDate: Date;\r\n EmpAuthEndDate: Date;\r\n EmpAuthID: number;\r\n TaskDisplay: string;\r\n TaskLongName: string;\r\n ServiceItem: string;\r\n PayrollItem: string;\r\n EmpTimeID: string;\r\n WorkDate: string;\r\n EmployeeHours: number;\r\n TimeStatus: string;\r\n WorkDocumentedCount: number;\r\n TotalDocumentedHours?: number;\r\n IsTimeClockTime: boolean;\r\n WeeklyTotal: number;\r\n PeriodTotal: number;\r\n Status: IStatusMessage;\r\n IsReadOnly: boolean;\r\n ReadOnlyReason: string;\r\n DailyTotal: number;\r\n EmpAuthURL: string;\r\n WorkDateHdr: string;\r\n SplitWorkDate?: string;\r\n DateColor?: string;\r\n AvailableHours?: string;\r\n SuperUser?: boolean;\r\n DatePurpose?: string;\r\n LeavePayout?: boolean;\r\n LeavePayoutWeek?: boolean;\r\n PeriodHasSplitDay?: boolean;\r\n OutOfDateRange?: boolean;\r\n LeaveAccrualInfo?: string;\r\n AccountNumber?: number;\r\n ExpectedHours?: number;\r\n CurrentUserListID?: string;\r\n Deletedoc?: boolean;\r\n Forecolor_hex?: string;\r\n Backcolor_hex?: string;\r\n TaskSortOrder?: number;\r\n Row_Version: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { IManagementAction } from './IManagementAction';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ManagementActionService {\r\n private ManagementActionRespSubject = new BehaviorSubject(null);\r\n managementActionResp$ = this.ManagementActionRespSubject.asObservable();\r\n\r\n setManagementActionResponse(resp: any ) {\r\n this.ManagementActionRespSubject.next(resp);\r\n }\r\n}","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { IDirectReportsWithTimeStatus } from '../IDirectReportsWithTimeStatus';\r\n\r\nexport const getDirectReportsWithTimeStatus = createAction(\r\n '[TimeCard/API] Get Direct Reports With Time Status',\r\n props<{ UserListID: string, UserRole: number, EmployeeListID?: string, StartDate?: string, EndDate?: string, MyDRsOnly?: boolean }>()\r\n);\r\n\r\n////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport const loadDirectReportsWithTimeStatuss = createAction(\r\n '[DirectReportsWithTimeStatus/API] Load DirectReportsWithTimeStatuss',\r\n props<{ directReportsWithTimeStatuss: IDirectReportsWithTimeStatus[] }>()\r\n);\r\n\r\nexport const addDirectReportsWithTimeStatus = createAction(\r\n '[DirectReportsWithTimeStatus/API] Add DirectReportsWithTimeStatus',\r\n props<{ directReportsWithTimeStatus: IDirectReportsWithTimeStatus }>()\r\n);\r\n\r\nexport const upsertDirectReportsWithTimeStatus = createAction(\r\n '[DirectReportsWithTimeStatus/API] Upsert DirectReportsWithTimeStatus',\r\n props<{ directReportsWithTimeStatus: IDirectReportsWithTimeStatus }>()\r\n);\r\n\r\nexport const addDirectReportsWithTimeStatuss = createAction(\r\n '[DirectReportsWithTimeStatus/API] Add DirectReportsWithTimeStatuss',\r\n props<{ directReportsWithTimeStatuss: IDirectReportsWithTimeStatus[] }>()\r\n);\r\n\r\nexport const upsertDirectReportsWithTimeStatuss = createAction(\r\n '[DirectReportsWithTimeStatus/API] Upsert DirectReportsWithTimeStatuss',\r\n props<{ directReportsWithTimeStatuss: IDirectReportsWithTimeStatus[] }>()\r\n);\r\n\r\nexport const updateDirectReportsWithTimeStatus = createAction(\r\n '[DirectReportsWithTimeStatus/API] Update DirectReportsWithTimeStatus',\r\n props<{ directReportsWithTimeStatus: Update }>()\r\n);\r\n\r\nexport const updateDirectReportsWithTimeStatuss = createAction(\r\n '[DirectReportsWithTimeStatus/API] Update DirectReportsWithTimeStatuss',\r\n props<{ directReportsWithTimeStatuss: Update[] }>()\r\n);\r\n\r\nexport const deleteDirectReportsWithTimeStatus = createAction(\r\n '[DirectReportsWithTimeStatus/API] Delete DirectReportsWithTimeStatus',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteDirectReportsWithTimeStatuss = createAction(\r\n '[DirectReportsWithTimeStatus/API] Delete DirectReportsWithTimeStatuss',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearDirectReportsWithTimeStatuss = createAction(\r\n '[DirectReportsWithTimeStatus/API] Clear DirectReportsWithTimeStatuss'\r\n);\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport * as fromDRWTS from './direct-reports-with-time-status.actions';\r\nimport { switchMap, map, tap, catchError } from 'rxjs/operators';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromShared from '../../shared';\r\n@Injectable()\r\nexport class DirectReportsWithTimeStatusEffects {\r\n constructor(\r\n private actions$: Actions,\r\n @Inject(TimeCardService) private service: TimeCardService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n getDirectReportsWithTimeStatus$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromDRWTS.getDirectReportsWithTimeStatus),\r\n tap((a) =>\r\n this.log.verbose({\r\n type:\r\n 'DirectReportsWithTimeStatusEffects:getDirectReportsWithTimeStatus$',\r\n a,\r\n })\r\n ),\r\n switchMap((a) =>\r\n this.service\r\n .getDirectReportsWithTimeStatus(\r\n a.UserListID,\r\n a.UserRole,\r\n a.EmployeeListID,\r\n a.StartDate,\r\n a.EndDate,\r\n a.MyDRsOnly\r\n )\r\n .pipe(\r\n map((dr) =>\r\n fromDRWTS.loadDirectReportsWithTimeStatuss({\r\n directReportsWithTimeStatuss: dr,\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport {\r\n Action,\r\n createFeatureSelector,\r\n createReducer,\r\n createSelector,\r\n on\r\n} from '@ngrx/store';\r\nimport { IDirectReportsWithTimeStatus } from '../IDirectReportsWithTimeStatus';\r\nimport * as DirectReportsWithTimeStatusActions from './direct-reports-with-time-status.actions';\r\n\r\nexport const directReportsWithTimeStatusesFeatureKey =\r\n 'directReportsWithTimeStatuses';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst directReportsWithTimeStatusReducer = createReducer(\r\n initialState,\r\n on(\r\n DirectReportsWithTimeStatusActions.addDirectReportsWithTimeStatus,\r\n (state, action) =>\r\n adapter.addOne(action.directReportsWithTimeStatus, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.upsertDirectReportsWithTimeStatus,\r\n (state, action) =>\r\n adapter.upsertOne(action.directReportsWithTimeStatus, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.addDirectReportsWithTimeStatuss,\r\n (state, action) =>\r\n adapter.addMany(action.directReportsWithTimeStatuss, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.upsertDirectReportsWithTimeStatuss,\r\n (state, action) =>\r\n adapter.upsertMany(action.directReportsWithTimeStatuss, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.updateDirectReportsWithTimeStatus,\r\n (state, action) =>\r\n adapter.updateOne(action.directReportsWithTimeStatus, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.updateDirectReportsWithTimeStatuss,\r\n (state, action) =>\r\n adapter.updateMany(action.directReportsWithTimeStatuss, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.deleteDirectReportsWithTimeStatus,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.deleteDirectReportsWithTimeStatuss,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.loadDirectReportsWithTimeStatuss,\r\n (state, action) =>\r\n adapter.setAll(action.directReportsWithTimeStatuss, state)\r\n ),\r\n on(\r\n DirectReportsWithTimeStatusActions.clearDirectReportsWithTimeStatuss,\r\n state => adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return directReportsWithTimeStatusReducer(state, action);\r\n}\r\n\r\nconst localState = createFeatureSelector(\r\n directReportsWithTimeStatusesFeatureKey\r\n);\r\nexport const getEntities = createSelector(localState, x => x.entities);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { IAuthorizedTask } from '../IAuthorizedTask';\r\n\r\nexport const getAuthorizedTasks = createAction(\r\n '[TimeCard/API] Get Authorized Tasks',\r\n props<{ EmployeeListID: string, AuthType: string, AsOfDate: Date }>()\r\n);\r\n\r\n//////////////////////////////////////////////////////////\r\n\r\nexport const loadAuthorizedTasks = createAction(\r\n '[IAuthorizedTask/API] Load AuthorizedTasks',\r\n props<{ authorizedTasks: IAuthorizedTask[] }>()\r\n);\r\n\r\nexport const addAuthorizedTask = createAction(\r\n '[IAuthorizedTask/API] Add AuthorizedTask',\r\n props<{ authorizedTask: IAuthorizedTask }>()\r\n);\r\n\r\nexport const upsertAuthorizedTask = createAction(\r\n '[IAuthorizedTask/API] Upsert AuthorizedTask',\r\n props<{ authorizedTask: IAuthorizedTask }>()\r\n);\r\n\r\nexport const addAuthorizedTasks = createAction(\r\n '[IAuthorizedTask/API] Add AuthorizedTasks',\r\n props<{ authorizedTasks: IAuthorizedTask[] }>()\r\n);\r\n\r\nexport const upsertAuthorizedTasks = createAction(\r\n '[IAuthorizedTask/API] Upsert AuthorizedTasks',\r\n props<{ authorizedTasks: IAuthorizedTask[] }>()\r\n);\r\n\r\nexport const updateAuthorizedTask = createAction(\r\n '[IAuthorizedTask/API] Update AuthorizedTask',\r\n props<{ authorizedTask: Update }>()\r\n);\r\n\r\nexport const updateAuthorizedTasks = createAction(\r\n '[IAuthorizedTask/API] Update AuthorizedTasks',\r\n props<{ authorizedTasks: Update[] }>()\r\n);\r\n\r\nexport const deleteAuthorizedTask = createAction(\r\n '[IAuthorizedTask/API] Delete AuthorizedTask',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteAuthorizedTasks = createAction(\r\n '[IAuthorizedTask/API] Delete AuthorizedTasks',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearAuthorizedTasks = createAction(\r\n '[IAuthorizedTask/API] Clear AuthorizedTasks'\r\n);\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport * as fromAuthTasks from './iauthorized-task.actions';\r\nimport { switchMap, map, tap, catchError } from 'rxjs/operators';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromShared from '../../shared';\r\n@Injectable()\r\nexport class IAuthorizedTasksEffects {\r\n constructor(\r\n private actions$: Actions,\r\n @Inject(TimeCardService) private service: TimeCardService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n getAuthorizedTasks$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromAuthTasks.getAuthorizedTasks),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'IAuthorizedTasksEffects:getAuthorizedTasks$',\r\n a\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service\r\n .getTasks(a.EmployeeListID, a.AuthType, a.AsOfDate)\r\n .pipe(\r\n map(at =>\r\n fromAuthTasks.loadAuthorizedTasks({\r\n authorizedTasks: at\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport {\r\n Action,\r\n createFeatureSelector,\r\n createReducer,\r\n createSelector,\r\n on\r\n} from '@ngrx/store';\r\nimport { IAuthorizedTask } from '../IAuthorizedTask';\r\nimport * as IAuthorizedTaskActions from './iauthorized-task.actions';\r\n\r\nexport const iAuthorizedTasksFeatureKey = 'iAuthorizedTasks';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst iAuthorizedTaskReducer = createReducer(\r\n initialState,\r\n on(IAuthorizedTaskActions.addAuthorizedTask, (state, action) =>\r\n adapter.addOne(action.authorizedTask, state)\r\n ),\r\n on(IAuthorizedTaskActions.upsertAuthorizedTask, (state, action) =>\r\n adapter.upsertOne(action.authorizedTask, state)\r\n ),\r\n on(IAuthorizedTaskActions.addAuthorizedTasks, (state, action) =>\r\n adapter.addMany(action.authorizedTasks, state)\r\n ),\r\n on(IAuthorizedTaskActions.upsertAuthorizedTasks, (state, action) =>\r\n adapter.upsertMany(action.authorizedTasks, state)\r\n ),\r\n on(IAuthorizedTaskActions.updateAuthorizedTask, (state, action) =>\r\n adapter.updateOne(action.authorizedTask, state)\r\n ),\r\n on(IAuthorizedTaskActions.updateAuthorizedTasks, (state, action) =>\r\n adapter.updateMany(action.authorizedTasks, state)\r\n ),\r\n on(IAuthorizedTaskActions.deleteAuthorizedTask, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(IAuthorizedTaskActions.deleteAuthorizedTasks, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(IAuthorizedTaskActions.loadAuthorizedTasks, (state, action) =>\r\n adapter.setAll(action.authorizedTasks, state)\r\n ),\r\n on(IAuthorizedTaskActions.clearAuthorizedTasks, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return iAuthorizedTaskReducer(state, action);\r\n}\r\nconst localState = createFeatureSelector(iAuthorizedTasksFeatureKey);\r\nexport const getEntities = createSelector(localState, x => x.entities);\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\n","export * from './time-card.reducer';\r\nexport * from './time-card.actions';\r\nexport * from './time-card.selectors';\r\nexport * from './time-card-documentation.actions';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { IManagementAction } from '../IManagementAction';\r\n\r\nexport const putManagment = createAction(\r\n '[TimeCard/API] Update Time Entry Status',\r\n props<{ managementAction: IManagementAction }>()\r\n);\r\n\r\n////////////////////////////////////////////////////////////////\r\n\r\nexport const loadManagementActions = createAction(\r\n '[ManagementAction/API] Load ManagementActions',\r\n props<{ managementActions: IManagementAction[] }>()\r\n);\r\n\r\nexport const addManagementAction = createAction(\r\n '[ManagementAction/API] Add ManagementAction',\r\n props<{ managementAction: IManagementAction }>()\r\n);\r\n\r\nexport const upsertManagementAction = createAction(\r\n '[ManagementAction/API] Upsert ManagementAction',\r\n props<{ managementAction: IManagementAction }>()\r\n);\r\n\r\nexport const addManagementActions = createAction(\r\n '[ManagementAction/API] Add ManagementActions',\r\n props<{ managementActions: IManagementAction[] }>()\r\n);\r\n\r\nexport const upsertManagementActions = createAction(\r\n '[ManagementAction/API] Upsert ManagementActions',\r\n props<{ managementActions: IManagementAction[] }>()\r\n);\r\n\r\nexport const updateManagementAction = createAction(\r\n '[ManagementAction/API] Update ManagementAction',\r\n props<{ managementAction: Update }>()\r\n);\r\n\r\nexport const updateManagementActions = createAction(\r\n '[ManagementAction/API] Update ManagementActions',\r\n props<{ managementActions: Update[] }>()\r\n);\r\n\r\nexport const deleteManagementAction = createAction(\r\n '[ManagementAction/API] Delete ManagementAction',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteManagementActions = createAction(\r\n '[ManagementAction/API] Delete ManagementActions',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearManagementActions = createAction(\r\n '[ManagementAction/API] Clear ManagementActions'\r\n);\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport * as fromManagement from './management-action.actions';\r\nimport { tap, switchMap, flatMap, catchError } from 'rxjs/operators';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromDRWTS from '../store/direct-reports-with-time-status.actions';\r\nimport * as fromTimecard from './time-card.actions';\r\nimport * as fromWeeklySummary from './weekly-summary.actions';\r\nimport * as moment from 'moment';\r\nimport * as fromShared from '../../shared';\r\nimport { ManagementActionService } from '../managementActionService';\r\n\r\n@Injectable()\r\nexport class ManagementActionEffects {\r\n constructor(\r\n private actions$: Actions,\r\n @Inject(TimeCardService) private service: TimeCardService,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private managementActionService: ManagementActionService\r\n ) {}\r\n\r\n putManagement$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromManagement.putManagment),\r\n tap(a =>\r\n this.log.verbose({ type: 'TimeCardEffects:putManagement$', a })\r\n ),\r\n switchMap(a =>\r\n this.service.putManagementAction(a.managementAction).pipe(\r\n flatMap(tcs => {\r\n this.managementActionService.setManagementActionResponse(tcs);\r\n return [\r\n fromManagement.upsertManagementActions({\r\n managementActions: tcs.Items\r\n }),\r\n fromDRWTS.getDirectReportsWithTimeStatus({\r\n UserListID: a.managementAction.EmployeeListID,\r\n UserRole: a.managementAction.UserGroupID,\r\n StartDate: a.managementAction.MgmtDateRangeStart,\r\n EndDate: a.managementAction.MgmtDateRangeEnd,\r\n MyDRsOnly: a.managementAction.MyDrsOnly\r\n }), // can add EmployeeListID to only get back one DR\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: a.managementAction.usrDirectReports[0].EmployeeListID,\r\n TimeCardDate: moment(\r\n a.managementAction.StartDate\r\n ).format('MM/DD/YYYY'),\r\n MyDirection: '',\r\n Processid: a.managementAction.Processid,\r\n EndDate: new Date(a.managementAction.MgmtDateRangeEnd)\r\n }),\r\n fromWeeklySummary.getWeeklySummary({\r\n EmployeeListID: a.managementAction.usrDirectReports[0].EmployeeListID,\r\n StartDate: new Date(a.managementAction.MgmtDateRangeStart),\r\n EndDate: new Date(a.managementAction.MgmtDateRangeEnd)\r\n })\r\n ];\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { Update } from '@ngrx/entity';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { IAttachment, IDeleteEntity, IGenericResponse } from '../../shared';\r\nimport { TimeCardDocumentation } from './time-card-documentation.model';\r\n\r\nexport const loadTimeCardDocumentations = createAction(\r\n '[TimeCardDocumentation/API] Load TimeCardDocumentations',\r\n props<{ timeCardDocumentations: TimeCardDocumentation[] }>()\r\n);\r\n\r\nexport const addTimeCardDocumentation = createAction(\r\n '[TimeCardDocumentation/API] Add TimeCardDocumentation',\r\n props<{ timeCardDocumentation: TimeCardDocumentation }>()\r\n);\r\n\r\nexport const upsertTimeCardDocumentation = createAction(\r\n '[TimeCardDocumentation/API] Upsert TimeCardDocumentation',\r\n props<{ timeCardDocumentation: TimeCardDocumentation }>()\r\n);\r\n\r\nexport const addTimeCardDocumentations = createAction(\r\n '[TimeCardDocumentation/API] Add TimeCardDocumentations',\r\n props<{ timeCardDocumentations: TimeCardDocumentation[] }>()\r\n);\r\n\r\nexport const upsertTimeCardDocumentations = createAction(\r\n '[TimeCardDocumentation/API] Upsert TimeCardDocumentations',\r\n props<{ timeCardDocumentations: TimeCardDocumentation[] }>()\r\n);\r\n\r\nexport const updateTimeCardDocumentation = createAction(\r\n '[TimeCardDocumentation/API] Update TimeCardDocumentation',\r\n props<{ timeCardDocumentation: Update }>()\r\n);\r\n\r\nexport const updateTimeCardDocumentations = createAction(\r\n '[TimeCardDocumentation/API] Update TimeCardDocumentations',\r\n props<{ timeCardDocumentations: Update[] }>()\r\n);\r\n\r\nexport const deleteTimeCardDocumentation = createAction(\r\n '[TimeCardDocumentation/API] Delete TimeCardDocumentation',\r\n props<{ id: number | string }>()\r\n);\r\n\r\nexport const deleteTimeCardDocumentations = createAction(\r\n '[TimeCardDocumentation/API] Delete TimeCardDocumentations',\r\n props<{ ids: Array }>()\r\n);\r\n\r\nexport const clearTimeCardDocumentations = createAction(\r\n '[TimeCardDocumentation/API] Clear TimeCardDocumentations'\r\n);\r\n\r\nexport const getTimecardDocumentations = createAction(\r\n '[TimecardDocumentation/API] Get TimecardDocumentations',\r\n props<{ id: string; processId: number }>()\r\n);\r\n\r\nexport const putTimecardDocumentation = createAction(\r\n '[TimecardDocumentation/API] Put TimecardDocumentations',\r\n props<{ doc: Array> }>()\r\n);\r\n\r\nexport const putTimecardDocumentationFailure = createAction(\r\n '[TimecardDocumentation/API] Put TimecardDocumentationFailure',\r\n props<{ error: IGenericResponse> }>()\r\n);\r\nexport const removeTimecardDocumentation = createAction(\r\n '[TimecardDocumentation/API] Remove TimecardDocumentations',\r\n props<{ ids: Array }>()\r\n);\r\nexport const removeTimecardDocumentationFailure = createAction(\r\n '[TimecardDocumentation/API] Remove TimecardDocumentationFailure',\r\n props<{ error: IGenericResponse }>()\r\n);\r\nexport const addTimecardDocumentationAttachment = createAction(\r\n '[TimecardDocumentation/API] Add TimecardDocumentation Attachment',\r\n props<{\r\n process: string;\r\n entityId: string;\r\n fileId: string;\r\n meta: File;\r\n file: string;\r\n }>()\r\n);\r\nexport const addTimecardDocumentationAttachmentFailure = createAction(\r\n '[TimecardDocumentation/API] Add TimecardDocumentation Attachment Failure',\r\n props<{ res: IGenericResponse }>()\r\n);\r\nexport const addTimecardDocumentationAttachmentSuccess = createAction(\r\n '[TimecardDocumentation/API] Add TimecardDocumentation Attachment Success',\r\n props<{ res: IGenericResponse }>()\r\n);\r\nexport const removeTimecardDocumentationAttachment = createAction(\r\n '[TimecardDocumentation/API] Remove TimecardDocumentation Attachment',\r\n props<{ fileId: string }>()\r\n);\r\nexport const removeTimecardDocumentationAttachmentSuccess = createAction(\r\n '[TimecardDocumentation/API] Remove TimecardDocumentation Attachment Success',\r\n props<{ fileId: string }>()\r\n);\r\nexport const removeTimecardDocumentationAttachmentFailure = createAction(\r\n '[TimecardDocumentation/API] Remove TimecardDocumentation Attachment Failure',\r\n props<{ error: IGenericResponse }>()\r\n);\r\n\r\nexport const updateTimecardDocumentationSuccess = createAction(\r\n '[TimecardDocumentation/API] Update TimecardDocumentation Success Event',\r\n props<{ doc: Partial }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport {\r\n catchError,\r\n concatMap,\r\n flatMap,\r\n map,\r\n mergeMap,\r\n switchMap,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { AttachmentService } from '../../attachment-view-feature/attachment.service';\r\nimport * as fromShared from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport * as fromTimecardDoc from './time-card-documentation.actions';\r\nimport { TimeCardDocumentation } from './time-card-documentation.model';\r\nimport * as fromDocReducer from './time-card-documentation.reducer';\r\nimport * as fromTimecard from './time-card.selectors';\r\n\r\n@Injectable()\r\nexport class TimeCardDocumentationEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: TimeCardService,\r\n private log: LoggingService,\r\n private attachmentService: AttachmentService,\r\n private store: Store\r\n ) {}\r\n\r\n getTimecardDocumentation$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromTimecardDoc.getTimecardDocumentations),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'TimecardDocumentationEffects:getTimecardDocumentation$',\r\n a\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.getTimecardDocumentation(a.id, a.processId).pipe(\r\n concatMap(tcs => [\r\n fromTimecardDoc.clearTimeCardDocumentations(),\r\n fromTimecardDoc.loadTimeCardDocumentations({\r\n timeCardDocumentations: tcs\r\n })\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n putTimecardDocumentation$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromTimecardDoc.putTimecardDocumentation),\r\n switchMap(a =>\r\n this.service.putTimecardDocumentation(a.doc).pipe(\r\n concatMap(resp => [\r\n fromTimecardDoc.deleteTimeCardDocumentations({\r\n ids: resp.Items.map(x => `${x.EmpTimeID}--1`)\r\n }),\r\n fromTimecardDoc.upsertTimeCardDocumentations({\r\n timeCardDocumentations: resp.Items\r\n }),\r\n new fromShared.Errors.ClearErrors(),\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n removeTimecardDocumentation$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromTimecardDoc.removeTimecardDocumentation),\r\n switchMap(a =>\r\n this.service.deleteTimecardDocumentation(a.ids).pipe(\r\n withLatestFrom(\r\n this.store.pipe(select(fromTimecard.selectAll)),\r\n this.store.pipe(select(fromUser.getUserInfo)),\r\n this.store.pipe(select(fromShared.selectCurrent))\r\n ),\r\n concatMap(([resp, tcs, user, process]) =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n fromTimecardDoc.getTimecardDocumentations({\r\n id: tcs[0].EmployeeListID,\r\n processId: process.ProcessID\r\n }),\r\n fromTimecardDoc.updateTimecardDocumentationSuccess(\r\n { doc: { id: a.ids[0] } }\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n AddTimecardDocumentationAttachment$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromTimecardDoc.addTimecardDocumentationAttachment),\r\n tap(action =>\r\n this.log.verbose({\r\n type: 'TimecardDocumentationEffects:AddTimecardDocumentationAttachment',\r\n action\r\n })\r\n ),\r\n switchMap(action =>\r\n this.attachmentService\r\n .saveAttachment(\r\n action.process,\r\n action.entityId,\r\n action.fileId,\r\n action.meta,\r\n action.file\r\n )\r\n .pipe(\r\n tap(resp =>\r\n this.log.debug({\r\n type: 'TimecardDocumentationEffects:AddTimecardDocumentationAttachment',\r\n resp\r\n })\r\n ),\r\n flatMap(resp => {\r\n return fromShared.Errors.IsSuccessStatus(\r\n resp.StatusCode\r\n )\r\n ? [\r\n fromTimecardDoc.addTimecardDocumentationAttachmentSuccess(\r\n { res: resp }\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(\r\n resp\r\n )\r\n )\r\n ];\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n addTimecardDocumentationAttachmentSuccess$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromTimecardDoc.addTimecardDocumentationAttachmentSuccess),\r\n withLatestFrom(this.store.pipe(select(fromDocReducer.selectAll))),\r\n map(([a, docs]) =>\r\n fromTimecardDoc.upsertTimeCardDocumentation({\r\n timeCardDocumentation: {\r\n id: `${\r\n docs.find(\r\n doc => doc.WorkID === a.res.Items[0].Expense_id\r\n )?.EmpTimeID\r\n }-${a.res.Items[0].Expense_id}`,\r\n WorkID: a.res.Items[0].Expense_id ?? 0,\r\n File_unique_id: a.res.Items[0].Unique_Id\r\n }\r\n })\r\n )\r\n );\r\n });\r\n removeTimecardDocumentationAttachment$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromTimecardDoc.removeTimecardDocumentationAttachment),\r\n switchMap(a =>\r\n this.attachmentService.deleteAttachment(a.fileId).pipe(\r\n withLatestFrom(\r\n this.store.pipe(select(fromDocReducer.selectAll))\r\n ),\r\n mergeMap(([resp, docs]) =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n fromTimecardDoc.removeTimecardDocumentationAttachmentSuccess(\r\n {\r\n fileId: resp.Items[0]\r\n .File_unique_id as string\r\n }\r\n ),\r\n fromTimecardDoc.upsertTimeCardDocumentation({\r\n timeCardDocumentation: {\r\n ...(docs.find(\r\n d => d.File_unique_id === a.fileId\r\n ) as TimeCardDocumentation),\r\n File_unique_id: undefined\r\n }\r\n })\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createFeatureSelector, createReducer, on } from '@ngrx/store';\r\nimport * as TimeCardDocumentationActions from './time-card-documentation.actions';\r\nimport { TimeCardDocumentation } from './time-card-documentation.model';\r\n\r\nexport const timeCardDocumentationsFeatureKey = 'timeCardDocumentations';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n// have to specify function to get the uniqueid column since we're not using \"id\"\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: TimeCardDocumentation) => model.id as string\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst timeCardDocumentationReducer = createReducer(\r\n initialState,\r\n on(TimeCardDocumentationActions.addTimeCardDocumentation, (state, action) =>\r\n adapter.addOne(action.timeCardDocumentation, state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.upsertTimeCardDocumentation,\r\n (state, action) =>\r\n adapter.upsertOne(action.timeCardDocumentation, state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.addTimeCardDocumentations,\r\n (state, action) => adapter.addMany(action.timeCardDocumentations, state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.upsertTimeCardDocumentations,\r\n (state, action) =>\r\n adapter.upsertMany(action.timeCardDocumentations, state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.updateTimeCardDocumentation,\r\n (state, action) =>\r\n adapter.updateOne(action.timeCardDocumentation, state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.updateTimeCardDocumentations,\r\n (state, action) =>\r\n adapter.updateMany(action.timeCardDocumentations, state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.deleteTimeCardDocumentation,\r\n (state, action) => adapter.removeOne(action.id as string, state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.deleteTimeCardDocumentations,\r\n (state, action) => adapter.removeMany(action.ids as string[], state)\r\n ),\r\n on(\r\n TimeCardDocumentationActions.loadTimeCardDocumentations,\r\n (state, action) => adapter.setAll(action.timeCardDocumentations, state)\r\n ),\r\n on(TimeCardDocumentationActions.clearTimeCardDocumentations, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return timeCardDocumentationReducer(state, action);\r\n}\r\nconst localState = createFeatureSelector(\r\n timeCardDocumentationsFeatureKey\r\n);\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { ITimeCardSubmit } from '../ITimeCardSubmit';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nexport const putTimeCardSubmit = createAction(\r\n '[TimeCardSubmit/API] Update TimeCardSubmit',\r\n props<{ timeCardSubmit: Array }>()\r\n);\r\n\r\nexport const loadTimeCardSubmits = createAction(\r\n '[TimeCardSubmit] Load TimeCardSubmits'\r\n);\r\n\r\nexport const updateTimeCardSubmit = createAction(\r\n '[TimeCardSubmit/API] Update TimeCardSubmit',\r\n props<{ timeCardSubmit: Update }>()\r\n);\r\n\r\nexport const updateTimeCardSubmits = createAction(\r\n '[TimeCardSubmit/API] Update TimeCardSubmits',\r\n props<{ timeCardSubmits: Update[] }>()\r\n);\r\n\r\n\r\n\r\n\r\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Injectable } from '@angular/core';\r\nimport * as fromTCSubmit from './time-card-submit.actions';\r\nimport * as fromShared from '../../shared';\r\nimport { flatMap, tap, catchError, switchMap, map, mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class TimeCardSubmitEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: TimeCardService,\r\n private log: LoggingService\r\n ) {}\r\n\r\n putTimeCardSubmit$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(fromTCSubmit.putTimeCardSubmit),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'TimeCardSubmitEffects:putTimeCardSubmit$',\r\n a\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service\r\n .putTimeCardSubmit(x.timeCardSubmit)\r\n .pipe(\r\n map(resp =>\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n ),\r\n { dispatch: false }\r\n );\r\n}\r\n","import { Update } from '@ngrx/entity';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { ITimeCard } from '../itime-card';\r\n\r\nexport const getTimeCards = createAction(\r\n '[TimeCard/API] Get TimeCards',\r\n props<{\r\n EmployeeListID: string;\r\n TimeCardDate: string;\r\n MyDirection: string;\r\n Processid?: number;\r\n MinEntryDate?: Date;\r\n EndDate?: Date;\r\n }>()\r\n);\r\n\r\nexport const putTimeCards = createAction(\r\n '[TimeCard/API] Put TimeCards',\r\n props<{ timeCard: Array }>()\r\n);\r\n\r\n// these are only for manipulating the store collection, not for effects, i.e. loading from a service // For reducer\r\n\r\nexport const loadTimeCards = createAction(\r\n '[TimeCard/API] Load TimeCards',\r\n props<{ timeCards: ITimeCard[] }>()\r\n);\r\n\r\nexport const addTimeCard = createAction(\r\n '[TimeCard/API] Add TimeCard',\r\n props<{ timeCard: ITimeCard }>()\r\n);\r\n\r\nexport const upsertTimeCard = createAction(\r\n '[TimeCard/API] Upsert TimeCard',\r\n props<{ timeCard: ITimeCard }>()\r\n);\r\n\r\nexport const addTimeCards = createAction(\r\n '[TimeCard/API] Add TimeCards',\r\n props<{ timeCards: ITimeCard[] }>()\r\n);\r\n\r\nexport const upsertTimeCards = createAction(\r\n '[TimeCard/API] Upsert TimeCards',\r\n props<{ timeCards: ITimeCard[] }>()\r\n);\r\n\r\nexport const updateTimeCard = createAction(\r\n '[TimeCard/API] Update TimeCard',\r\n props<{ timeCard: Update }>()\r\n);\r\n\r\nexport const updateTimeCards = createAction(\r\n '[TimeCard/API] Update TimeCards',\r\n props<{ timeCards: Update[] }>()\r\n);\r\n\r\nexport const deleteTimeCard = createAction(\r\n '[TimeCard/API] Delete TimeCard',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteTimeCards = createAction(\r\n '[TimeCard/API] Delete TimeCards',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearTimeCards = createAction('[TimeCard/API] Clear TimeCards');\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n flatMap,\r\n map,\r\n mergeMap,\r\n switchMap,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n flatDeep,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromWeeklySummary from '../store/weekly-summary.actions';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport * as fromTimecardDoc from './time-card-documentation.actions';\r\nimport * as fromDocReducer from './time-card-documentation.reducer';\r\nimport * as fromTimecard from './time-card.actions';\r\nimport * as fromTimeReducer from './time-card.reducer';\r\n\r\n@Injectable()\r\nexport class TimeCardEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: TimeCardService,\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n getTimeCards$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromTimecard.getTimeCards),\r\n tap(a =>\r\n this.log.verbose({ type: 'TimeCardEffects:getTimeCards$', a })\r\n ),\r\n switchMap(a =>\r\n this.service\r\n .get(\r\n a.EmployeeListID,\r\n a.TimeCardDate,\r\n a.MyDirection,\r\n a.Processid,\r\n a.MinEntryDate,\r\n a.EndDate\r\n )\r\n .pipe(\r\n mergeMap(tcs => [\r\n fromTimecard.loadTimeCards({ timeCards: tcs })\r\n // new Date(a.TimeCardDate) <= new Date(a.MinEntryDate)\r\n // ? fromWeeklySummary.getWeeklySummary({\r\n // EmployeeListID: a.EmployeeListID,\r\n // StartDate: tcs[0] != null ? new Date(tcs[0].WorkDate) : new Date(a.MinEntryDate),\r\n // EndDate: sessionStorage.getItem('mgmtEndDate') != null ? new Date(sessionStorage.getItem('mgmtEndDate')) : null\r\n // })\r\n // : { type: 'EMPTY' }\r\n ]),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'TimeCardEffects:getTimeCards$',\r\n x\r\n })\r\n ),\r\n catchError((e, c) => {\r\n this.store.dispatch(\r\n fromTimecard.loadTimeCards({ timeCards: [] })\r\n );\r\n return fromShared.Errors.handleServiceError(e, c);\r\n })\r\n )\r\n )\r\n )\r\n );\r\n\r\n putTimeCards$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromTimecard.putTimeCards),\r\n withLatestFrom(this.store.pipe(select(fromDocReducer.selectAll))),\r\n tap(a =>\r\n this.log.verbose({ type: 'TimeCardEffects:putTimeCards$', a })\r\n ),\r\n mergeMap(([a, docs]) =>\r\n this.service.put(a.timeCard).pipe(\r\n // flatMap(([tcs, doc]) => [\r\n flatMap(tcs => {\r\n return [\r\n fromTimecard.updateTimeCards({\r\n timeCards: [\r\n {\r\n id: tcs.Items[0].id.toString(),\r\n changes: tcs.Items[0]\r\n }\r\n ]\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n tcs.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.EmpTimeID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...tcs.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: ResponseStatus.None,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...tcs.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n fromTimecardDoc.updateTimeCardDocumentations({\r\n timeCardDocumentations: flatDeep(\r\n tcs.Items.map(x =>\r\n docs\r\n .filter(\r\n doc =>\r\n doc.EmpTimeID ===\r\n x.EmpTimeID\r\n )\r\n .map(z => ({\r\n id: `${z.EmpTimeID}-${z.WorkID}`,\r\n changes: {\r\n EmpTimeIDHours:\r\n x.EmployeeHours\r\n }\r\n }))\r\n )\r\n )\r\n })\r\n ];\r\n }),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n\r\n updateTimecard$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(fromTimecard.updateTimeCards),\r\n debounceTime(1000),\r\n tap(a =>\r\n this.log.verbose({ type: 'TimeCardEffects:updateTimecard$', a })\r\n ),\r\n map(a =>\r\n fromWeeklySummary.getWeeklySummary({\r\n EmployeeListID: a.timeCards[0].changes.EmployeeListID,\r\n EmpAuthID: a.timeCards[0].changes.EmpAuthID\r\n })\r\n )\r\n );\r\n });\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { ITimeCard } from '../itime-card';\r\nimport * as TimeCardActions from './time-card.actions';\r\n\r\nexport const timeCardsFeatureKey = 'timeCards';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n// have to specify function to get the uniqueid column since we're not using \"id\"\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\n// { selectId: (model: ITimeCard) => model.EmpTimeID }\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst timeCardReducer = createReducer(\r\n initialState,\r\n on(TimeCardActions.addTimeCard, (state, action) =>\r\n adapter.addOne(action.timeCard, state)\r\n ),\r\n on(TimeCardActions.upsertTimeCard, (state, action) =>\r\n adapter.upsertOne(action.timeCard, state)\r\n ),\r\n on(TimeCardActions.addTimeCards, (state, action) =>\r\n adapter.addMany(action.timeCards, state)\r\n ),\r\n on(TimeCardActions.upsertTimeCards, (state, action) =>\r\n adapter.upsertMany(action.timeCards, state)\r\n ),\r\n on(TimeCardActions.updateTimeCard, (state, action) =>\r\n adapter.updateOne(action.timeCard, state)\r\n ),\r\n on(TimeCardActions.updateTimeCards, (state, action) =>\r\n adapter.updateMany(action.timeCards, state)\r\n ),\r\n on(TimeCardActions.deleteTimeCard, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(TimeCardActions.deleteTimeCards, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(TimeCardActions.loadTimeCards, (state, action) =>\r\n adapter.setAll(action.timeCards, state)\r\n ),\r\n on(TimeCardActions.clearTimeCards, state => adapter.removeAll(state))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return timeCardReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as reducer from './time-card.reducer';\r\n\r\nconst localState = createFeatureSelector(\r\n reducer.timeCardsFeatureKey\r\n);\r\nexport const getEntities = createSelector(localState, x => x.entities);\r\nexport const { selectAll, selectEntities, selectIds, selectTotal } =\r\n reducer.adapter.getSelectors(localState);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { IWeeklySummary } from '../IWeeklySummary';\r\n\r\nexport const getWeeklySummary = createAction(\r\n '[TimeCard/API] Get Weekly Summary',\r\n props<{ EmployeeListID: string, DRListID?: string, EmpAuthID?: number, StartDate?: Date, EndDate?: Date }>()\r\n);\r\n\r\n/////////////////////////////////////////////////////\r\n\r\nexport const loadWeeklySummarys = createAction(\r\n '[WeeklySummary/API] Load WeeklySummarys',\r\n props<{ weeklySummarys: IWeeklySummary[] }>()\r\n);\r\n\r\nexport const addWeeklySummary = createAction(\r\n '[WeeklySummary/API] Add WeeklySummary',\r\n props<{ weeklySummary: IWeeklySummary }>()\r\n);\r\n\r\nexport const upsertWeeklySummary = createAction(\r\n '[WeeklySummary/API] Upsert WeeklySummary',\r\n props<{ weeklySummary: IWeeklySummary }>()\r\n);\r\n\r\nexport const addWeeklySummarys = createAction(\r\n '[WeeklySummary/API] Add WeeklySummarys',\r\n props<{ weeklySummarys: IWeeklySummary[] }>()\r\n);\r\n\r\nexport const upsertWeeklySummarys = createAction(\r\n '[WeeklySummary/API] Upsert WeeklySummarys',\r\n props<{ weeklySummarys: IWeeklySummary[] }>()\r\n);\r\n\r\nexport const updateWeeklySummary = createAction(\r\n '[WeeklySummary/API] Update WeeklySummary',\r\n props<{ weeklySummary: Update }>()\r\n);\r\n\r\nexport const updateWeeklySummarys = createAction(\r\n '[WeeklySummary/API] Update WeeklySummarys',\r\n props<{ weeklySummarys: Update[] }>()\r\n);\r\n\r\nexport const deleteWeeklySummary = createAction(\r\n '[WeeklySummary/API] Delete WeeklySummary',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteWeeklySummarys = createAction(\r\n '[WeeklySummary/API] Delete WeeklySummarys',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearWeeklySummarys = createAction(\r\n '[WeeklySummary/API] Clear WeeklySummarys'\r\n);\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport * as fromweeklySummary from './weekly-summary.actions';\r\nimport { switchMap, map, tap, catchError } from 'rxjs/operators';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromShared from '../../shared';\r\n@Injectable()\r\nexport class WeeklySummaryEffects {\r\n constructor(\r\n private actions$: Actions,\r\n @Inject(TimeCardService) private service: TimeCardService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n getWeeklySummary$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(fromweeklySummary.getWeeklySummary),\r\n tap(a =>\r\n this.log.verbose({ type: 'TimeCardEffects:getTimeCards$', a })\r\n ),\r\n switchMap(a =>\r\n this.service.getWeeklySummary(a.EmployeeListID, a.DRListID, null, a.StartDate, a.EndDate).pipe(\r\n map(ws =>\r\n fromweeklySummary.loadWeeklySummarys({\r\n weeklySummarys: ws\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n )\r\n );\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport {\r\n Action,\r\n createFeatureSelector,\r\n createReducer,\r\n createSelector,\r\n on\r\n} from '@ngrx/store';\r\nimport { IWeeklySummary } from '../IWeeklySummary';\r\nimport * as WeeklySummaryActions from './weekly-summary.actions';\r\n\r\nexport const weeklySummariesFeatureKey = 'weeklySummaries';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter();\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst weeklySummaryReducer = createReducer(\r\n initialState,\r\n on(WeeklySummaryActions.addWeeklySummary, (state, action) =>\r\n adapter.addOne(action.weeklySummary, state)\r\n ),\r\n on(WeeklySummaryActions.upsertWeeklySummary, (state, action) =>\r\n adapter.upsertOne(action.weeklySummary, state)\r\n ),\r\n on(WeeklySummaryActions.addWeeklySummarys, (state, action) =>\r\n adapter.addMany(action.weeklySummarys, state)\r\n ),\r\n on(WeeklySummaryActions.upsertWeeklySummarys, (state, action) =>\r\n adapter.upsertMany(action.weeklySummarys, state)\r\n ),\r\n on(WeeklySummaryActions.updateWeeklySummary, (state, action) =>\r\n adapter.updateOne(action.weeklySummary, state)\r\n ),\r\n on(WeeklySummaryActions.updateWeeklySummarys, (state, action) =>\r\n adapter.updateMany(action.weeklySummarys, state)\r\n ),\r\n on(WeeklySummaryActions.deleteWeeklySummary, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(WeeklySummaryActions.deleteWeeklySummarys, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(WeeklySummaryActions.loadWeeklySummarys, (state, action) =>\r\n adapter.setAll(action.weeklySummarys, state)\r\n ),\r\n on(WeeklySummaryActions.clearWeeklySummarys, state =>\r\n adapter.removeAll(state)\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return weeklySummaryReducer(state, action);\r\n}\r\nconst localState = createFeatureSelector(weeklySummariesFeatureKey);\r\nexport const getEntities = createSelector(localState, x => x.entities);\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n adapter.getSelectors(localState);\r\n","export * from './time-card-documentation-feature.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { ofType } from '@ngrx/effects';\r\nimport { ActionsSubject, select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as env from '../../../environments/environment';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IServiceItem, ITask } from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../user-info';\r\nimport * as fromUser from '../../user-info/store';\r\nimport { ITimeCard } from '../itime-card';\r\nimport * as fromTimecard from '../store';\r\nimport { TimeCardDocumentation } from '../store/time-card-documentation.model';\r\nimport * as docReducers from '../store/time-card-documentation.reducer';\r\n@Component({\r\n selector: 'ef-time-card-documentation-feature',\r\n templateUrl: './time-card-documentation-feature.component.html',\r\n styleUrls: ['./time-card-documentation-feature.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TimeCardDocumentationFeatureComponent\r\n implements OnDestroy, AfterViewInit\r\n{\r\n public environment: any;\r\n process$: Observable;\r\n @Input() AddDocumentation$: Observable;\r\n @Input() showDocumentation: boolean;\r\n\r\n private TimeCardsSubject = new ReplaySubject>(1);\r\n private _timecards: Array;\r\n @Input() public set TimeCards(value: Array) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:TimeCards:set',\r\n value\r\n });\r\n this._timecards = clone(value);\r\n this.TimeCardsSubject.next(this._timecards);\r\n }\r\n public get TimeCards(): Array {\r\n return this._timecards;\r\n }\r\n @Input() public set action(value: string) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:action:set',\r\n value\r\n });\r\n if (value) {\r\n this.validating = value.toLocaleLowerCase().includes('validate');\r\n this.approving = value.toLocaleLowerCase().includes('approve');\r\n }\r\n }\r\n public authClasses$: Observable;\r\n public DocumentationSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private deleteSubject = new ReplaySubject(1);\r\n public documentation$: Observable>;\r\n selectedError$: Observable;\r\n\r\n public includeClassify$: Observable;\r\n public EmployeeIdSubject = new ReplaySubject(1);\r\n public tasks$: Observable>;\r\n public serviceItems$: Observable>;\r\n public userInfo$: Observable;\r\n private active = true;\r\n private _employeeId: string;\r\n @Input() public set EmployeeId(value: string) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:EmployeeId:set',\r\n value\r\n });\r\n this._employeeId = value;\r\n this.EmployeeIdSubject.next(value);\r\n }\r\n public get EmployeeId(): string {\r\n return this._employeeId;\r\n }\r\n @Input() validating: boolean;\r\n @Input() approving: boolean;\r\n @Output() Save = new EventEmitter>();\r\n ShowErrorSubject = new ReplaySubject(1);\r\n timecardClassDataService: EntityCollectionService;\r\n constructor(\r\n public entityServices: EntityServices,\r\n private confirmservice: UnsavedChangesService,\r\n private lookupStore: Store,\r\n private store: Store,\r\n private dispatcher: ActionsSubject,\r\n private log: LoggingService\r\n ) {\r\n this.environment = env.environment;\r\n this.timecardClassDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.TimecardClass.entityName\r\n );\r\n this.store.dispatch(new fromLookups.LoadServiceItems(false));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.authClasses$ = this.lookupStore.pipe(\r\n select(fromLookups.getAuthClassesLookup)\r\n );\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n this.includeClassify$ = this.lookupStore.pipe(\r\n select(fromUser.getUserInfo),\r\n map(x => x.TCIncludeClassify ?? false)\r\n );\r\n this.documentation$ = combineLatest([\r\n this.TimeCardsSubject,\r\n this.store.pipe(\r\n select(docReducers.selectAll),\r\n map(docs => clone(docs))\r\n )\r\n ]).pipe(\r\n tap(([timecards, docs]) =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:documentation$:tap',\r\n timecards,\r\n docs\r\n })\r\n ),\r\n map(\r\n ([tcs, docs]) =>\r\n !!docs &&\r\n !!tcs &&\r\n (docs.map(doc => ({\r\n ...doc,\r\n timeCard: tcs.find(t => t.EmpTimeID === doc.EmpTimeID)\r\n })) as TimeCardDocumentation[])\r\n ),\r\n map(x =>\r\n x.sort(\r\n (a, b) =>\r\n a.EmployeeWorkDate.getTime() -\r\n b.EmployeeWorkDate.getTime()\r\n )\r\n ),\r\n tap(docs =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:documentation$',\r\n docs\r\n })\r\n )\r\n );\r\n // this re-fetches the timecard docs if there is no doc in our list with the EmpTimeID of the timecard we're adding to\r\n this.AddDocumentation$.pipe(\r\n tap(added =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:AddDocumentation$:tap',\r\n added\r\n })\r\n ),\r\n withLatestFrom(this.documentation$, this.process$),\r\n tap(([added, docs, process]) =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:AddDocumentation$:tap',\r\n added,\r\n docs,\r\n process\r\n })\r\n ),\r\n filter(\r\n ([added, docs, process]) =>\r\n !added ||\r\n (added &&\r\n !(\r\n docs.findIndex(\r\n doc => doc.EmpTimeID === added.EmpTimeID\r\n ) > 0\r\n ))\r\n ),\r\n tap(([added, docs, process]) =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:AddDocumentation$:filtered',\r\n added,\r\n docs,\r\n process\r\n })\r\n ),\r\n takeWhile(() => this.active)\r\n ).subscribe(([added, docs, process]) => {\r\n this.store.dispatch(\r\n fromTimecard.getTimecardDocumentations({\r\n id: this.EmployeeId,\r\n processId: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.tasks$ = this.lookupStore.pipe(select(fromLookups.getTasksLookup));\r\n this.serviceItems$ = this.lookupStore.pipe(\r\n select(fromLookups.getServiceItemsLookup)\r\n );\r\n this.userInfo$ = this.lookupStore.pipe(select(fromUser.getUserInfo));\r\n }\r\n setupSubscriptions() {\r\n // TODO: do we need this? timecardpresenter is taking userinfo merged with direct report select\r\n this.userInfo$.pipe(take(1)).subscribe(userInfo => {\r\n this.EmployeeIdSubject.next(userInfo.EmployeeListID);\r\n });\r\n this.EmployeeIdSubject.pipe(\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:EmployeeIdSubject',\r\n x\r\n })\r\n ),\r\n filter(x => !!x),\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.process$)\r\n ).subscribe(([employeeId, process]) => {\r\n this.lookupStore.dispatch(\r\n fromTimecard.getTimecardDocumentations({\r\n id: employeeId,\r\n processId: process.ProcessID\r\n })\r\n );\r\n this.timecardClassDataService.getWithQuery({\r\n EmployeeListID: employeeId\r\n });\r\n });\r\n combineLatest([\r\n this.documentation$,\r\n this.dispatcher.pipe(\r\n ofType(fromTimecard.updateTimecardDocumentationSuccess)\r\n )\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([docs, update]) => {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:UpdateSuccess:Save',\r\n docs,\r\n update\r\n });\r\n if (update.doc.EmpTimeID) {\r\n const totalHours = this.getTotalHours(\r\n docs,\r\n update.doc.EmpTimeID\r\n );\r\n this.Save.next({ ...update.doc, Totalhours: totalHours });\r\n }\r\n });\r\n combineLatest([\r\n this.deleteSubject,\r\n this.documentation$,\r\n this.dispatcher.pipe(\r\n ofType(fromTimecard.updateTimecardDocumentationSuccess)\r\n )\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([deleted, docs, update]) => {\r\n const timeId = deleted.EmpTimeID;\r\n const totalHours = this.getTotalHours(docs, deleted.EmpTimeID);\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:UpdateSuccess:deleteSubject',\r\n deleted,\r\n update,\r\n totalHours\r\n });\r\n this.Save.next({ ...deleted, Totalhours: totalHours });\r\n });\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n }\r\n getTotalHours(docs: TimeCardDocumentation[], timeId: string) {\r\n const timeDocs = docs.filter(x => x.EmpTimeID === timeId);\r\n const totalHours = timeDocs\r\n .map(x => x.Hours)\r\n .reduce((a, c) => a + c, 0);\r\n return totalHours;\r\n }\r\n onSave(documentation: Array) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationFeatureComponent:onSave',\r\n documentation\r\n });\r\n this.store.dispatch(\r\n fromTimecard.putTimecardDocumentation({ doc: documentation })\r\n );\r\n }\r\n onDelete(doc: TimeCardDocumentation) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Confirm removal of timecard documentation for: ${\r\n doc.TaskLongName\r\n } on ${moment(doc.EmployeeWorkDate).format('MM/DD/YYYY')}`,\r\n okClass: 'p-button-danger p-button-text',\r\n baseZIndex: 11000\r\n })\r\n .then(() => {\r\n this.store.dispatch(\r\n fromTimecard.removeTimecardDocumentation({\r\n ids: [doc.WorkID]\r\n })\r\n );\r\n })\r\n .then(() => this.deleteSubject.next(doc))\r\n .catch(() => {});\r\n }\r\n onShowError(event) {\r\n this.ShowErrorSubject.next(event);\r\n }\r\n onDeleteAttachment(fileId: string) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: 'Are you sure you want to delete this attachment?',\r\n cancelClass: 'p-button-warning p-button-text',\r\n okClass: 'p-button-primary p-button-text'\r\n })\r\n .then(() => {\r\n this.store.dispatch(\r\n fromTimecard.removeTimecardDocumentationAttachment({\r\n fileId\r\n })\r\n );\r\n })\r\n .catch(() => {});\r\n }\r\n\r\n onClose() {\r\n // this.dialogRef.close();\r\n }\r\n onUploadAttachment($event) {\r\n this.lookupStore.dispatch(\r\n fromTimecard.addTimecardDocumentationAttachment($event)\r\n );\r\n }\r\n}\r\n","export * from './time-card-documentation-presenter.component';\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n Pipe,\r\n PipeTransform,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { StateService } from '@uirouter/core';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { filter, skipWhile, take, takeWhile, tap } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport * as fromLookups from '../../lookups';\r\nimport { IStatusMessage, Process, ResponseStatus } from '../../shared';\r\nimport {\r\n EditableColumn,\r\n FileUpload,\r\n FilterService,\r\n SelectItem,\r\n Table\r\n} from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../user-info';\r\nimport { ITimeCard } from '../itime-card';\r\nimport { TimeCardDocumentation } from '../store/time-card-documentation.model';\r\n@Component({\r\n selector: 'ef-time-card-documentation-presenter',\r\n templateUrl: './time-card-documentation-presenter.component.html',\r\n styleUrls: ['./time-card-documentation-presenter.component.scss']\r\n})\r\nexport class TimeCardDocumentationPresenterComponent\r\n implements AfterViewInit, OnDestroy, OnChanges\r\n{\r\n @ViewChild('dataTable', { static: true })\r\n protected table: Table;\r\n @ViewChild('timecardAttachmentUploader', { static: true })\r\n protected attachment: File;\r\n @ViewChild('docHours', { static: true })\r\n protected docHours: EditableColumn;\r\n @ViewChild('docHours', { static: true, read: Element })\r\n protected docHoursEl: Element;\r\n @ViewChildren(EditableColumn)\r\n private editableColumns: QueryList;\r\n public header = 'Documentation';\r\n private _process: Process;\r\n @Input() public set process(value: Process) {\r\n this._process = value;\r\n }\r\n public get process(): Process {\r\n return this._process;\r\n }\r\n @Input() userInfo: Partial;\r\n public timecardDoc: FormGroup;\r\n private changed: Array = [];\r\n private deleted: Array = [];\r\n timecardAttachmentUploader: FileUpload;\r\n @Output() public Save = new Subject>();\r\n @Output() public Delete = new Subject();\r\n @Output() public DeleteAttachment = new Subject();\r\n @Output() public Close = new Subject();\r\n @Output() public ShowError = new EventEmitter();\r\n @Output() public UploadAttachment = new Subject<{\r\n process: string;\r\n entityId: number;\r\n fileId: string;\r\n meta: File;\r\n file: string;\r\n }>();\r\n @Input() environment: any;\r\n public TimecardDoc: Array;\r\n private TimeCardsSubject = new ReplaySubject>(1);\r\n private _timeCards: Array;\r\n @Input() public set TimeCards(value: Array) {\r\n this._timeCards = value;\r\n this.TimeCardsSubject.next(value);\r\n }\r\n public get TimeCards(): Array {\r\n return this._timeCards;\r\n }\r\n ClassesForAuth = new ReplaySubject(1);\r\n @Input() showDocumentation: boolean;\r\n @Input() Tasks: Array;\r\n @Input() ServiceItems: Array;\r\n\r\n public Classes: Array;\r\n private _classList: fromDataServices.TimecardClass.TimecardClass[];\r\n @Input() public set ClassList(\r\n value: fromDataServices.TimecardClass.TimecardClass[]\r\n ) {\r\n this._classList = value;\r\n this.Classes = value.map(x => ({\r\n label: x.ClassName,\r\n value: x.ClassListID\r\n }));\r\n }\r\n public get ClassList(): fromDataServices.TimecardClass.TimecardClass[] {\r\n return this._classList;\r\n }\r\n @Input() includeClassify: boolean;\r\n ValidatingSubject = new ReplaySubject(1);\r\n private _validating: boolean;\r\n @Input() public set validating(value: boolean) {\r\n this._validating = value;\r\n this.ValidatingSubject.next(value);\r\n }\r\n public get validating(): boolean {\r\n return this._validating;\r\n }\r\n ApprovingSubject = new ReplaySubject(1);\r\n private _approving: boolean;\r\n @Input() public set approving(value: boolean) {\r\n this._approving = value;\r\n this.ApprovingSubject.next(value);\r\n }\r\n public get approving(): boolean {\r\n return this._approving;\r\n }\r\n public documentationSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private active = true;\r\n private _documentation: Array;\r\n @Input() public set documentation(value: Array) {\r\n if (value) {\r\n this._documentation = [...value];\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:documentation:set',\r\n value\r\n });\r\n\r\n let docsWithSameTimeID = [];\r\n this.updatedDoc = null;\r\n if (this.newDoc != null) {\r\n this._documentation.forEach(d => {\r\n if (d.EmpTimeID == this.newDoc.EmpTimeID) {\r\n docsWithSameTimeID.push(d);\r\n }\r\n });\r\n docsWithSameTimeID = docsWithSameTimeID.sort(\r\n (a, b) => a.WorkID - b.WorkID\r\n );\r\n const i = docsWithSameTimeID.length - 1;\r\n if (i != -1) {\r\n this.updatedDoc = docsWithSameTimeID[i];\r\n }\r\n }\r\n if (this.attachmentUpload == true && this.updatedDoc != null) {\r\n const fileReader = new FileReader();\r\n fileReader.onload = (e: any) => {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:onFileReaderLoad',\r\n e\r\n });\r\n // Will print the base64 here.\r\n const result = e.target.result as any;\r\n if (this.updatedDoc != null) {\r\n this.UploadAttachment.next({\r\n process: 'timecard',\r\n entityId: this.updatedDoc.WorkID,\r\n fileId: null, // Guid.newGuid(),\r\n meta: this.attachmentForUpload,\r\n file: result.substr(result.indexOf(',') + 1)\r\n });\r\n // this.editData(this.updatedDoc, 'Hours');\r\n this.updatedDoc = null;\r\n this.attachmentUpload = false;\r\n } else {\r\n this.UploadAttachment.next({\r\n process: 'timecard',\r\n entityId: this.editing.WorkID,\r\n fileId: null, // Guid.newGuid(),\r\n meta: this.attachmentForUpload,\r\n file: result.substr(result.indexOf(',') + 1)\r\n });\r\n this.attachmentUpload = false;\r\n }\r\n };\r\n\r\n // readAsDataURL is base64 encoded\r\n fileReader.readAsDataURL(this.attachmentForUpload);\r\n }\r\n this.documentationSubject.next(this._documentation);\r\n }\r\n }\r\n public get documentation(): Array {\r\n return this._documentation;\r\n }\r\n @Input() AddDocumentation$: Observable;\r\n private _selectedError: IStatusMessage;\r\n @Input() public set selectedError(value: IStatusMessage) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:selectedError:set',\r\n value\r\n });\r\n if (!value) {\r\n return;\r\n }\r\n if (this._selectedError && this._selectedError.MsgEntityID) {\r\n const oldRow = document.getElementById(\r\n `row-${this._selectedError.MsgEntityID.toString()}`\r\n );\r\n if (oldRow) {\r\n oldRow.classList.remove('highlight');\r\n oldRow.classList.remove('p-highlight');\r\n oldRow.classList.remove('highlight-warning');\r\n oldRow.classList.remove('highlight-danger');\r\n }\r\n }\r\n this._selectedError = value;\r\n if (!(value && value.MsgEntityID)) {\r\n return;\r\n }\r\n const styles: string[] = [];\r\n styles.push('p-highlight');\r\n styles.push('highlight');\r\n if (value.StatusCode === ResponseStatus.Warning) {\r\n styles.push('highlight-warning');\r\n }\r\n if (value.StatusCode === ResponseStatus.Failed) {\r\n styles.push('highlight-danger');\r\n }\r\n const rowId = `row-${value.MsgEntityID.toString()}`;\r\n const row = document.getElementById(rowId);\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:selectedError1',\r\n value,\r\n row\r\n });\r\n if (!row) {\r\n // virtual row?\r\n const idx =\r\n this.TimecardDoc &&\r\n this.TimecardDoc.findIndex(\r\n doc =>\r\n doc.EmpAuthID.toString() ===\r\n value.MsgEntityID.toString()\r\n );\r\n this.table.scrollToVirtualIndex(idx);\r\n setTimeout(() => {\r\n this.highlightRow(rowId, ...styles);\r\n }, 0);\r\n return;\r\n }\r\n this.highlightRow(rowId, ...styles);\r\n }\r\n public get selectedError(): IStatusMessage {\r\n return this._selectedError;\r\n }\r\n newWorkId = -1;\r\n cloned: { [s: string]: TimeCardDocumentation } = {};\r\n editing?: TimeCardDocumentation = undefined;\r\n selected: TimeCardDocumentation[] = [];\r\n newDoc: any;\r\n updatedDoc: any;\r\n attachmentForUpload: any;\r\n attachmentUpload?: boolean = false;\r\n timeDocText?: string = '';\r\n updatedDocHours?: number;\r\n dateFilters: any;\r\n moment: any;\r\n constructor(\r\n private log: LoggingService,\r\n public ss: StateService,\r\n private filterService: FilterService\r\n ) {\r\n this.moment = moment;\r\n this.timecardDoc = new FormGroup({\r\n hours: new FormControl()\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes.showDocumentation) {\r\n if (this.editing) {\r\n //this.onRowEditCancel(this.editing);\r\n }\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n ngAfterViewInit() {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:ngAfterViewInit',\r\n validating: this.validating,\r\n approving: this.approving\r\n });\r\n this.setupSubscriptions();\r\n }\r\n setupSubscriptions() {\r\n combineLatest([\r\n this.TimeCardsSubject,\r\n this.documentationSubject,\r\n this.ValidatingSubject,\r\n this.ApprovingSubject\r\n ])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(([tcs, docs, validating, approving]) =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:docs',\r\n tcs,\r\n docs\r\n })\r\n ),\r\n filter(([tcs, docs]) => !!tcs && !!docs)\r\n )\r\n .subscribe(([tcs, docs, validating, approving]) => {\r\n this.TimecardDoc = [\r\n ...docs\r\n .sort((a, b) =>\r\n a.TaskLongName.localeCompare(b.TaskLongName)\r\n )\r\n .map((x, i, a) => {\r\n const val = {\r\n ...x,\r\n TaskLongNameDisplay: x.TaskLongName,\r\n timeCard: tcs.find(\r\n t => t.EmpTimeID === x.EmpTimeID\r\n ),\r\n IsReadOnly:\r\n x.IsReadOnly || validating || approving\r\n ? true\r\n : this.userInfo.IsSuperUser\r\n ? false\r\n : validating || approving\r\n };\r\n return val;\r\n })\r\n ];\r\n });\r\n this.AddDocumentation$.pipe(\r\n takeWhile(() => this.active),\r\n tap(tc =>\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:AddDocumentation$:tap',\r\n tc,\r\n docs: this.documentation\r\n })\r\n )\r\n ).subscribe((tc: ITimeCard) => {\r\n this.documentationSubject\r\n .pipe(\r\n skipWhile(\r\n docs =>\r\n !tc ||\r\n docs.findIndex(\r\n doc => doc.EmpTimeID === tc.EmpTimeID\r\n ) < 0\r\n ),\r\n take(1)\r\n )\r\n .subscribe(docs => {\r\n this.editData(\r\n docs.find(\r\n doc => doc.EmpTimeID === tc.EmpTimeID\r\n ) as TimeCardDocumentation\r\n );\r\n });\r\n });\r\n }\r\n addNewDoc($event: MouseEvent, tc: ITimeCard | TimeCardDocumentation) {\r\n if ($event) {\r\n $event.preventDefault();\r\n }\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:addNewDoc',\r\n $event,\r\n tc,\r\n editableColumns: this.editableColumns\r\n });\r\n let readOnly = true;\r\n let hours = 0;\r\n let WorkID = 0;\r\n if ((tc as ITimeCard).EmployeeHours) {\r\n hours = (tc as ITimeCard).EmployeeHours;\r\n } else {\r\n hours = (tc as TimeCardDocumentation).EmpTimeIDHours;\r\n WorkID = (tc as TimeCardDocumentation).WorkID;\r\n }\r\n if (!(tc as ITimeCard).IsReadOnly) {\r\n readOnly = false;\r\n }\r\n\r\n if (!readOnly) {\r\n const idx = this.documentation.findIndex(\r\n x => x.EmpTimeID === tc.EmpTimeID\r\n );\r\n if (!$event && WorkID > 0) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:addNewDoc:existing',\r\n tc,\r\n idx\r\n });\r\n this.editData(this.documentation[idx], 'Hours');\r\n } else {\r\n let workDate;\r\n if ((tc as ITimeCard).WorkDate) {\r\n workDate = (tc as ITimeCard).WorkDate;\r\n } else {\r\n workDate = (tc as TimeCardDocumentation).EmployeeWorkDate;\r\n }\r\n this.newDoc = {\r\n WorkID: this.newWorkId,\r\n EmpAuthID: tc.EmpAuthID,\r\n EmpTimeID: tc.EmpTimeID,\r\n ServiceItem: tc.ServiceItem,\r\n TaskLongName: tc.TaskLongName,\r\n TimeDocText: '',\r\n EmployeeWorkDate: new Date(workDate),\r\n IsReadOnly: false,\r\n EmpTimeIDHours: hours,\r\n Hours:\r\n hours -\r\n this.documentation\r\n .filter(x => x.EmpTimeID === tc.EmpTimeID)\r\n .reduce((a, c) => a + (c.Hours ?? 0), 0),\r\n Status: {\r\n StatusCode: ResponseStatus.None,\r\n Message: 'New'\r\n }\r\n };\r\n this.documentation = [...this.documentation, this.newDoc];\r\n this.editData(this.newDoc);\r\n }\r\n } else {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:addNewDoc',\r\n readOnly\r\n });\r\n }\r\n }\r\n editData(doc: TimeCardDocumentation, field?: string) {\r\n this.table.cancelRowEdit(this.editing);\r\n this.onRowEditCancel(this.editing);\r\n this.onRowEditInit(doc);\r\n this.table.initRowEdit(doc);\r\n setTimeout(() => {\r\n document.getElementById('focusOnMe').click();\r\n document.getElementById('focusOnMe').focus();\r\n }, 0);\r\n }\r\n updateHourValidation() {\r\n const controls = this.timecardDoc.controls;\r\n let max = this.editing?.EmpTimeIDHours ?? 0;\r\n if (this.documentation && this.documentation.length > 0) {\r\n max =\r\n this.editing?.EmpTimeIDHours ??\r\n 0 -\r\n this.documentation\r\n .filter(\r\n x =>\r\n x.EmpTimeID === this.editing?.EmpTimeID &&\r\n x.WorkID !== this.editing?.WorkID\r\n )\r\n .reduce((a, c) => a + (c.Hours ?? 0), 0);\r\n }\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:updateHourValidation',\r\n max\r\n });\r\n controls['hours'].setValidators([\r\n Validators.min(0),\r\n Validators.max(max),\r\n Validators.required\r\n ]);\r\n }\r\n onAttachmentSelect($event: { originalEvent: any; files: File[] }) {}\r\n onAttachmentUpload($event: { files: File[] }) {\r\n if (this.editing.IsReadOnly) {\r\n return;\r\n }\r\n\r\n this.attachment = $event.files[0];\r\n this.attachmentForUpload = $event.files[0];\r\n if (this.editing?.WorkID == -1) {\r\n this.attachmentUpload = true;\r\n this.newDoc = {\r\n ...this.editing,\r\n timeCard: this.TimeCards.find(\r\n x => x.EmpTimeID == this.editing?.EmpTimeID\r\n ),\r\n TimeDocText: this.timeDocText,\r\n Hours: this.updatedDocHours\r\n };\r\n this.onRowEditSave(this.newDoc);\r\n // this.onRowEditInit(this.newDoc);\r\n } else {\r\n this.attachmentUpload = false;\r\n const fileReader = new FileReader();\r\n fileReader.onload = (e: any) => {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:onFileReaderLoad',\r\n e\r\n });\r\n // Will print the base64 here.\r\n const result = e.target.result as any;\r\n\r\n this.UploadAttachment.next({\r\n process: 'timecard',\r\n entityId: this.editing.WorkID,\r\n fileId: null, // Guid.newGuid(),\r\n meta: this.attachment,\r\n file: result.substr(result.indexOf(',') + 1)\r\n });\r\n };\r\n fileReader.readAsDataURL(this.attachment);\r\n }\r\n }\r\n onAttachmentDelete($event: any, fileId: string) {\r\n $event.preventDefault();\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:onAttachmentDelete',\r\n fileId\r\n });\r\n this.DeleteAttachment.next(fileId);\r\n }\r\n clearDocForm() {\r\n const controls = this.timecardDoc.controls;\r\n controls['WorkID'].setValue(null);\r\n controls['hours'].setValue(null);\r\n controls['class'].setValue(null);\r\n controls['description'].setValue(null);\r\n controls['WorkID'].markAsPristine();\r\n controls['hours'].markAsPristine();\r\n controls['class'].markAsPristine();\r\n controls['description'].markAsPristine();\r\n }\r\n onRowDelete($event: any, doc: TimeCardDocumentation) {\r\n $event.preventDefault();\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:onRowDelete',\r\n $event,\r\n doc\r\n });\r\n this.Delete.next(doc);\r\n }\r\n onRowEditInit(item: TimeCardDocumentation) {\r\n this.timeDocText = item.TimeDocText;\r\n this.updatedDocHours = item.Hours;\r\n this.cloned[item.id] = { ...item };\r\n const items = this.ClassList.filter(\r\n x => x.EmpAuthID === item.EmpAuthID\r\n );\r\n\r\n this.ClassesForAuth.next(\r\n items.map(x => ({\r\n label: x.ClassName,\r\n value: x.ClassListID\r\n }))\r\n );\r\n if (item.WorkID <= 0) {\r\n item.Hours =\r\n (item.EmpTimeIDHours ?? 0) -\r\n this.documentation\r\n .filter(x => x.EmpTimeID === item.EmpTimeID && x.WorkID > 0)\r\n .reduce((a, c) => a + (c.Hours ?? 0), 0);\r\n this.updatedDocHours = item.Hours;\r\n }\r\n this.editing = item;\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:onRowEditInit',\r\n item,\r\n items,\r\n classList: this.ClassList,\r\n cloned: this.cloned,\r\n editing: this.editing\r\n });\r\n this.selected = [];\r\n this.updateHourValidation();\r\n\r\n setTimeout(() => {\r\n document.getElementById('focusOnMe')?.click();\r\n document.getElementById('focusOnMe')?.focus();\r\n }, 0);\r\n }\r\n\r\n onRowEditSave(item: TimeCardDocumentation) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:onRowEditSave',\r\n item,\r\n clonedDoc: this.cloned\r\n });\r\n if (this.timecardDoc.valid) {\r\n item.TimeDocText = this.timeDocText;\r\n item.Hours = this.updatedDocHours;\r\n this.Save.next([item]);\r\n this.timeDocText = '';\r\n this.updatedDocHours = undefined;\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n }\r\n\r\n onRowEditCancel(item?: TimeCardDocumentation) {\r\n this.timeDocText = '';\r\n this.updatedDocHours = undefined;\r\n if (item && item.id) {\r\n this.documentation = this.documentation\r\n .filter(x => x.id !== item.id)\r\n .concat([this.cloned[item.id]]);\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n }\r\n onStatusClick(item: TimeCardDocumentation) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({\r\n open: true,\r\n MsgEntityID: item.id.toString()\r\n });\r\n }\r\n highlightRow(rowId: string, ...styles: string[]) {\r\n const row = document.getElementById(rowId);\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:highlightRow',\r\n rowId,\r\n row,\r\n classes: styles\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add(...styles);\r\n }\r\n customSort($event) {\r\n this.log.verbose({\r\n type: 'TimeCardDocumentationPresenterComponent:customSort',\r\n $event\r\n });\r\n this.documentation.sort((a, b) =>\r\n $event.order > 0\r\n ? (this.resolve($event.field, a) || '')\r\n .toString()\r\n .toLocaleLowerCase()\r\n .localeCompare(\r\n (this.resolve($event.field, b) || '')\r\n .toString()\r\n .toLocaleLowerCase()\r\n )\r\n : (this.resolve($event.field, b) || '')\r\n .toString()\r\n .toLocaleLowerCase()\r\n .localeCompare(\r\n (this.resolve($event.field, a) || '')\r\n .toString()\r\n .toLocaleLowerCase()\r\n )\r\n );\r\n }\r\n\r\n resolve(path, obj) {\r\n return path.split('.').reduce(function (prev, curr) {\r\n return prev ? prev[curr] : null;\r\n }, obj || self);\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n transform(ary: any, field: string, id: string): any {\r\n try {\r\n const result =\r\n ary && ary.length\r\n ? ary.filter(x => x[field].toString() === id.toString())\r\n : { [`${field}`]: id };\r\n return result;\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'reducemax'\r\n})\r\nexport class ReduceMaxPipe implements PipeTransform {\r\n transform(ary: [], fn: any, max: number): any {\r\n try {\r\n const result = ary.reduce(eval(fn), 0) >= Number(max);\r\n return result;\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n}\r\n@Pipe({\r\n name: 'reducenumber'\r\n})\r\nexport class ReduceNumberPipe implements PipeTransform {\r\n transform(ary: [], fn: any): any {\r\n try {\r\n return ary.reduce(eval(fn), 0);\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'classlist'\r\n})\r\nexport class ClassListPipe implements PipeTransform {\r\n transform(id: string, items: Array): string {\r\n try {\r\n const c = items.find(x => x.value === id);\r\n return c ? c.label : '';\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n}\r\n","export * from './time-card-feature.component';\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { debounceTime, filter, map, takeWhile, withLatestFrom } from 'rxjs/operators';\r\nimport * as fromSettings from '../../company-setting';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { SignaturePolicy } from '../../data-services/signature-policy';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport { Process } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserInfo } from '../../user-info';\r\nimport { IUserColor } from '../../user-info/IUserColor';\r\nimport * as fromUser from '../../user-info/store';\r\nimport { IDirectReportsWithTimeStatus } from '../IDirectReportsWithTimeStatus';\r\nimport { ITimeCard } from '../itime-card';\r\nimport { IWeeklySummary } from '../IWeeklySummary';\r\nimport * as fromTimecard from '../store';\r\nimport * as fromDRWTS from '../store/direct-reports-with-time-status.actions';\r\nimport * as fromdrwtsR from '../store/direct-reports-with-time-status.reducer';\r\nimport * as fromAuthorizedTask from '../store/iauthorized-task.actions';\r\nimport * as fromAuthorizedTaskR from '../store/iauthorized-task.reducer';\r\nimport * as fromManagement from '../store/management-action.actions';\r\nimport * as fromTimeCardSubmit from '../store/time-card-submit.actions';\r\nimport * as fromTimeCardSubmitR from '../store/time-card-submit.reducer';\r\nimport * as selectors from '../store/time-card.selectors';\r\nimport * as fromWeeklySummary from '../store/weekly-summary.actions';\r\nimport * as fromWeeklySummaryR from '../store/weekly-summary.reducer';\r\nimport { TimeCardPresenterComponent } from '../time-card-presenter';\r\nimport { TimeCardService } from '../time-card.service';\r\nimport * as fromTaskTimer from '../../task-timer/store/task-timer.actions'\r\nimport * as fromTaskTimerR from '../../task-timer/store/task-timer.reducer'\r\nimport { TaskTimer } from '../../data-services/task-timer/task-timer.model';\r\nimport { IManagementAction } from '../IManagementAction';\r\nimport { ManagementActionService } from '../managementActionService';\r\n@Component({\r\n selector: 'ef-time-card-feature',\r\n templateUrl: './time-card-feature.component.html',\r\n styleUrls: ['./time-card-feature.component.scss']\r\n})\r\nexport class TimeCardFeatureComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n public userInfo$: Observable;\r\n public process$: Observable;\r\n @ViewChild(TimeCardPresenterComponent, { static: true })\r\n tcpc: TimeCardPresenterComponent;\r\n public timecards$: Observable>;\r\n public companySettings$: Observable>;\r\n public userWebColors$: Observable>;\r\n // public authorizedTasks$: Observable>;\r\n public weeklySummaryData$: Observable>;\r\n public signaturePolicy$: Observable;\r\n public directReportTimeStatusData$: Observable<\r\n Array\r\n >;\r\n public directReports$: Observable>;\r\n private active = true;\r\n userInfo: IUserInfo;\r\n public employeeListID = '';\r\n public employeeName = '';\r\n public userEntryStartDate: Date;\r\n public userEntryEndDate: Date;\r\n public RoleID: number;\r\n timeCardDateFromNextOrPrev: string;\r\n directionFromNextOrPrev: string;\r\n @Input() public process: Process;\r\n p: Process;\r\n signaturePolicyDataService: EntityCollectionService;\r\n timecardSequenceDataService: EntityCollectionService;\r\n public timecardSequence$: Observable<\r\n Array\r\n >;\r\n taskTimer$: Observable;\r\n\r\n IsLoading = false;\r\n timerActive = false;\r\n timerMessage = 'A timer is currently active. Stop the timer to enter time via TimeCard';\r\n\r\n managementActionResponse$: Observable;\r\n\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n private store: Store,\r\n private tcSubmitStore: Store,\r\n private aTstore: Store,\r\n private wSstore: Store,\r\n private dRstore: Store,\r\n private lookupsStore: Store,\r\n private datePipe: DatePipe,\r\n public timeCardService: TimeCardService,\r\n public entityServices: EntityServices,\r\n private managementActionService: ManagementActionService\r\n ) {\r\n this.signaturePolicyDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.SignaturePolicy.entityName\r\n );\r\n this.timecardSequenceDataService =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.TimecardSequence.entityName\r\n );\r\n }\r\n\r\n transformDate(date): Date {\r\n return new Date(this.datePipe.transform(date, 'MM/dd/yyyy'));\r\n }\r\n\r\n ngOnInit() {\r\n this.timeCardDateFromNextOrPrev = null;\r\n this.directionFromNextOrPrev = null;\r\n this.store.dispatch(fromTaskTimer.getTaskTimer());\r\n // this.store.dispatch(new fromUser.LoadUserInfo());\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'require_signature' })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'RequireTimeSubmit' })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'reqValidation' })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'TCIncludeClassify' })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'time_precision' })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'ShowAvailableHours'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'ShowAccrualsOnTimeCard'\r\n })\r\n );\r\n this.directReports$ = this.lookupsStore.pipe(\r\n select(fromLookups.getDirectReportsLookup)\r\n );\r\n\r\n // this.authorizedTasks$ = this.aTstore.pipe(\r\n // select(fromAuthorizedTaskR.selectAll)\r\n // );\r\n\r\n this.weeklySummaryData$ = this.wSstore.pipe(\r\n select(fromWeeklySummaryR.selectAll)\r\n );\r\n\r\n this.timecards$ = this.store.pipe(\r\n select(selectors.selectAll),\r\n map(items => clone(items))\r\n );\r\n\r\n this.userWebColors$ = this.store.pipe(\r\n select(fromUser.getUserColorsSorted)\r\n );\r\n this.directReportTimeStatusData$ = this.dRstore.pipe(\r\n select(fromdrwtsR.selectAll)\r\n // filter(items => !!items && items.length > 0),\r\n );\r\n this.signaturePolicy$ = this.signaturePolicyDataService.entities$;\r\n this.timecardSequence$ =\r\n this.timecardSequenceDataService.entities$.pipe(debounceTime(500));\r\n this.companySettings$ = this.store.pipe(select(fromSettings.selectAll));\r\n\r\n this.setupSubscriptions();\r\n }\r\n ngAfterViewInit(): void {}\r\n setupSubscriptions() {\r\n // this.directReportTimeStatusData$\r\n // .pipe(takeWhile(() => this.active))\r\n // .subscribe(drwts => {\r\n // if (drwts.length >= 0) {\r\n // this.IsLoading = false;\r\n // } else {\r\n // this.IsLoading = true;\r\n // }\r\n // });\r\n\r\n this.managementActionResponse$ = this.managementActionService.managementActionResp$;\r\n \r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.taskTimer$ = this.store.pipe(\r\n select(fromTaskTimerR.selectAll),\r\n map(x => clone(x))\r\n );\r\n\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.process$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n filter(process => !!process),\r\n withLatestFrom(this.userInfo$)\r\n )\r\n .subscribe(([process, userInfo]) => {\r\n this.log.verbose({\r\n type: 'TimeCardFeatureComponent:process$',\r\n process\r\n });\r\n switch (process.ProcessID) {\r\n case 87:\r\n // Task Manager\r\n break;\r\n case 85:\r\n // Supervisor\r\n break;\r\n case 90:\r\n // Super User\r\n break;\r\n case 64:\r\n // User\r\n if (userInfo) {\r\n const todaysDate = new Date();\r\n const timeCardDate = todaysDate;\r\n if (this.timeCardDateFromNextOrPrev != null) {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: userInfo.EmployeeListID,\r\n TimeCardDate: moment(\r\n this.timeCardDateFromNextOrPrev\r\n ).format('MM/DD/YYYY'),\r\n MyDirection:\r\n this.directionFromNextOrPrev,\r\n MinEntryDate:\r\n userInfo.UserEntryStartDate\r\n })\r\n );\r\n } else {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: userInfo.EmployeeListID,\r\n TimeCardDate:\r\n moment(timeCardDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n MyDirection: null,\r\n MinEntryDate:\r\n userInfo.UserEntryStartDate\r\n })\r\n );\r\n }\r\n\r\n this.wSstore.dispatch(\r\n fromWeeklySummary.getWeeklySummary({\r\n EmployeeListID: userInfo.EmployeeListID\r\n })\r\n );\r\n }\r\n\r\n break;\r\n default:\r\n console.log('Not a timecard process');\r\n break;\r\n }\r\n });\r\n\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n withLatestFrom(this.process$)\r\n )\r\n .subscribe(([userInfo, process]) => {\r\n this.log.verbose({\r\n type: 'TimeCardFeatureComponent:setupSubscriptions:userInfo$',\r\n userInfo\r\n });\r\n this.userInfo = userInfo;\r\n this.employeeListID = userInfo.EmployeeListID;\r\n this.employeeName = userInfo.EmployeeName;\r\n this.userEntryStartDate = userInfo.UserEntryStartDate;\r\n this.userEntryEndDate = userInfo.UserEntryEndDate;\r\n this.RoleID = userInfo.RoleGroupID;\r\n\r\n if (\r\n process.ProcessID == 85 ||\r\n process.ProcessID == 87 ||\r\n process.ProcessID == 90\r\n ) {\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'LockTimeCardsForSupervisor'\r\n })\r\n );\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: false\r\n })\r\n );\r\n }\r\n });\r\n\r\n this.taskTimer$.pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(this.process$)\r\n ).subscribe(([timer, process]) => {\r\n const timerList = timer.filter(x => x.stoptime == null);\r\n switch (process.ProcessID) {\r\n case 87:\r\n // Task Manager\r\n break;\r\n case 85:\r\n // Supervisor\r\n break;\r\n case 90:\r\n // Super User\r\n break;\r\n default:\r\n // User\r\n if (timerList.some(x => x.starttime != null) == true) {\r\n this.timerActive = true;\r\n } else {\r\n this.timerActive = false;\r\n }\r\n break;\r\n }\r\n });\r\n\r\n this.tcpc.refreshStatusEE\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value.empListID,\r\n TimeCardDate: moment(value.date).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n MyDirection: null,\r\n MinEntryDate: this.userInfo.UserEntryStartDate\r\n })\r\n );\r\n }\r\n });\r\n\r\n this.tcpc.nextOrPrevious\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n withLatestFrom(this.process$)\r\n )\r\n .subscribe(([value, process]) => {\r\n if (value != null) {\r\n // var timeCardDate = this.transformDate(value.date);\r\n this.timeCardDateFromNextOrPrev = value.date;\r\n this.directionFromNextOrPrev = value.direction;\r\n if (\r\n process.ProcessID == 87 ||\r\n process.ProcessID == 85 ||\r\n process.ProcessID == 90\r\n ) {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value.empListID,\r\n TimeCardDate: moment(value.date).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n MyDirection: value.direction,\r\n Processid: process.ProcessID,\r\n MinEntryDate: this.userInfo.UserEntryStartDate,\r\n EndDate: value.endDate\r\n })\r\n );\r\n } else {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value.empListID,\r\n TimeCardDate: moment(value.date).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n MyDirection: value.direction,\r\n MinEntryDate: this.userInfo.UserEntryStartDate\r\n })\r\n );\r\n }\r\n }\r\n });\r\n\r\n this.tcpc.updateTasks\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.aTstore.dispatch(\r\n fromAuthorizedTask.getAuthorizedTasks({\r\n EmployeeListID: value.EmployeeListID,\r\n AuthType: 'Time',\r\n AsOfDate: null\r\n })\r\n );\r\n });\r\n\r\n this.tcpc.tcSubmit\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.tcSubmitStore.dispatch(\r\n fromTimeCardSubmit.putTimeCardSubmit({\r\n timeCardSubmit: value\r\n })\r\n );\r\n }\r\n if (value[0].StartDate == '') {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value[0].EmployeeListID,\r\n TimeCardDate: moment(new Date()).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n MyDirection: null\r\n })\r\n );\r\n } else {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value[0].EmployeeListID,\r\n TimeCardDate: moment(value[0].StartDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n MyDirection: null\r\n })\r\n );\r\n }\r\n });\r\n\r\n this.tcpc.supervisorDRSelected\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.wSstore.dispatch(\r\n fromWeeklySummary.getWeeklySummary({\r\n EmployeeListID: value.EmployeeListID\r\n })\r\n );\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value.EmployeeListID,\r\n TimeCardDate: value.TimeCardDate,\r\n MyDirection: null,\r\n MinEntryDate: this.userInfo.UserEntryStartDate\r\n })\r\n );\r\n }\r\n });\r\n\r\n this.tcpc.dRSelectedSubject\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n withLatestFrom(this.process$)\r\n )\r\n .subscribe(([value, process]) => {\r\n if (value != null) {\r\n const todaysDate = new Date();\r\n const timeCardDate = todaysDate;\r\n if (process.ProcessID == 87 || process.ProcessID == 85) {\r\n this.wSstore.dispatch(\r\n fromWeeklySummary.getWeeklySummary({\r\n EmployeeListID: this.userInfo.EmployeeListID,\r\n DRListID: value.EmployeeListID,\r\n StartDate: value.ImpactedStart,\r\n EndDate: value.ImpactedEnd\r\n })\r\n );\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value.EmployeeListID,\r\n TimeCardDate: moment(\r\n value.ImpactedStart\r\n ).format('MM/DD/YYYY'),\r\n MyDirection: null,\r\n Processid: this.process.ProcessID,\r\n MinEntryDate: this.userInfo.UserEntryStartDate,\r\n EndDate: value.ImpactedEnd\r\n })\r\n );\r\n } else {\r\n this.wSstore.dispatch(\r\n fromWeeklySummary.getWeeklySummary({\r\n EmployeeListID: value.EmployeeListID\r\n })\r\n );\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: value.EmployeeListID,\r\n TimeCardDate:\r\n moment(timeCardDate).format('MM/DD/YYYY'),\r\n MyDirection: null,\r\n MinEntryDate: this.userInfo.UserEntryStartDate\r\n })\r\n );\r\n }\r\n }\r\n });\r\n\r\n this.tcpc.timeCardUpdate\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n value[0].CurrentUserListID = this.employeeListID;\r\n this.store.dispatch(\r\n fromTimecard.putTimeCards({ timeCard: value })\r\n );\r\n // this.wSstore.dispatch(fromWeeklySummary.getWeeklySummary({ EmployeeListID: value[0].EmployeeListID }));\r\n }\r\n });\r\n\r\n this.tcpc.managementUpdate\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.dRstore.dispatch(\r\n fromManagement.putManagment({ managementAction: value })\r\n );\r\n // this.wSstore.dispatch(\r\n // fromWeeklySummary.getWeeklySummary({\r\n // EmployeeListID: value.EmployeeListID,\r\n // StartDate: moment(value.MgmtDateRangeStart).toDate(),\r\n // EndDate: moment(value.MgmtDateRangeEnd).toDate()\r\n // })\r\n // );\r\n }\r\n });\r\n\r\n this.tcpc.actionDateSelected\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.dRstore.dispatch(\r\n fromDRWTS.getDirectReportsWithTimeStatus({\r\n UserListID: this.employeeListID,\r\n UserRole: value.Role,\r\n StartDate: moment(value.StartDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n EndDate: moment(value.EndDate).format('MM/DD/YYYY'),\r\n MyDRsOnly: value.MyDRsOnly\r\n })\r\n );\r\n this.directReportTimeStatusData$ = this.dRstore.pipe(\r\n select(fromdrwtsR.selectAll)\r\n );\r\n }\r\n });\r\n }\r\n onLoadDirectReportsWithTimeStatus($event) {\r\n switch (this.process.ProcessID) {\r\n case 87:\r\n // Task Manager\r\n this.dRstore.dispatch(\r\n fromDRWTS.getDirectReportsWithTimeStatus({\r\n UserListID: this.employeeListID,\r\n UserRole: 12025,\r\n StartDate: $event.startDate ? $event.startDate : null,\r\n EndDate: $event.endDate ? $event.endDate : moment(new Date()).format('MM/DD/YYYY'),\r\n MyDRsOnly: $event.MyDRsOnly\r\n })\r\n );\r\n break;\r\n case 85:\r\n // Supervisor\r\n this.dRstore.dispatch(\r\n fromDRWTS.getDirectReportsWithTimeStatus({\r\n UserListID: this.employeeListID,\r\n UserRole: 12024,\r\n StartDate: $event.startDate ? $event.startDate : null,\r\n EndDate: $event.endDate ? $event.endDate : moment(new Date()).format('MM/DD/YYYY'),\r\n MyDRsOnly: $event.MyDRsOnly\r\n })\r\n );\r\n break;\r\n }\r\n }\r\n onLoadSignaturePolicy($event) {\r\n this.signaturePolicyDataService.getByKey($event);\r\n }\r\n onLoadTimecardSequence($event) {\r\n this.timecardSequenceDataService.clearCache();\r\n this.timecardSequenceDataService.getAll();\r\n }\r\n onSaveTimecardSequence($event) {\r\n this.timecardSequenceDataService.upsert($event);\r\n }\r\n onMgmtLoadTimecardandWeeklySummary($event) {\r\n this.wSstore.dispatch(\r\n fromWeeklySummary.getWeeklySummary({\r\n EmployeeListID: this.userInfo.EmployeeListID,\r\n DRListID: $event.EmployeeListID,\r\n StartDate: $event.StartDate,\r\n EndDate: $event.EndDate\r\n })\r\n );\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: $event.EmployeeListID,\r\n TimeCardDate: $event.StartDate,\r\n MyDirection: null,\r\n Processid: this.process.ProcessID,\r\n MinEntryDate: this.userInfo.UserEntryStartDate,\r\n EndDate: $event.EndDate\r\n })\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.signaturePolicyDataService.clearCache();\r\n }\r\n}\r\n","export * from './time-card-presenter.component';\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { TransitionHookScope } from '@uirouter/core';\r\nimport * as moment from 'moment';\r\nimport { merge, Observable, ReplaySubject, Subscription } from 'rxjs';\r\nimport { filter, takeWhile, tap } from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport * as fromAuth from '../../auth/store/auth.reducer';\r\nimport { CompanySetting } from '../../company-setting';\r\nimport { TimecardSequence } from '../../data-services';\r\nimport { SignaturePolicy } from '../../data-services/signature-policy';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\nimport { Process } from '../../shared';\r\nimport { AutoComplete, TabView } from '../../shared/efaact-primeng.module';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { TabulatorService } from '../../tabulator.service';\r\nimport {\r\n IUser,\r\n IUserColor,\r\n IUserInfo,\r\n SetSignaturePolicy,\r\n UserRoleEnum\r\n} from '../../user-info';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport { IDirectReportsWithTimeStatus } from '../IDirectReportsWithTimeStatus';\r\nimport { IDirectReport, IManagementAction } from '../IManagementAction';\r\nimport { ITimeCard } from '../itime-card';\r\nimport { ITimeCardSubmit } from '../ITimeCardSubmit';\r\nimport { IWeeklySummary } from '../IWeeklySummary';\r\nimport * as fromTimecard from '../store';\r\nimport * as fromDRWTS from '../store/direct-reports-with-time-status.actions';\r\nimport * as fromdrwtsR from '../store/direct-reports-with-time-status.reducer';\r\nimport { TimeCardDocumentation } from '../store/time-card-documentation.model';\r\nimport * as fromWeeklySummary from '../store/weekly-summary.actions';\r\nimport { TimeCardService } from '../time-card.service';\r\n\r\n@Component({\r\n selector: 'ef-time-card-presenter',\r\n templateUrl: './time-card-presenter.component.html',\r\n styleUrls: ['./time-card-presenter.component.scss']\r\n})\r\nexport class TimeCardPresenterComponent\r\n implements OnInit, AfterViewInit, OnChanges, OnDestroy\r\n{\r\n showAvailableHoursColumn: boolean = false;\r\n showMyDRs = true;\r\n tabManagementRows: any[];\r\n public moment: any;\r\n showAccrualsOnTimeCard: any;\r\n mgmtActionInProgress: boolean;\r\n @Input() set directReportTimeStatusData(\r\n value: Array\r\n ) {\r\n if (this.isSuperUser || this.isUser) {\r\n this.createTabulatorForManagementUsers(this, [], ['']);\r\n // Do not load\r\n } else {\r\n this._directreportswithtimestatus = value.map(x => ({ ...x }));\r\n this.DRSubject.next(this._directreportswithtimestatus);\r\n\r\n if (this.tabManagement && this.directReportListID) {\r\n this.tabManagement.replaceData(this._directreportswithtimestatus);\r\n this.tabManagementRows = this.tabManagement.getRows();\r\n let selectedrow;\r\n this.tabManagementRows.forEach(row => {\r\n if (\r\n row._row.data.EmployeeListID === this.directReportListID\r\n ) {\r\n selectedrow = row;\r\n }\r\n });\r\n this.selectedDRRow = selectedrow;\r\n if (this.selectedDRRow) {\r\n this.selectedDRRow.getElement().classList.add('highlight');\r\n // this.selectedDRRow.getElement().scrollIntoView({\r\n // behavior: 'smooth',\r\n // block: 'center',\r\n // inline: 'center'\r\n // });\r\n if (this.process) {\r\n if (this.process.ProcessID == 85) {\r\n this.weeklySummaryHeader = 'Weekly Summary for Approval Period';\r\n }\r\n if (this.process.ProcessID == 87) {\r\n this.weeklySummaryHeader = 'Weekly Summary for Validate Period';\r\n }\r\n } else {\r\n this.weeklySummaryHeader = 'Weekly Summary for Approval Period';\r\n }\r\n }\r\n } else {\r\n this.createTabulatorForManagementUsers(this, this._directreportswithtimestatus, ['']);\r\n\r\n if (this.isDRSelected === false && this._directreportswithtimestatus.length > 0) {\r\n this.selectInitialDR();\r\n }\r\n }\r\n }\r\n }\r\n get directReportTimeStatusData(): Array {\r\n return this._directreportswithtimestatus;\r\n }\r\n hasMaxHours: boolean;\r\n @Input() set timecardData(value: Array) {\r\n // if (value && value.length) {\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:timecarddata:set',\r\n value\r\n });\r\n this._timecarddata = value;\r\n this.showSI = !value.every(x => x.ServiceItem === null);\r\n this.hasMaxHours = value.some(x => x.AvailableHours != null);\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:timecarddata:set',\r\n value: `showSI in timecard set = ${this.showSI}`\r\n });\r\n this.TimeCardsSubject.next(value);\r\n this.createTimeCardHeader(value, 'LeaveAccrualInfo');\r\n // }\r\n }\r\n get timecardData(): Array {\r\n return this._timecarddata;\r\n }\r\n\r\n private WeeklySummarySubject = new ReplaySubject>(1);\r\n private _weeklysummarydata: Array;\r\n @Input() set weeklySummaryData(value: Array) {\r\n if (value != null && value.length > 0) {\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:timecarddata:set',\r\n value\r\n });\r\n // value.forEach(x => {\r\n // if (x.AvailableHours == null) {\r\n // x.AvailableHours = 0;\r\n // }\r\n // })\r\n this._weeklysummarydata = value;\r\n this.wsShowSI = !value.every(x => x.ServiceItem === null);\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:weeklySummaryData:set',\r\n wsShowSI: this.wsShowSI\r\n });\r\n\r\n this.WeeklySummarySubject.next(value);\r\n\r\n if (this.isSupervisor || this.isTaskManager) {\r\n this.createWeeklySummaryHeader(value);\r\n }\r\n } else {\r\n this.WeeklySummarySubject.next(value);\r\n if (this.tabWeeklySummary) {\r\n this.tabWeeklySummary.clearData();\r\n }\r\n }\r\n }\r\n get weeklySummaryData(): Array {\r\n return this._weeklysummarydata;\r\n }\r\n showAvailableHoursOnTimecard: any = false;\r\n showTimeCardLockForSupervisors: any;\r\n private CompanySettingsSubject = new ReplaySubject>(\r\n 1\r\n );\r\n private _companysettings: Array;\r\n @Input() set companySettings(value: Array) {\r\n if (value.length > 0) {\r\n if (value.findIndex(x => x.SettingType == 'ShowAccrualsOnTimeCard') != -1) {\r\n this.showAccrualsOnTimeCard = value.find(x => x.SettingType == 'ShowAccrualsOnTimeCard').SettingValue;\r\n this.showAccrualsOnTimeCard = this.showAccrualsOnTimeCard == 1 ? true : false;\r\n }\r\n if (value.findIndex(x => x.SettingType == 'LockTimeCardsForSupervisor') != -1) {\r\n this.showTimeCardLockForSupervisors = value.find(x => x.SettingType == 'LockTimeCardsForSupervisor').SettingValue;\r\n this.showTimeCardLockForSupervisors = this.showTimeCardLockForSupervisors == 1 ? true : false;\r\n }\r\n if (\r\n value.find(\r\n setting => setting.SettingType == 'ShowAvailableHours'\r\n ) != null\r\n ) {\r\n this.showAvailableHoursOnTimecard = value.find(\r\n setting => setting.SettingType == 'ShowAvailableHours'\r\n ).SettingValue;\r\n this.showAvailableHoursOnTimecard =\r\n this.showAvailableHoursOnTimecard == 1 ? true : false;\r\n }\r\n\r\n value = value.filter(\r\n setting => setting.SettingType == 'time_precision'\r\n );\r\n }\r\n\r\n this._companysettings = value;\r\n this.CompanySettingsSubject.next(value);\r\n }\r\n get companySettings(): Array {\r\n return this._companysettings;\r\n }\r\n\r\n private TimecardSequenceSubject = new ReplaySubject<\r\n Array\r\n >(1);\r\n private _timecardsequence: Array;\r\n @Input() set timecardSequence(\r\n value: Array\r\n ) {\r\n if (value && value.length > 0) {\r\n value = value.sort((a, b) => a.Tasksortorder - b.Tasksortorder);\r\n }\r\n this._timecardsequence = value;\r\n this.TimecardSequenceSubject.next(value);\r\n }\r\n get timecardSequence(): Array {\r\n return this._timecardsequence;\r\n }\r\n\r\n private ManagementActionRespSubject = new ReplaySubject(1);\r\n private _managementactionresp: any;\r\n @Input() set managementActionResp(\r\n value: any\r\n ) { \r\n if (value) {\r\n if (value.Items) {\r\n if (value.Items.length > 0) {\r\n this.managementActionMessage = value.ErrorMessages[0] ? value.ErrorMessages[0] : 'Management Action Successful';\r\n this.managementActionCompleteMsg = this.managementActionMessage;\r\n }\r\n }\r\n }\r\n this._managementactionresp = value;\r\n this.ManagementActionRespSubject.next(value);\r\n \r\n }\r\n get managementActionResp(): any {\r\n return this._managementactionresp;\r\n }\r\n\r\n managementActionMessage: string;\r\n\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(TabulatorService) private tabService: TabulatorService,\r\n private errorStore: Store,\r\n @Inject(UnsavedChangesService)\r\n private confirmservice: UnsavedChangesService,\r\n private store: Store,\r\n private userStore: Store,\r\n private authStore: Store,\r\n private timeCardService: TimeCardService,\r\n private dRstore: Store\r\n ) {\r\n this.moment = moment;\r\n this.filterFormGroup = new FormGroup({\r\n directReports: new FormControl(null),\r\n tasks: new FormControl(null)\r\n });\r\n\r\n this.approveFormGroup = new FormGroup({\r\n dateRange: new FormControl(null),\r\n approve: new FormControl(null),\r\n lock: new FormControl(null),\r\n unlock: new FormControl(null)\r\n });\r\n\r\n this.disapproveFormGroup = new FormGroup({\r\n dateRange: new FormControl(null),\r\n disapprove: new FormControl(null)\r\n });\r\n\r\n this.unapproveFormGroup = new FormGroup({\r\n dateRange: new FormControl(null),\r\n unapprove: new FormControl(null)\r\n });\r\n\r\n this.validateFormGroup = new FormGroup({\r\n dateRange: new FormControl(new Date()),\r\n validate: new FormControl(null)\r\n });\r\n\r\n this.disapproveValidateFormGroup = new FormGroup({\r\n dateRange: new FormControl(null),\r\n disapprove: new FormControl(null)\r\n });\r\n\r\n this.unvalidateFormGroup = new FormGroup({\r\n dateRange: new FormControl(null),\r\n unvalidate: new FormControl(null)\r\n });\r\n }\r\n @Input() public signaturePolicy: SignaturePolicy[];\r\n @Input() public process: Process;\r\n @ViewChild('weekZeroHeader', { static: true })\r\n weekZeroHeader: ElementRef;\r\n @ViewChild('weekOneHeader', { static: true })\r\n weekOneHeader: ElementRef;\r\n @ViewChild('weekTwoHeader', { static: true })\r\n weekTwoHeader: ElementRef;\r\n @ViewChild('weekThreeHeader', { static: true })\r\n weekThreeHeader: ElementRef;\r\n @ViewChild('weekFourHeader', { static: true })\r\n weekFourHeader: ElementRef;\r\n @ViewChild('weekFiveHeader', { static: true })\r\n weekFiveHeader: ElementRef;\r\n @ViewChild('weekSixHeader', { static: true })\r\n weekSixHeader: ElementRef;\r\n @ViewChild('cbxColumnHeader', { static: true })\r\n cbxColumnHeader: MatCheckbox;\r\n @ViewChild('superUserTableCbxColumnHeader', { static: true })\r\n superUserTableCbxColumnHeader: MatCheckbox;\r\n @ViewChild('tabActions') tabActions: TabView;\r\n public selectedCheckbox = { checked: false, indeterminate: false };\r\n public superUSerTableSelectedCheckbox = {\r\n checked: false,\r\n indeterminate: false\r\n };\r\n public filterFormGroup: FormGroup;\r\n public approveFormGroup: FormGroup;\r\n public disapproveFormGroup: FormGroup;\r\n public unapproveFormGroup: FormGroup;\r\n public validateFormGroup: FormGroup;\r\n public disapproveValidateFormGroup: FormGroup;\r\n public unvalidateFormGroup: FormGroup;\r\n\r\n public tabTimeCard: Tabulator;\r\n public tabManagement: Tabulator;\r\n public tabWeeklySummary: Tabulator;\r\n public Allowsplitday: boolean;\r\n public IsDisabled = true;\r\n public active = true;\r\n public isUser = false;\r\n public isSuperUser = false;\r\n public isSupervisor = false;\r\n public isTaskManager = false;\r\n public tabEndOfRow = false;\r\n\r\n public rangeDates: Array;\r\n\r\n public flippedTimeCardData: Array;\r\n public flippedSummaryData: Array;\r\n\r\n public selectedDirectReports: Array = [];\r\n public activeDirectReports: Array = [];\r\n public incorrectPassword = false;\r\n public timecardHeader: string;\r\n public timecardDocHeader: string = 'Timecard Documentation';\r\n public weeklySummaryHeader: string;\r\n public employeeName = '';\r\n public employeeListID = '';\r\n public enteredPassword = '';\r\n public changeMessage = '';\r\n public roleGroupID = -1;\r\n public userEntryStartDate: string;\r\n public userEntryEndDate: string;\r\n public display = 'Task & Service Item';\r\n public columnID = -1;\r\n public IsReadOnly = false;\r\n public start = '';\r\n @Input() public userWebColors: Array;\r\n public user: IUserInfo;\r\n public signaturePolicyRequired: boolean;\r\n public selectedProcessRole: any;\r\n public dynamicTableHeight = '29vh';\r\n public dynamicSummaryTableHeight = '17vh';\r\n public cbxValue = false;\r\n public isDRSelected = false;\r\n public dr_panelExpanded = false;\r\n public ws_panelExpanded = true;\r\n public tc_panelExpanded = false;\r\n public nextButtonHidden = false;\r\n public prevButtonHidden = false;\r\n public displayNotePopup = false;\r\n public displayPolicyPopup = false;\r\n public currentRow: any;\r\n public currentCell: any;\r\n public currentDay: any;\r\n public changeCommentTask: string;\r\n public changeCommentDate: string;\r\n public previousCellValue;\r\n public drMinEntryDate: string;\r\n public drMaxEntryDate: string;\r\n public numOfDaysInWeek: number;\r\n public PeriodHasSplitDay: boolean;\r\n public previousWeekClicked = false;\r\n public nextWeekClicked = false;\r\n public timePolicyCbxChecked = false;\r\n public userSub$: Observable;\r\n public authSub: Subscription;\r\n public userInfoSubject = new ReplaySubject(1);\r\n public selectedEndDate: Date;\r\n public EmployeeIdSubject = new ReplaySubject(1);\r\n @Output() refreshStatusEE = new EventEmitter();\r\n public ActionsSubject = new ReplaySubject(1);\r\n @Output() nextOrPrevious = new EventEmitter();\r\n @Output() tcSubmit = new EventEmitter>();\r\n @Output() dRSelectedSubject = new ReplaySubject(1);\r\n @Output() supervisorDRSelected = new EventEmitter();\r\n @Output() actionDateSelected = new EventEmitter<{\r\n EndDate: string;\r\n StartDate: string;\r\n Role: number;\r\n MyDRsOnly: boolean;\r\n }>();\r\n @Output() actionDate = new ReplaySubject<{\r\n EndDate: string;\r\n StartDate: string;\r\n Role: number;\r\n }>();\r\n @Output() timeCardUpdate = new EventEmitter>();\r\n @Output() managementUpdate = new EventEmitter();\r\n @Output() updateTasks = new EventEmitter();\r\n @Output() AddDocumentation = new ReplaySubject(1);\r\n @Output() LoadSignaturePolicy = new ReplaySubject(1);\r\n @Output() LoadTimecardSequence = new ReplaySubject(1);\r\n @Output() SaveTimecardSequence = new ReplaySubject(1);\r\n @Output() LoadMgmtLoadTimecardandWeeklySummary = new ReplaySubject(1);\r\n\r\n public confirmClicked: boolean;\r\n public userPassword: string;\r\n public managementRowSelected = false;\r\n public tabAlreadyCreated = false;\r\n public sortedByTask: any[] = [];\r\n public disableRefreshButton = true;\r\n public directReportListID: string;\r\n public selectedDR: fromLookups.IDirectReport;\r\n public drdropdown = false;\r\n public dRtoAdd: Array = [];\r\n public isRefreshing = false;\r\n public showSignaturePolicy: boolean;\r\n leaveInfo: string;\r\n requireTimeSubmit: boolean;\r\n requireSubmitFlag = false;\r\n managementActionEndDate: string;\r\n timeCardSubmitOb: Observable;\r\n todaysDate: Date;\r\n timeweek: any;\r\n timeweek0: any;\r\n timeweek1: any;\r\n timeweek2: any;\r\n timeweek3: any;\r\n timeweek4: any;\r\n timeweek5: any;\r\n timeweek6: any;\r\n timeweek7: any;\r\n accountNumber: string;\r\n mgrComment: string;\r\n dialogVisible = false;\r\n managementActionData: IManagementAction;\r\n IsDateSelected = false;\r\n weeklyHeaderSelected = false;\r\n displayDeleteWarningPopup = false;\r\n directReportHeader = 'Direct Report Time Status for Approval Period';\r\n firstDate: any;\r\n secondDate: any;\r\n fullDateRangeSelected: boolean;\r\n selectedDRRow: any;\r\n showSI: any;\r\n wsShowSI: any;\r\n msgs: any[];\r\n mgmtRowSelection: string;\r\n mgmtCell: any;\r\n selectedCellValue: any;\r\n displayDocumentationExceedingHoursWarningPopup = false;\r\n showNegativeHoursDialog = false;\r\n showManagementActionDialog = false;\r\n showManagementActionErrorDialog = false;\r\n selectedCellDate: string;\r\n selectedCellTask: any;\r\n selectedCellStatus: string;\r\n dblClickDirections: string;\r\n displayDocWarning = false;\r\n managementActionCompleteMsg = '';\r\n showManagementActionCompleteMsg = false;\r\n pswdForSig: string;\r\n showSignaturePolicyError = false;\r\n expectedHours: number;\r\n activeTab: any;\r\n\r\n @Output() LoadDirectReportsWithTimeStatus = new ReplaySubject(1);\r\n IsLoading = true;\r\n detailsLabel: string;\r\n displayReorderTasks = false;\r\n displayDocumentation = false;\r\n\r\n fromApproveRange = false;\r\n fromDisapproveRange = false;\r\n fromUnapproveRange = false;\r\n fromValidateRange = false;\r\n fromDisapproveValidateRange = false;\r\n fromUnvalidateRange = false;\r\n\r\n tabIndex = 0;\r\n\r\n pivot = true;\r\n\r\n private DRSubject = new ReplaySubject>(\r\n 1\r\n );\r\n private _directreportswithtimestatus: Array;\r\n\r\n public TimeCardsSubject = new ReplaySubject>(1);\r\n private _timecarddata: Array;\r\n\r\n timecardAccrualInfo: string;\r\n\r\n mgmtDateRangeStart: any;\r\n mgmtDateRangeEnd: any;\r\n DRName: string;\r\n\r\n emptyWeeklyTabPlaceholder: string = \"No Data Available\";\r\n\r\n signPeriod = false;\r\n signWeek = false;\r\n\r\n @Input() public directReports: Array;\r\n createTimeCardHeader(data, field) {\r\n const el = data[0];\r\n if (el != null) {\r\n if (el.LeaveAccrualInfo != null) {\r\n const noneUpdated = data.every(x => el[field] === x[field]);\r\n if (noneUpdated == true) {\r\n this.timecardAccrualInfo = data[0].LeaveAccrualInfo;\r\n this.timecardHeader =\r\n 'TimeCard' +\r\n '\\xa0\\xa0' +\r\n this.findEmployeeName(el.EmployeeListID) +\r\n '\\xa0\\xa0' +\r\n data[0].LeaveAccrualInfo;\r\n } else {\r\n data.forEach(x => {\r\n if (x[field] !== el[field]) {\r\n this.timecardAccrualInfo = x[field];\r\n this.timecardHeader =\r\n 'TimeCard' +\r\n '\\xa0\\xa0' +\r\n this.findEmployeeName(el.EmployeeListID) +\r\n '\\xa0\\xa0' +\r\n x[field];\r\n }\r\n });\r\n }\r\n } else {\r\n this.timecardHeader =\r\n 'TimeCard' +\r\n '\\xa0\\xa0' +\r\n this.findEmployeeName(el.EmployeeListID);\r\n }\r\n } else {\r\n this.timecardHeader = 'TimeCard';\r\n }\r\n }\r\n\r\n createWeeklySummaryHeader(data) {\r\n if (this.process) {\r\n if (this.process.ProcessID == 85) {\r\n this.weeklySummaryHeader = 'Weekly Summary for Approval Period';\r\n }\r\n if (this.process.ProcessID == 87) {\r\n this.weeklySummaryHeader = 'Weekly Summary for Validate Period';\r\n }\r\n } else {\r\n this.weeklySummaryHeader = 'Weekly Summary for Approval Period';\r\n }\r\n }\r\n\r\n findEmployeeName(id) {\r\n let employeeName;\r\n if (id != null) {\r\n if (this.isTaskManager || this.isSupervisor) {\r\n if (\r\n this.directReportTimeStatusData &&\r\n this.directReportTimeStatusData.length > 0\r\n ) {\r\n employeeName = this.directReportTimeStatusData.find(\r\n x => x.EmployeeListID == id\r\n ).UserName;\r\n } else if (this.user) {\r\n employeeName = this.user.EmployeeName;\r\n } else {\r\n employeeName = id;\r\n }\r\n } else {\r\n if (this.directReports && this.directReports.length > 0) {\r\n employeeName = this.directReports.find(\r\n x => x.EmployeeListID == id\r\n );\r\n if (employeeName) {\r\n employeeName = employeeName.EmployeeName;\r\n } else {\r\n employeeName = '';\r\n }\r\n } else if (this.user) {\r\n employeeName = this.user.EmployeeName;\r\n } else {\r\n employeeName = id;\r\n }\r\n }\r\n }\r\n\r\n return employeeName;\r\n }\r\n\r\n ngOnInit() {\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n\r\n this.selectedProcessRole = this.getProcessRole(\r\n this.process.ProcessID,\r\n this.user\r\n );\r\n this.setProcessRole(this.selectedProcessRole); // this needs to be before i ever reference isSupervisor ect...\r\n\r\n if (this.process) {\r\n switch (this.process.ProcessID) {\r\n case 90: // super user\r\n sessionStorage.removeItem('mgmtEndDate');\r\n this.dblClickDirections =\r\n 'Double-click a time entry to document.';\r\n this.dynamicSummaryTableHeight = '22vh';\r\n break;\r\n case 64: // entry\r\n sessionStorage.removeItem('mgmtEndDate');\r\n this.dblClickDirections =\r\n 'Double-click a time entry to document.';\r\n this.dynamicSummaryTableHeight = '22vh';\r\n break;\r\n case 85: // approve\r\n this.dblClickDirections =\r\n 'Double-click hour(s) to perform a management action.';\r\n this.fromApproveRange = true;\r\n this.dynamicSummaryTableHeight = '17vh';\r\n break;\r\n case 87: // validate\r\n this.dblClickDirections =\r\n 'Double-click hour(s) to perform a management action.';\r\n this.fromValidateRange = true;\r\n this.dynamicSummaryTableHeight = '17vh';\r\n break;\r\n default:\r\n this.dblClickDirections =\r\n 'Double-click a time entry to document.';\r\n this.dynamicSummaryTableHeight = '22vh';\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.directReports) {\r\n const dr = changes.directReports.currentValue;\r\n if (dr && dr.length > 0 && this.user) {\r\n this.activeDirectReports = dr.filter(x => x.IsActive === true);\r\n this.activeDirectReports = this.activeDirectReports.filter(\r\n x => x.IsValidUser === true && x.EmployeeListID != this.user.EmployeeListID\r\n );\r\n // var currentSignedInUser = this.activeDirectReports.find(x => x.EmployeeListID == this.user.EmployeeListID);\r\n this.approveFormGroup.controls['dateRange'].patchValue([\r\n // new Date(this.activeDirectReports[0].MinWorkDate),\r\n // new Date(this.activeDirectReports[0].MaxWorkDate)\r\n new Date(this.user.UserEntryStartDate),\r\n new Date(this.user.UserEntryEndDate)\r\n ]);\r\n this.validateFormGroup.controls['dateRange'].patchValue([\r\n new Date(this.user.UserEntryStartDate),\r\n new Date(this.user.UserEntryEndDate)\r\n ]);\r\n this.disapproveFormGroup.controls['dateRange'].patchValue([\r\n new Date(this.user.UserEntryStartDate),\r\n new Date(this.user.UserEntryEndDate)\r\n ]);\r\n this.disapproveValidateFormGroup.controls[\r\n 'dateRange'\r\n ].patchValue([\r\n new Date(this.user.UserEntryStartDate),\r\n new Date(this.user.UserEntryEndDate)\r\n ]);\r\n this.unapproveFormGroup.controls['dateRange'].patchValue([\r\n new Date(this.user.UserEntryStartDate),\r\n new Date(this.user.UserEntryEndDate)\r\n ]);\r\n this.unvalidateFormGroup.controls['dateRange'].patchValue([\r\n new Date(this.user.UserEntryStartDate),\r\n new Date(this.user.UserEntryEndDate)\r\n ]);\r\n this.mgmtDateRangeStart = moment(\r\n this.user.UserEntryStartDate\r\n ).format('MM/DD/YYYY');\r\n this.mgmtDateRangeEnd = moment(\r\n this.user.UserEntryEndDate\r\n ).format('MM/DD/YYYY');\r\n this.fullDateRangeSelected = true;\r\n this.dr_panelExpanded = true;\r\n }\r\n }\r\n }\r\n onRowReorderHandler($event: { dragIndex: number; dropIndex: number }) {\r\n // TODO: save everything after the drop index\r\n const start = Math.min($event.dragIndex, $event.dropIndex);\r\n const stop = Math.max($event.dragIndex, $event.dropIndex);\r\n this.log.verbose({\r\n type: 'TimecardPresenterComponent:onRowReorderHandler',\r\n $event,\r\n start,\r\n stop,\r\n items: this.timecardSequence\r\n });\r\n this.timecardSequence.splice($event.dropIndex, 0);\r\n for (let i = start; i <= this.timecardSequence.length - 1; i++) {\r\n this.timecardSequence[i] = {\r\n ...this.timecardSequence[i],\r\n Tasksortorder: i\r\n };\r\n }\r\n this.timecardSequence.slice(start, stop);\r\n this.timecardSequence.forEach(task => {\r\n if (+task.Tasksortorder <= stop) {\r\n this.SaveTimecardSequence.next(task);\r\n }\r\n });\r\n }\r\n reOrderTasksHidden() {\r\n const firstDate = this.sortedByTask[0].Day0.WorkDate.toString();\r\n this.pivot = true;\r\n this.dRSelectedSubject.next(this.sortedByTask[0].Day0);\r\n }\r\n documentationHidden() {\r\n this.store.dispatch(\r\n fromTimecard.getTimeCards({\r\n EmployeeListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n TimeCardDate: moment(this.sortedByTask[0].Day0.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n MyDirection: ''\r\n })\r\n );\r\n }\r\n onSave(doc: TimeCardDocumentation) {\r\n this.log.verbose({\r\n type: 'TimecardPresenterComponent:onSave',\r\n doc\r\n });\r\n if (doc) {\r\n const timecardCell = this.timecardData.find(\r\n x => x.EmpTimeID == doc.EmpTimeID\r\n );\r\n if (timecardCell) {\r\n if (+timecardCell.EmployeeHours >= (+doc?.Totalhours ?? 0)) {\r\n this.displayDocWarning = false;\r\n } else {\r\n this.displayDocWarning = true;\r\n }\r\n }\r\n }\r\n }\r\n ngAfterViewInit() {\r\n this.setupControlSubscriptions();\r\n setTimeout(this.afterViewInitAsync.bind(this), 0);\r\n }\r\n afterViewInitAsync() {\r\n if (this.isTaskManager || this.isSupervisor || this.isSuperUser) {\r\n this.timecardHeader = `TimeCard`;\r\n this.weeklySummaryHeader = `Weekly View`;\r\n this.createTabulatorForTimeCard(this, [], ['']);\r\n this.createTabulatorForWeeklySummary(this, [], ['']);\r\n if (this.isSupervisor == true || this.isTaskManager == true) {\r\n this.tc_panelExpanded = true;\r\n } else {\r\n this.tc_panelExpanded = false;\r\n }\r\n\r\n this.dr_panelExpanded = true;\r\n } else {\r\n if (this.accountNumber !== '') {\r\n this.weeklySummaryHeader =\r\n 'Weekly View' +\r\n '\\xa0\\xa0' +\r\n this.employeeName +\r\n '\\xa0\\xa0' +\r\n this.userEntryStartDate +\r\n '\\xa0' +\r\n '-' +\r\n '\\xa0' +\r\n this.userEntryEndDate;\r\n } else {\r\n this.weeklySummaryHeader =\r\n 'Weekly View' +\r\n '\\xa0\\xa0' +\r\n this.employeeName +\r\n '\\xa0\\xa0' +\r\n this.userEntryStartDate +\r\n '\\xa0' +\r\n '-' +\r\n '\\xa0' +\r\n this.userEntryEndDate;\r\n }\r\n\r\n this.tc_panelExpanded = true;\r\n //this.createTabulatorForWeeklySummary(this, [], ['']);\r\n }\r\n if (this.isUser === false && this.isSuperUser === false) {\r\n this.tabActions.activeIndex = 0;\r\n this.tabChange(this.tabActions);\r\n this.log.debug({\r\n type: 'TimeCardPresenterComponent:ngAfterViewInit',\r\n tabView: this.tabActions\r\n });\r\n }\r\n\r\n if (this.isUser === false || this.isSuperUser === false) {\r\n this.DRSubject.pipe(takeWhile(() => this.active)).subscribe(x => {\r\n\r\n if (this.mgmtActionInProgress == true) {\r\n\r\n this.showManagementActionCompleteMsg = true;\r\n if (this.managementActionResp.StatusCode == 1) {\r\n setTimeout(() => {\r\n this.showManagementActionCompleteMsg = false;\r\n }, 5000);\r\n this.mgmtActionInProgress = false;\r\n } else {\r\n this.mgmtActionInProgress = false;\r\n }\r\n \r\n }\r\n // this.createTabulatorForManagementUsers(this, x, ['']);\r\n\r\n // if (this.isDRSelected === false && x.length > 0) {\r\n // this.selectInitialDR();\r\n // }\r\n });\r\n }\r\n }\r\n setupControlSubscriptions() {\r\n this.approveFormGroup.controls['dateRange'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (this.fromApproveRange == true) {\r\n if (value) {\r\n if (value[0] && value[1]) {\r\n this.actionDateChosen(value[0], value[1]);\r\n this.pivot = true;\r\n this.IsDateSelected = true;\r\n if (value[1] != null) {\r\n this.mgmtDateRangeStart = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.mgmtDateRangeEnd = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n sessionStorage.setItem('mgmtEndDate', value[1]);\r\n\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Approval Period';\r\n this.managementActionEndDate = moment(\r\n value[0]\r\n ).format('MM/DD/YYYY');\r\n this.managementActionEndDate = moment(\r\n value[1]\r\n ).format('MM/DD/YYYY');\r\n this.IsDateSelected = true;\r\n if (value[1] != null) {\r\n this.mgmtDateRangeStart = moment(\r\n value[0]\r\n ).format('MM/DD/YYYY');\r\n this.mgmtDateRangeEnd = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.directReportHeader = `Direct Reports - status totals reflect ${this.mgmtDateRangeStart} - ${this.mgmtDateRangeEnd}`;\r\n this.weeklySummaryHeader =\r\n 'Weekly View' +\r\n '\\xa0\\xa0' +\r\n this.DRName +\r\n '\\xa0\\xa0' +\r\n moment(value[0]).format('MM/DD/YYYY') +\r\n '\\xa0\\xa0' +\r\n '-' +\r\n '\\xa0\\xa0' +\r\n moment(value[1]).format('MM/DD/YYYY');\r\n this.managementActionEndDate = moment(\r\n value[0]\r\n ).format('MM/DD/YYYY');\r\n this.managementActionEndDate = moment(\r\n value[1]\r\n ).format('MM/DD/YYYY');\r\n\r\n this.disapproveFormGroup.controls[\r\n 'dateRange'\r\n ].setValue([value[0], value[1]]);\r\n this.unapproveFormGroup.controls[\r\n 'dateRange'\r\n ].setValue([value[0], value[1]]);\r\n this.fromApproveRange = true;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n if (this.directReportListID) {\r\n this.LoadMgmtLoadTimecardandWeeklySummary.next(\r\n {\r\n EmployeeListID:\r\n this.directReportListID,\r\n StartDate: value[0],\r\n EndDate: value[1]\r\n }\r\n );\r\n }\r\n } else {\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.disapproveFormGroup.controls['dateRange'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (this.fromDisapproveRange == true) {\r\n if (value) {\r\n this.actionDateChosen(value[0], value[1]);\r\n this.pivot = true;\r\n this.IsDateSelected = true;\r\n if (value[1] != null) {\r\n this.mgmtDateRangeStart = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.mgmtDateRangeEnd = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n sessionStorage.setItem('mgmtEndDate', value[1]);\r\n\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Approval Period';\r\n this.directReportHeader = `Direct Reports - status totals reflect ${this.mgmtDateRangeStart} - ${this.mgmtDateRangeEnd}`;\r\n this.managementActionEndDate = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.managementActionEndDate = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n\r\n this.approveFormGroup.controls['dateRange'].patchValue([\r\n value[0],\r\n value[1]\r\n ]);\r\n this.unapproveFormGroup.controls[\r\n 'dateRange'\r\n ].patchValue([value[0], value[1]]);\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = true;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n if (this.directReportListID) {\r\n this.LoadMgmtLoadTimecardandWeeklySummary.next({\r\n EmployeeListID: this.directReportListID,\r\n StartDate: value[0],\r\n EndDate: value[1]\r\n });\r\n }\r\n } else {\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.unapproveFormGroup.controls['dateRange'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (this.fromUnapproveRange == true) {\r\n if (value) {\r\n this.IsDateSelected = false;\r\n this.actionDateChosen(value[0], value[1]);\r\n this.pivot = true;\r\n this.IsDateSelected = true;\r\n if (value[1] != null) {\r\n this.mgmtDateRangeStart = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.mgmtDateRangeEnd = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n sessionStorage.setItem('mgmtEndDate', value[1]);\r\n\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Approval Period';\r\n this.directReportHeader = `Direct Reports - status totals reflect ${this.mgmtDateRangeStart} - ${this.mgmtDateRangeEnd}`;\r\n this.managementActionEndDate = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.managementActionEndDate = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.approveFormGroup.controls['dateRange'].patchValue([\r\n value[0],\r\n value[1]\r\n ]);\r\n this.disapproveFormGroup.controls[\r\n 'dateRange'\r\n ].patchValue([value[0], value[1]]);\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = true;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n if (this.directReportListID) {\r\n this.LoadMgmtLoadTimecardandWeeklySummary.next({\r\n EmployeeListID: this.directReportListID,\r\n StartDate: value[0],\r\n EndDate: value[1]\r\n });\r\n }\r\n } else {\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.validateFormGroup.controls['dateRange'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (this.fromValidateRange == true) {\r\n if (value) {\r\n this.actionDateChosen(value[0], value[1]);\r\n this.pivot = true;\r\n this.IsDateSelected = true;\r\n if (value[1] != null) {\r\n this.mgmtDateRangeStart = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.mgmtDateRangeEnd = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n sessionStorage.setItem('mgmtEndDate', value[1]);\r\n\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Validate Period';\r\n this.directReportHeader = `Direct Reports - status totals reflect ${this.mgmtDateRangeStart} - ${this.mgmtDateRangeEnd}`;\r\n this.managementActionEndDate = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.managementActionEndDate = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n\r\n this.disapproveValidateFormGroup.controls[\r\n 'dateRange'\r\n ].patchValue([value[0], value[1]]);\r\n this.unvalidateFormGroup.controls[\r\n 'dateRange'\r\n ].patchValue([value[0], value[1]]);\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = true;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n if (this.directReportListID) {\r\n this.LoadMgmtLoadTimecardandWeeklySummary.next({\r\n EmployeeListID: this.directReportListID,\r\n StartDate: value[0],\r\n EndDate: value[1]\r\n });\r\n }\r\n } else {\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.disapproveValidateFormGroup.controls['dateRange'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (this.fromDisapproveValidateRange == true) {\r\n if (value) {\r\n this.actionDateChosen(value[0], value[1]);\r\n this.pivot = true;\r\n this.IsDateSelected = true;\r\n if (value[1] != null) {\r\n this.mgmtDateRangeStart = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.mgmtDateRangeEnd = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n sessionStorage.setItem('mgmtEndDate', value[1]);\r\n\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Validate Period';\r\n this.directReportHeader = `Direct Reports - status totals reflect ${this.mgmtDateRangeStart} - ${this.mgmtDateRangeEnd}`;\r\n this.managementActionEndDate = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.managementActionEndDate = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n\r\n this.validateFormGroup.controls['dateRange'].patchValue(\r\n [value[0], value[1]]\r\n );\r\n this.unvalidateFormGroup.controls[\r\n 'dateRange'\r\n ].patchValue([value[0], value[1]]);\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = true;\r\n this.fromUnvalidateRange = false;\r\n if (this.directReportListID) {\r\n this.LoadMgmtLoadTimecardandWeeklySummary.next({\r\n EmployeeListID: this.directReportListID,\r\n StartDate: value[0],\r\n EndDate: value[1]\r\n });\r\n }\r\n } else {\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.unvalidateFormGroup.controls['dateRange'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (this.fromUnvalidateRange == true) {\r\n if (value) {\r\n this.actionDateChosen(value[0], value[1]);\r\n this.pivot = true;\r\n this.IsDateSelected = true;\r\n if (value[1] != null) {\r\n this.mgmtDateRangeStart = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.mgmtDateRangeEnd = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n sessionStorage.setItem('mgmtEndDate', value[1]);\r\n\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Validate Period';\r\n this.directReportHeader = `Direct Reports - status totals reflect ${this.mgmtDateRangeStart} - ${this.mgmtDateRangeEnd}`;\r\n this.managementActionEndDate = moment(value[0]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n this.managementActionEndDate = moment(value[1]).format(\r\n 'MM/DD/YYYY'\r\n );\r\n\r\n this.validateFormGroup.controls['dateRange'].patchValue(\r\n [value[0], value[1]]\r\n );\r\n this.disapproveValidateFormGroup.controls[\r\n 'dateRange'\r\n ].patchValue([value[0], value[1]]);\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = true;\r\n if (this.directReportListID) {\r\n this.LoadMgmtLoadTimecardandWeeklySummary.next({\r\n EmployeeListID: this.directReportListID,\r\n StartDate: value[0],\r\n EndDate: value[1]\r\n });\r\n }\r\n } else {\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.filterFormGroup.controls['tasks'].valueChanges\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.filterData(value, 'task', 'TaskLongName');\r\n });\r\n\r\n this.filterFormGroup.controls['directReports'].valueChanges\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(directReports => {\r\n if (directReports != null) {\r\n this.pivot = true;\r\n this.dRSelectedSubject.next(directReports);\r\n setTimeout(() => {\r\n this.employeeName = directReports.EmployeeName;\r\n this.detailsLabel = `HR Details for ${this.employeeName}`;\r\n this.timecardDocHeader = `Timecard Documentation for ${this.employeeName}`;\r\n this.drdropdown = true;\r\n this.isDRSelected = true;\r\n this.tc_panelExpanded = true;\r\n\r\n this.selectedDR = this.directReports.find(\r\n x =>\r\n x.EmployeeListID ===\r\n directReports.EmployeeListID.toString()\r\n );\r\n if (directReports.AccountNumber != null) {\r\n this.weeklySummaryHeader =\r\n 'Weekly View' +\r\n '\\xa0\\xa0' +\r\n directReports.EmployeeName +\r\n '\\xa0\\xa0' +\r\n moment(directReports.MinWorkDate).format(\r\n 'MM/DD/YYYY'\r\n ) +\r\n '\\xa0' +\r\n '-' +\r\n '\\xa0' +\r\n moment(directReports.MaxWorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else {\r\n this.weeklySummaryHeader =\r\n 'Weekly View' +\r\n '\\xa0\\xa0' +\r\n directReports.EmployeeName +\r\n '\\xa0\\xa0' +\r\n moment(directReports.MinWorkDate).format(\r\n 'MM/DD/YYYY'\r\n ) +\r\n '\\xa0' +\r\n '-' +\r\n '\\xa0' +\r\n moment(directReports.MaxWorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n }\r\n this.filterFormGroup.controls['tasks'].reset();\r\n this.updateTasks.emit(directReports);\r\n this.directReportListID = directReports.EmployeeListID;\r\n }, 0);\r\n }\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.store.dispatch(fromTimecard.clearTimeCards());\r\n this.store.dispatch(fromWeeklySummary.clearWeeklySummarys());\r\n this.store.dispatch(fromDRWTS.clearDirectReportsWithTimeStatuss());\r\n this.active = false;\r\n this.drdropdown = false;\r\n }\r\n\r\n getTimecardSequence() {\r\n this.displayReorderTasks = true;\r\n this.LoadTimecardSequence.next();\r\n }\r\n\r\n showMyDRsChecked(event) {\r\n this.showMyDRs = event.checked;\r\n this.LoadDirectReportsWithTimeStatus.next(\r\n {\r\n MyDRsOnly: event.checked,\r\n startDate: this.mgmtDateRangeStart,\r\n endDate: this.mgmtDateRangeEnd\r\n }\r\n );\r\n }\r\n\r\n selectInitialDR() {\r\n if (this.isTaskManager || this.isSupervisor) {\r\n this.pivot = true;\r\n this.isDRSelected = true;\r\n let firstrow;\r\n const rows = this.tabManagement.getRows();\r\n rows.forEach(row => {\r\n if (\r\n row._row.data.EmployeeListID ===\r\n this.directReportTimeStatusData[0].EmployeeListID\r\n ) {\r\n firstrow = row;\r\n }\r\n });\r\n this.selectedDRRow = firstrow;\r\n this.selectedDRRow.getElement().classList.add('highlight');\r\n const data = firstrow.getData();\r\n this.detailsLabel = `HR Details for ${data.UserName}`;\r\n this.DRName = data.UserName;\r\n this.dRSelectedSubject.next(data);\r\n this.directReportListID = data.EmployeeListID;\r\n this.tabTimeCard.clearData();\r\n if (this.managementActionEndDate == null) {\r\n this.managementActionEndDate = moment(\r\n new Date(data.ImpactedEnd)\r\n ).format('MM/DD/YYYY');\r\n }\r\n const dataToEmit = {\r\n EmployeeListID: data.EmployeeListID,\r\n TimeCardDate: moment(this.managementActionEndDate).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n Direction: null\r\n };\r\n if (this.process) {\r\n if (this.process.ProcessID == 85) {\r\n this.weeklySummaryHeader = 'Weekly Summary for Approval Period';\r\n }\r\n if (this.process.ProcessID == 87) {\r\n this.weeklySummaryHeader = 'Weekly Summary for Validate Period';\r\n }\r\n } else {\r\n this.weeklySummaryHeader = 'Weekly Summary for Approval Period';\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n showDeleteHoursPopup() {\r\n this.displayDeleteWarningPopup = true;\r\n }\r\n\r\n confirmBtnClickedForDelete() {\r\n this.displayDeleteWarningPopup = false;\r\n const row = this.currentCell.getRow();\r\n const status = this.currentCell.getValue();\r\n const rowdata = row.getData();\r\n const oldData = this.timecardData.find(\r\n x =>\r\n x.EmpAuthID === rowdata.empAuthID &&\r\n x.WorkDate === rowdata[this.currentDay].WorkDate\r\n );\r\n this.currentRow.update({\r\n [this.currentDay]: {\r\n InterfaceType: rowdata[this.currentDay].InterfaceType,\r\n TimerCreate: rowdata[this.currentDay].TimerCreate,\r\n ChangeComment: rowdata[this.currentDay].ChangeComment,\r\n CreateDate: rowdata[this.currentDay].CreateDate,\r\n DateLastModified: rowdata[this.currentDay].DateLastModified,\r\n CurrentUserListID: rowdata[this.currentDay].CurrentUserListID,\r\n DailyTotal: rowdata[this.currentDay].DailyTotal,\r\n DateColor: rowdata[this.currentDay].DateColor,\r\n DatePurpose: rowdata[this.currentDay].DatePurpose,\r\n Deletedoc: rowdata[this.currentDay].Deletedoc,\r\n EmpAuthEndDate: rowdata[this.currentDay].EmpAuthEndDate,\r\n EmpAuthID: rowdata[this.currentDay].EmpAuthID,\r\n EmpAuthStartDate: rowdata[this.currentDay].EmpAuthStartDate,\r\n EmpAuthURL: rowdata[this.currentDay].EmpAuthURL,\r\n EmpTimeID: rowdata[this.currentDay].EmpTimeID,\r\n EmployeeHours: oldData.EmployeeHours,\r\n EmployeeListID: rowdata[this.currentDay].EmployeeListID,\r\n IsReadOnly: rowdata[this.currentDay].IsReadOnly,\r\n IsTimeClockTime: rowdata[this.currentDay].IsTimeClockTime,\r\n LeaveAccrualInfo: rowdata[this.currentDay].LeaveAccrualInfo,\r\n LeavePayout: rowdata[this.currentDay].LeavePayout,\r\n LeavePayoutWeek: rowdata[this.currentDay].LeavePayoutWeek,\r\n NbrOfRows: rowdata[this.currentDay].NbrOfRows,\r\n OutOfDateRange: rowdata[this.currentDay].OutOfDateRange,\r\n PayrollItem: rowdata[this.currentDay].PayrollItem,\r\n PeriodHasSplitDay: rowdata[this.currentDay].PeriodHasSplitDay,\r\n ReadOnlyReason: rowdata[this.currentDay].ReadOnlyReason,\r\n Row_Version: rowdata[this.currentDay].Row_Version,\r\n ServiceItem: rowdata[this.currentDay].ServiceItem,\r\n SplitWorkDate: rowdata[this.currentDay].SplitWorkDate,\r\n Status: rowdata[this.currentDay].Status,\r\n TaskDisplay: rowdata[this.currentDay].TaskDisplay,\r\n TaskLongName: rowdata[this.currentDay].TaskLongName,\r\n TimeStatus: rowdata[this.currentDay].TimeStatus,\r\n WeeklyTotal: rowdata[this.currentDay].WeeklyTotal,\r\n WorkDate: rowdata[this.currentDay].WorkDate,\r\n WorkDateHdr: rowdata[this.currentDay].WorkDateHdr,\r\n WorkDocumentedCount:\r\n rowdata[this.currentDay].WorkDocumentedCount\r\n }\r\n });\r\n }\r\n\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n showDisplayNotePopup() {\r\n this.displayNotePopup = true;\r\n }\r\n\r\n discardBtnClicked() {\r\n this.displayNotePopup = false;\r\n const row = this.currentCell.getRow();\r\n const status = this.currentCell.getValue();\r\n const rowdata = row.getData();\r\n this.revertRowToPreviousValue(this.currentCell);\r\n }\r\n\r\n confirmBtnClicked() {\r\n if (this.changeMessage !== '') {\r\n this.confirmMessage().then(() => {\r\n this.confirmTimeChangeWithMessage();\r\n });\r\n } else {\r\n this.msgs = [];\r\n this.msgs.push({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: 'Reason is required.'\r\n });\r\n }\r\n }\r\n\r\n confirmMessage() {\r\n return new Promise((resolve, reject) => {\r\n this.log.verbose(`message: ${this.changeMessage}`);\r\n this.displayNotePopup = false;\r\n resolve();\r\n });\r\n }\r\n\r\n confirmTimeChangeWithMessage() {\r\n const value = this.currentCell.getValue();\r\n if (this.changeMessage !== '') {\r\n const rowdata = this.currentRow.getData();\r\n rowdata[this.currentDay].ChangeComment = this.changeMessage;\r\n rowdata[this.currentDay].EmployeeHours =\r\n this.currentCell.getValue();\r\n this.signaturePolicyCheck(this.currentCell);\r\n }\r\n this.changeMessage = '';\r\n }\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n showPolicyPopup() {\r\n this.displayPolicyPopup = true;\r\n }\r\n\r\n cancelBtnClicked() {\r\n this.displayPolicyPopup = false;\r\n this.showSignaturePolicyError = false;\r\n this.pswdForSig = null;\r\n this.revertRowToPreviousValue(this.currentCell);\r\n }\r\n\r\n confirmPolicyClicked() { //4921\r\n if (this.pswdForSig != null) {\r\n this.showSignaturePolicyError = false;\r\n this.timePolicyCbxChecked = false;\r\n this.LoadSignaturePolicy.next(this.pswdForSig);\r\n setTimeout(() => {\r\n if (this.signaturePolicy != null) {\r\n if (this.signaturePolicy[0][0].Validated == true) {\r\n this.showSignaturePolicy = false;\r\n this.displayPolicyPopup = false;\r\n\r\n if (this.signaturePolicyRequired === true && this.requireTimeSubmit == true) {\r\n if (this.signWeek == true) {\r\n this.timeCardSubmit([\r\n {\r\n EmployeeListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n TimeCardStatus: '1',\r\n StartDate: this.sortedByTask[0].Day0.WorkDate,\r\n EndDate: this.findLastDayInWeek()\r\n }\r\n ]);\r\n this.signWeek = false;\r\n }\r\n if (this.signPeriod == true) {\r\n this.timeCardSubmit([\r\n {\r\n EmployeeListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n TimeCardStatus: '1',\r\n StartDate: '',\r\n EndDate: ''\r\n }\r\n ]);\r\n this.signPeriod = false;\r\n }\r\n\r\n } else {\r\n this.timeCardUpdate.emit([\r\n this.getTimecardDay(this.currentCell)\r\n ]);\r\n }\r\n\r\n this.userStore.dispatch(\r\n new SetSignaturePolicy({\r\n ...this.user,\r\n ShowSignaturePolicy: false\r\n })\r\n );\r\n this.pswdForSig = null;\r\n } else {\r\n this.showSignaturePolicyError = true;\r\n }\r\n }\r\n }, 1500);\r\n } else {\r\n this.showSignaturePolicyError = true;\r\n }\r\n }\r\n\r\n passwordInputFocused() {\r\n this.showSignaturePolicyError = false;\r\n }\r\n\r\n actionDateChosen(start, end) {\r\n if (this.tabManagement) {\r\n this.tabManagement.clearData();\r\n }\r\n this.dr_panelExpanded = true;\r\n let role;\r\n if (this.isSupervisor) {\r\n role = 12024;\r\n } else if (this.isTaskManager) {\r\n role = 12025;\r\n } else {\r\n role = -1;\r\n }\r\n if (end == null) {\r\n end = moment(new Date()).format('MM/DD/YYYY');\r\n }\r\n // if (start === null) {\r\n // this.actionDateSelected.emit({\r\n // EndDate: moment(end).format('MM/DD/YYYY'),\r\n // StartDate: null,\r\n // Role: role\r\n // });\r\n // } else {\r\n // this.actionDateSelected.emit({\r\n // EndDate: moment(end).format('MM/DD/YYYY'),\r\n // StartDate: moment(start).format('MM/DD/YYYY'),\r\n // Role: role\r\n // });\r\n // }\r\n this.actionDateSelected.emit({\r\n EndDate: moment(end).format('MM/DD/YYYY'),\r\n StartDate: moment(start).format('MM/DD/YYYY'),\r\n Role: role,\r\n MyDRsOnly: this.showMyDRs\r\n });\r\n }\r\n\r\n filterData(filters: any[], fieldName: string, valueName: string) {\r\n this.tabTimeCard.clearFilter(true);\r\n\r\n const filtersToApply: Array<\r\n Array<{\r\n field: string;\r\n type: string;\r\n value: any;\r\n }>\r\n > = [[]];\r\n\r\n if (filters && filters.length > 0) {\r\n filters.forEach(v => {\r\n filtersToApply[0].push({\r\n field: fieldName,\r\n type: '=',\r\n value: v[valueName]\r\n });\r\n });\r\n }\r\n\r\n this.tabTimeCard.setFilter(filtersToApply);\r\n }\r\n\r\n getProcessRole(processID: number, user: IUserInfo): UserRoleEnum {\r\n let roleId;\r\n switch (processID) {\r\n case 87:\r\n roleId = UserRoleEnum.TaskManager;\r\n break;\r\n case 85:\r\n roleId = UserRoleEnum.Supervisor;\r\n break;\r\n case 90:\r\n roleId = 'superUser';\r\n break;\r\n default:\r\n break;\r\n }\r\n return roleId;\r\n }\r\n\r\n setProcessRole(roleId) {\r\n if (roleId === 12024) {\r\n this.isSuperUser = false;\r\n this.isSupervisor = true;\r\n this.isTaskManager = false;\r\n this.isUser = false;\r\n } else if (roleId === 12025) {\r\n this.isSuperUser = false;\r\n this.isSupervisor = false;\r\n this.isTaskManager = true;\r\n this.isUser = false;\r\n } else if (roleId === 'superUser') {\r\n this.isSuperUser = true;\r\n this.isSupervisor = false;\r\n this.isTaskManager = false;\r\n this.isUser = false;\r\n } else {\r\n this.isSuperUser = false;\r\n this.isSupervisor = false;\r\n this.isTaskManager = false;\r\n this.isUser = true;\r\n }\r\n }\r\n\r\n transformDate(date) {\r\n return new DatePipe('en-US').transform(date, 'MM/dd/yyyy');\r\n }\r\n\r\n onActiveIndexChanged($event) {\r\n this.tabIndex = $event;\r\n if (this.isSupervisor) {\r\n if (this.tabIndex == 0) {\r\n this.fromApproveRange = true;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n } else if (this.tabIndex == 1) {\r\n this.fromDisapproveRange = true;\r\n this.fromApproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n } else if (this.tabIndex == 2) {\r\n this.fromUnapproveRange = true;\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n }\r\n }\r\n if (this.isTaskManager) {\r\n if (this.tabIndex == 0) {\r\n this.fromValidateRange = true;\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n } else if (this.tabIndex == 1) {\r\n this.fromDisapproveValidateRange = true;\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromUnvalidateRange = false;\r\n } else if (this.tabIndex == 2) {\r\n this.fromUnvalidateRange = true;\r\n this.fromApproveRange = false;\r\n this.fromDisapproveRange = false;\r\n this.fromUnapproveRange = false;\r\n this.fromValidateRange = false;\r\n this.fromDisapproveValidateRange = false;\r\n }\r\n }\r\n }\r\n\r\n tabChange(tabActions: TabView) {\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:tabChange',\r\n tab: tabActions\r\n });\r\n if (\r\n this.fullDateRangeSelected === true &&\r\n this.selectedDirectReports.length > 0\r\n ) {\r\n this.IsDisabled = false;\r\n } else {\r\n this.IsDisabled = true;\r\n }\r\n }\r\n\r\n getLatestDate(arr) {\r\n let maxDate = arr[0],\r\n maxDateObj = new Date(arr[0]);\r\n arr.forEach((d, i) => {\r\n if (new Date(d) > maxDateObj) {\r\n maxDate = d;\r\n maxDateObj = new Date(d);\r\n }\r\n });\r\n return maxDate;\r\n }\r\n\r\n calculateWeeklyTotals(cell) {\r\n let weeklyTotal;\r\n const row = cell.getRow();\r\n const rowdata = row.getData();\r\n if (\r\n rowdata.Day0.EmployeeHours == null ||\r\n rowdata.Day1.EmployeeHours == null ||\r\n rowdata.Day2.EmployeeHours == null ||\r\n rowdata.Day3.EmployeeHours == null ||\r\n rowdata.Day4.EmployeeHours == null ||\r\n rowdata.Day5.EmployeeHours == null ||\r\n rowdata.Day6.EmployeeHours == null\r\n ) {\r\n }\r\n weeklyTotal =\r\n +rowdata.Day0.EmployeeHours +\r\n +rowdata.Day1.EmployeeHours +\r\n +rowdata.Day2.EmployeeHours +\r\n +rowdata.Day3.EmployeeHours +\r\n +rowdata.Day4.EmployeeHours +\r\n +rowdata.Day5.EmployeeHours +\r\n +rowdata.Day6.EmployeeHours;\r\n return weeklyTotal;\r\n }\r\n\r\n findLastDayInWeek() {\r\n let lastDayInWeek;\r\n if (\r\n this.hasProp(this.sortedByTask[0], 'Day7') &&\r\n this.hasProp(this.sortedByTask[0].Day7, 'WorkDate')\r\n ) {\r\n lastDayInWeek = this.sortedByTask[0].Day7.WorkDate;\r\n } else if (\r\n this.hasProp(this.sortedByTask[0], 'Day6') &&\r\n this.hasProp(this.sortedByTask[0].Day6, 'WorkDate')\r\n ) {\r\n lastDayInWeek = this.sortedByTask[0].Day6.WorkDate;\r\n } else if (\r\n this.hasProp(this.sortedByTask[0], 'Day5') &&\r\n this.hasProp(this.sortedByTask[0].Day5, 'WorkDate')\r\n ) {\r\n lastDayInWeek = this.sortedByTask[0].Day5.WorkDate;\r\n } else if (\r\n this.hasProp(this.sortedByTask[0], 'Day4') &&\r\n this.hasProp(this.sortedByTask[0].Day4, 'WorkDate')\r\n ) {\r\n lastDayInWeek = this.sortedByTask[0].Day4.WorkDate;\r\n } else if (\r\n this.hasProp(this.sortedByTask[0], 'Day3') &&\r\n this.hasProp(this.sortedByTask[0].Day3, 'WorkDate')\r\n ) {\r\n lastDayInWeek = this.sortedByTask[0].Day3.WorkDate;\r\n } else if (\r\n this.hasProp(this.sortedByTask[0], 'Day2') &&\r\n this.hasProp(this.sortedByTask[0].Day2, 'WorkDate')\r\n ) {\r\n lastDayInWeek = this.sortedByTask[0].Day2.WorkDate;\r\n } else if (\r\n this.hasProp(this.sortedByTask[0], 'Day1') &&\r\n this.hasProp(this.sortedByTask[0].Day1, 'WorkDate')\r\n ) {\r\n lastDayInWeek = this.sortedByTask[0].Day1.WorkDate;\r\n } else {\r\n lastDayInWeek = this.sortedByTask[0].Day0.WorkDate;\r\n }\r\n\r\n return lastDayInWeek;\r\n }\r\n\r\n requireTimeSubmitPeriodClicked() { //4921\r\n this.pivot = true;\r\n this.signPeriod = true;\r\n if (this.signaturePolicyRequired === true && this.requireTimeSubmit == true) {\r\n this.showPolicyPopup();\r\n } else {\r\n this.timeCardSubmit([\r\n {\r\n EmployeeListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n TimeCardStatus: '1',\r\n StartDate: '',\r\n EndDate: ''\r\n }\r\n ]);\r\n }\r\n\r\n\r\n // this.store.dispatch(\r\n // fromTimecard.getTimeCards({\r\n // EmployeeListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n // TimeCardDate: moment(new Date()).format('MM/DD/YYYY'),\r\n // MyDirection: null\r\n // })\r\n // );\r\n this.requireSubmitFlag = true;\r\n }\r\n\r\n requireTimeSubmitWeekClicked() { //4921\r\n this.pivot = true;\r\n this.signWeek = true;\r\n if (this.signaturePolicyRequired === true && this.requireTimeSubmit == true) {\r\n this.showPolicyPopup();\r\n } else {\r\n this.timeCardSubmit([\r\n {\r\n EmployeeListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n TimeCardStatus: '1',\r\n StartDate: this.sortedByTask[0].Day0.WorkDate,\r\n EndDate: this.findLastDayInWeek()\r\n }\r\n ]);\r\n }\r\n\r\n\r\n // this.store.dispatch(\r\n // fromTimecard.getTimeCards({\r\n // EmployeeListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n // TimeCardDate: moment(this.sortedByTask[0].Day0.WorkDate).format(\r\n // 'MM/DD/YYYY'\r\n // ),\r\n // MyDirection: null\r\n // })\r\n // );\r\n this.requireSubmitFlag = true;\r\n }\r\n\r\n public timeCardSubmit(submitdata) {\r\n this.tcSubmit.emit(submitdata);\r\n }\r\n\r\n setupObservables() {\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:setupObservables'\r\n });\r\n this.userSub$ = this.userStore.pipe(\r\n takeWhile(_ => this.active),\r\n select(fromUser.getUser)\r\n );\r\n }\r\n setupSubscriptions() {\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:setupSubscriptions'\r\n });\r\n this.AddDocumentation.pipe(takeWhile(() => this.active)).subscribe(\r\n timecard => {\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:AddDocumentation',\r\n timecard\r\n });\r\n this.displayDocumentation = true;\r\n }\r\n );\r\n merge(this.dRSelectedSubject, this.userInfoSubject)\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:userdirectreport/userinfo',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n this.EmployeeIdSubject.next(x.EmployeeListID);\r\n });\r\n\r\n this.userSub$\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:userSub$',\r\n x\r\n })\r\n ),\r\n filter(x => !!x)\r\n )\r\n .subscribe(user => {\r\n this.userInfoSubject.next(user.userInfo);\r\n this.user = user.userInfo;\r\n this.employeeListID = user.userInfo.EmployeeListID;\r\n this.roleGroupID = user.userInfo.RoleGroupID;\r\n this.employeeName = user.userInfo.EmployeeName;\r\n this.timecardDocHeader = 'Timecard Documentation';\r\n\r\n if (this.isDRSelected == false) {\r\n this.detailsLabel = `HR Details for ${this.employeeName}`;\r\n }\r\n\r\n this.start =\r\n user.userInfo.UserEntryStartDate &&\r\n user.userInfo.UserEntryStartDate.toString();\r\n const end =\r\n user.userInfo.UserEntryEndDate &&\r\n user.userInfo.UserEntryEndDate.toString();\r\n const startDate = new Date(this.start);\r\n const endDate = new Date(end);\r\n this.userEntryStartDate = this.transformDate(startDate);\r\n this.userEntryEndDate = this.transformDate(endDate);\r\n this.signaturePolicyRequired =\r\n user.userInfo.Signaturepolicyrequired;\r\n this.showSignaturePolicy = user.userInfo.ShowSignaturePolicy;\r\n this.selectedProcessRole = this.getProcessRole(\r\n this.process.ProcessID,\r\n this.user\r\n );\r\n if (user.userInfo.AccountNumber != null) {\r\n this.accountNumber = user.userInfo.AccountNumber;\r\n } else {\r\n this.accountNumber = '';\r\n }\r\n this.expectedHours = user.userInfo.UserEntryPeriodExpectedHours;\r\n this.requireTimeSubmit = user.userInfo.Requiretimesubmit;\r\n this.leaveInfo = user.userInfo.LeaveAccrualInfo;\r\n this.setProcessRole(this.selectedProcessRole);\r\n });\r\n\r\n this.authSub = this.authStore\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(auth => {\r\n if (auth) {\r\n this.userPassword = auth['auth'].password;\r\n }\r\n });\r\n\r\n this.WeeklySummarySubject.pipe(\r\n takeWhile(() => this.active),\r\n tap(cards =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:WeeklySummarySubject',\r\n cards\r\n })\r\n ),\r\n filter(x => !!x && x.length === 0),\r\n tap(cards =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:WeeklySummarySubject:empty',\r\n cards\r\n })\r\n )\r\n ).subscribe(() => {\r\n if (this.isSupervisor || this.isTaskManager || this.isSuperUser) {\r\n try {\r\n this.createEmptyWeeklyTabulator(this, '#tabWeeklySummary');\r\n } catch {}\r\n }\r\n });\r\n\r\n this.TimeCardsSubject.pipe(\r\n takeWhile(() => this.active),\r\n tap(cards =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:TimeCardsSubject',\r\n cards\r\n })\r\n ),\r\n filter(x => !!x && x.length === 0),\r\n tap(cards =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:TimeCardsSubject:empty',\r\n cards\r\n })\r\n )\r\n ).subscribe(() => {\r\n if (this.isSuperUser || this.isSupervisor || this.isTaskManager) {\r\n try {\r\n this.createEmptyTabulator(this, '#tabTimeCard');\r\n } catch {}\r\n }\r\n });\r\n this.TimeCardsSubject.pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.length > 0),\r\n tap(cards =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:TimeCardsSubject:not empty',\r\n cards\r\n })\r\n )\r\n ).subscribe(cards => {\r\n if (this.pivot == true) {\r\n let data: any;\r\n data = fromShared.fastpivot(cards);\r\n const max = data['WorkDateHdr']._labels.length;\r\n this.numOfDaysInWeek = max;\r\n const firstDay = data['WorkDateHdr']._labels[0];\r\n const lastDay = data['WorkDateHdr']._labels[max - 1];\r\n\r\n const days = [];\r\n const byTask = [];\r\n const count = max;\r\n let i = 0;\r\n const wdcount = 0;\r\n data.EmpAuthID._labels.forEach((task: string) => {\r\n const taskNum = Number(task);\r\n const item: any = {};\r\n i++;\r\n for (let index = 0; index < count; index++) {\r\n const taskCards = cards.filter(\r\n // this could be the issue with the split day on the 1st day of week\r\n x => x.EmpAuthID === taskNum\r\n );\r\n const currentTask = taskCards.find(\r\n x => x.EmpAuthID === taskNum\r\n );\r\n item.task = currentTask.TaskDisplay;\r\n item.AvailableHours = currentTask.AvailableHours;\r\n this.PeriodHasSplitDay = cards[0].PeriodHasSplitDay;\r\n item.TaskSortOrder = currentTask.TaskSortOrder;\r\n const todayTaskCard = taskCards.find(\r\n x =>\r\n x.WorkDateHdr ===\r\n data['WorkDateHdr']._labels[index] // index is 0 when first day is split, but the split header is 7\r\n );\r\n\r\n if (todayTaskCard) {\r\n item.TotalDocumentedHours =\r\n todayTaskCard.TotalDocumentedHours;\r\n item.weeklyTotal = todayTaskCard.WeeklyTotal;\r\n item.availableHours = todayTaskCard.AvailableHours;\r\n item.periodTotal = todayTaskCard.PeriodTotal;\r\n item.serviceItem = todayTaskCard.ServiceItem;\r\n item.payrollItem = todayTaskCard.PayrollItem;\r\n item.empAuthURL = todayTaskCard.EmpAuthURL;\r\n item.empAuthID = todayTaskCard.EmpAuthID;\r\n item[`Day${index}`] = { ...todayTaskCard };\r\n }\r\n }\r\n byTask.push(item);\r\n });\r\n\r\n this.log.verbose({\r\n type: `TimeCardPresenterComponent:TimeCardsSubject:result`,\r\n byTask\r\n });\r\n this.sortedByTask = byTask\r\n .sort((a, b) => a.TaskSortOrder - b.TaskSortOrder)\r\n .sort((a, b) => {\r\n if (a.TaskSortOrder < b.TaskSortOrder) {\r\n return -1;\r\n }\r\n if (a.TaskSortOrder > b.TaskSortOrder) {\r\n return 1;\r\n }\r\n if (a.task > b.task) {\r\n return 1;\r\n }\r\n if (a.task < b.task) {\r\n return -1;\r\n }\r\n });\r\n\r\n if (this.showAvailableHoursOnTimecard) {\r\n if (this.hasMaxHours == false) {\r\n this.showAvailableHoursColumn = false;\r\n } else {\r\n this.showAvailableHoursColumn = true;\r\n }\r\n } else {\r\n this.showAvailableHoursColumn = false;\r\n }\r\n\r\n this.createTabulatorForTimeCard(this, [], this.sortedByTask);\r\n this.pivot = false;\r\n }\r\n\r\n this.flippedTimeCardData = this.sortedByTask;\r\n if (this.isSupervisor == true || this.isTaskManager == true) {\r\n this.dynamicTableHeight = '29vh'; // '31.8vh'; // '26.5vh';\r\n } else {\r\n if (this.flippedTimeCardData[0].Day0.NbrOfRows < 10) {\r\n this.dynamicTableHeight = `${\r\n this.flippedTimeCardData[0].Day0.NbrOfRows + 12.5 // 9\r\n }rem`;\r\n } else {\r\n this.dynamicTableHeight = '24.7rem'; // '32vh';\r\n }\r\n }\r\n\r\n // if (this.showAvailableHoursOnTimecard) {\r\n // if (this.hasMaxHours == false) {\r\n // this.showAvailableHoursColumn = false;\r\n // } else {\r\n // this.showAvailableHoursColumn = true;\r\n // }\r\n // } else {\r\n // this.showAvailableHoursColumn = false;\r\n // }\r\n\r\n if (this.requireSubmitFlag === true) {\r\n //this.createTabulatorForTimeCard(this, [], this.sortedByTask);\r\n this.requireSubmitFlag = false;\r\n }\r\n\r\n if (this.tabTimeCard) {\r\n if (this.weeklyHeaderSelected === true) {\r\n // this.createTabulatorForTimeCard(\r\n // this,\r\n // [],\r\n // this.sortedByTask\r\n // );\r\n this.weeklyHeaderSelected = false;\r\n }\r\n if (\r\n this.previousWeekClicked === true ||\r\n this.nextWeekClicked === true\r\n ) {\r\n // this.createTabulatorForTimeCard(\r\n // this,\r\n // [],\r\n // this.sortedByTask\r\n // );\r\n } else {\r\n this.tabAlreadyCreated = true;\r\n if (this.drdropdown === true) {\r\n // this.createTabulatorForTimeCard(\r\n // this,\r\n // [],\r\n // this.sortedByTask\r\n // );\r\n this.drdropdown = false;\r\n } else {\r\n if (this.isRefreshing === true) {\r\n // this.createTabulatorForTimeCard(\r\n // this,\r\n // [],\r\n // this.sortedByTask\r\n // );\r\n this.isRefreshing = false;\r\n } else {\r\n if (this.currentCell) {\r\n const row = this.currentCell.getRow();\r\n const rowdata = row.getData();\r\n const column = this.currentCell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField =\r\n columnDef.field.split('.')[0];\r\n const day = columnField;\r\n let updatedData = this.sortedByTask.find(\r\n x => x.empAuthID === rowdata.empAuthID\r\n );\r\n\r\n let updatedDay = this.timecardData.find(x => x.id == rowdata[day].id);\r\n // if (idFound == true) {\r\n // updatedDay = this.timecardData.find(\r\n // z => z.id == rowdata[day].id\r\n // );\r\n // } else {\r\n // this.timecardData.forEach(tc => {\r\n // if (tc.EmpAuthID == rowdata[day].EmpAuthID) {\r\n // if (tc.WorkDateHdr == rowdata[day].WorkDateHdr) {\r\n // updatedDay = tc;\r\n // }\r\n // }\r\n // });\r\n // }\r\n\r\n updatedData = {\r\n ...updatedData,\r\n [day]: updatedDay\r\n };\r\n if (this.hasProp(updatedData, [day])) {\r\n row.update({\r\n // hitting an error on splitday\r\n availableHours: updatedData[day].AvailableHours,\r\n weeklyTotal: updatedData[day].WeeklyTotal,\r\n [day]: updatedData[day]\r\n });\r\n }\r\n //this.currentCell = null;\r\n // this.sortedByTask = this.sortedByTask\r\n // .sort((a, b) => a.TaskSortOrder - b.TaskSortOrder)\r\n // .sort((a, b) => {\r\n // if (a.TaskSortOrder < b.TaskSortOrder) {\r\n // return -1;\r\n // }\r\n // if (a.TaskSortOrder > b.TaskSortOrder) {\r\n // return 1;\r\n // }\r\n // if (a.task > b.task) {\r\n // return 1;\r\n // }\r\n // if (a.task < b.task) {\r\n // return -1;\r\n // }\r\n // });\r\n // for (var i = 0; i < this.sortedByTask.length; i++) {\r\n // this.log.verbose(`sortOrder ${i} - Task: ${this.sortedByTask[i].task}`);\r\n // }\r\n\r\n // this.log.verbose(\r\n // `row.update: hours ${updatedData[day].EmployeeHours}, timeid ${updatedData[day].EmpTimeID}, workdate ${updatedData[day].WorkDateHdr}`\r\n // );\r\n } else {\r\n // this.createTabulatorForTimeCard(\r\n // this,\r\n // [],\r\n // this.sortedByTask\r\n // );\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n //this.createTabulatorForTimeCard(this, [], this.sortedByTask);\r\n }\r\n\r\n if (\r\n this.isSuperUser === false &&\r\n this.isSupervisor === false &&\r\n this.isTaskManager === false\r\n ) {\r\n let cellData;\r\n let currentTimeCard;\r\n if (this.currentCell) {\r\n cellData = this.getTimecardDay(this.currentCell);\r\n currentTimeCard = this._timecarddata.find(\r\n x => x.EmpTimeID == cellData.EmpTimeID\r\n );\r\n }\r\n }\r\n });\r\n\r\n this.WeeklySummarySubject.pipe(\r\n takeWhile(() => this.active),\r\n filter(x => !!x && x.length > 0),\r\n tap(cards =>\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:WeeklySummarySubject:not empty',\r\n cards\r\n })\r\n )\r\n ).subscribe(cards => {\r\n let data: any;\r\n data = fromShared.fastpivot(cards);\r\n const max = data['TimeWeek']._labels.length;\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:WeeklySummarySubject',\r\n data,\r\n max\r\n });\r\n const firstWeek = moment(data['TimeWeek']._labels[0]).startOf(\r\n 'week'\r\n );\r\n const firstWeekString = data['TimeWeek']._labels[0];\r\n const lastWeek = moment(data['TimeWeek']._labels[max - 1]);\r\n\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:WeeklySummarySubject',\r\n firstWeek,\r\n lastWeek\r\n });\r\n const weeks = [];\r\n const byTask = [];\r\n const count = max;\r\n let i = 0;\r\n data.EmpAuthID._labels.forEach((task: string) => {\r\n const item: any = {};\r\n const taskNum = Number(task);\r\n i++;\r\n for (let index = 0; index < count; index++) {\r\n const taskCards = cards.filter(\r\n x => x.EmpAuthID === taskNum\r\n );\r\n const currentTask = taskCards.find(\r\n x => x.EmpAuthID === taskNum\r\n );\r\n item.task = currentTask.TaskLongName;\r\n item.TaskSortOrder = currentTask.TaskSortOrder;\r\n const todayTaskCard = taskCards.find(\r\n x => x.TimeWeek === data['TimeWeek']._labels[index]\r\n );\r\n if (todayTaskCard) {\r\n item.serviceItem = todayTaskCard.ServiceItem;\r\n item.payrollItem = todayTaskCard.PayrollItem;\r\n item.empAuthPeriod = todayTaskCard.EmpAuthPeriod;\r\n item.availableHours = todayTaskCard.AvailableHours;\r\n item.showAvailHours = todayTaskCard.ShowAvailHours;\r\n item.periodTotal = todayTaskCard.PeriodTotal;\r\n item.empAuthID = todayTaskCard.EmpAuthID;\r\n item[`Week${index}`] = { ...todayTaskCard };\r\n }\r\n }\r\n byTask.push(item);\r\n });\r\n this.log.verbose({\r\n type: `TimeCardPresenterComponent:TimeCardsSubject:result`,\r\n byTask\r\n });\r\n let wsSortedByTask;\r\n let weekIndex;\r\n if (byTask && byTask.length > 0) {\r\n wsSortedByTask = byTask\r\n .sort((a, b) => a.TaskSortOrder - b.TaskSortOrder)\r\n .sort((a, b) => {\r\n if (a.TaskSortOrder < b.TaskSortOrder) {\r\n return -1;\r\n }\r\n if (a.TaskSortOrder > b.TaskSortOrder) {\r\n return 1;\r\n }\r\n if (a.task > b.task) {\r\n return 1;\r\n }\r\n if (a.task < b.task) {\r\n return -1;\r\n }\r\n });\r\n\r\n this.flippedSummaryData = wsSortedByTask;\r\n }\r\n\r\n this.createTabulatorForWeeklySummary(this, [], wsSortedByTask);\r\n cards.forEach(el => {\r\n if (el.Dochoursgtworked == true) {\r\n if (this.process.ProcessID == 87) {\r\n this.displayDocWarning = false;\r\n } else {\r\n this.displayDocWarning = true;\r\n }\r\n\r\n return;\r\n }\r\n });\r\n });\r\n }\r\n\r\n countDecimals(value) {\r\n if (Math.floor(value) !== value) {\r\n return value.toString().split('.')[1].length || 0;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n onIncludeDisapprovedTime($event) {\r\n this.cbxValue = $event.checked;\r\n }\r\n\r\n public managementAction(action) {\r\n this.mgmtActionInProgress = true;\r\n this.pivot = true;\r\n if (this.selectedDirectReports && this.selectedDirectReports.length > 0) {\r\n this.directReportListID =\r\n this.selectedDirectReports[0].EmployeeListID;\r\n }\r\n if (this.showManagementActionDialog == true) {\r\n this.IsDisabled = true;\r\n let data: IManagementAction;\r\n const mgmtrowdata = this.selectedDRRow.getData();\r\n const tcrowdata = this.currentRow.getData();\r\n if (action === 'approve') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12024, // this.roleGroupID,\r\n usrDirectReports: [\r\n {\r\n EmployeeListID: mgmtrowdata.EmployeeListID,\r\n EmployeeName: 'na',\r\n IsActive: 1\r\n }\r\n ],\r\n TimeCardStatus: 2.0,\r\n StartDate: this.selectedCellDate,\r\n EndDate: this.selectedCellDate,\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n IncludeDisapproved: this.cbxValue,\r\n EmpTimeID: tcrowdata[this.currentDay].EmpTimeID,\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Approvals Complete';\r\n this.showManagementActionDialog = false;\r\n this.selectedDirectReports = [];\r\n } else if (action === 'disapprove') {\r\n this.dialogVisible = true;\r\n } else if (action === 'unapprove') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12024, // this.roleGroupID,\r\n usrDirectReports: [\r\n {\r\n EmployeeListID: mgmtrowdata.EmployeeListID,\r\n EmployeeName: 'na',\r\n IsActive: 1\r\n }\r\n ],\r\n TimeCardStatus: 1.0,\r\n StartDate: this.selectedCellDate,\r\n EndDate: this.selectedCellDate,\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n IncludeDisapproved: this.cbxValue,\r\n EmpTimeID: tcrowdata[this.currentDay].EmpTimeID,\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Unapprovals Complete';\r\n this.showManagementActionDialog = false;\r\n this.selectedDirectReports = [];\r\n } else if (action === 'validate') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12025, // this.roleGroupID,\r\n usrDirectReports: [\r\n {\r\n EmployeeListID: mgmtrowdata.EmployeeListID,\r\n EmployeeName: 'na',\r\n IsActive: 1\r\n }\r\n ],\r\n TimeCardStatus: 1.5,\r\n StartDate: this.selectedCellDate,\r\n EndDate: this.selectedCellDate,\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n IncludeDisapproved: this.cbxValue,\r\n EmpTimeID: tcrowdata[this.currentDay].EmpTimeID,\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Validations Complete';\r\n this.showManagementActionDialog = false;\r\n this.selectedDirectReports = [];\r\n } else if (action === 'disapprove_validate') {\r\n this.dialogVisible = true;\r\n } else if (action === 'unvalidate') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12025, // this.roleGroupID,\r\n usrDirectReports: [\r\n {\r\n EmployeeListID: mgmtrowdata.EmployeeListID,\r\n EmployeeName: 'na',\r\n IsActive: 1\r\n }\r\n ],\r\n TimeCardStatus: 1.0,\r\n StartDate: this.selectedCellDate,\r\n EndDate: this.selectedCellDate,\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n IncludeDisapproved: this.cbxValue,\r\n EmpTimeID: tcrowdata[this.currentDay].EmpTimeID,\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Unvalidations Complete';\r\n this.showManagementActionDialog = false;\r\n this.selectedDirectReports = [];\r\n } else {\r\n data = null;\r\n this.selectedDirectReports = [];\r\n }\r\n }\r\n if (this.IsDisabled === false) {\r\n let data: IManagementAction;\r\n if (action === 'approve') {\r\n if (this.showManagementActionDialog == true) {\r\n const rowdata = this.selectedDRRow.getData();\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12024, // this.roleGroupID,\r\n usrDirectReports: [\r\n {\r\n EmployeeListID: rowdata.EmployeeListID,\r\n EmployeeName: 'na',\r\n IsActive: 1\r\n }\r\n ],\r\n TimeCardStatus: 2.0,\r\n StartDate: this.selectedCellDate,\r\n EndDate: this.selectedCellDate,\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n IncludeDisapproved: this.cbxValue,\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Approvals Complete';\r\n //this.showManagementActionDialog = false;\r\n this.selectedDirectReports = [];\r\n } else {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12024, // this.roleGroupID,\r\n usrDirectReports: this.selectedDirectReports,\r\n TimeCardStatus: 2.0,\r\n StartDate: moment(\r\n this.approveFormGroup.controls['dateRange'].value[0]\r\n ).format('MM/DD/YYYY'),\r\n EndDate: moment(\r\n this.approveFormGroup.controls['dateRange'].value[1]\r\n ).format('MM/DD/YYYY'),\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n IncludeDisapproved: this.cbxValue,\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Approvals Complete';\r\n this.selectedDirectReports = [];\r\n }\r\n } else if (action === 'lock') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12024, // this.roleGroupID,\r\n usrDirectReports: this.selectedDirectReports,\r\n TimeCardStatus: 5.0,\r\n StartDate: moment(\r\n this.approveFormGroup.controls['dateRange'].value[0]\r\n ).format('MM/DD/YYYY'),\r\n EndDate: moment(\r\n this.approveFormGroup.controls['dateRange'].value[1]\r\n ).format('MM/DD/YYYY'),\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Lock Complete';\r\n this.selectedDirectReports = [];\r\n } else if (action === 'unlock') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12024, // this.roleGroupID,\r\n usrDirectReports: this.selectedDirectReports,\r\n TimeCardStatus: 6.0,\r\n StartDate: moment(\r\n this.approveFormGroup.controls['dateRange'].value[0]\r\n ).format('MM/DD/YYYY'),\r\n EndDate: moment(\r\n this.approveFormGroup.controls['dateRange'].value[1]\r\n ).format('MM/DD/YYYY'),\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Unlock Complete';\r\n this.selectedDirectReports = [];\r\n } else if (action === 'disapprove') {\r\n this.dialogVisible = true;\r\n } else if (action === 'unapprove') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12024, // this.roleGroupID,\r\n usrDirectReports: this.selectedDirectReports,\r\n TimeCardStatus: 1.0,\r\n StartDate: moment(\r\n this.unapproveFormGroup.controls['dateRange'].value[0]\r\n ).format('MM/DD/YYYY'),\r\n EndDate: moment(\r\n this.unapproveFormGroup.controls['dateRange'].value[1]\r\n ).format('MM/DD/YYYY'),\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Unapprovals Complete';\r\n this.selectedDirectReports = [];\r\n } else if (action === 'validate') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12025, // this.roleGroupID,\r\n usrDirectReports: this.selectedDirectReports,\r\n TimeCardStatus: 1.5,\r\n StartDate: moment(\r\n this.validateFormGroup.controls['dateRange'].value[0]\r\n ).format('MM/DD/YYYY'),\r\n EndDate: moment(\r\n this.validateFormGroup.controls['dateRange'].value[1]\r\n ).format('MM/DD/YYYY'),\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Validations Complete';\r\n this.selectedDirectReports = [];\r\n // this.ws_panelExpanded = true;\r\n // this.tc_panelExpanded = false;\r\n } else if (action === 'disapprove_validate') {\r\n this.dialogVisible = true;\r\n } else if (action === 'unvalidate') {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: 12025, // this.roleGroupID,\r\n usrDirectReports: this.selectedDirectReports,\r\n TimeCardStatus: 1.0,\r\n StartDate: moment(\r\n this.unvalidateFormGroup.controls['dateRange'].value[0]\r\n ).format('MM/DD/YYYY'),\r\n EndDate: moment(\r\n this.unvalidateFormGroup.controls['dateRange'].value[1]\r\n ).format('MM/DD/YYYY'),\r\n MgmtDateRangeStart: this.mgmtDateRangeStart,\r\n MgmtDateRangeEnd: this.mgmtDateRangeEnd,\r\n MgrComment: '',\r\n Processid: this.process.ProcessID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Unvalidations Complete';\r\n this.selectedDirectReports = [];\r\n } else {\r\n data = null;\r\n this.selectedDirectReports = [];\r\n }\r\n // this.directReportListID =\r\n // this.selectedDirectReports[0].EmployeeListID;\r\n }\r\n this.IsDisabled = true;\r\n //this.selectedDirectReports = [];\r\n // if (this.showManagementActionDialog != true) {\r\n // this.showManagementActionCompleteMsg = true;\r\n // setTimeout(() => {\r\n // this.showManagementActionCompleteMsg = false;\r\n // }, 5000);\r\n // }\r\n //this.showManagementActionDialog = false;\r\n }\r\n\r\n mgrMessageEntered() {\r\n let data: IManagementAction;\r\n this.dialogVisible = false;\r\n let roleid;\r\n if (this.isTaskManager === true) {\r\n roleid = 12025;\r\n }\r\n if (this.isSupervisor === true) {\r\n roleid = 12024;\r\n }\r\n if (this.showManagementActionDialog == true) {\r\n const mgmtrowdata = this.selectedDRRow.getData();\r\n const tcrowdata = this.currentRow.getData();\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: roleid, // this.roleGroupID,\r\n usrDirectReports: [\r\n {\r\n EmployeeListID: mgmtrowdata.EmployeeListID,\r\n EmployeeName: 'na',\r\n IsActive: 1\r\n }\r\n ],\r\n TimeCardStatus: 3.0,\r\n StartDate: this.selectedCellDate,\r\n EndDate: this.selectedCellDate,\r\n MgrComment: this.mgrComment,\r\n // IncludeDisapproved: this.cbxValue,\r\n EmpTimeID: tcrowdata[this.currentDay].EmpTimeID,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n this.showManagementActionDialog = false;\r\n } else {\r\n data = {\r\n EmployeeListID: this.employeeListID,\r\n UserGroupID: roleid, // this.roleGroupID,\r\n usrDirectReports: this.selectedDirectReports,\r\n TimeCardStatus: 3.0,\r\n StartDate: moment(\r\n this.disapproveFormGroup.controls['dateRange'].value[0]\r\n ).format('MM/DD/YYYY'), // get the first date of the range\r\n EndDate: moment(\r\n this.disapproveFormGroup.controls['dateRange'].value[1]\r\n ).format('MM/DD/YYYY'), // get the last date of the range\r\n MgrComment: this.mgrComment,\r\n MyDrsOnly: this.showMyDRs\r\n };\r\n }\r\n this.managementUpdate.emit(data);\r\n //this.managementActionCompleteMsg = 'Disapprovals Complete';\r\n this.mgrComment = '';\r\n this.selectedDirectReports = [];\r\n }\r\n\r\n public clearFilters() {\r\n // reset filters in filter form group\r\n // if clearing direct reports filter, will need to reload the grid with the data of whoever is logged in\r\n this.filterFormGroup.controls['directReports'].reset();\r\n this.filterFormGroup.controls['tasks'].reset();\r\n\r\n if (this.isUser === true) {\r\n this.tabTimeCard.clearFilter(true);\r\n } else {\r\n if (this.isSuperUser) {\r\n this.tabWeeklySummary.clearData(true);\r\n this.timecardHeader = 'TimeCard';\r\n this.weeklySummaryHeader = 'Weekly View';\r\n }\r\n this.tabTimeCard.clearData();\r\n this.isDRSelected = false;\r\n }\r\n }\r\n\r\n hasProp(obj, prop): boolean {\r\n if (!obj) {\r\n return false;\r\n }\r\n return Object.prototype.hasOwnProperty.call(obj, prop);\r\n }\r\n\r\n public goToNextOrPreviousWeek(direction: string) {\r\n this.pivot = true;\r\n if (direction === 'prev') {\r\n this.previousWeekClicked = true;\r\n this.nextWeekClicked = false;\r\n // get the first date in the displayed week\r\n const firstDate = this.sortedByTask[0].Day0.WorkDate.toString();\r\n // emit event to features.ts and pass the date and direction\r\n if (this.isSupervisor || this.isTaskManager) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.directReportListID,\r\n date: firstDate,\r\n direction: direction,\r\n processid: this.process.ProcessID,\r\n endDate: this.mgmtDateRangeEnd\r\n });\r\n }\r\n if (this.isSuperUser) {\r\n if (this.isDRSelected === true) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.directReportListID,\r\n date: firstDate,\r\n direction: direction\r\n });\r\n if (new Date(firstDate).getTime() < new Date(this.user.UserEntryStartDate.toString()).getTime()) {\r\n this.emptyWeeklyTabPlaceholder = \"Timecard is outside of entry dates.\"\r\n this.createEmptyWeeklyTabulator(this, '#tabWeeklySummary');\r\n } else {\r\n this.emptyWeeklyTabPlaceholder = \"No Data Available.\"\r\n }\r\n }\r\n }\r\n if (this.isUser) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n date: firstDate,\r\n direction: direction\r\n });\r\n }\r\n } else {\r\n this.previousWeekClicked = false;\r\n this.nextWeekClicked = true;\r\n if (this.hasProp(this.sortedByTask[0], 'Day7') === false) {\r\n this.sortedByTask[0] = {\r\n Day0: this.sortedByTask[0].Day0,\r\n Day1: this.sortedByTask[0].Day1,\r\n Day2: this.sortedByTask[0].Day2,\r\n Day3: this.sortedByTask[0].Day3,\r\n Day4: this.sortedByTask[0].Day4,\r\n Day5: this.sortedByTask[0].Day5,\r\n Day6: this.sortedByTask[0].Day6,\r\n Day7: {\r\n ChangeComment: null,\r\n CreateDate: null,\r\n DateLastModified: null,\r\n CurrentUserListID: null,\r\n DailyTotal: null,\r\n DateColor: null,\r\n DatePurpose: null,\r\n Deletedoc: null,\r\n EmpAuthEndDate: null,\r\n EmpAuthID: null,\r\n EmpAuthStartDate: null,\r\n EmpAuthURL: null,\r\n EmpTimeID: null,\r\n EmployeeHours: null,\r\n EmployeeListID: null,\r\n IsReadOnly: null,\r\n IsTimeClockTime: null,\r\n LeaveAccrualInfo: null,\r\n LeavePayout: null,\r\n LeavePayoutWeek: null,\r\n NbrOfRows: null,\r\n OutOfDateRange: null,\r\n PayrollItem: null,\r\n PeriodHasSplitDay: null,\r\n ReadOnlyReason: null,\r\n Row_Version: null,\r\n ServiceItem: null,\r\n SplitWorkDate: null,\r\n Status: null,\r\n TaskDisplay: null,\r\n TaskLongName: null,\r\n TimeStatus: null,\r\n WeeklyTotal: null,\r\n WorkDate: null,\r\n WorkDateHdr: null,\r\n WorkDocumentedCount: null\r\n },\r\n Row_Version: this.sortedByTask[0].Row_Version,\r\n empAuthID: this.sortedByTask[0].empAuthID,\r\n empAuthURL: this.sortedByTask[0].empAuthURL,\r\n payrollItem: this.sortedByTask[0].payrollItem,\r\n periodTotal: this.sortedByTask[0].periodTotal,\r\n serviceItem: this.sortedByTask[0].serviceItem,\r\n task: this.sortedByTask[0].task,\r\n weeklyTotal: this.sortedByTask[0].weeklyTotal\r\n };\r\n }\r\n // get the last date in the displayed week\r\n let lastDate;\r\n if (\r\n this.hasProp(this.sortedByTask[0].Day7, 'WorkDate') === true &&\r\n this.sortedByTask[0].Day7.WorkDate\r\n ) {\r\n lastDate = moment(this.sortedByTask[0].Day7.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else if (\r\n this.hasProp(this.sortedByTask[0].Day6, 'WorkDate') === true &&\r\n this.sortedByTask[0].Day6.WorkDate\r\n ) {\r\n lastDate = moment(this.sortedByTask[0].Day6.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else if (\r\n this.hasProp(this.sortedByTask[0].Day5, 'WorkDate') === true &&\r\n this.sortedByTask[0].Day5.WorkDate\r\n ) {\r\n lastDate = moment(this.sortedByTask[0].Day5.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else if (\r\n this.hasProp(this.sortedByTask[0].Day4, 'WorkDate') === true &&\r\n this.sortedByTask[0].Day4.WorkDate\r\n ) {\r\n lastDate = moment(this.sortedByTask[0].Day4.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else if (\r\n this.hasProp(this.sortedByTask[0].Day3, 'WorkDate') === true &&\r\n this.sortedByTask[0].Day3.WorkDate\r\n ) {\r\n lastDate = moment(this.sortedByTask[0].Day3.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else if (\r\n this.hasProp(this.sortedByTask[0].Day2, 'WorkDate') === true &&\r\n this.sortedByTask[0].Day2.WorkDate\r\n ) {\r\n lastDate = moment(this.sortedByTask[0].Day2.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else if (\r\n this.hasProp(this.sortedByTask[0].Day1, 'WorkDate') === true &&\r\n this.sortedByTask[0].Day1.WorkDate\r\n ) {\r\n lastDate = moment(this.sortedByTask[0].Day1.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else {\r\n lastDate = moment(this.sortedByTask[0].Day0.WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n }\r\n\r\n const firstDate = this.sortedByTask[0].Day0.WorkDate.toString();\r\n if (this.isSupervisor || this.isTaskManager) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.directReportListID,\r\n date: lastDate,\r\n direction: direction,\r\n processid: this.process.ProcessID,\r\n endDate: this.mgmtDateRangeEnd\r\n });\r\n }\r\n if (this.isSuperUser) {\r\n if (this.isDRSelected === true) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.directReportListID,\r\n date: lastDate,\r\n direction: direction\r\n });\r\n }\r\n }\r\n if (this.isUser) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n date: lastDate,\r\n direction: direction\r\n });\r\n }\r\n }\r\n }\r\n\r\n confirmBtnClickedForDocumentationExceedingHours() {\r\n const row = this.currentCell.getRow();\r\n const rowdata = this.currentCell.getRow().getData();\r\n const column = this.currentCell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n const value = this.currentCell.getValue();\r\n const today = moment(new Date()).format('MM/DD/YYYY');\r\n\r\n rowdata[day].Deletedoc = true;\r\n\r\n if (rowdata[day].CreateDate != null) {\r\n if (\r\n moment(rowdata[day].CreateDate).format('MM/DD/YYYY') === today\r\n ) {\r\n this.updateTime(this.currentCell);\r\n } else {\r\n this.changeCommentTask = rowdata.task;\r\n this.changeCommentDate = rowdata[day].WorkDateHdr;\r\n if (value != null) {\r\n this.showDisplayNotePopup();\r\n }\r\n }\r\n } else {\r\n this.updateTime(this.currentCell);\r\n }\r\n\r\n this.displayDocumentationExceedingHoursWarningPopup = false;\r\n }\r\n cancelBtnClickedForDocumentationExceedingHours() {\r\n const row = this.currentCell.getRow();\r\n const rowdata = this.currentCell.getRow().getData();\r\n const column = this.currentCell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n this.revertRowToPreviousValue(this.currentCell);\r\n this.displayDocumentationExceedingHoursWarningPopup = false;\r\n }\r\n\r\n confirmBtnClickedNegativeHours() {\r\n const row = this.currentCell.getRow();\r\n const rowdata = this.currentCell.getRow().getData();\r\n const column = this.currentCell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n if (rowdata[day].CreateDate != null) {\r\n this.revertRowToPreviousValue(this.currentCell);\r\n } else {\r\n row.update({\r\n [day]: {\r\n InterfaceType: rowdata[day].InterfaceType,\r\n TimerCreate: rowdata[day].TimerCreate,\r\n ChangeComment: rowdata[day].ChangeComment,\r\n CreateDate: rowdata[day].CreateDate,\r\n DateLastModified: rowdata[day].DateLastModified,\r\n CurrentUserListID: rowdata[day].CurrentUserListID,\r\n DailyTotal: rowdata[day].DailyTotal,\r\n DateColor: rowdata[day].DateColor,\r\n DatePurpose: rowdata[day].DatePurpose,\r\n Deletedoc: false,\r\n EmpAuthEndDate: rowdata[day].EmpAuthEndDate,\r\n EmpAuthID: rowdata[day].EmpAuthID,\r\n EmpAuthStartDate: rowdata[day].EmpAuthStartDate,\r\n EmpAuthURL: rowdata[day].EmpAuthURL,\r\n EmpTimeID: rowdata[day].EmpTimeID,\r\n EmployeeHours: '',\r\n EmployeeListID: rowdata[day].EmployeeListID,\r\n IsReadOnly: rowdata[day].IsReadOnly,\r\n IsTimeClockTime: rowdata[day].IsTimeClockTime,\r\n LeaveAccrualInfo: rowdata[day].LeaveAccrualInfo,\r\n LeavePayout: rowdata[day].LeavePayout,\r\n LeavePayoutWeek: rowdata[day].LeavePayoutWeek,\r\n NbrOfRows: rowdata[day].NbrOfRows,\r\n OutOfDateRange: rowdata[day].OutOfDateRange,\r\n PayrollItem: rowdata[day].PayrollItem,\r\n PeriodHasSplitDay: rowdata[day].PeriodHasSplitDay,\r\n ReadOnlyReason: rowdata[day].ReadOnlyReason,\r\n Row_Version: rowdata[day].Row_Version,\r\n ServiceItem: rowdata[day].ServiceItem,\r\n SplitWorkDate: rowdata[day].SplitWorkDate,\r\n Status: rowdata[day].Status,\r\n TaskDisplay: rowdata[day].TaskDisplay,\r\n TaskLongName: rowdata[day].TaskLongName,\r\n TimeStatus: rowdata[day].TimeStatus,\r\n WeeklyTotal: rowdata[day].WeeklyTotal,\r\n WorkDate: rowdata[day].WorkDate,\r\n WorkDateHdr: rowdata[day].WorkDateHdr,\r\n WorkDocumentedCount: rowdata[day].WorkDocumentedCount\r\n }\r\n });\r\n }\r\n\r\n this.showNegativeHoursDialog = false;\r\n }\r\n\r\n revertRowToPreviousValue(cell) {\r\n const row = cell.getRow();\r\n const rowdata = cell.getRow().getData();\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n\r\n row.update({\r\n [day]: {\r\n InterfaceType: rowdata[day].InterfaceType,\r\n TimerCreate: rowdata[day].TimerCreate,\r\n ChangeComment: rowdata[day].ChangeComment,\r\n CreateDate: rowdata[day].CreateDate,\r\n DateLastModified: rowdata[day].DateLastModified,\r\n CurrentUserListID: rowdata[day].CurrentUserListID,\r\n DailyTotal: rowdata[day].DailyTotal,\r\n DateColor: rowdata[day].DateColor,\r\n DatePurpose: rowdata[day].DatePurpose,\r\n Deletedoc: rowdata[day].Deletedoc,\r\n EmpAuthEndDate: rowdata[day].EmpAuthEndDate,\r\n EmpAuthID: rowdata[day].EmpAuthID,\r\n EmpAuthStartDate: rowdata[day].EmpAuthStartDate,\r\n EmpAuthURL: rowdata[day].EmpAuthURL,\r\n EmpTimeID: rowdata[day].EmpTimeID,\r\n EmployeeHours: cell._cell.oldValue,\r\n EmployeeListID: rowdata[day].EmployeeListID,\r\n IsReadOnly: rowdata[day].IsReadOnly,\r\n IsTimeClockTime: rowdata[day].IsTimeClockTime,\r\n LeaveAccrualInfo: rowdata[day].LeaveAccrualInfo,\r\n LeavePayout: rowdata[day].LeavePayout,\r\n LeavePayoutWeek: rowdata[day].LeavePayoutWeek,\r\n NbrOfRows: rowdata[day].NbrOfRows,\r\n OutOfDateRange: rowdata[day].OutOfDateRange,\r\n PayrollItem: rowdata[day].PayrollItem,\r\n PeriodHasSplitDay: rowdata[day].PeriodHasSplitDay,\r\n ReadOnlyReason: rowdata[day].ReadOnlyReason,\r\n Row_Version: rowdata[day].Row_Version,\r\n ServiceItem: rowdata[day].ServiceItem,\r\n SplitWorkDate: rowdata[day].SplitWorkDate,\r\n Status: rowdata[day].Status,\r\n TaskDisplay: rowdata[day].TaskDisplay,\r\n TaskLongName: rowdata[day].TaskLongName,\r\n TimeStatus: rowdata[day].TimeStatus,\r\n WeeklyTotal: rowdata[day].WeeklyTotal,\r\n WorkDate: rowdata[day].WorkDate,\r\n WorkDateHdr: rowdata[day].WorkDateHdr,\r\n WorkDocumentedCount: rowdata[day].WorkDocumentedCount,\r\n Backcolor_hex: rowdata[day].Backcolor_hex,\r\n Forecolor_hex: rowdata[day].Forecolor_hex\r\n }\r\n });\r\n }\r\n\r\n signaturePolicyCheck(cell) {\r\n // CHECK IF SIGNATURE POLICY IS REQUIRED\r\n if (!this.isSuperUser) {\r\n // User is not a superuser\r\n if (this.signaturePolicyRequired === true && this.requireTimeSubmit == true) {\r\n this.timeCardUpdate.emit([this.getTimecardDay(cell)]);\r\n } else {\r\n if (this.signaturePolicyRequired) {\r\n // Signature policy is required\r\n if (this.showSignaturePolicy === true) {\r\n // Show the signature policy dialog\r\n this.showPolicyPopup();\r\n } else {\r\n // Do not show the signature policy dialog\r\n this.timeCardUpdate.emit([this.getTimecardDay(cell)]);\r\n }\r\n } else {\r\n // Signature policy is not required\r\n this.timeCardUpdate.emit([this.getTimecardDay(cell)]);\r\n }\r\n }\r\n } else {\r\n // User is a superuser - do not need to show the signature policy dialog\r\n this.timeCardUpdate.emit([this.getTimecardDay(cell)]);\r\n }\r\n }\r\n\r\n showDocWarning() {\r\n this.msgs = [];\r\n this.msgs.push({\r\n severity: 'warn',\r\n summary: 'Warn Message',\r\n detail: 'You have documented hours that are greater than time entered.'\r\n });\r\n }\r\n\r\n updateTime(cell) {\r\n this.previousWeekClicked = false;\r\n this.nextWeekClicked = false;\r\n const row = cell.getRow();\r\n const rowdata = cell.getRow().getData();\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n const cellValue: number = cell.getValue();\r\n const oldCellValue: number = cell.getOldValue();\r\n const today = moment(new Date()).format('MM/DD/YYYY');\r\n const createDate = moment(rowdata[day].CreateDate).format('MM/DD/YYYY');\r\n let maxHours;\r\n\r\n if (this.timecardData) {\r\n maxHours = rowdata[day].AvailableHours;\r\n const leavePayoutWeek = rowdata[day].LeavePayoutWeek;\r\n\r\n const dataFilteredByDay = this.timecardData.filter(\r\n x => x.SplitWorkDate === rowdata[day].SplitWorkDate\r\n );\r\n\r\n const dataFilteredByModDate = dataFilteredByDay.sort(\r\n (a, b) =>\r\n new Date(b.DateLastModified).getTime() -\r\n new Date(a.DateLastModified).getTime()\r\n );\r\n\r\n let dailyTotalFromData = 0;\r\n let dailyTotalNonPayoutHours = 0;\r\n\r\n dataFilteredByModDate.forEach(c => {\r\n if (c.EmployeeHours == null) {\r\n c.EmployeeHours = 0;\r\n }\r\n dailyTotalFromData += +c.EmployeeHours;\r\n });\r\n if (rowdata[day].LeavePayout == false) {\r\n dataFilteredByModDate.forEach(c => {\r\n if (c.EmployeeHours == null) {\r\n c.EmployeeHours = 0;\r\n }\r\n dailyTotalNonPayoutHours += +c.EmployeeHours;\r\n });\r\n }\r\n\r\n let dayHoursTotal;\r\n let nonPayoutDayHoursTotal;\r\n if (rowdata[day].CreateDate != null) {\r\n // cell has time already\r\n dayHoursTotal = dailyTotalFromData - oldCellValue + +cellValue;\r\n nonPayoutDayHoursTotal =\r\n dailyTotalNonPayoutHours - oldCellValue + +cellValue;\r\n } else {\r\n // cell does not have time\r\n dayHoursTotal = dailyTotalFromData + +cellValue;\r\n nonPayoutDayHoursTotal = dailyTotalNonPayoutHours + +cellValue;\r\n }\r\n\r\n // CHECK FOR DOCUMENTED TIME EXCEEDING TIME ENTERED\r\n if (+rowdata[day].WorkDocumentedCount > 0) {\r\n if (+rowdata[day].WorkDocumentedCount > +cellValue) {\r\n this.displayDocWarning = true;\r\n } else {\r\n this.displayDocWarning = false;\r\n }\r\n }\r\n\r\n // CHECK IF ENTRY IS A NEGATIVE NUMBER\r\n if (+cellValue < 0) {\r\n // Entry is a negative number\r\n // Show the negative hours dialog\r\n this.showNegativeHoursDialog = true;\r\n }\r\n\r\n // CHECK IF CELL HAS A VALUE\r\n if (cellValue || cellValue === 0) {\r\n // Cell is not empty\r\n this.currentDay = day;\r\n this.currentCell = cell;\r\n this.currentRow = row;\r\n\r\n // CHECK IF CURRENT WEEK HAS A LEAVE PAYOUT TASK\r\n if (leavePayoutWeek == true) {\r\n // There is a task with leave payout in the current week - allow a daily total of over 24 hours\r\n if (rowdata[day].LeavePayout == true) {\r\n // Current task for entry is a leave payout task\r\n // Allow over 24 hours to be entered\r\n } else {\r\n // Current task for entry is not a leave payout task\r\n if (+cellValue > 24) {\r\n // Entry is over 24\r\n // Show exceed daily hours dialog\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'This entry brings your total hours for the day above 24. Because of this your entry will not be saved.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n this.revertRowToPreviousValue(cell);\r\n })\r\n .catch(() => {\r\n this.revertRowToPreviousValue(cell);\r\n });\r\n return;\r\n } else {\r\n // Entry is less than 24\r\n if (+nonPayoutDayHoursTotal > 24) {\r\n // Time for the day (not including leave payout time) exceeds 24 hours\r\n // Show exceed daily hours dialog\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'This entry brings your total hours for the day above 24. Because of this your entry will not be saved.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n this.revertRowToPreviousValue(cell);\r\n })\r\n .catch(() => {\r\n this.revertRowToPreviousValue(cell);\r\n });\r\n return;\r\n } else {\r\n // Time for the day (not including leave payout time) does not exceed 24 hours\r\n }\r\n }\r\n }\r\n } else {\r\n // There is not a task with leave payout in the current week - do not allow a daily total of over 24 hours\r\n if (+cellValue > 24) {\r\n // Entry is over 24\r\n // Show exceed daily hours dialog\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'This entry brings your total hours for the day above 24. Because of this your entry will not be saved.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n this.revertRowToPreviousValue(cell);\r\n })\r\n .catch(() => {\r\n this.revertRowToPreviousValue(cell);\r\n });\r\n return;\r\n } else {\r\n // Entry is less than 24\r\n if (+dayHoursTotal > 24) {\r\n // Daily total is over 24 hours\r\n // Show exceed daily hours dialog\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'This entry brings your total hours for the day above 24. Because of this your entry will not be saved.',\r\n okText: 'OK',\r\n cancelText: 'Cancel'\r\n })\r\n .then(() => {\r\n this.revertRowToPreviousValue(cell);\r\n })\r\n .catch(() => {\r\n this.revertRowToPreviousValue(cell);\r\n });\r\n return;\r\n } else {\r\n // Daily total is not over 24 hours\r\n }\r\n }\r\n }\r\n\r\n // CHECK IF TASK HAS MAX HOURS SET\r\n if (maxHours != null) {\r\n // Task has max hours set\r\n if (+maxHours - +cellValue < 0) {\r\n // Entry exceeds the max hours\r\n // Show max hours dialog\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText:\r\n 'This time entry will exceed hours budgeted for this authorization. Are you sure you want to enter this time?',\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n // CHECK IF THE CELL HAS A PREVIOUS ENTRY OR NOT\r\n if (rowdata[day].CreateDate != null) {\r\n // Cell has time already (Entry edit)\r\n if (createDate == today) {\r\n // Entry was entered today\r\n this.signaturePolicyCheck(cell);\r\n } else {\r\n // Entry was entered before today\r\n // Show comment change dialog\r\n this.changeCommentTask = rowdata.task;\r\n this.changeCommentDate =\r\n rowdata[day].WorkDateHdr;\r\n this.showDisplayNotePopup();\r\n }\r\n } else {\r\n // Cell does not have time (New entry)\r\n this.signaturePolicyCheck(cell);\r\n }\r\n return;\r\n })\r\n .catch(() => {\r\n this.revertRowToPreviousValue(cell);\r\n return;\r\n });\r\n return;\r\n } else {\r\n // Entry does not exceed the max hours\r\n }\r\n } else {\r\n // Task does not have max hours set\r\n }\r\n\r\n // CHECK IF THE CELL HAS A PREVIOUS ENTRY OR NOT\r\n if (rowdata[day].CreateDate != null) {\r\n // Cell has time already (Entry edit)\r\n if (createDate == today) {\r\n // Entry was entered today\r\n this.signaturePolicyCheck(cell);\r\n } else {\r\n // Entry was entered before today\r\n // Show comment change dialog\r\n this.changeCommentTask = rowdata.task;\r\n this.changeCommentDate = rowdata[day].WorkDateHdr;\r\n this.showDisplayNotePopup();\r\n }\r\n } else {\r\n // Cell does not have time (New entry)\r\n this.signaturePolicyCheck(cell);\r\n }\r\n } else {\r\n // Cell is empty\r\n\r\n // CHECK IF CELL HAD TIME AND WAS BACKSPACED\r\n if (cellValue === null && rowdata[day].CreateDate != null) {\r\n // Edited hours left blank\r\n // Show delete hours dialog\r\n this.showDeleteHoursPopup();\r\n //this.currentCell = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n showDocExceedingTimeDialog(cell) {\r\n this.currentCell = cell;\r\n this.displayDocumentationExceedingHoursWarningPopup = true;\r\n }\r\n\r\n getTimecardDay(cell) {\r\n const data = cell.getData();\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const cellData = data[columnField];\r\n return cellData;\r\n }\r\n\r\n generateToolTips(cell, rowdata, day) {\r\n if (this.isSupervisor === true || this.isTaskManager === true) {\r\n if (rowdata[day] && rowdata[day].ReadOnlyReason) {\r\n return rowdata[day].ReadOnlyReason;\r\n } else {\r\n return 'Cell is read-only while performing management action.'\r\n }\r\n } else {\r\n if (rowdata[day] && rowdata[day].ReadOnlyReason != null) {\r\n return rowdata[day].ReadOnlyReason;\r\n }\r\n\r\n // if (rowdata[day] && rowdata[day].IsReadOnly === true) {\r\n // return rowdata[day].ReadOnlyReason;\r\n // }\r\n }\r\n }\r\n\r\n createEmptyTabulator(tc: TimeCardPresenterComponent, container: string) {\r\n this.tabTimeCard = new Tabulator(container, {\r\n placeholder: 'No Data Available',\r\n height: tc.dynamicTableHeight,\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n data: [],\r\n index: 'empAuthID',\r\n renderComplete: function () {\r\n if (tc.timecardData.length > 0) {\r\n tc.IsLoading = false;\r\n } else {\r\n tc.IsLoading = true;\r\n }\r\n },\r\n columns: []\r\n });\r\n }\r\n createTabulatorForTimeCard(\r\n tc: TimeCardPresenterComponent,\r\n errors: Array,\r\n tabledata: any[]\r\n ) {\r\n const headerClicked = false;\r\n tc.log.verbose({\r\n type: 'TimeCardPresenterComponent:createTabulatorForTimeCard',\r\n tabledata\r\n });\r\n\r\n const editCheck = function (cell) {\r\n const data = cell.getData();\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n\r\n const Day = columnField;\r\n if (data[Day].IsReadOnly === true) {\r\n return false;\r\n } else {\r\n if (tc.isSupervisor === true || tc.isTaskManager === true) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n };\r\n\r\n const taskformatter = function (cell) {\r\n const data = cell.getData();\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '23px'; // 27\r\n\r\n if (cell._cell.column.field === 'serviceItem') {\r\n cell.getElement().classList.add('default-cursor');\r\n }\r\n\r\n if (cell._cell.column.field === 'payrollItem') {\r\n cell.getElement().classList.add('default-cursor');\r\n }\r\n\r\n if (cell._cell.column.field === 'task') {\r\n cell.getElement().classList.add('default-cursor');\r\n }\r\n\r\n if (\r\n (data[day] && data[day].IsReadOnly) === true ||\r\n (data[day] && data[day].OutOfDateRange) === true\r\n ) {\r\n cell.getElement().classList.add('disabledTimeCardCell');\r\n } else {\r\n cell.getElement().style.backgroundColor = 'white';\r\n }\r\n const value = cell.getValue();\r\n if (value === '') {\r\n cell.setValue(null, true);\r\n }\r\n return value;\r\n };\r\n\r\n const statusColor = function (cell) {\r\n const data = cell.getData();\r\n tc.log.verbose({\r\n type: 'TimeCardPresenterComponent:createTabulatorForTimeCard:statusColor',\r\n data\r\n });\r\n\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '23px'; // 27\r\n\r\n if (cell._cell.column.field === 'serviceItem') {\r\n cell.getElement().classList.add('default-cursor');\r\n }\r\n\r\n if (cell._cell.column.field === 'payrollItem') {\r\n cell.getElement().classList.add('default-cursor');\r\n }\r\n\r\n if (cell._cell.column.field === 'task') {\r\n cell.getElement().classList.add('default-cursor');\r\n }\r\n\r\n if (\r\n (data[day] && data[day].IsReadOnly) === true ||\r\n (data[day] && data[day].OutOfDateRange) === true\r\n ) {\r\n cell.getElement().classList.add('disabledTimeCardCell');\r\n } else {\r\n cell.getElement().style.backgroundColor = 'white';\r\n }\r\n const value = cell.getValue();\r\n if (value === '') {\r\n cell.setValue(null, true);\r\n }\r\n if (value) {\r\n cell.getElement().style.backgroundColor =\r\n data[day].Backcolor_hex;\r\n cell.getElement().style.color = data[day].Forecolor_hex;\r\n return value;\r\n } else {\r\n if (value === 0) {\r\n cell.getElement().style.backgroundColor =\r\n data[day].Backcolor_hex;\r\n cell.getElement().style.color = data[day].Forecolor_hex;\r\n return value;\r\n }\r\n }\r\n };\r\n\r\n const maxHoursValidation = function (cell) {\r\n const row = cell.getRow();\r\n const data = row.getData();\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n tc.log.verbose({\r\n type: 'TimeCardPresenterComponent:maxHoursValidation',\r\n data\r\n });\r\n\r\n if (data[day].LeavePayout === true) {\r\n return 'max:1000';\r\n } else {\r\n return 'max:24';\r\n }\r\n };\r\n\r\n const roundValue = function (cell, places) {\r\n const value = +cell.getValue();\r\n const factor = 10 ** places;\r\n return Math.round(value * factor) / factor;\r\n };\r\n\r\n tc.tabTimeCard = new Tabulator('#tabTimeCard', {\r\n placeholder: 'No Data Available',\r\n height: tc.dynamicTableHeight,\r\n autoResize: true,\r\n tooltipGenerationMode: 'hover',\r\n layout: 'fitColumns',\r\n data: tabledata,\r\n index: 'empAuthID',\r\n renderComplete: function () {\r\n if (tc.timecardData.length > 0) {\r\n tc.IsLoading = false;\r\n } else {\r\n tc.IsLoading = true;\r\n }\r\n },\r\n rowFormatter: row => {\r\n row.getElement().style.height = '26.6px'; // \"34px\";\r\n },\r\n columns: [\r\n {\r\n field: 'empAuthID',\r\n frozen: true,\r\n visible: false\r\n },\r\n // 3 Page Specific Columns\r\n {\r\n title: 'Available
Hours',\r\n field: 'availableHours',\r\n width: 90,\r\n visible: tc.showAvailableHoursColumn\r\n },\r\n {\r\n field: 'task',\r\n minWidth: 275,\r\n headerFilter: 'input',\r\n headerSort: false,\r\n formatter: taskformatter,\r\n titleFormatter: c => {\r\n // Might be able to use getElement() to format the header filter to say Filter Tasks...\r\n return document.getElementById('taskColumnHeader');\r\n },\r\n cellDblClick: (e, c) => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:taskcolumn:dblclick',\r\n url: rowdata.empAuthURL\r\n });\r\n if (rowdata.empAuthURL != null) {\r\n window.open(rowdata.empAuthURL, '_blank');\r\n }\r\n }\r\n },\r\n {\r\n title: 'Payroll
Item',\r\n field: 'payrollItem',\r\n visible: false,\r\n width: 300,\r\n headerSort: false,\r\n formatter: taskformatter\r\n },\r\n {\r\n title: 'Day0 Hours',\r\n field: 'Day0.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tabledata[0].Day0 ? true : false,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day0');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day0) {\r\n if (tabledata[0].Day0.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day0.DateColor;\r\n }\r\n if (tabledata[0].Day0.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day0.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day0') &&\r\n this.hasProp(tabledata[0].Day0, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day0.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Day1 Hours',\r\n field: 'Day1.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tabledata[0].Day1 ? true : false,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day1');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day1) {\r\n if (tabledata[0].Day1.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day1.DateColor;\r\n }\r\n if (tabledata[0].Day1.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day1.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day1') &&\r\n this.hasProp(tabledata[0].Day1, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day1.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Day2 Hours',\r\n field: 'Day2.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tabledata[0].Day2 ? true : false,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day2');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day2) {\r\n if (tabledata[0].Day2.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day2.DateColor;\r\n }\r\n if (tabledata[0].Day2.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day2.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day2') &&\r\n this.hasProp(tabledata[0].Day2, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day2.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Day3 Hours',\r\n field: 'Day3.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tabledata[0].Day3 ? true : false,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day3');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day3) {\r\n if (tabledata[0].Day3.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day3.DateColor;\r\n }\r\n if (tabledata[0].Day3.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day3.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day3') &&\r\n this.hasProp(tabledata[0].Day3, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day3.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Day4 Hours',\r\n field: 'Day4.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tabledata[0].Day4 ? true : false,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day4');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day4) {\r\n if (tabledata[0].Day4.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day4.DateColor;\r\n }\r\n if (tabledata[0].Day4.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day4.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day4') &&\r\n this.hasProp(tabledata[0].Day4, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day4.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Day5 Hours',\r\n field: 'Day5.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n\r\n // return cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tabledata[0].Day5 ? true : false,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day5');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day5) {\r\n if (tabledata[0].Day5.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day5.DateColor;\r\n }\r\n if (tabledata[0].Day5.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day5.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day5') &&\r\n this.hasProp(tabledata[0].Day5, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day5.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Day6 Hours',\r\n field: 'Day6.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tabledata[0].Day6 ? true : false,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day6');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day6) {\r\n if (tabledata[0].Day6.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day6.DateColor;\r\n }\r\n if (tabledata[0].Day6.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day6.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day6') &&\r\n this.hasProp(tabledata[0].Day6, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day6.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Day7 Hours',\r\n field: 'Day7.EmployeeHours',\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n width: 58,\r\n headerSort: false,\r\n editor: 'number',\r\n validator: maxHoursValidation,\r\n editable: editCheck,\r\n visible: tc.PeriodHasSplitDay,\r\n formatter: statusColor,\r\n tooltip: c => {\r\n const row = c.getRow();\r\n const rowdata = row.getData();\r\n return tc.generateToolTips(c, rowdata, 'Day7');\r\n },\r\n titleFormatter: c => {\r\n if (tabledata[0].Day7) {\r\n if (tabledata[0].Day7.DateColor != null) {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().style.color =\r\n tabledata[0].Day7.DateColor;\r\n }\r\n if (tabledata[0].Day7.DatePurpose != null) {\r\n c.getElement().title =\r\n tabledata[0].Day7.DatePurpose;\r\n }\r\n if (\r\n this.hasProp(tabledata[0], 'Day7') &&\r\n this.hasProp(tabledata[0].Day7, 'WorkDateHdr')\r\n ) {\r\n const splithdr =\r\n tabledata[0].Day7.WorkDateHdr.split(' ');\r\n return `${splithdr[0]}
${splithdr[1]}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n title: 'Weekly
Total',\r\n field: 'weeklyTotal',\r\n hozAlign: 'center',\r\n width: 58,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n headerSort: false,\r\n formatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n const row = cell.getRow();\r\n const rowdata = row.getData();\r\n const updatedData = tc.sortedByTask.find(\r\n x => x.empAuthID === rowdata.empAuthID\r\n );\r\n cell.getElement().style.fontWeight = 'bold';\r\n cell.getElement().classList.add('disabledTimeCardCell');\r\n return cell.getValue()\r\n ? cell.getValue()\r\n : updatedData.weeklyTotal;\r\n }\r\n },\r\n {\r\n title: 'Documented
Total',\r\n field: 'TotalDocumentedHours',\r\n hozAlign: 'center',\r\n width: 75,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n headerSort: false,\r\n formatter: cell => {\r\n cell.getElement().style.height = '35px';\r\n cell.getElement().style.lineHeight = '27px';\r\n const row = cell.getRow();\r\n const rowdata = row.getData();\r\n const updatedData = tc.sortedByTask.find(\r\n x => x.empAuthID === rowdata.empAuthID\r\n );\r\n cell.getElement().style.fontWeight = 'bold';\r\n cell.getElement().classList.add('disabledTimeCardCell');\r\n return cell.getValue()\r\n ? cell.getValue()\r\n : updatedData.TotalDocumentedHours;\r\n }\r\n },\r\n { title: '', field: 'Row_Version', width: 55, visible: false }\r\n ],\r\n cellEdited: cell => {\r\n const row = cell.getRow();\r\n const rowdata = row.getData();\r\n const column = cell.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n if (cell.getValue() != null) {\r\n if (rowdata[day].InterfaceType == \"Timer\") {\r\n this.confirmservice\r\n .confirmPromise({\r\n headerText: \"Are you sure?\",\r\n dialogText:\r\n `Updating this time entry will override timer activity.`,\r\n okText: 'Yes',\r\n cancelText: 'No'\r\n })\r\n .then(() => {\r\n if (this.isSuperUser) {\r\n if (this.requireTimeSubmit) {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[0].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[1].Forecolor_Hex;\r\n } else {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[0].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[2].Backcolor_hex;\r\n }\r\n }\r\n if (this.isUser) {\r\n if (this.requireTimeSubmit) {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[1].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[1].Forecolor_Hex;\r\n } else {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[2].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[2].Forecolor_Hex;\r\n }\r\n }\r\n const numberOfDecimals = tc.countDecimals(+cell.getValue());\r\n if (numberOfDecimals <= +tc.companySettings[0].SettingValue) {\r\n tc.updateTime(cell);\r\n } else {\r\n tc.revertRowToPreviousValue(cell);\r\n alert(\r\n `Hours are entered with up to ${tc.companySettings[0].SettingValue} decimals places.`\r\n );\r\n }\r\n return;\r\n })\r\n .catch(() => {\r\n this.revertRowToPreviousValue(cell);\r\n return;\r\n });\r\n } else {\r\n if (this.isSuperUser) {\r\n if (this.requireTimeSubmit) {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[0].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[1].Forecolor_Hex;\r\n } else {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[0].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[2].Backcolor_hex;\r\n }\r\n }\r\n if (this.isUser) {\r\n if (this.requireTimeSubmit) {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[1].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[1].Forecolor_Hex;\r\n } else {\r\n cell.getElement().style.backgroundColor =\r\n tc.userWebColors[2].Backcolor_hex;\r\n cell.getElement().style.color =\r\n tc.userWebColors[2].Forecolor_Hex;\r\n }\r\n }\r\n const numberOfDecimals = tc.countDecimals(+cell.getValue());\r\n if (numberOfDecimals <= +tc.companySettings[0].SettingValue) {\r\n tc.updateTime(cell);\r\n } else {\r\n tc.revertRowToPreviousValue(cell);\r\n alert(\r\n `Hours are entered with up to ${tc.companySettings[0].SettingValue} decimals places.`\r\n );\r\n }\r\n }\r\n } else {\r\n cell.getElement().style.backgroundColor = 'white';\r\n cell.getElement().style.color = 'black';\r\n }\r\n // const numberOfDecimals = tc.countDecimals(+cell.getValue());\r\n // if (numberOfDecimals <= +tc.companySettings[0].SettingValue) {\r\n // tc.updateTime(cell);\r\n // } else {\r\n // tc.revertRowToPreviousValue(cell);\r\n // alert(\r\n // `Hours are entered with up to ${tc.companySettings[0].SettingValue} decimals places.`\r\n // );\r\n // }\r\n\r\n this.disableRefreshButton = false;\r\n },\r\n cellEditing: cell => {\r\n tc.log.verbose({\r\n type: 'TimeCardPresenterComponent:tabTimeCard:cellEditing',\r\n cell: cell.getValue()\r\n });\r\n },\r\n cellClick: (e, cell) => {\r\n tc.log.verbose({\r\n type: 'TimeCardPresenterComponent:tabTimeCard:cellClick',\r\n cell: cell.getValue()\r\n });\r\n const value = cell.getRow().getData();\r\n tc.log.verbose({\r\n type: 'TimeCardPresenterComponent:tabTimeCard:cellClick',\r\n value\r\n });\r\n if (tc.isSupervisor == false && tc.isTaskManager == false) {\r\n if (cell.getValue() || cell.getValue() === 0) {\r\n e.currentTarget.children[0].select();\r\n }\r\n }\r\n },\r\n cellTap: (e, cell) => {\r\n if (tc.isSupervisor == false && tc.isTaskManager == false) {\r\n if (cell.getValue() || cell.getValue() === 0) {\r\n e.currentTarget.children[0].select();\r\n }\r\n }\r\n },\r\n rowClick: this.tabService.rowMouseHandler,\r\n rowTap: this.tabService.rowMouseHandler,\r\n cellDblClick: (e, c) => {\r\n if (c.getValue() || c.getValue() == 0) {\r\n const row = c.getRow();\r\n tc.currentRow = row;\r\n const rowdata = row.getData();\r\n const column = c.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n tc.currentDay = day;\r\n tc.selectedCellValue = c.getValue();\r\n tc.selectedCellDate = moment(rowdata[day].WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n tc.selectedCellTask = rowdata.task;\r\n if (tc.isSupervisor == true || tc.isTaskManager == true) {\r\n switch (rowdata[day].TimeStatus) {\r\n case 0.0:\r\n tc.selectedCellStatus = 'Saved';\r\n tc.displayManagementActionErrorDialog();\r\n break;\r\n case 1.0:\r\n tc.selectedCellStatus = 'Signed';\r\n tc.displayManagementActionDialog();\r\n break;\r\n case 1.5:\r\n tc.selectedCellStatus = 'Validated';\r\n tc.displayManagementActionDialog();\r\n break;\r\n case 2.0:\r\n tc.selectedCellStatus = 'Approved';\r\n tc.displayManagementActionDialog();\r\n break;\r\n case 3.0:\r\n tc.selectedCellStatus = 'Disapproved';\r\n tc.displayManagementActionDialog();\r\n break;\r\n default:\r\n tc.selectedCellStatus = '';\r\n break;\r\n }\r\n\r\n } else {\r\n if (rowdata[day].EmpTimeID != null) {\r\n tc.AddDocumentation.next(tc.getTimecardDay(c));\r\n }\r\n }\r\n }\r\n },\r\n cellDblTap: (e, c) => {\r\n if (c.getValue() || c.getValue() == 0) {\r\n const row = c.getRow();\r\n tc.currentRow = row;\r\n const rowdata = row.getData();\r\n const column = c.getColumn();\r\n const columnDef = column.getDefinition();\r\n const columnField = columnDef.field.split('.')[0];\r\n const day = columnField;\r\n tc.currentDay = day;\r\n tc.selectedCellValue = c.getValue();\r\n tc.selectedCellDate = moment(rowdata[day].WorkDate).format(\r\n 'MM/DD/YYYY'\r\n );\r\n tc.selectedCellTask = rowdata.task;\r\n if (tc.isSupervisor == true || tc.isTaskManager == true) {\r\n switch (rowdata[day].TimeStatus) {\r\n case 0.0:\r\n tc.selectedCellStatus = 'Saved';\r\n break;\r\n case 1.0:\r\n tc.selectedCellStatus = 'Signed';\r\n break;\r\n case 1.5:\r\n tc.selectedCellStatus = 'Validated';\r\n break;\r\n case 2.0:\r\n tc.selectedCellStatus = 'Approved';\r\n break;\r\n case 3.0:\r\n tc.selectedCellStatus = 'Disapproved';\r\n break;\r\n default:\r\n tc.selectedCellStatus = '';\r\n break;\r\n }\r\n tc.displayManagementActionDialog();\r\n } else {\r\n if (rowdata[day].EmpTimeID != null) {\r\n tc.AddDocumentation.next(tc.getTimecardDay(c));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n // }\r\n }\r\n\r\n displayManagementActionDialog() {\r\n this.showManagementActionDialog = true;\r\n }\r\n\r\n displayManagementActionErrorDialog() {\r\n this.showManagementActionErrorDialog = true;\r\n }\r\n\r\n refreshStatus() {\r\n this.pivot = true;\r\n this.isRefreshing = true;\r\n const date = this.sortedByTask[0].Day0.WorkDate.toString();\r\n if (this.isDRSelected) {\r\n this.refreshStatusEE.emit({\r\n empListID: this.directReportListID,\r\n date: date,\r\n direction: ''\r\n });\r\n } else {\r\n this.refreshStatusEE.emit({\r\n empListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n date: date,\r\n direction: ''\r\n });\r\n }\r\n this.disableRefreshButton = true;\r\n }\r\n\r\n onDateForRangeSelected(value) {\r\n this.log.verbose({\r\n type: 'TimeCardPresenterComponent:onDateForRangeSelected',\r\n value\r\n });\r\n\r\n if (this.firstDate != null) {\r\n this.secondDate = value;\r\n } else {\r\n this.firstDate = value;\r\n }\r\n if (this.firstDate != null && this.secondDate != null) {\r\n if (this.firstDate > this.secondDate) {\r\n this.firstDate = value;\r\n this.secondDate = null;\r\n this.fullDateRangeSelected = false;\r\n } else {\r\n this.fullDateRangeSelected = true;\r\n this.firstDate = null;\r\n this.secondDate = null;\r\n }\r\n } else {\r\n this.fullDateRangeSelected = false;\r\n }\r\n }\r\n\r\n createTabulatorForManagementUsers(\r\n tc: TimeCardPresenterComponent,\r\n tableData: any,\r\n errors: Array\r\n ) {\r\n let headerClicked;\r\n function columnVisibility() {\r\n if (tc.userWebColors) {\r\n const validateColor = tc.userWebColors.find(\r\n x => x.Status === 'Validated'\r\n );\r\n if (validateColor == null) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n if (this.isSupervisor || this.isTaskManager) {\r\n this.tabManagement = new Tabulator('#tabManagement', {\r\n placeholder: 'No Data Available',\r\n height: '50.15vh',\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n data: tableData,\r\n tooltipGenerationMode: 'hover',\r\n index: 'EmployeeListID',\r\n rowSelectionChanged: function (data, rows) {\r\n // rows - array of row components for the selected rows in order of selection\r\n // data - array of data objects for the selected rows in order of selection\r\n if (rows.length > 0) {\r\n for (let i = 0; i < rows.length; i++) {\r\n const rowdata = rows[i].getData();\r\n tc.dRtoAdd.push({\r\n EmployeeListID: rowdata.EmployeeListID,\r\n EmployeeName: 'na',\r\n IsActive: 1\r\n });\r\n }\r\n if (\r\n tc.fullDateRangeSelected === true &&\r\n tc.dRtoAdd.length > 0\r\n ) {\r\n tc.IsDisabled = false;\r\n }\r\n if (tc.dRtoAdd.length === 0) {\r\n tc.IsDisabled = true;\r\n }\r\n tc.selectedDirectReports = tc.dRtoAdd;\r\n tc.dRtoAdd = [];\r\n }\r\n if (rows.length == 0) {\r\n tc.IsDisabled = true;\r\n }\r\n },\r\n columns: [\r\n {\r\n title: 'Id',\r\n field: 'ListID',\r\n visible: false,\r\n formatter: cell => {\r\n tc.mgmtCell = cell;\r\n },\r\n frozen: true\r\n },\r\n // Selected\r\n {\r\n formatter: 'rowSelection',\r\n titleFormatter: 'rowSelection',\r\n hozAlign: 'center',\r\n headerSort: false,\r\n width: 50,\r\n frozen: true\r\n },\r\n // Page Specific Columns\r\n {\r\n title: 'Name',\r\n field: 'UserName',\r\n headerTooltip: true,\r\n frozen: true,\r\n minWidth: 150\r\n },\r\n {\r\n title: 'Saved',\r\n field: 'Saved',\r\n headerTooltip: true,\r\n titleFormatter: c => {\r\n return `Sav`;\r\n },\r\n tooltip: c => {\r\n return 'Saved';\r\n },\r\n visible: this.requireTimeSubmit,\r\n width: 57,\r\n hozAlign: 'center',\r\n formatter: c => {\r\n const value = c.getValue();\r\n const data = c.getData();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n c.getElement().style.backgroundColor = 'white';\r\n c.getElement().style.color = 'black';\r\n }\r\n if (value) {\r\n const color = tc.userWebColors.find(\r\n x => x.Status === 'Saved'\r\n );\r\n if (color != null) {\r\n c.getElement().style.backgroundColor =\r\n color.Backcolor_hex;\r\n c.getElement().style.color =\r\n color.Forecolor_Hex;\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n title: 'Signed',\r\n field: 'Signed',\r\n headerTooltip: true,\r\n titleFormatter: c => {\r\n return `Sig`;\r\n },\r\n tooltip: c => {\r\n return 'Signed';\r\n },\r\n width: 55,\r\n hozAlign: 'center',\r\n formatter: c => {\r\n const value = c.getValue();\r\n const data = c.getData();\r\n if (value === '') {\r\n c.getElement().style.backgroundColor = 'white';\r\n c.getElement().style.color = 'black';\r\n c.setValue(null, true);\r\n }\r\n\r\n if (value) {\r\n const color = tc.userWebColors.find(\r\n x => x.Status === 'Signed'\r\n );\r\n if (color != null) {\r\n c.getElement().style.backgroundColor =\r\n color.Backcolor_hex;\r\n c.getElement().style.color =\r\n color.Forecolor_Hex;\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n title: 'Validated',\r\n field: 'Validated',\r\n headerTooltip: true,\r\n titleFormatter: c => {\r\n return `Val`;\r\n },\r\n tooltip: c => {\r\n return 'Validated';\r\n },\r\n visible: columnVisibility(),\r\n width: 55,\r\n hozAlign: 'center',\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n c.getElement().style.backgroundColor = 'white';\r\n c.getElement().style.color = 'black';\r\n return value;\r\n }\r\n if (value) {\r\n const color = tc.userWebColors.find(\r\n x => x.Status === 'Validated'\r\n );\r\n if (color != null) {\r\n c.getElement().style.backgroundColor =\r\n color.Backcolor_hex;\r\n c.getElement().style.color =\r\n color.Forecolor_Hex;\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n title: 'Approved',\r\n field: 'Approved',\r\n headerTooltip: true,\r\n titleFormatter: c => {\r\n return `App`;\r\n },\r\n tooltip: c => {\r\n return 'Approved';\r\n },\r\n width: 59,\r\n hozAlign: 'center',\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n c.getElement().style.backgroundColor = 'white';\r\n c.getElement().style.color = 'black';\r\n return value;\r\n }\r\n if (value) {\r\n const color = tc.userWebColors.find(\r\n x => x.Status === 'Approved'\r\n );\r\n if (color != null) {\r\n c.getElement().style.backgroundColor =\r\n color.Backcolor_hex;\r\n c.getElement().style.color =\r\n color.Forecolor_Hex;\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n title: 'Disapproved',\r\n field: 'Disapproved',\r\n headerTooltip: true,\r\n titleFormatter: c => {\r\n return `Dis`;\r\n },\r\n tooltip: c => {\r\n return 'Disapproved';\r\n },\r\n width: 55,\r\n hozAlign: 'center',\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n c.getElement().style.backgroundColor = 'white';\r\n c.getElement().style.color = 'black';\r\n return value;\r\n }\r\n if (value) {\r\n const color = tc.userWebColors.find(\r\n x => x.Status === 'Disapproved'\r\n );\r\n if (color != null) {\r\n c.getElement().style.backgroundColor =\r\n color.Backcolor_hex;\r\n c.getElement().style.color =\r\n color.Forecolor_Hex;\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n title: 'Leave',\r\n field: 'LeaveAccrualInfo',\r\n headerTooltip: true,\r\n width: 150\r\n },\r\n {\r\n title: 'Manually Locked',\r\n field: 'LockedDate',\r\n headerTooltip: true,\r\n width: 150,\r\n formatter: cell => {\r\n if (cell.getValue()) {\r\n return moment(cell.getValue()).format(\r\n 'MM/DD/YYYY'\r\n );\r\n } else {\r\n return cell.getValue();\r\n }\r\n }\r\n },\r\n { title: '', field: 'Row_Version', visible: false }\r\n ],\r\n cellEdited: this.tabService.cellEdited,\r\n cellEditing: this.tabService.cellEditing,\r\n cellClick: this.tabService.cellMouseHandler,\r\n cellTap: this.tabService.cellMouseHandler,\r\n rowClick: (e, row) => {\r\n const data = row.getData();\r\n tc.isDRSelected = true;\r\n this.pivot = true;\r\n const rows = tc.tabManagement.getRows();\r\n rows.forEach(row => {\r\n row.getElement().classList.remove('highlight');\r\n });\r\n this.prevButtonHidden = false;\r\n this.nextButtonHidden = false;\r\n this.displayDocWarning = false;\r\n this.dRSelectedSubject.next(data);\r\n tc.DRName = data.UserName;\r\n tc.directReportListID = data.EmployeeListID;\r\n tc.selectedDRRow = row;\r\n row.getElement().classList.add('highlight');\r\n tc.tabTimeCard.clearData();\r\n this.detailsLabel = `HR Details for ${data.UserName}`;\r\n if (tc.managementActionEndDate == null) {\r\n tc.managementActionEndDate = moment(new Date()).format(\r\n 'MM/DD/YYYY'\r\n );\r\n }\r\n const dataToEmit = {\r\n EmployeeListID: data.EmployeeListID,\r\n TimeCardDate: tc.mgmtDateRangeStart,\r\n Direction: null\r\n };\r\n if (this.isSupervisor) {\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Approval Period';\r\n } else if (this.isTaskManager) {\r\n this.weeklySummaryHeader =\r\n 'Weekly Summary for Validate Period';\r\n } else {\r\n if (data.AccountNumber != null) {\r\n this.weeklySummaryHeader =\r\n 'Weekly View' +\r\n '\\xa0\\xa0' +\r\n data.UserName +\r\n '\\xa0\\xa0' +\r\n data.WebEntryPeriod;\r\n } else {\r\n this.weeklySummaryHeader =\r\n 'Weekly View' +\r\n '\\xa0\\xa0' +\r\n data.UserName +\r\n '\\xa0\\xa0' +\r\n data.WebEntryPeriod;\r\n }\r\n }\r\n },\r\n rowTap: this.tabService.rowMouseHandler\r\n });\r\n }\r\n }\r\n\r\n createEmptyWeeklyTabulator(\r\n tc: TimeCardPresenterComponent,\r\n container: string\r\n ) {\r\n this.tabWeeklySummary = new Tabulator(container, {\r\n placeholder: this.emptyWeeklyTabPlaceholder,\r\n height: tc.dynamicSummaryTableHeight,\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n data: [],\r\n index: 'empAuthID',\r\n renderComplete: function () {\r\n if (tc.timecardData.length > 0) {\r\n tc.IsLoading = false;\r\n } else {\r\n tc.IsLoading = true;\r\n }\r\n },\r\n columns: []\r\n });\r\n }\r\n createTabulatorForWeeklySummary(\r\n tc: TimeCardPresenterComponent,\r\n errors: Array,\r\n tableData: any\r\n ) {\r\n const headerClicked = false;\r\n\r\n const roundValue = function (cell, places) {\r\n const value = +cell.getValue();\r\n const factor = 10 ** places;\r\n return Math.round(value * factor) / factor;\r\n };\r\n\r\n this.tabWeeklySummary = new Tabulator('#tabWeeklySummary', {\r\n placeholder: 'No Data Available',\r\n height: tc.dynamicSummaryTableHeight,\r\n autoResize: true,\r\n layout: 'fitColumns',\r\n data: tableData,\r\n columns: [\r\n { title: 'Id', field: 'ListID', visible: false },\r\n // Selected\r\n // 3 Page Specific Columns\r\n {\r\n title: 'Task',\r\n field: 'task',\r\n\r\n minWidth: 275\r\n },\r\n {\r\n title: 'Payroll Item',\r\n field: 'payrollItem',\r\n width: 300,\r\n visible: false\r\n },\r\n {\r\n title: 'Authorization Period',\r\n field: 'empAuthPeriod',\r\n width: 150,\r\n visible: true\r\n },\r\n {\r\n title: 'Available Hours',\r\n field: 'availableHours',\r\n width: 150,\r\n editable: false,\r\n visible: tableData[0].showAvailHours\r\n },\r\n {\r\n title: 'Week0 Hours',\r\n field: 'Week0.EmployeeHours',\r\n width: 125,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n editable: false,\r\n visible: tableData[0].Week0 ? true : false,\r\n headerClick: () => {\r\n tc.weeklyHeaderClicked(0);\r\n },\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value) {\r\n return value;\r\n } else {\r\n if (value === '') {\r\n return null;\r\n } else {\r\n return value;\r\n }\r\n }\r\n },\r\n titleFormatter: () => {\r\n if (tableData[0].Week0) {\r\n tc.timeweek0 = tableData[0].Week0.TimeWeek;\r\n const b = document.createElement('button');\r\n const node = document.createTextNode(tc.timeweek0);\r\n b.appendChild(node);\r\n b.classList.add('btn');\r\n b.classList.add('btn-link');\r\n b.classList.add('weekHeader');\r\n b.style.color = 'white';\r\n b.style.fontSize = '11px';\r\n b.style.padding = '0';\r\n if (b != null) {\r\n return b;\r\n } else {\r\n return tc.timeweek0;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n title: 'Week1 Hours',\r\n field: 'Week1.EmployeeHours',\r\n width: 145,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n editable: false,\r\n visible: tableData[0].Week1 ? true : false,\r\n headerClick: () => {\r\n tc.weeklyHeaderClicked(1);\r\n },\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n titleFormatter: () => {\r\n if (tableData[0].Week1) {\r\n tc.timeweek1 = tableData[0].Week1.TimeWeek;\r\n const b = document.createElement('button');\r\n const node = document.createTextNode(tc.timeweek1);\r\n b.appendChild(node);\r\n b.classList.add('btn');\r\n b.classList.add('btn-link');\r\n b.classList.add('weekHeader');\r\n b.style.color = 'white';\r\n b.style.fontSize = '11px';\r\n b.style.padding = '0';\r\n if (b != null) {\r\n return b;\r\n } else {\r\n return tc.timeweek1;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n title: 'Week2 Hours',\r\n field: 'Week2.EmployeeHours',\r\n width: 145,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n editable: false,\r\n visible: tableData[0].Week2 ? true : false,\r\n headerClick: () => {\r\n tc.weeklyHeaderClicked(2);\r\n },\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n titleFormatter: () => {\r\n if (tableData[0].Week2) {\r\n tc.timeweek2 = tableData[0].Week2.TimeWeek;\r\n const b = document.createElement('button');\r\n const node = document.createTextNode(tc.timeweek2);\r\n b.appendChild(node);\r\n b.classList.add('btn');\r\n b.classList.add('btn-link');\r\n b.classList.add('weekHeader');\r\n b.style.color = 'white';\r\n b.style.fontSize = '11px';\r\n b.style.padding = '0';\r\n if (b != null) {\r\n return b;\r\n } else {\r\n return tc.timeweek2;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n title: 'Week3 Hours',\r\n field: 'Week3.EmployeeHours',\r\n width: 145,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n editable: false,\r\n visible: tableData[0].Week3 ? true : false,\r\n headerClick: () => {\r\n tc.weeklyHeaderClicked(3);\r\n },\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n titleFormatter: () => {\r\n if (tableData[0].Week3) {\r\n tc.timeweek3 = tableData[0].Week3.TimeWeek;\r\n const b = document.createElement('button');\r\n const node = document.createTextNode(tc.timeweek3);\r\n b.appendChild(node);\r\n b.classList.add('btn');\r\n b.classList.add('btn-link');\r\n b.classList.add('weekHeader');\r\n b.style.color = 'white';\r\n b.style.fontSize = '11px';\r\n b.style.padding = '0';\r\n if (b != null) {\r\n return b;\r\n } else {\r\n return tc.timeweek3;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n title: 'Week4 Hours',\r\n field: 'Week4.EmployeeHours',\r\n width: 145,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n editable: false,\r\n visible: tableData[0].Week4 ? true : false,\r\n headerClick: () => {\r\n tc.weeklyHeaderClicked(4);\r\n },\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n titleFormatter: () => {\r\n if (tableData[0].Week4) {\r\n tc.timeweek4 = tableData[0].Week4.TimeWeek;\r\n const b = document.createElement('button');\r\n const node = document.createTextNode(tc.timeweek4);\r\n b.appendChild(node);\r\n b.classList.add('btn');\r\n b.classList.add('btn-link');\r\n b.classList.add('weekHeader');\r\n b.style.color = 'white';\r\n b.style.fontSize = '11px';\r\n b.style.padding = '0';\r\n if (b != null) {\r\n return b;\r\n } else {\r\n return tc.timeweek4;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n title: 'Week5 Hours',\r\n field: 'Week5.EmployeeHours',\r\n width: 145,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n editable: false,\r\n visible: tableData[0].Week5 ? true : false,\r\n headerClick: () => {\r\n tc.weeklyHeaderClicked(5);\r\n },\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n titleFormatter: () => {\r\n if (tableData[0].Week5) {\r\n tc.timeweek5 = tableData[0].Week5.TimeWeek;\r\n const b = document.createElement('button');\r\n const node = document.createTextNode(tc.timeweek5);\r\n b.appendChild(node);\r\n b.classList.add('btn');\r\n b.classList.add('btn-link');\r\n b.classList.add('weekHeader');\r\n b.style.color = 'white';\r\n b.style.fontSize = '11px';\r\n b.style.padding = '0';\r\n if (b != null) {\r\n return b;\r\n } else {\r\n return tc.timeweek5;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n title: 'Week6 Hours',\r\n field: 'Week6.EmployeeHours',\r\n width: 145,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n editable: false,\r\n visible: tableData[0].Week6 ? true : false,\r\n headerClick: () => {\r\n tc.weeklyHeaderClicked(6);\r\n },\r\n formatter: c => {\r\n const value = c.getValue();\r\n if (value === '') {\r\n c.setValue(null, true);\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n titleFormatter: () => {\r\n if (tableData[0].Week6) {\r\n tc.timeweek6 = tableData[0].Week6.TimeWeek;\r\n const b = document.createElement('button');\r\n const node = document.createTextNode(tc.timeweek6);\r\n b.appendChild(node);\r\n b.classList.add('btn');\r\n b.classList.add('btn-link');\r\n b.classList.add('weekHeader');\r\n b.style.color = 'white';\r\n b.style.fontSize = '11px';\r\n b.style.padding = '0';\r\n if (b != null) {\r\n return b;\r\n } else {\r\n return tc.timeweek6;\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n title: 'Period Total',\r\n field: 'periodTotal',\r\n width: 100,\r\n bottomCalc: 'sum',\r\n bottomCalcFormatter: cell => {\r\n return tc.companySettings && tc.companySettings[0]\r\n ? roundValue(\r\n cell,\r\n +tc.companySettings[0].SettingValue\r\n )\r\n : cell.getValue();\r\n },\r\n hozAlign: 'center',\r\n headerSort: false,\r\n\r\n formatter: c => {\r\n c.getElement().style.fontWeight = 'bold';\r\n c.getElement().classList.add('disabledTimeCardCell');\r\n return c.getValue() ? c.getValue() : '';\r\n }\r\n },\r\n\r\n { title: '', field: 'Row_Version', visible: false }\r\n ],\r\n cellEdited: this.tabService.cellEdited,\r\n cellEditing: this.tabService.cellEditing,\r\n cellClick: this.tabService.cellMouseHandler,\r\n cellTap: this.tabService.cellMouseHandler,\r\n rowClick: this.tabService.rowMouseHandler,\r\n rowTap: this.tabService.rowMouseHandler\r\n });\r\n }\r\n\r\n onTabClose(e) {\r\n this.tc_panelExpanded = false;\r\n }\r\n\r\n weeklyHeaderClicked(week) {\r\n this.currentCell = null;\r\n this.pivot = true;\r\n this.tc_panelExpanded = true;\r\n this.weeklyHeaderSelected = true;\r\n let dateArr;\r\n let date;\r\n if (week === 0) {\r\n dateArr = this.timeweek0.split(' - ');\r\n date = `${dateArr[0]}`;\r\n } else if (week === 1) {\r\n dateArr = this.timeweek1.split(' - ');\r\n date = `${dateArr[0]}`;\r\n } else if (week === 2) {\r\n dateArr = this.timeweek2.split(' - ');\r\n date = `${dateArr[0]}`;\r\n } else if (week === 3) {\r\n dateArr = this.timeweek3.split(' - ');\r\n date = `${dateArr[0]}`;\r\n } else if (week === 4) {\r\n dateArr = this.timeweek4.split(' - ');\r\n date = `${dateArr[0]}`;\r\n } else if (week === 5) {\r\n dateArr = this.timeweek5.split(' - ');\r\n date = `${dateArr[0]}`;\r\n } else if (week === 6) {\r\n dateArr = this.timeweek6.split(' - ');\r\n date = `${dateArr[0]}`;\r\n } else {\r\n date = '';\r\n }\r\n\r\n if (this.isSupervisor || this.isTaskManager) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.directReportListID,\r\n date: date,\r\n direction: null,\r\n processid: this.process.ProcessID,\r\n endDate: this.mgmtDateRangeEnd\r\n });\r\n }\r\n if (this.isSuperUser) {\r\n if (this.isDRSelected === true) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.directReportListID,\r\n date: date,\r\n direction: null\r\n });\r\n }\r\n }\r\n if (this.isUser) {\r\n this.nextOrPrevious.emit({\r\n empListID: this.sortedByTask[0].Day0.EmployeeListID,\r\n date: date,\r\n direction: null\r\n });\r\n }\r\n }\r\n\r\n resetTaskSortOrder() {\r\n const tasksWithSortOrderReset = this.timecardSequence;\r\n\r\n tasksWithSortOrderReset[0] = {\r\n ...tasksWithSortOrderReset[0],\r\n Tasksortorder: null\r\n };\r\n this.SaveTimecardSequence.next(tasksWithSortOrderReset[0]);\r\n this.LoadTimecardSequence.next();\r\n }\r\n}\r\n\r\nexport interface INextOrPrevious {\r\n empListID: string;\r\n date: string;\r\n direction: string;\r\n processid?: number;\r\n endDate?: Date;\r\n}\r\n\r\nexport interface IFlippedData {\r\n payrollItem: string;\r\n periodTotal: number;\r\n serviceItem: string;\r\n task: string;\r\n weeklyTotal: number;\r\n empAuthID: number;\r\n Day0: ITimeCard;\r\n Day1: ITimeCard;\r\n Day2: ITimeCard;\r\n Day3: ITimeCard;\r\n Day4: ITimeCard;\r\n Day5: ITimeCard;\r\n Day6: ITimeCard;\r\n Day7: ITimeCard;\r\n}\r\nexport interface IFlippedWSData {\r\n availableHours: number;\r\n empAuthPeriod: string;\r\n payrollItem: string;\r\n periodTotal: number;\r\n serviceItem: string;\r\n showAvailHours: boolean;\r\n empAuthID: number;\r\n task: string;\r\n Week0: IWeeklySummary;\r\n Week1: IWeeklySummary;\r\n Week2: IWeeklySummary;\r\n Week3: IWeeklySummary;\r\n Week4: IWeeklySummary;\r\n Week5: IWeeklySummary;\r\n Week6: IWeeklySummary;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TimeCardFeatureComponent } from './time-card-feature/time-card-feature.component';\r\nimport { TimeCardPresenterComponent } from './time-card-presenter/time-card-presenter.component';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromTimeCard from './store/time-card.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { TimeCardEffects } from './store/time-card.effects';\r\nimport { IAuthorizedTasksEffects } from './store/iauthorized-task.effects';\r\nimport { WeeklySummaryEffects } from './store/weekly-summary.effects';\r\nimport { DirectReportsWithTimeStatusEffects } from './store/direct-reports-with-time-status.effects';\r\nimport * as fromAuthorizedTaskR from './store/iauthorized-task.reducer';\r\nimport * as fromWeeklySummaryR from './store/weekly-summary.reducer';\r\nimport * as fromdrwtsR from './store/direct-reports-with-time-status.reducer';\r\nimport * as fromTimcardDoc from './store/time-card-documentation.reducer';\r\nimport { ManagementActionEffects } from './store/management-action.effects';\r\nimport { TimeCardDocumentationFeatureComponent } from './time-card-documentation-feature/time-card-documentation-feature.component';\r\nimport { TimeCardDocumentationEffects } from './store/time-card-documentation.effects';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { UserSelectorModule } from '../user-selector/user-selector.module';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport {\r\n FileUploadModule,\r\n MessagesModule\r\n} from '../shared/efaact-primeng.module';\r\nimport {\r\n TimeCardDocumentationPresenterComponent,\r\n ReduceMaxPipe,\r\n ReduceNumberPipe,\r\n ClassListPipe,\r\n FilterPipe\r\n} from './time-card-documentation-presenter/time-card-documentation-presenter.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { TimeCardSubmitEffects } from './store/time-card-submit.effects';\r\nimport { EntityDataService } from '@ngrx/data';\r\nimport * as fromDataServices from '../data-services';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature(fromTimeCard.timeCardsFeatureKey, fromTimeCard.reducer),\r\n StoreModule.forFeature(fromAuthorizedTaskR.iAuthorizedTasksFeatureKey, fromAuthorizedTaskR.reducer),\r\n StoreModule.forFeature(fromWeeklySummaryR.weeklySummariesFeatureKey, fromWeeklySummaryR.reducer),\r\n StoreModule.forFeature(fromdrwtsR.directReportsWithTimeStatusesFeatureKey, fromdrwtsR.reducer),\r\n StoreModule.forFeature(fromTimcardDoc.timeCardDocumentationsFeatureKey, fromTimcardDoc.reducer),\r\n EffectsModule.forFeature([\r\n TimeCardEffects,\r\n IAuthorizedTasksEffects,\r\n WeeklySummaryEffects,\r\n DirectReportsWithTimeStatusEffects,\r\n TimeCardDocumentationEffects,\r\n ManagementActionEffects,\r\n TimeCardDocumentationEffects,\r\n TimeCardSubmitEffects\r\n ]),\r\n EfaactMaterialModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UserSelectorModule,\r\n MatRadioModule,\r\n SharedModule,\r\n FileUploadModule,\r\n MessagesModule\r\n ],\r\n declarations: [\r\n TimeCardDocumentationFeatureComponent,\r\n TimeCardDocumentationPresenterComponent,\r\n TimeCardFeatureComponent,\r\n TimeCardPresenterComponent,\r\n ReduceMaxPipe,\r\n ReduceNumberPipe,\r\n FilterPipe,\r\n ClassListPipe\r\n ]\r\n})\r\nexport class TimeCardModule {\r\n constructor(\r\n entityDataService: EntityDataService,\r\n ) {\r\n\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport {\r\n Guid,\r\n IDeleteEntity,\r\n IGenericResponse,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../shared';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IAuthorizedTask } from './IAuthorizedTask';\r\nimport { IDirectReportsWithTimeStatus } from './IDirectReportsWithTimeStatus';\r\nimport { IManagementAction } from './IManagementAction';\r\nimport { ITimeCard } from './itime-card';\r\nimport { ITimeCardSubmit } from './ITimeCardSubmit';\r\nimport { IWeeklySummary } from './IWeeklySummary';\r\nimport { TimeCardDocumentation } from './store/time-card-documentation.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TimeCardService {\r\n private uri = `${environment.apiLocation}/TimeCard`;\r\n private submitUri = `${environment.apiLocation}/TimeCardSubmit`;\r\n private taskUri = `${environment.apiLocation}/UserAuthorizedTask`;\r\n private tcwsUri = `${environment.apiLocation}/TimeCardWeeklySummary`;\r\n private drUri = `${environment.apiLocation}/DirectReportwithTimeStatus`;\r\n private maUri = `${environment.apiLocation}/TimeCardManagementAction`;\r\n private docUri = `${environment.apiLocation}/TimeCardDoc`;\r\n private policyUri = `${environment.apiLocation}/UserTimePolicyAccept`;\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n public get(\r\n EmployeeID: string,\r\n TimeCardDate: string,\r\n MyDirection: string,\r\n Processid?: number,\r\n MinEntryDate?: Date,\r\n EndDate?: Date\r\n ): Observable> {\r\n return this.http\r\n .post>(this.uri, {\r\n EmployeeListID: EmployeeID,\r\n TimeCardDate,\r\n MyDirection,\r\n Processid,\r\n EndDate\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({ type: 'TimeCardService:get', data })\r\n ),\r\n map(data => data.map(item => this.mapTimecard(item))),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'TimeCardService:get:transformed',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getTasks(\r\n EmployeeID: string,\r\n AuthType: string,\r\n AsOfDate: Date\r\n ): Observable> {\r\n return this.http\r\n .post>(this.taskUri, {\r\n EmployeeListID: EmployeeID,\r\n AuthType: AuthType,\r\n AsOfDate: AsOfDate\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({ type: 'TimeCardService:getTasks', data })\r\n ),\r\n map(data =>\r\n data.map(x => ({ ...x, id: x.id ? x.id : Guid.newGuid() }))\r\n )\r\n );\r\n }\r\n\r\n public getWeeklySummary(\r\n EmployeeListID: string,\r\n DRListID?: string,\r\n EmpAuthID?: number,\r\n StartDate?: Date,\r\n EndDate?: Date\r\n ): Observable> {\r\n return this.http\r\n .post>(this.tcwsUri, {\r\n EmployeeListID: EmployeeListID,\r\n DRListID: DRListID,\r\n EmpAuthID: EmpAuthID,\r\n StartDate: StartDate,\r\n EndDate: EndDate\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'TimeCardService:getWeeklySummary',\r\n data\r\n })\r\n ),\r\n map(data =>\r\n data.map(x => ({ ...x, id: x.id ? x.id : Guid.newGuid() }))\r\n )\r\n );\r\n }\r\n\r\n public getDirectReportsWithTimeStatus(\r\n UserListID: string,\r\n UserRole: number,\r\n EmployeeListID?: string,\r\n StartDate?: string,\r\n EndDate?: string,\r\n MyDRsOnly?: boolean\r\n ): Observable> {\r\n return this.http\r\n .post>(this.drUri, {\r\n UserListID: UserListID,\r\n UserRole: UserRole,\r\n EmployeeListID: EmployeeListID,\r\n StartDate: StartDate,\r\n EndDate: EndDate,\r\n MyDRsOnly: MyDRsOnly\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'TimeCardService:getDirectReportsWithTimeStatus',\r\n data\r\n })\r\n ),\r\n map(data =>\r\n data.map(x => ({ ...x, id: x.id ? x.id : Guid.newGuid() }))\r\n )\r\n );\r\n }\r\n\r\n public putManagementAction(\r\n managementData: any\r\n ): Observable> {\r\n return this.http\r\n .put>(this.maUri, {\r\n TimeCardManagementActionList: [managementData]\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'TimeCardService:putManagementAction',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public put(\r\n timeCardData: Array\r\n ): Observable> {\r\n this.log.verbose({ type: 'TimeCardService:put', timeCardData });\r\n return this.http\r\n .put>(this.uri, {\r\n Changes: { TimeCardList: timeCardData }\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({ type: 'TimeCardService:put:resp', data })\r\n ),\r\n map(resp => ({\r\n ...resp,\r\n Items: resp.Items.map(item => this.mapTimecard(item))\r\n })),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'TimeCardService:put:resp:mapped',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public deleteTimecardDocumentation(ids: Array) {\r\n this.log.verbose({ type: 'deleteTimecardDocumentation', ids });\r\n\r\n return this.http\r\n .request>('DELETE', this.docUri, {\r\n body: { EntityIDs: ids }\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'deleteTimecardDocumentation:response',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getUserTimePolicyAccept(): any {\r\n return this.http.get(this.policyUri).pipe(res => {\r\n this.log.verbose({ type: 'getUserTimePolicyAccept:reponse', res });\r\n return res;\r\n });\r\n }\r\n\r\n public putTimeCardSubmit(\r\n timeCardSubmitData: Array\r\n ): Observable> {\r\n return this.http\r\n .put>(this.submitUri, {\r\n TimeCardSubmitList: timeCardSubmitData\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'TimeCardService:putTimeCardSubmit',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getTimecardDocumentation(\r\n EmployeeListID: string,\r\n ProcessID: number\r\n ): Observable> {\r\n return this.http\r\n .post>(this.docUri, {\r\n EmployeeListID,\r\n ProcessID\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({ type: 'getTimecardDocumentation', data })\r\n ),\r\n map(a => a.map(x => this.mapTimecardDoc(x)))\r\n );\r\n }\r\n\r\n public putTimecardDocumentation(\r\n docs: Array>\r\n ): Observable> {\r\n this.log.verbose({ type: 'putTimecardDocumentation', docs });\r\n return this.http\r\n .put>(this.docUri, {\r\n TimeCardDocList: docs\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'putTimecardDocumentation:response',\r\n data\r\n })\r\n ),\r\n map(a => ({\r\n ...a,\r\n Items: a.Items.map(x => this.mapTimecardDoc(x)).map(x => ({\r\n ...x,\r\n Status: {\r\n ...(x.Status as IStatusMessage),\r\n StatusCode: ResponseStatus.Success\r\n }\r\n }))\r\n }))\r\n );\r\n }\r\n private mapTimecardDoc(item: TimeCardDocumentation): TimeCardDocumentation {\r\n return {\r\n ...item,\r\n id: `${item.EmpTimeID}-${item.WorkID}`,\r\n EmployeeWorkDate: moment(item.EmployeeWorkDate).toDate()\r\n };\r\n }\r\n\r\n private mapTimecard(item: ITimeCard): ITimeCard {\r\n return {\r\n ...item,\r\n id: item.EmpAuthID + item.WorkDateHdr\r\n };\r\n }\r\n}\r\n","export * from './service';\r\nexport * from './toaster-container';\r\nexport * from './toaster-presenter';\r\n","export * from './toaster-service';\r\n","import { Injectable } from '@angular/core';\r\nimport { Message, MessageService } from 'primeng/api';\r\nimport { Observable } from 'rxjs';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { Toast, ToastType } from '../../data-services/toaster/toast.model';\r\nimport { Guid } from '../../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToasterService {\r\n constructor(private _toaster: MessageService) {}\r\n addToast: Observable;\r\n clearToasts: Observable;\r\n removeToast: Observable;\r\n\r\n /**\r\n * Synchronously create and show a new toast instance.\r\n *\r\n * @param {(string | Toast)} type The type of the toast, or a Toast object.\r\n * @param {string=} title The toast title.\r\n * @param {string=} body The toast body.\r\n * @returns {Toast}\r\n * The newly created Toast instance with a randomly generated GUID Id.\r\n */\r\n pop(\r\n type: string | Partial,\r\n title?: string,\r\n body?: string,\r\n key?: string\r\n ): Toast {\r\n let msg: Message;\r\n if (typeof type === 'string') {\r\n msg = {\r\n severity: type,\r\n summary: title,\r\n detail: body,\r\n closable: true,\r\n life: 5000,\r\n key: key ?? 'ef-global-toast'\r\n } as Message;\r\n } else {\r\n msg = type as Message;\r\n msg = {\r\n ...type,\r\n summary: type.title,\r\n detail: type.body,\r\n severity: type.type,\r\n key: type.toastContainerId ?? 'ef-global-toast',\r\n life: type.timeout ?? 5000,\r\n sticky: type.sticky ?? false\r\n };\r\n }\r\n this._toaster.add(msg);\r\n return {\r\n ...msg,\r\n type: msg.severity as ToastType,\r\n id: Guid.newGuid().toString()\r\n };\r\n }\r\n /**\r\n * Clears a toast by toastId and/or toastContainerId.\r\n *\r\n * @param {string} key The key of the container to remove toasts from.\r\n */\r\n clear(key?: string): void {\r\n this._toaster.clear(key ?? 'ef-global-toast');\r\n }\r\n}\r\n","export * from './toaster-container.component';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport clone from 'just-clone';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-toaster-container',\r\n templateUrl: './toaster-container.component.html',\r\n styleUrls: ['./toaster-container.component.scss']\r\n})\r\nexport class ToasterContainerComponent implements OnInit {\r\n ToasterModelDS: EntityCollectionService;\r\n ToasterModel$: Observable;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices\r\n ) {\r\n this.log.verbose({ type: 'ToasterContainerComponent::' });\r\n this.ToasterModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Toaster.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.ToasterModelDS.clearCache();\r\n // this.ToasterModelDS.getAll();\r\n this.ToasterModel$ = this.ToasterModelDS.entities$.pipe(\r\n map(items => [...clone(items)])\r\n );\r\n }\r\n}\r\n","export * from './toaster-presenter.component';\r\n","import { Component } from '@angular/core';\r\nimport { ToasterService } from '../service';\r\n\r\n@Component({\r\n selector: 'ef-toaster-presenter',\r\n templateUrl: './toaster-presenter.component.html',\r\n styleUrls: ['./toaster-presenter.component.scss']\r\n})\r\nexport class ToasterPresenter {\r\n constructor(private toaster: ToasterService) {}\r\n clearToast() {\r\n this.toaster.clear('ef-global-toast');\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ToasterService } from './service';\r\nimport { ToasterContainerComponent } from './toaster-container';\r\nimport { ToasterPresenter } from './toaster-presenter';\r\n\r\n@NgModule({\r\n declarations: [ToasterContainerComponent, ToasterPresenter],\r\n imports: [CommonModule, ToastModule],\r\n exports: [ToasterContainerComponent, ToasterPresenter],\r\n providers: [MessageService, ToasterService]\r\n})\r\nexport class EFToasterModule {}\r\n","export * from './store';\r\nexport * from './user-authorization-container';\r\nexport * from './user-authorization';\r\nexport * from './user-authorization.route';\r\nexport * from './user-authorizations.module';\r\n","import { DataServiceEntity } from '../../data-services/data-service.entity';\r\n\r\nexport interface IUserAuthorization\r\n extends DataServiceEntity {\r\n AuthDesc?: string;\r\n AuthTypeId?: Number;\r\n ChargeNumber?: string;\r\n ClassListID?: string;\r\n ContractDesc?: string;\r\n Emp_IsActive?: boolean;\r\n EmpAuthEndDate?: Date;\r\n EmpAuthID?: number;\r\n EmpAuthStartDate?: Date;\r\n EmployeeListID?: string;\r\n EmployeeName?: string;\r\n HoursWorked?: Number;\r\n IsHoliday?: boolean;\r\n MaxHours?: Number;\r\n ModifiedDateTime?: Date;\r\n PI_IsActive?: boolean;\r\n PIListID?: string;\r\n PayrollItem?: string;\r\n PremiumPayIndicator?: boolean;\r\n selected?: boolean;\r\n ShowPI?: boolean;\r\n ShowSI?: boolean;\r\n SI_IsActive?: boolean;\r\n SIListID?: string;\r\n ServiceItem?: string;\r\n SubcontractorListID?: null;\r\n Task_IsActive?: boolean;\r\n TaskListID?: string;\r\n TaskLongName?: string;\r\n TaskName?: string;\r\n UserListID?: string;\r\n}\r\n","export interface IUserAuthorizationRequest {\r\n EmployeeAuthEndDate: Date;\r\n DirectReports: Array;\r\n Tasks: [\r\n {\r\n TaskListID: string;\r\n TaskLongName: string;\r\n IsActive: true;\r\n LaborType: string;\r\n }\r\n ];\r\n ServiceItems: Array;\r\n Classes: Array;\r\n AuthTypes: Array;\r\n}\r\n","import { IUserAuthorization } from './IUserAuthorization';\r\nimport { IStatusMessage, IGenericResponse } from '../../shared';\r\n\r\nexport interface IUserAuthorizationResponse\r\n extends IGenericResponse {}\r\n\r\nexport interface IResponse extends IGenericResponse {}\r\n\r\nexport interface IResponseItem {\r\n EntityID: number;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","export * from './user-authorization.model';\r\nexport * from './user-authorization.reducer';\r\nexport * from './user-authorization.actions';\r\nexport * from './user-authorization.effects';\r\nexport * from './user-authorization.selectors';\r\nexport * from './pending-authorization.model';\r\nexport * from './IUserAuthorizationRequest';\r\nexport * from './IUserAuthorizationResponse';\r\nexport * from './IUserAuthorization';\r\n","export interface PendingAuthorization {\r\n AuthType: string;\r\n EmployeeName: string;\r\n PayrollItem: string;\r\n ServiceItem: string;\r\n Showpi: boolean;\r\n Showsi: boolean;\r\n TaskLongName: string;\r\n}\r\n","import { Update } from '@ngrx/entity';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { PendingAuthorization } from '.';\r\nimport {\r\n IAuthorizationClass,\r\n IAuthorizationType,\r\n IDirectReport,\r\n IServiceItem,\r\n ITask\r\n} from '../../lookups';\r\nimport { UserAuthorization } from './user-authorization.model';\r\n\r\nexport const loadUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Load UserAuthorizations',\r\n props<{ userAuthorizations: UserAuthorization[] }>()\r\n);\r\n\r\nexport const addUserAuthorization = createAction(\r\n '[UserAuthorization/API] Add UserAuthorization',\r\n props<{ userAuthorization: UserAuthorization }>()\r\n);\r\n\r\nexport const upsertUserAuthorization = createAction(\r\n '[UserAuthorization/API] Upsert UserAuthorization',\r\n props<{ userAuthorization: UserAuthorization }>()\r\n);\r\n\r\nexport const addUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Add UserAuthorizations',\r\n props<{ userAuthorizations: UserAuthorization[] }>()\r\n);\r\n\r\nexport const upsertUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Upsert UserAuthorizations',\r\n props<{ userAuthorizations: UserAuthorization[] }>()\r\n);\r\n\r\nexport const updateUserAuthorization = createAction(\r\n '[UserAuthorization/API] Update UserAuthorization',\r\n props<{ userAuthorization: Update }>()\r\n);\r\n\r\nexport const updateUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Update UserAuthorizations',\r\n props<{ userAuthorizations: Update[] }>()\r\n);\r\n\r\nexport const deleteUserAuthorization = createAction(\r\n '[UserAuthorization/API] Delete UserAuthorization',\r\n props<{ id: number }>()\r\n);\r\n\r\nexport const deleteUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Delete UserAuthorizations',\r\n props<{ ids: number[] }>()\r\n);\r\n\r\nexport const clearUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Clear UserAuthorizations'\r\n);\r\nexport const getUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Get UserAuthorizations',\r\n props<{\r\n endDate?: Date;\r\n endDateOperator?: string;\r\n directReports?: Array;\r\n tasks?: Array;\r\n serviceItems?: Array;\r\n classes?: Array;\r\n authTypes?: Array;\r\n modifiedDate?: Date;\r\n AddAuthAction?: boolean;\r\n AddAuthMode?: boolean;\r\n showSI?: boolean;\r\n showPI?: boolean;\r\n }>()\r\n);\r\nexport const putUserAuthorzations = createAction(\r\n '[UserAuthorization/API] Put UserAuthorizations',\r\n props<{ authorizations: UserAuthorization[] }>()\r\n);\r\nexport const removeUserAuthorizations = createAction(\r\n '[UserAuthorization/API] Remove UserAuthorizations',\r\n props<{ ids: number[] }>()\r\n);\r\nexport const getPendingUserAuthorizationsCount = createAction(\r\n '[UserAuthorization/API] getPendingUserAuthorizationCount'\r\n);\r\nexport const loadPendingUserAuthorizationsCount = createAction(\r\n '[UserAuthorization/API] loadPendingUserAuthorizationCount',\r\n props<{ count: number }>()\r\n);\r\nexport const getPendingUserAuthorizations = createAction(\r\n '[UserAuthorization/API] getPendingUserAuthorization'\r\n);\r\nexport const loadPendingUserAuthorizations = createAction(\r\n '[UserAuthorization/API] loadPendingUserAuthorizations',\r\n props<{ auths: PendingAuthorization[] }>()\r\n);\r\nexport const addPendingUserAuthorizations = createAction(\r\n '[UserAuthorization/API] addPendingUserAuthorizations',\r\n props<{\r\n endDate: Date;\r\n endDateOperator: string;\r\n directReports: Array>;\r\n tasks: Array>;\r\n serviceItems: Array>;\r\n classes: Array>;\r\n authTypes: Array>;\r\n modifiedDate: Date;\r\n AddAuthMode?: boolean;\r\n AddAuthAction?: boolean;\r\n showSI?: boolean;\r\n EmployeeAuthStartDate?: Date;\r\n EmployeeAuthEndDate?: Date;\r\n }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport * as moment from 'moment';\r\nimport { catchError, flatMap, map, switchMap } from 'rxjs/operators';\r\nimport { UserAuthorization } from '.';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n IStatusMessage,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport { UserAuthorizationsService } from '../user-authorizations.service';\r\nimport * as UserAuthorizationActions from './user-authorization.actions';\r\n\r\n@Injectable()\r\nexport class UserAuthorizationEffects {\r\n getUserAuthorizations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserAuthorizationActions.getUserAuthorizations),\r\n switchMap(action =>\r\n this.service.getUserAuthorizations({ ...action }).pipe(\r\n flatMap(userAuthorizations => [\r\n UserAuthorizationActions.loadUserAuthorizations({\r\n userAuthorizations: userAuthorizations.map(\r\n auth => ({\r\n ...auth,\r\n EmpAuthEndDate: moment(\r\n auth.EmpAuthEndDate\r\n ).toDate(),\r\n EmpAuthStartDate: moment(\r\n auth.EmpAuthStartDate\r\n ).toDate()\r\n })\r\n )\r\n // as UserAuthorization[]\r\n }),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...userAuthorizations\r\n .filter(\r\n a =>\r\n a.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n )\r\n .map(a => a.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n ),\r\n UserAuthorizationActions.getPendingUserAuthorizationsCount()\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n putUserAuthorizations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserAuthorizationActions.putUserAuthorzations),\r\n switchMap(action =>\r\n this.service.putUserAuthorizations(action.authorizations).pipe(\r\n flatMap(resp => [\r\n UserAuthorizationActions.upsertUserAuthorizations({\r\n userAuthorizations: resp.Items.map(auth => ({\r\n ...auth,\r\n EmpAuthEndDate: moment(\r\n auth.EmpAuthEndDate\r\n ).toDate(),\r\n EmpAuthStartDate: moment(\r\n auth.EmpAuthStartDate\r\n ).toDate()\r\n }))\r\n }),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.EmpAuthID.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n deleteUserAuthorizations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserAuthorizationActions.removeUserAuthorizations),\r\n switchMap(action =>\r\n this.service.deleteAuthorizations(action.ids).pipe(\r\n flatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n UserAuthorizationActions.deleteUserAuthorizations(\r\n {\r\n ids: action.ids\r\n }\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >=\r\n DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n UserAuthorizationActions.upsertUserAuthorizations(\r\n {\r\n userAuthorizations: resp.Items\r\n }\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getPendingAuthorizationsCount$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserAuthorizationActions.getPendingUserAuthorizationsCount),\r\n switchMap(() =>\r\n this.service.getPendingAuthorizationsCount().pipe(\r\n flatMap(count => [\r\n UserAuthorizationActions.loadPendingUserAuthorizationsCount(\r\n {\r\n count\r\n }\r\n ),\r\n UserAuthorizationActions.getPendingUserAuthorizations()\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n getPendingAuthorizations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserAuthorizationActions.getPendingUserAuthorizations),\r\n switchMap(() =>\r\n this.service.getPendingAuthorizations().pipe(\r\n map(auths =>\r\n UserAuthorizationActions.loadPendingUserAuthorizations({\r\n auths\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n addPendingAuthorizations$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserAuthorizationActions.addPendingUserAuthorizations),\r\n switchMap(action =>\r\n this.service.addPendingAuthorizations(action).pipe(\r\n flatMap(userAuthorizations => [\r\n UserAuthorizationActions.loadUserAuthorizations({\r\n userAuthorizations:\r\n userAuthorizations as UserAuthorization[]\r\n }),\r\n UserAuthorizationActions.getPendingUserAuthorizationsCount()\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n constructor(\r\n private actions$: Actions,\r\n private service: UserAuthorizationsService\r\n ) {}\r\n}\r\n","import { IUserAuthorization } from './IUserAuthorization';\r\n\r\nexport interface UserAuthorization extends IUserAuthorization {\r\n\r\n}\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { UserAuthorization } from './user-authorization.model';\r\nimport * as UserAuthorizationActions from './user-authorization.actions';\r\nimport * as fromStore from './index';\r\n\r\nexport const userAuthorizationsFeatureKey = 'userAuthorizations';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n\r\n errors: Array;\r\n pendingCount: number;\r\n pendingAuthorizations: fromStore.PendingAuthorization[];\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: UserAuthorization) => model.EmpAuthID\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n errors: [],\r\n pendingCount: 0,\r\n pendingAuthorizations: []\r\n});\r\n\r\nexport const reducer = createReducer(\r\n initialState,\r\n on(UserAuthorizationActions.addUserAuthorization, (state, action) =>\r\n adapter.addOne(action.userAuthorization, state)\r\n ),\r\n on(UserAuthorizationActions.upsertUserAuthorization, (state, action) =>\r\n adapter.upsertOne(action.userAuthorization, state)\r\n ),\r\n on(UserAuthorizationActions.addUserAuthorizations, (state, action) =>\r\n adapter.addMany(action.userAuthorizations, state)\r\n ),\r\n on(UserAuthorizationActions.upsertUserAuthorizations, (state, action) =>\r\n adapter.upsertMany(action.userAuthorizations, state)\r\n ),\r\n on(UserAuthorizationActions.updateUserAuthorization, (state, action) =>\r\n adapter.updateOne(action.userAuthorization, state)\r\n ),\r\n on(UserAuthorizationActions.updateUserAuthorizations, (state, action) =>\r\n adapter.updateMany(action.userAuthorizations, state)\r\n ),\r\n on(UserAuthorizationActions.deleteUserAuthorization, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(UserAuthorizationActions.deleteUserAuthorizations, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(UserAuthorizationActions.loadUserAuthorizations, (state, action) =>\r\n adapter.setAll(action.userAuthorizations, state)\r\n ),\r\n on(UserAuthorizationActions.clearUserAuthorizations, state =>\r\n adapter.removeAll(state)\r\n ),\r\n on(\r\n UserAuthorizationActions.loadPendingUserAuthorizationsCount,\r\n (state, action) => ({\r\n ...state,\r\n pendingCount: action.count\r\n })\r\n ),\r\n on(\r\n UserAuthorizationActions.loadPendingUserAuthorizations,\r\n (state, action) => ({\r\n ...state,\r\n pendingAuthorizations: action.auths\r\n })\r\n )\r\n);\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromUserAuthorization from './user-authorization.reducer';\r\n\r\nexport const selectUserAuthorizationState =\r\n createFeatureSelector(\r\n fromUserAuthorization.userAuthorizationsFeatureKey\r\n );\r\n\r\nexport const { selectIds, selectEntities, selectAll, selectTotal } =\r\n fromUserAuthorization.adapter.getSelectors(selectUserAuthorizationState);\r\n\r\nexport const getPendingAuthorizations = createSelector(\r\n selectUserAuthorizationState,\r\n x => x.pendingAuthorizations\r\n);\r\nexport const getUserAuthorizationErrors = createSelector(\r\n selectUserAuthorizationState,\r\n x => x.errors\r\n);\r\nexport const getPendingAuthorizationCount = createSelector(\r\n selectUserAuthorizationState,\r\n x => x.pendingCount\r\n);\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { fromEvent } from 'rxjs';\r\nimport { takeWhile, tap, throttleTime } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging';\r\n\r\n@Component({\r\n selector: 'ef-update-multiple-authorizations',\r\n templateUrl: './update-multiple-authorizations.component.html',\r\n styleUrls: ['./update-multiple-authorizations.component.scss']\r\n})\r\nexport class UpdateMultipleAuthorizationsComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n public userAuthTypes: fromShared.SelectItem[];\r\n public uniquePayrollItems: fromShared.SelectItem[];\r\n public serviceItems: fromShared.SelectItem[];\r\n public authClasses: fromShared.SelectItem[];\r\n public updateFormGroup: FormGroup;\r\n public moment: any;\r\n @ViewChild('clearBulkUpdates', { read: ElementRef, static: true })\r\n clearBulkUpdatesButton: ElementRef;\r\n private active = true;\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private log: LoggingService\r\n ) {\r\n this.updateFormGroup = new FormGroup({\r\n startDate: new FormControl(null),\r\n endDate: new FormControl(null),\r\n authType: new FormControl(null),\r\n payrollItem: new FormControl(null),\r\n serviceItem: new FormControl(null),\r\n maxHours: new FormControl(null),\r\n authClass: new FormControl(null),\r\n ShowSI: new FormControl(null),\r\n ShowPI: new FormControl(null),\r\n PremiumPayIndicator: new FormControl(null)\r\n });\r\n this.userAuthTypes = config.data.userAuthTypes;\r\n this.uniquePayrollItems = config.data.uniquePayrollItems;\r\n this.serviceItems = config.data.serviceItems;\r\n this.authClasses = config.data.authClasses;\r\n this.moment = moment;\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n ngAfterViewInit(): void {\r\n fromEvent(this.clearBulkUpdatesButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(1000),\r\n tap(() =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationsComponent:clearBulkUpdatesButton:click'\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n const controls = this.updateFormGroup.controls;\r\n controls['startDate'].setValue(null);\r\n controls['endDate'].setValue(null);\r\n controls['authType'].setValue(null);\r\n controls['payrollItem'].setValue(null);\r\n controls['serviceItem'].setValue(null);\r\n controls['authClass'].setValue(null);\r\n controls['maxHours'].setValue(null);\r\n controls['ShowSI'].setValue(null);\r\n controls['ShowPI'].setValue(null);\r\n controls['EmployeeAuthStartDate'].setValue(null);\r\n controls['EmployeeAuthEndDate'].setValue(null);\r\n controls['PremiumPayIndicator'].setValue(null);\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","export * from './user-authorization-container.component';\r\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { select, Store } from '@ngrx/store';\r\nimport clone from 'just-clone';\r\nimport * as moment from 'moment';\r\nimport { combineLatest, Observable, of, ReplaySubject } from 'rxjs';\r\nimport {\r\n filter,\r\n map,\r\n skip,\r\n take,\r\n takeWhile,\r\n tap,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport * as fromSettings from '../../company-setting';\r\nimport * as fromLookups from '../../lookups';\r\nimport {\r\n IAuthorizationType,\r\n IServiceItem,\r\n ITask,\r\n LoadPayrollItems\r\n} from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport * as fromShared from '../../shared';\r\nimport { Process, uniqBy } from '../../shared';\r\nimport { SelectItem } from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport { IUserInfo } from '../../user-info';\r\nimport * as fromStore from '../store';\r\nimport * as fromUa from '../store';\r\nimport { UserAuthorization } from '../store';\r\nimport * as fromDataServices from '../../data-services';\r\n@Component({\r\n selector: 'ef-user-authorization-container',\r\n templateUrl: './user-authorization-container.component.html',\r\n styleUrls: ['./user-authorization-container.component.scss']\r\n})\r\nexport class UserAuthorizationContainerComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n authorizations$: Observable>;\r\n useClass$: Observable;\r\n AuthAutomatedPI$: Observable;\r\n process$: Observable;\r\n directReports$: Observable;\r\n directReportsFilterSelectItems$: Observable;\r\n employeeswithoutauths$: Observable;\r\n activeReports$: Observable;\r\n tasksFilterSelectItems$: Observable;\r\n payrollItemsFilterSelectItems$: Observable;\r\n serviceItemsFilterSelectItems$: Observable;\r\n classItemsFilterSelectItems$: Observable;\r\n userAuthTypes$: Observable;\r\n userAuthTypesSelectItems$: Observable;\r\n tasks$: Observable;\r\n tasksSelectItems$: Observable;\r\n activeTasks$: Observable;\r\n serviceItems$: Observable;\r\n serviceItemsSelectItems$: Observable;\r\n activeServiceItems$: Observable;\r\n userGroups$: Observable;\r\n authClasses$: Observable;\r\n authClassesSelectItems$: Observable;\r\n payrollItems$: Observable;\r\n errors$: Observable;\r\n selectedError$: Observable;\r\n pendingAuthsCount$: Observable;\r\n pendingAuthorizations$: Observable;\r\n userInfo$: Observable;\r\n yearOptions$: Observable;\r\n //ManageUsersModelDS: EntityCollectionService;\r\n modifiedDatesSelectItems$: Observable;\r\n active = true;\r\n isLoading = true;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n OnSaveErrorSubject = new ReplaySubject(1);\r\n OnAddPendingSubject = new ReplaySubject<{\r\n directReports: Array;\r\n tasks: Array>;\r\n serviceItems: Array>;\r\n classes: Array>;\r\n authTypes: Array>;\r\n endDate: Date;\r\n modifiedDate: Date;\r\n endDateOperator: string;\r\n AddAuthMode: boolean;\r\n AddAuthValue: boolean;\r\n showSI: boolean;\r\n EmployeeAuthStartDate: Date;\r\n EmployeeAuthEndDate: Date;\r\n }>();\r\n constructor(\r\n private store: Store,\r\n private log: LoggingService,\r\n public entityServices: EntityServices\r\n ) {\r\n // this.ManageUsersModelDS =\r\n // entityServices.getEntityCollectionService(\r\n // fromDataServices.ManageUsers.entityName\r\n // );\r\n this.store.dispatch(new fromLookups.GetCreditCards('CreditCard'));\r\n }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(new fromLookups.LoadPayrollItems());\r\n this.store.dispatch(new fromLookups.LoadTasks());\r\n\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({ SettingType: 'UseClass' })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'AuthAutomatedPI'\r\n })\r\n );\r\n this.store.dispatch(\r\n fromSettings.getCompanySetting({\r\n SettingType: 'employeeswithoutauths'\r\n })\r\n );\r\n //this.ManageUsersModelDS.clearCache();\r\n // this.ManageUsersModelDS.getWithQuery({\r\n // ShowInactive: 'false',\r\n // UserFilterID: '7'\r\n // });\r\n this.store.dispatch(fromUa.clearUserAuthorizations());\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngAfterViewInit(): void {}\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.AuthAutomatedPI$ = this.store.pipe(\r\n select(fromSettings.getSettingBooleanValue('AuthAutomatedPI'))\r\n );\r\n this.useClass$ = this.store.pipe(\r\n select(fromSettings.getSettingBooleanValue('UseClass'))\r\n );\r\n\r\n this.payrollItems$ = this.store.pipe(\r\n select(fromLookups.getPayrollItemsLookup),\r\n map(x => clone(x) as PayrollItem[]),\r\n map(payrollItems =>\r\n payrollItems\r\n .filter(x => x.IsActive === true)\r\n .sort((a, b) => a.PayrollItem.localeCompare(b.PayrollItem))\r\n )\r\n );\r\n\r\n this.serviceItems$ = this.store.pipe(\r\n select(fromLookups.getServiceItemsLookup)\r\n );\r\n this.serviceItemsSelectItems$ = this.serviceItems$.pipe(\r\n map(x => clone(x) as fromLookups.IServiceItem[]),\r\n map(x =>\r\n x\r\n .map(y => ({ label: y.ServiceItem, value: y.SIListID }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.activeServiceItems$ = this.serviceItems$.pipe(\r\n map(a => a.filter(x => x.IsActive)),\r\n map(x => clone(x) as fromLookups.IServiceItem[]),\r\n map(x =>\r\n x\r\n .map(y => ({ label: y.ServiceItem, value: y.SIListID }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.authorizations$ = this.store.pipe(\r\n select(fromUa.selectAll),\r\n skip(1),\r\n map(x => clone(x) as fromStore.UserAuthorization[]),\r\n withLatestFrom(this.payrollItems$, this.serviceItems$),\r\n tap(([auths, pi, si]) =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:setupObservables:authorizations$',\r\n auths,\r\n pi,\r\n si\r\n })\r\n ),\r\n map(([auths, pi, si]) =>\r\n auths.map(auth => {\r\n const p = pi.find(x => x.PIListID === auth.PIListID);\r\n const s = si.find(x => x.SIListID == auth.SIListID);\r\n if (!p) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:setupObservables:authorizations$',\r\n message: `Payroll Item not found for PIListID: ${auth.PIListID}`\r\n });\r\n }\r\n if (!s) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:setupObservables:authorizations$',\r\n message: `Service Item not found for SIListID: ${auth.SIListID}`\r\n });\r\n }\r\n return {\r\n ...auth,\r\n ServiceItem: s?.ServiceItem ?? auth.SIListID,\r\n PayrollItem: p?.PayrollItem ?? auth.PIListID,\r\n ModifiedDateOnly: moment(auth.ModifiedDateTime).format(\r\n 'MM/DD/YYYY'\r\n ),\r\n IsHolidayAuth: p ? p.IsHolidayPI || false : false\r\n };\r\n })\r\n ),\r\n tap(auths => {\r\n this.isLoading = false;\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:setupObservables:authorizations$:mapped',\r\n auths\r\n });\r\n })\r\n );\r\n\r\n this.serviceItemsFilterSelectItems$ = combineLatest([\r\n this.authorizations$,\r\n this.serviceItems$\r\n ]).pipe(\r\n map(([auths, items]) =>\r\n auths.map(a =>\r\n items.find(i => i.SIListID === a.SIListID)\r\n ? items.find(i => i.SIListID === a.SIListID)\r\n : {\r\n SIListID: a.SIListID,\r\n ServiceItem: 'Unknown Service Item'\r\n }\r\n )\r\n ),\r\n map(\r\n items =>\r\n uniqBy(items, x => x.SIListID) as fromLookups.IServiceItem[]\r\n ),\r\n map(items =>\r\n items\r\n .map(i => ({\r\n label: i.ServiceItem,\r\n value: i.SIListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.directReports$ = this.store.pipe(\r\n select(fromLookups.getDirectReportsLookup),\r\n tap(directReports =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:diretReports$',\r\n directReports\r\n })\r\n ),\r\n map(x => clone(x)),\r\n map(reports =>\r\n reports.sort((a, b) =>\r\n a.EmployeeName.localeCompare(b.EmployeeName)\r\n )\r\n )\r\n );\r\n this.activeReports$ = combineLatest([\r\n this.directReports$.pipe(\r\n map(x => clone(x)),\r\n map(reports =>\r\n reports\r\n .filter(report => report.IsActive && report.eUserID != null)\r\n .sort((a, b) =>\r\n a.EmployeeName.localeCompare(b.EmployeeName)\r\n )\r\n )\r\n ),\r\n //this.ManageUsersModelDS.entities$\r\n ]).pipe(\r\n map(([directReports]) => {\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:activeReports$',\r\n directReports\r\n });\r\n return directReports;\r\n // return directReports.filter(x =>\r\n // users\r\n // .filter(y => !!y.EUserID)\r\n // .find(y => y.EmployeeListID === x.EmployeeListID)\r\n // );\r\n })\r\n );\r\n\r\n this.directReportsFilterSelectItems$ = combineLatest([\r\n this.authorizations$,\r\n this.directReports$\r\n ]).pipe(\r\n map(([auths, items]) =>\r\n auths.map(a =>\r\n items.find(i => i.EmployeeListID === a.EmployeeListID)\r\n )\r\n ),\r\n map(\r\n items =>\r\n uniqBy(\r\n items,\r\n x => x.EmployeeListID\r\n ) as fromLookups.IDirectReport[]\r\n ),\r\n map(items =>\r\n items\r\n .map(i => ({\r\n label: i.EmployeeName,\r\n value: i.EmployeeListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.employeeswithoutauths$ = this.store.pipe(\r\n select(fromSettings.getSettingBooleanValue('employeeswithoutauths'))\r\n );\r\n\r\n this.userAuthTypes$ = this.store.pipe(\r\n select(fromLookups.getAuthorizationTypesLookup)\r\n );\r\n this.userAuthTypesSelectItems$ = this.userAuthTypes$.pipe(\r\n map(types =>\r\n types\r\n .map(y => ({\r\n label: y.AuthType,\r\n value: y.AuthTypeId,\r\n title: y.AuthTypeDesc\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.tasks$ = this.store.pipe(select(fromLookups.getTasksLookup));\r\n this.tasksSelectItems$ = this.tasks$.pipe(\r\n map(tasks =>\r\n tasks\r\n .map(task => ({\r\n label: task.TaskLongName,\r\n value: task.TaskListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.activeTasks$ = this.tasks$.pipe(\r\n map(tasks =>\r\n tasks\r\n .filter(y => y.IsActive)\r\n .map(task => ({\r\n label: task.TaskLongName,\r\n value: task.TaskListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n this.tasksFilterSelectItems$ = combineLatest([\r\n this.authorizations$,\r\n this.tasks$\r\n ]).pipe(\r\n map(([auths, items]) =>\r\n auths.map(a => items.find(i => i.TaskListID === a.TaskListID))\r\n ),\r\n map(\r\n items => uniqBy(items, x => x.TaskListID) as fromLookups.ITask[]\r\n ),\r\n map(items =>\r\n items\r\n .map(i => ({\r\n label: i.TaskLongName,\r\n value: i.TaskListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.userGroups$ = this.store.pipe(\r\n select(fromLookups.getUserGroupsLookup),\r\n map(x => clone(x)),\r\n map(groups =>\r\n groups.sort((a, b) => a.GroupName.localeCompare(b.GroupName))\r\n )\r\n );\r\n this.authClasses$ = this.store.pipe(\r\n select(fromLookups.getAuthClassesLookup),\r\n tap(classes =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:authClasses$',\r\n classes\r\n })\r\n )\r\n );\r\n this.authClassesSelectItems$ = this.authClasses$.pipe(\r\n tap(classes =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:authClassesSelectItems$',\r\n classes\r\n })\r\n ),\r\n map(x => clone(x) as fromLookups.IAuthorizationClass[]),\r\n map(classes => [\r\n {\r\n ClassListID: 'na',\r\n ClassName: 'Not Assigned',\r\n IsActive: true\r\n },\r\n ...classes.sort((a, b) =>\r\n a.ClassName.localeCompare(b.ClassName)\r\n )\r\n ]),\r\n map(classes =>\r\n classes\r\n .filter(x => x.IsActive === true)\r\n .map(x => ({ label: x.ClassName, value: x.ClassListID }))\r\n )\r\n );\r\n this.classItemsFilterSelectItems$ = combineLatest([\r\n this.authorizations$,\r\n this.authClassesSelectItems$\r\n ]).pipe(\r\n tap(([auths, items]) =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:classItemsFilterSelectItems$',\r\n auths,\r\n items\r\n })\r\n ),\r\n map(([auths, items]) =>\r\n auths.map(a => items.find(p => p.value === a.ClassListID))\r\n ),\r\n tap(items =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:classItemsFilterSelectItems$:filtered',\r\n items\r\n })\r\n ),\r\n filter(items => !!items && items.length > 0),\r\n map(items => uniqBy(items, x => x.value) as SelectItem[])\r\n );\r\n\r\n this.payrollItemsFilterSelectItems$ = combineLatest([\r\n this.authorizations$,\r\n this.payrollItems$\r\n ]).pipe(\r\n map(([auths, items]) =>\r\n auths.map(a => items.find(i => i.PIListID === a.PIListID))\r\n ),\r\n map(items => uniqBy(items, x => x.PIListID) as PayrollItem[]),\r\n map(items =>\r\n items\r\n .map(i => ({\r\n label: i.PayrollItem,\r\n value: i.PIListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n\r\n this.errors$ = this.store.pipe(\r\n select(fromUa.getUserAuthorizationErrors)\r\n );\r\n\r\n this.selectedError$ = this.store.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n\r\n this.pendingAuthsCount$ = this.store.pipe(\r\n select(fromUa.getPendingAuthorizationCount),\r\n tap(x =>\r\n this.log.debug({\r\n type: 'UserAuthorizationContainerComponent:pendingAuthsCount$',\r\n x\r\n })\r\n )\r\n );\r\n\r\n this.pendingAuthorizations$ = this.store.pipe(\r\n select(fromUa.getPendingAuthorizations),\r\n map(items => clone(items) as fromStore.PendingAuthorization[])\r\n );\r\n this.yearOptions$ = of(\r\n Array.from(Array(11).keys()).map(x => ({\r\n label: moment()\r\n .add(x - 10, 'years')\r\n .year()\r\n .toString(),\r\n value: moment()\r\n .add(x - 10, 'years')\r\n .year()\r\n }))\r\n );\r\n this.modifiedDatesSelectItems$ = this.authorizations$.pipe(\r\n map(auths =>\r\n auths.filter(\r\n auth =>\r\n !!auth.ModifiedDateTime &&\r\n moment(auth.ModifiedDateTime).isValid()\r\n )\r\n ),\r\n map(auths =>\r\n auths.sort(\r\n (a, b) =>\r\n (a.ModifiedDateTime\r\n ? a.ModifiedDateTime.valueOf()\r\n : 0) -\r\n (b.ModifiedDateTime ? b.ModifiedDateTime.valueOf() : 0)\r\n )\r\n ),\r\n map(auths =>\r\n auths.map(a => ({\r\n label: moment(a.ModifiedDateTime).format('MM/DD/YYYY'),\r\n value: moment(a.ModifiedDateTime).format('MM/DD/YYYY')\r\n }))\r\n ),\r\n map(auths => uniqBy(auths, x => x.value))\r\n );\r\n }\r\n setupSubscriptions() {\r\n combineLatest([this.userInfo$, this.process$])\r\n .pipe(take(1))\r\n .subscribe(([userInfo, process]) => {\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: true,\r\n processId: process.ProcessID\r\n })\r\n );\r\n });\r\n this.directReports$\r\n .pipe(withLatestFrom(this.userInfo$, this.tasks$))\r\n // combineLatest([this.userInfo$, this.directReports$, this.tasks$])\r\n .pipe(\r\n tap(x => x),\r\n takeWhile(() => this.active),\r\n skip(1),\r\n tap(([directReports, userInfo, tasks]) =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:setupSubscriptions:combineLatest(this.userInfo$, this.directReports$, this.tasks$)',\r\n userInfo,\r\n directReports,\r\n tasks\r\n })\r\n )\r\n )\r\n\r\n .subscribe(([r, u, t]) => {\r\n let dr;\r\n let tasks;\r\n switch (u.DefaultRoleGroupID) {\r\n case fromUser.UserRoleEnum.Supervisor:\r\n dr = r;\r\n tasks = undefined;\r\n break;\r\n case fromUser.UserRoleEnum.TaskManager:\r\n dr = undefined;\r\n tasks = t;\r\n break;\r\n default:\r\n dr = undefined;\r\n tasks = undefined;\r\n break;\r\n }\r\n this.store.dispatch(new fromLookups.LoadServiceItems());\r\n\r\n // this.store.dispatch(\r\n // new LoadPayrollItems([\r\n // ...(r.map(z => z.EmployeeListID) || [])\r\n // ])\r\n // ); //commented out 04/09/24 -- this will use the payroll items from the load on login\r\n this.store.dispatch(\r\n fromUa.getUserAuthorizations({\r\n endDate: new Date(\r\n Date.UTC(\r\n new Date().getUTCFullYear(),\r\n new Date().getUTCMonth(),\r\n new Date().getUTCDate()\r\n )\r\n ),\r\n endDateOperator: undefined,\r\n modifiedDate: undefined,\r\n directReports: dr,\r\n tasks: tasks\r\n })\r\n );\r\n });\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n combineLatest([\r\n this.OnAddPendingSubject,\r\n this.tasks$,\r\n this.serviceItems$,\r\n this.userAuthTypes$,\r\n this.directReports$,\r\n this.authClasses$\r\n ])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(\r\n ([\r\n pendingAdd,\r\n tasks,\r\n serviceItems,\r\n authTypes,\r\n directReports,\r\n authClasses\r\n ]) => {\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:OnAddPendingSubject',\r\n pendingAdd,\r\n tasks,\r\n serviceItems,\r\n authTypes,\r\n directReports,\r\n authClasses\r\n });\r\n\r\n const action = {\r\n ...pendingAdd,\r\n directReports:\r\n pendingAdd.directReports &&\r\n pendingAdd.directReports.map(x =>\r\n directReports.find(\r\n d => d.EmployeeListID === x.EmployeeListID\r\n )\r\n ),\r\n tasks:\r\n pendingAdd.tasks &&\r\n pendingAdd.tasks.map(x =>\r\n tasks.find(t => t.TaskListID === x.TaskListID)\r\n ),\r\n serviceItems:\r\n pendingAdd.serviceItems &&\r\n pendingAdd.serviceItems.map(x =>\r\n serviceItems.find(\r\n s => s.SIListID === x.SIListID\r\n )\r\n ),\r\n authTypes:\r\n pendingAdd.authTypes &&\r\n pendingAdd.authTypes.map(x =>\r\n authTypes.find(\r\n a => a.AuthTypeId === x.AuthTypeId\r\n )\r\n ),\r\n classes:\r\n pendingAdd.classes &&\r\n pendingAdd.classes.map(x =>\r\n authClasses.find(\r\n c => c.ClassListID === x.ClassListID\r\n )\r\n )\r\n };\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:OnAddPendingSubject',\r\n action\r\n });\r\n\r\n this.store.dispatch(\r\n fromUa.addPendingUserAuthorizations(action)\r\n );\r\n }\r\n );\r\n combineLatest([this.OnSaveErrorSubject, this.process$])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([auth, process]) => {\r\n this.log.verbose({\r\n type: 'UserAuthorizationContainerComponent:OnSaveErrorSubject',\r\n auth,\r\n process\r\n });\r\n this.store.dispatch(\r\n new fromShared.Errors.SetErrors([\r\n {\r\n StatusCode: auth.Status.StatusCode,\r\n Message: auth.Status.Message,\r\n MsgProcessID: process.ProcessID,\r\n MsgEntityID: auth.id\r\n }\r\n ])\r\n );\r\n });\r\n }\r\n OnAuthorizationChanged($event) {}\r\n OnAddModeChanged(value) {\r\n this.log.debug({\r\n type: 'UserAuthorizationContainerComponent:OnAddModeChanged',\r\n value\r\n });\r\n if (\r\n (value.AddAuthMode && (value.directReports || value.tasks)) ||\r\n !value.AddAuthMode\r\n ) {\r\n this.store.dispatch(\r\n fromUa.getUserAuthorizations({\r\n ...value,\r\n AddAuthAction: false\r\n })\r\n );\r\n }\r\n }\r\n OnDateFilterChanged(value: {\r\n EmployeeAuthEndDate: Date;\r\n modifiedDate: Date;\r\n endDateOperator: string;\r\n AddAuthMode: boolean;\r\n }) {\r\n this.isLoading = true;\r\n this.log.debug({\r\n type: 'UserAuthorizationContainerComponent:OnDateFilterChanged',\r\n value\r\n });\r\n this.store.dispatch(\r\n fromUa.getUserAuthorizations({\r\n ...value,\r\n AddAuthAction: false\r\n })\r\n );\r\n }\r\n OnAddPending(value: {\r\n directReports: Array;\r\n tasks: Array;\r\n serviceItems: Array;\r\n classes: Array;\r\n authTypes: Array;\r\n endDate: Date;\r\n modifiedDate: Date;\r\n endDateOperator: string;\r\n AddAuthMode: boolean;\r\n AddAuthValue: boolean;\r\n showSI: boolean;\r\n EmployeeAuthStartDate: Date;\r\n EmployeeAuthEndDate: Date;\r\n }) {\r\n this.log.debug({\r\n type: 'UserAuthorizationContainerComponent:OnAddPending',\r\n value\r\n });\r\n this.OnAddPendingSubject.next(value);\r\n }\r\n OnCopy(authorizations: UserAuthorization[]) {\r\n this.log.debug({\r\n type: 'UserAuthorizationContainerComponent:OnCopyAuthorization',\r\n authorizations\r\n });\r\n this.store.dispatch(\r\n fromUa.putUserAuthorzations({\r\n authorizations: authorizations.map(a => ({\r\n ...a,\r\n CopyAuth: true\r\n }))\r\n })\r\n );\r\n }\r\n OnShowHoliday($event: boolean) {\r\n this.log.debug({\r\n type: 'UserAuthorizationContainerComponent:OnShowHoliday',\r\n value: $event\r\n });\r\n }\r\n OnSaveError($event: UserAuthorization) {\r\n this.OnSaveErrorSubject.next($event);\r\n }\r\n OnShowError($event) {\r\n this.ShowErrorSubject.next($event);\r\n }\r\n OnSave(items: UserAuthorization[]) {\r\n this.store.dispatch(\r\n fromUa.putUserAuthorzations({ authorizations: items })\r\n );\r\n }\r\n OnDelete(items: number[]) {\r\n this.log.debug({\r\n type: 'UserAuthorizationContainerComponent:OnDeleteAuthorizations',\r\n items\r\n });\r\n this.store.dispatch(fromUa.removeUserAuthorizations({ ids: items }));\r\n }\r\n}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { UserAuthorizationContainerComponent } from './user-authorization-container/user-authorization-container.component';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const UserAuthorizationsRoute: Ng2StateDeclaration = {\r\n // name: 'LeaveRequest.**'\r\n name: 'userauthorizations',\r\n url: '/userauthorizations',\r\n // , loadChildren: () => import('./leave-request.module').then(r => r.LeaveRequestModule)\r\n data: { requiresAuth: true },\r\n // params: { process: {} },\r\n // resolve: [\r\n // {\r\n // token: 'process',\r\n // deps: [Transition, CategoriesService],\r\n // resolveFn: processResolver\r\n // }\r\n // ],\r\n component: UserAuthorizationContainerComponent\r\n};\r\n","export * from './user-authorization.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ValidationErrors,\r\n ValidatorFn\r\n} from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport {\r\n combineLatest,\r\n fromEvent,\r\n merge,\r\n Observable,\r\n ReplaySubject\r\n} from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n map,\r\n skip,\r\n startWith,\r\n take,\r\n takeWhile,\r\n tap,\r\n throttleTime,\r\n withLatestFrom\r\n} from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as fromLookups from '../../lookups';\r\nimport { PayrollItem } from '../../payroll/item/store';\r\nimport * as fromShared from '../../shared';\r\nimport {\r\n DisplayMessageMinimum,\r\n EditGrid,\r\n IId,\r\n ResponseStatus\r\n} from '../../shared';\r\nimport {\r\n Accordion,\r\n DialogService,\r\n FilterService,\r\n SelectItem,\r\n Table\r\n} from '../../shared/efaact-primeng.module';\r\nimport { IShowErrors } from '../../shared/errors-sidenav';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromStore from '../store';\r\nimport { UserAuthorization } from '../store';\r\nimport { UpdateMultipleAuthorizationsComponent } from '../update-multiple-authorizations/update-multiple-authorizations.component';\r\nconst ADD_MODE_FILTER_LE =\r\n 'You have a less-than filter in place, this could cause newly added or copied authorizations to not display.';\r\n\r\n@Component({\r\n selector: 'ef-user-authorization',\r\n templateUrl: './user-authorization.component.html',\r\n styleUrls: ['./user-authorization.component.scss']\r\n})\r\nexport class UserAuthorizationComponent\r\n extends EditGrid\r\n implements OnInit, AfterViewInit, OnDestroy, OnChanges\r\n{\r\n @Input() public pendingAuthorizations: fromStore.PendingAuthorization[];\r\n @Input() public userAuthTypes: SelectItem[];\r\n @Input() public directReports: fromLookups.IDirectReport[];\r\n @Input() public activeReports: fromLookups.IDirectReport[];\r\n @Input() public tasks: SelectItem[];\r\n @Input() public activeTasks: SelectItem[] = [];\r\n @Input() public serviceItems: SelectItem[];\r\n @Input() public activeServiceItems: SelectItem[];\r\n @Input() public authClasses: SelectItem[];\r\n @Input() public payrollItems: PayrollItem[];\r\n @Input() yearOptions: SelectItem[];\r\n public get uniquePayrollItems(): SelectItem[] {\r\n return fromShared\r\n .uniqBy(this.payrollItems, x => x.PayrollItem)\r\n .map(x => ({ label: x.PayrollItem, value: x.PIListID }));\r\n }\r\n @Input() public userGroups: fromLookups.IUserGroup[];\r\n @Input() public pendingAuthsCount: number;\r\n @Input() public employeeswithoutauths: boolean;\r\n @Input() public directReportsFilterSelectItems: SelectItem[];\r\n @Input() public tasksFilterSelectItems: SelectItem[];\r\n @Input() public payrollItemsFilterSelectItems: SelectItem[];\r\n @Input() public serviceItemsFilterSelectItems: SelectItem[];\r\n @Input() public classItemsFilterSelectItems: SelectItem[];\r\n @Input() public AuthAutomatedPI: boolean;\r\n @Input() public useClass: boolean;\r\n @Input() public modifiedDatesSelectItems: SelectItem[];\r\n private active = true;\r\n moment: any;\r\n public errorHelpText = '';\r\n public AuthorizationsSubject = new ReplaySubject(1);\r\n public FilteredTasksSubject = new ReplaySubject(1);\r\n public FilteredServiceItemsSubject = new ReplaySubject<\r\n fromLookups.IServiceItem[]\r\n >(1);\r\n public operators: SelectItem[] = [\r\n { value: 'ge', label: 'greater or equal' },\r\n { value: 'eq', label: 'equal' },\r\n { value: 'le', label: 'less or equal' }\r\n ];\r\n startDateFilter: any;\r\n endDateFilter: any;\r\n public filteredItems: UserAuthorization[];\r\n public displayDetails = true;\r\n public displayHolidays = true;\r\n public dropdownItemHeight = environment.dropdownItemHeight;\r\n public clearingFilters = false;\r\n public filterMessages: string[] = [];\r\n public processMessages: string[] = [];\r\n public filterFormGroup: FormGroup;\r\n public addModeFormGroup: FormGroup;\r\n public updateFormGroup: FormGroup;\r\n public editFormGroup: FormGroup;\r\n public editing: UserAuthorization = null as any;\r\n public payrollItemsForAuth: SelectItem[];\r\n cloned: { [i: number]: UserAuthorization } = {};\r\n selected: UserAuthorization[] = [];\r\n @Output() public ShowError = new EventEmitter();\r\n @Output() public Save = new ReplaySubject(1);\r\n @Output() public Delete = new EventEmitter();\r\n @Output() public Copy = new EventEmitter>();\r\n @Output() public AddModeChanged = new EventEmitter<{\r\n AddAuthMode: boolean;\r\n endDate?: Date;\r\n modifiedDate?: Date;\r\n endDateOperator?: string;\r\n directReports?: Array;\r\n tasks?: Array;\r\n serviceItems?: Array>;\r\n classes?: Array;\r\n authTypes?: Array;\r\n showSI?: boolean;\r\n showPI?: boolean;\r\n EmployeeAuthStartDate?: Date;\r\n EmployeeAuthEndDate?: Date;\r\n }>();\r\n @Output() public AddPending = new EventEmitter<{\r\n directReports: Array;\r\n tasks: Array;\r\n serviceItems?: Array>;\r\n classes: Array;\r\n authTypes: Array;\r\n endDate: Date;\r\n AddAuthMode: boolean;\r\n AddAuthValue: boolean;\r\n showSI: boolean;\r\n showPI: boolean;\r\n EmployeeAuthStartDate: Date;\r\n EmployeeAuthEndDate: Date;\r\n }>();\r\n @Output() public DateFilterChanged = new EventEmitter<{\r\n EmployeeAuthEndDate: Date;\r\n AddAuthMode: boolean;\r\n }>();\r\n @Output() public SaveError = new EventEmitter();\r\n @ViewChild('authAccordions', { read: Accordion, static: true })\r\n authAccordions: Accordion;\r\n @ViewChild('bulkDelete', { read: ElementRef, static: true })\r\n bulkDeleteButton: ElementRef;\r\n @ViewChild('selectAll', { read: ElementRef, static: true })\r\n selectAllButton: ElementRef;\r\n @ViewChild('copyAuths', { read: ElementRef, static: true })\r\n copyAuthsButton: ElementRef;\r\n @ViewChild('addPendingAuths', { read: ElementRef, static: true })\r\n addPendingAuthsButton: ElementRef;\r\n\r\n @ViewChild('clearFilters', { read: ElementRef, static: true })\r\n clearFiltersButton: ElementRef;\r\n @ViewChild('clearSelectionBtn', { read: ElementRef, static: true })\r\n clearSelectionButton: ElementRef;\r\n @ViewChild('clearBulkUpdates', { read: ElementRef, static: true })\r\n clearBulkUpdatesButton: ElementRef;\r\n @ViewChild('showDetails', { read: ElementRef, static: true })\r\n showDetailsButton: ElementRef;\r\n @ViewChild('refreshAuths', { read: ElementRef, static: true })\r\n refreshAuthsButton: ElementRef;\r\n @ViewChild('updateMultipleAuths', { read: ElementRef, static: true })\r\n updateMultipleButton: ElementRef;\r\n @ViewChild('dataTable', { read: Table, static: true })\r\n dtAuthorizations: Table;\r\n showPastAuths: boolean;\r\n downloadOptions: { label: string; icon: string; command: () => any }[];\r\n cols = [\r\n { field: 'EmployeeName', header: 'User' },\r\n { field: 'TaskLongName', header: 'Task' },\r\n { field: 'AuthTypeId', header: 'Type' },\r\n { field: 'EmpAuthStartDate', header: 'Start Date' },\r\n { field: 'EmpAuthEndDate', header: 'End Date' },\r\n { field: 'PayrollItem', header: 'Payroll Item' },\r\n { field: 'ServiceItem', header: 'Service Item' },\r\n { field: 'ShowSI', header: 'Show SI on TimeCard' },\r\n { field: 'ShowPI', header: 'Show PI on TimeCard' },\r\n { field: 'ModifiedDateTime', header: 'Modified Date' },\r\n { field: 'MaxHours', header: 'Planned Hours' },\r\n { field: 'HoursWorked', header: 'Hours Worked' },\r\n { field: 'ClassListID', header: 'Class' },\r\n { field: 'PremiumPayIndicator', header: 'Premium' },\r\n { field: 'AuthDesc', header: 'Work Auth' }\r\n ];\r\n activeState: boolean[] = [false, false];\r\n private updateDialogRef: fromShared.DynamicDialogRef;\r\n constructor(\r\n private log: LoggingService,\r\n protected cdRef: ChangeDetectorRef,\r\n private confirmservice: UnsavedChangesService,\r\n private dialogService: DialogService,\r\n private filterService: FilterService\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.filterFormGroup = new FormGroup({\r\n endDate: new FormControl(new Date().getUTCFullYear())\r\n });\r\n this.addModeFormGroup = new FormGroup({\r\n task: new FormControl(null),\r\n serviceItem: new FormControl(null),\r\n authType: new FormControl(null),\r\n userGroup: new FormControl(null),\r\n directReports: new FormControl(null),\r\n authClass: new FormControl(null),\r\n addMode: new FormControl(false),\r\n showAllUsers: new FormControl(null),\r\n showAllTasks: new FormControl(null),\r\n showAllServiceItems: new FormControl(null),\r\n ShowSI: new FormControl(true),\r\n ShowPI: new FormControl(false),\r\n EmployeeAuthStartDate: new FormControl(null),\r\n EmployeeAuthEndDate: new FormControl(null)\r\n });\r\n this.updateFormGroup = new FormGroup({\r\n startDate: new FormControl(null),\r\n endDate: new FormControl(null),\r\n authType: new FormControl(null),\r\n payrollItem: new FormControl(null),\r\n serviceItem: new FormControl(null),\r\n maxHours: new FormControl(null),\r\n authClass: new FormControl(null),\r\n ShowSI: new FormControl(null),\r\n ShowPI: new FormControl(null)\r\n });\r\n this.editFormGroup = new FormGroup(\r\n {\r\n AuthTypeId: new FormControl(null),\r\n EmpAuthStartDate: new FormControl(null),\r\n EmpAuthEndDate: new FormControl(null),\r\n PIListID: new FormControl(null),\r\n SIListID: new FormControl(null),\r\n ShowSI: new FormControl(null),\r\n ShowPI: new FormControl(null),\r\n MaxHours: new FormControl(null),\r\n PremiumPayIndicator: new FormControl(null),\r\n AuthDesc: new FormControl(null)\r\n },\r\n this.validateEdit\r\n );\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:SimpleChanges',\r\n changes\r\n });\r\n\r\n if (changes.items && changes.items.currentValue) {\r\n this.filteredItems = changes.items.currentValue;\r\n this.displayHolidays = true;\r\n }\r\n }\r\n\r\n highlightRow(rowId: string, ...styles: string[]) {\r\n const row = document.getElementById(rowId);\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:highlightRow',\r\n rowId,\r\n row,\r\n classes: styles\r\n });\r\n if (!row) {\r\n return;\r\n }\r\n row.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n row.classList.add(...styles);\r\n }\r\n ngOnInit(): void {\r\n this.addDateRangeFilters();\r\n this.setupEventHandlers();\r\n this.setupSubscriptions();\r\n // this.dtAuthorizations.sortMode = 'single';\r\n this.downloadOptions = [\r\n {\r\n label: 'CSV',\r\n icon: 'pi pi-download',\r\n command: () =>\r\n this.dtAuthorizations.exportCSV.bind(\r\n this.dtAuthorizations\r\n )()\r\n }\r\n // {\r\n // label: 'Excel',\r\n // icon: 'pi pi-download',\r\n // command: () => this.dtAuthorizations.exportExcel.bind(this.dtAuthorizations)()\r\n // }\r\n ];\r\n this.handleOnOpen([]);\r\n }\r\n ngAfterViewInit() {}\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n applyBulkUpdate(values) {\r\n const controls = this.updateFormGroup.controls;\r\n const auths: UserAuthorization[] =\r\n (this.dtAuthorizations && this.dtAuthorizations.selection) || [];\r\n const mapped = auths.map(x => ({\r\n ...x,\r\n EmpAuthStartDate: moment(values.startDate).isValid()\r\n ? moment(values.startDate).toDate()\r\n : x.EmpAuthStartDate,\r\n EmpAuthEndDate: moment(values.endDate).isValid()\r\n ? moment(values.endDate).toDate()\r\n : x.EmpAuthEndDate,\r\n SIListID: values.serviceItem || x.SIListID,\r\n AuthTypeId: values.authType || x.AuthTypeId,\r\n MaxHours: values.maxHours || x.MaxHours,\r\n PIListID: values.payrollItem || x.PIListID,\r\n ClassListID: values.authClass || x.ClassListID,\r\n ShowSI: values.ShowSI !== null ? values.ShowSI : x.ShowSI,\r\n ShowPI: values.ShowPI !== null ? values.ShowPI : x.ShowPI,\r\n PremiumPayIndicator: values.PremiumPayIndicator !== null ? values.PremiumPayIndicator : x.PremiumPayIndicator,\r\n }));\r\n this.log.verbose({\r\n type: 'UserAuthorizationsComponent:applyBulkButton:ApplyClick',\r\n controls,\r\n auths,\r\n mapped\r\n });\r\n this.Save.next(mapped);\r\n this.selected = [];\r\n }\r\n setupEventHandlers() {\r\n fromEvent(this.clearSelectionButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(() => this.active),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:clearSelection:click'\r\n })\r\n )\r\n )\r\n .subscribe(() => {\r\n this.selected = [];\r\n });\r\n\r\n fromEvent(this.clearFiltersButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(500),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:clearFilters:click'\r\n })\r\n )\r\n )\r\n .subscribe(x => {\r\n this.processMessages = [];\r\n this.clearFilters(\r\n this.addModeFormGroup.controls['addMode'].value\r\n );\r\n });\r\n\r\n fromEvent(this.bulkDeleteButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(500)\r\n )\r\n .subscribe(x => {\r\n this.processMessages = [];\r\n this.onDelete(this.selected);\r\n });\r\n fromEvent(this.refreshAuthsButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n const addModeToggle = this.addModeFormGroup.controls['addMode'];\r\n if (addModeToggle.value) {\r\n addModeToggle.setValue(false);\r\n this.activeState[1] = false;\r\n // this.cdRef.detectChanges();\r\n }\r\n });\r\n merge(\r\n this.filterFormGroup.valueChanges,\r\n this.updateFormGroup.valueChanges\r\n )\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.processMessages = [];\r\n });\r\n\r\n merge(\r\n fromEvent(this.addPendingAuthsButton.nativeElement, 'click'),\r\n fromEvent(this.copyAuthsButton.nativeElement, 'click')\r\n )\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.processMessages = [\r\n 'After adding new items you can easily find them by sorting on Modified Date'\r\n ];\r\n });\r\n fromEvent(this.updateMultipleButton.nativeElement, 'click')\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(() => {\r\n this.updateDialogRef = this.dialogService.open(\r\n UpdateMultipleAuthorizationsComponent,\r\n {\r\n header: 'Update Multiple Authorizations',\r\n closable: false,\r\n closeOnEscape: false,\r\n showHeader: false,\r\n modal: true,\r\n data: {\r\n userAuthTypes: this.userAuthTypes,\r\n uniquePayrollItems: this.uniquePayrollItems,\r\n serviceItems: this.serviceItems,\r\n authClasses: this.authClasses\r\n }\r\n }\r\n );\r\n this.updateDialogRef.onClose.pipe(take(1)).subscribe(value => {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:afterClosed',\r\n value\r\n });\r\n\r\n if (value) {\r\n if (\r\n this.selected.length ===\r\n this.dtAuthorizations.value.length\r\n ) {\r\n this.confirmservice\r\n .confirmPromise({\r\n okClass: 'p-button-danger p-button-text',\r\n dialogText: `You have all ${this.selected.length} items selected, are you sure?`\r\n })\r\n .then(() => {\r\n this.applyBulkUpdate(value);\r\n });\r\n } else {\r\n this.applyBulkUpdate(value);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n setupSubscriptions() {\r\n const filterControls = this.filterFormGroup.controls;\r\n const addControls = this.addModeFormGroup.controls;\r\n const filterDatesChanged$ = filterControls['endDate'].valueChanges.pipe(\r\n // combineLatest([\r\n startWith(new Date().getUTCFullYear()),\r\n map(x => new Date(x, 0, 1)),\r\n // map(x => x.getUTCFullYear() === new Date().getUTCFullYear() ? new Date() : x),\r\n tap(endDate =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:endDate:valuechanges',\r\n endDate\r\n })\r\n ),\r\n distinctUntilChanged()\r\n ) as Observable;\r\n // ]);\r\n // .pipe(share())\r\n const addMode$ = addControls[\r\n 'addMode'\r\n ].valueChanges.pipe() as Observable;\r\n\r\n addMode$.pipe(takeWhile(() => this.active)).subscribe(addmode => {\r\n if (!addmode) {\r\n this.activeState[0] = false;\r\n }\r\n });\r\n\r\n const combinedClientFilters$ = combineLatest([\r\n addControls['authType'].valueChanges.pipe(\r\n startWith(addControls['authType'].value)\r\n ),\r\n addControls['directReports'].valueChanges.pipe(\r\n startWith(addControls['directReports'].value)\r\n ),\r\n addControls['task'].valueChanges.pipe(\r\n startWith(addControls['task'].value)\r\n ),\r\n addControls['serviceItem'].valueChanges.pipe(\r\n startWith(addControls['serviceItem'].value)\r\n ),\r\n addControls['authClass'].valueChanges.pipe(\r\n startWith(addControls['authClass'].value)\r\n ),\r\n addControls['ShowSI'].valueChanges.pipe(\r\n startWith(addControls['ShowSI'].value)\r\n ),\r\n addControls['ShowPI'].valueChanges.pipe(\r\n startWith(addControls['ShowPI'].value)\r\n ),\r\n addControls['EmployeeAuthStartDate'].valueChanges.pipe(\r\n startWith(addControls['EmployeeAuthStartDate'].value)\r\n ),\r\n addControls['EmployeeAuthEndDate'].valueChanges.pipe(\r\n startWith(addControls['EmployeeAuthEndDate'].value)\r\n )\r\n ]).pipe(\r\n distinctUntilChanged(\r\n (prev, curr) =>\r\n prev[0] === curr[0] &&\r\n prev[1] === curr[1] &&\r\n prev[2] === curr[2] &&\r\n prev[3] === curr[3] &&\r\n prev[4] === curr[4] &&\r\n prev[5] === curr[5] &&\r\n prev[6] === curr[6] &&\r\n prev[7] === curr[7] &&\r\n prev[8] === curr[8]\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:combinedClientFitlers$',\r\n x\r\n })\r\n )\r\n );\r\n combineLatest([\r\n fromEvent(this.refreshAuthsButton.nativeElement, 'click').pipe(\r\n startWith({})\r\n ),\r\n filterDatesChanged$\r\n ])\r\n .pipe(\r\n takeWhile(x => this.active),\r\n withLatestFrom(addMode$.pipe(startWith(false))),\r\n // debounceTime(250),\r\n skip(1),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:filterDatesChanged$',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(([[click, endDate], addMode]) => {\r\n if (!addMode) {\r\n this.DateFilterChanged.emit({\r\n EmployeeAuthEndDate: this.showPastAuths\r\n ? endDate\r\n : moment().add(-1, 'days').toDate(),\r\n AddAuthMode: addMode\r\n });\r\n }\r\n });\r\n\r\n fromEvent(this.copyAuthsButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n throttleTime(1000),\r\n withLatestFrom(filterDatesChanged$),\r\n tap(() =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationsComponent:copyAuthsButton:ApplyClick'\r\n })\r\n )\r\n )\r\n .subscribe(([click, endDate]) => {\r\n this.selected.forEach(row => {\r\n row.Status.StatusCode = ResponseStatus.Loading;\r\n });\r\n this.Copy.emit(this.selected);\r\n this.selected = [];\r\n });\r\n\r\n fromEvent(this.addPendingAuthsButton.nativeElement, 'click')\r\n .pipe(\r\n takeWhile(x => this.active),\r\n withLatestFrom(filterDatesChanged$),\r\n withLatestFrom(combinedClientFilters$),\r\n distinctUntilChanged(),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:addPendingAuthsButton:click',\r\n x\r\n })\r\n )\r\n )\r\n .subscribe(\r\n ([\r\n [click, endDate],\r\n [\r\n authTypes,\r\n directReports,\r\n tasks,\r\n serviceItems,\r\n classes,\r\n showSI,\r\n showPI,\r\n EmployeeAuthStartDate,\r\n EmployeeAuthEndDate\r\n ]\r\n ]) => {\r\n this.AddPending.emit({\r\n directReports,\r\n tasks:\r\n tasks &&\r\n tasks.map(x => ({\r\n TaskListID: x,\r\n ContractType: null,\r\n LaborType: '',\r\n TaskLongName: ''\r\n })),\r\n serviceItems: serviceItems\r\n ? [{ SIListID: serviceItems }]\r\n : undefined,\r\n classes,\r\n authTypes:\r\n authTypes &&\r\n authTypes.map(x => ({\r\n AuthTypeId: x,\r\n AuthType: '',\r\n AuthTypeDesc: '',\r\n MaintDate: null\r\n })),\r\n endDate,\r\n AddAuthMode: true,\r\n AddAuthValue: true,\r\n showSI: showSI === true,\r\n showPI: showPI === true,\r\n EmployeeAuthStartDate,\r\n EmployeeAuthEndDate\r\n });\r\n this.clearFilters();\r\n }\r\n );\r\n combineLatest([addMode$, combinedClientFilters$])\r\n .pipe(\r\n takeWhile(() => this.active),\r\n withLatestFrom(\r\n this.DateFilterChanged.pipe(\r\n map(x => x.EmployeeAuthEndDate),\r\n // https://github.com/eFAACT/eFAACTCentral/issues/3421\r\n // startWith(moment().add(-1, 'days').toDate())\r\n startWith(undefined)\r\n )\r\n ),\r\n // withLatestFrom(filterDatesChanged$)\r\n // skip(1),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(\r\n ([\r\n [\r\n addMode,\r\n [\r\n authTypes,\r\n directReports,\r\n tasks,\r\n serviceItems,\r\n authClasses,\r\n showSI,\r\n showPI,\r\n EmployeeAuthStartDate,\r\n EmployeeAuthEndDate\r\n ]\r\n ],\r\n endDate\r\n ]) => {\r\n if (!addMode) {\r\n this.activeState[1] = false;\r\n }\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:addMode$',\r\n addMode,\r\n authClasses,\r\n authTypes,\r\n clearingFilters: this.clearingFilters,\r\n directReports,\r\n serviceItems,\r\n showSI,\r\n showPI,\r\n tasks,\r\n endDate,\r\n EmployeeAuthStartDate,\r\n EmployeeAuthEndDate: EmployeeAuthEndDate\r\n ? EmployeeAuthEndDate\r\n : endDate\r\n });\r\n if (addMode && !this.clearingFilters) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:addMode$:emitting:AddModeChanged'\r\n });\r\n // this.showPastAuths = false;\r\n // this.filterFormGroup.controls['endDate'].patchValue(\r\n // new Date().getUTCFullYear()\r\n // );\r\n // this.dtAuthorizations.editMode = 'none';\r\n // this.dtAuthorizations.selectionMode = 'none';\r\n this.AddModeChanged.emit({\r\n AddAuthMode: addMode,\r\n endDate,\r\n directReports: directReports,\r\n tasks:\r\n tasks &&\r\n tasks.map(x => ({\r\n TaskListID: x,\r\n ContractType: null,\r\n LaborType: '',\r\n TaskLongName: ''\r\n })),\r\n serviceItems: serviceItems && [\r\n {\r\n SIListID: serviceItems,\r\n ServiceItem: '',\r\n ServiceItemDesc: ''\r\n }\r\n ],\r\n classes: authClasses,\r\n authTypes:\r\n authTypes &&\r\n authTypes.map(x => ({\r\n AuthTypeId: x,\r\n AuthType: '',\r\n AuthTypeDesc: '',\r\n MaintDate: null\r\n })),\r\n showSI,\r\n showPI,\r\n EmployeeAuthStartDate,\r\n EmployeeAuthEndDate\r\n });\r\n } else {\r\n if (!this.clearingFilters) {\r\n // this.addModeFormGroup.controls['ShowSI'].setValue(null);\r\n this.clearFilters(false);\r\n // this.dtAuthorizations.editMode = 'row';\r\n // this.dtAuthorizations.selectionMode = 'multiple';\r\n this.AddModeChanged.emit({\r\n AddAuthMode: addMode,\r\n endDate,\r\n showSI,\r\n showPI\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }\r\n onRowEditInit(item: UserAuthorization) {\r\n super.onRowEditInit(item);\r\n this.getPayrollItemsForAuth(item);\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:onRowEditInit',\r\n item,\r\n cloned: this.cloned,\r\n editing: this.editing\r\n });\r\n if (!moment(item.EmpAuthStartDate).isValid()) {\r\n item.EmpAuthStartDate = undefined;\r\n }\r\n if (!moment(item.EmpAuthEndDate).isValid()) {\r\n item.EmpAuthEndDate = undefined;\r\n }\r\n }\r\n onRowEditSave(item: UserAuthorization) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:onRowEditSave',\r\n r: item,\r\n cloned: this.cloned\r\n });\r\n this.editFormGroup.updateValueAndValidity();\r\n if (this.editFormGroup.valid) {\r\n item.Status.StatusCode = ResponseStatus.Loading;\r\n item.Status.Message = 'Saving';\r\n item.Status.MsgEntityID = item.id;\r\n this.Save.next([item]);\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n } else {\r\n item.Status.StatusCode = ResponseStatus.ClientError;\r\n item.Status.Message = Object.keys(this.editFormGroup.errors).reduce(\r\n (a, c) => {\r\n return a + `${c} - ${this.editFormGroup.errors[c]}\\r\\n`;\r\n },\r\n ''\r\n );\r\n this.SaveError.next(item);\r\n this.dataTable.initRowEdit(item);\r\n }\r\n }\r\n onRowEditCancel(item: UserAuthorization) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:onRowEditCancel',\r\n r: item,\r\n cloned: this.cloned\r\n });\r\n\r\n const index = this.items.findIndex(x => x.id === item.id);\r\n const revert = this.cloned[item.id];\r\n\r\n if (index >= 0) {\r\n // this.items = [\r\n // ...this.items.slice(0, index),\r\n // {\r\n // ...revert,\r\n // Status:\r\n // revert.Status.StatusCode === ResponseStatus.ClientError\r\n // ? {\r\n // StatusCode: ResponseStatus.None,\r\n // Message: null\r\n // }\r\n // : revert.Status\r\n // },\r\n // ...this.items.slice(index + 1)\r\n // ];\r\n this.items.splice(index, 1, this.cloned[item.id]);\r\n this.items = [...this.items];\r\n }\r\n this.selected = [];\r\n\r\n delete this.cloned[item.id];\r\n delete this.editing;\r\n }\r\n onStatusClick(item: UserAuthorization) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:onStatusClick',\r\n item\r\n });\r\n this.ShowError.emit({ open: true, MsgEntityID: item.id });\r\n }\r\n getPayrollItemsForAuth(rowData: UserAuthorization) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:payrollItemsForAuth',\r\n payrollItems: this.payrollItems\r\n });\r\n const filtered = this.payrollItems\r\n .filter(p => p.EmployeeListID === rowData.EmployeeListID)\r\n .map(x => ({\r\n label: x.PayrollItem,\r\n value: x.PIListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:payrollItemsForAuth',\r\n filtered\r\n });\r\n this.payrollItemsForAuth = filtered;\r\n // return filtered;\r\n }\r\n onDelete(items: UserAuthorization[]) {\r\n this.confirmservice\r\n .confirmPromise({\r\n okClass: 'p-button-danger p-button-text',\r\n dialogText: `Are you sure you want to delete ${\r\n items.length > 1\r\n ? `the ${items.length} selected Authorizations?`\r\n : 'this Authorization'\r\n }?`\r\n })\r\n .then(() => {\r\n this.selected = [];\r\n this.Delete.emit(items.map(x => x.id));\r\n });\r\n }\r\n clearFilters(emit = false): void {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:clearFilters',\r\n emit\r\n });\r\n this.clearingFilters = !emit;\r\n const controls = this.addModeFormGroup.controls;\r\n // const myDate = new Date(\r\n // Date.UTC(\r\n // new Date().getUTCFullYear(),\r\n // new Date().getUTCMonth(),\r\n // new Date().getUTCDate()\r\n // )\r\n // );\r\n controls['authType'].setValue(null);\r\n controls['directReports'].setValue(null);\r\n controls['task'].setValue(null);\r\n controls['serviceItem'].setValue(null);\r\n controls['authClass'].setValue(null);\r\n controls['showAllUsers'].setValue(false);\r\n controls['showAllTasks'].setValue(false);\r\n controls['showAllServiceItems'].setValue(false);\r\n if (!this.addModeFormGroup.controls['addMode'].value) {\r\n controls['ShowSI'].setValue(null);\r\n }\r\n if (!this.addModeFormGroup.controls['addMode'].value) {\r\n controls['ShowPI'].setValue(null);\r\n }\r\n this.clearingFilters = false;\r\n }\r\n addDateRangeFilters() {\r\n this.filterService.register(\r\n 'startDateRangeFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:startDateRangeFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.startDateFilter[0]),\r\n moment(this.startDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n this.filterService.register(\r\n 'endDateRangeFilter',\r\n (value, filter): boolean => {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:endDateRangeFilter',\r\n value,\r\n filter\r\n });\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return moment(value).isBetween(\r\n moment(this.endDateFilter[0]),\r\n moment(this.endDateFilter[1])\r\n );\r\n // get the from/start value\r\n }\r\n );\r\n }\r\n filterPayroll($event) {\r\n this.dtAuthorizations.filter(\r\n $event.value.map(x => x.PIListID),\r\n 'PIListID',\r\n 'in'\r\n );\r\n }\r\n filterServiceItem($event) {\r\n this.dtAuthorizations.filter(\r\n $event.value.map(x => x.SIListID),\r\n 'SIListID',\r\n 'in'\r\n );\r\n }\r\n handleOnOpen($event) {\r\n const baseHeight = '69vh';\r\n let accHeight = 0;\r\n if ($event === 0 || $event.includes(0)) {\r\n accHeight += 13;\r\n } else {\r\n if (this.addModeFormGroup.controls['addMode'].value === true) {\r\n this.addModeFormGroup.controls['addMode'].setValue(false);\r\n }\r\n }\r\n\r\n this.dtAuthorizations.scrollHeight = `calc(${baseHeight} - ${accHeight}em)`;\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:handleOnOpen',\r\n $event,\r\n scrollHeight: this.dtAuthorizations.scrollHeight\r\n });\r\n this.cdRef.detectChanges();\r\n }\r\n updateShowPastAuths(value: boolean) {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:updateShowPastAuths',\r\n value\r\n });\r\n if (value) {\r\n this.DateFilterChanged.emit({\r\n EmployeeAuthEndDate: new Date(\r\n this.filterFormGroup.controls['endDate'].value,\r\n 0,\r\n 1\r\n ),\r\n AddAuthMode: this.addModeFormGroup.controls['addMode'].value\r\n });\r\n } else {\r\n this.filterFormGroup.controls['endDate'].setValue(\r\n new Date().getUTCFullYear()\r\n );\r\n this.DateFilterChanged.emit({\r\n EmployeeAuthEndDate: moment().add(-1, 'days').toDate(),\r\n AddAuthMode: this.addModeFormGroup.controls['addMode'].value\r\n });\r\n }\r\n }\r\n onDisplayHolidaysChange(showHolidays) {\r\n this.filteredItems = this.items.filter(\r\n x => showHolidays || !x.IsHoliday\r\n );\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:onDisplayHolidaysChange',\r\n showHolidays,\r\n auths: this.items,\r\n filtered: this.filteredItems\r\n });\r\n }\r\n hasErrorStatus = auth =>\r\n auth && auth.Status && auth.Status.StatusCode >= DisplayMessageMinimum;\r\n\r\n isLink = text =>\r\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)/.test(\r\n text\r\n );\r\n\r\n validateEdit: ValidatorFn = (\r\n ctrl: AbstractControl\r\n ): ValidationErrors | null => {\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:validateEdit',\r\n ctrl\r\n });\r\n const startDate = ctrl.get('EmpAuthStartDate');\r\n const endDate = ctrl.get('EmpAuthEndDate');\r\n\r\n if (moment(startDate.value).isAfter(moment(endDate.value))) {\r\n return {\r\n ['Authorization Dates']: 'Start date cannot be after End Date'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n onRowSelect($event) {\r\n super.onRowSelect($event);\r\n this.log.verbose({\r\n type: 'UserAuthorizationComponent:onRowSelect',\r\n $event,\r\n selected: this.selected\r\n });\r\n if (this.selected.length > 0) {\r\n this.activeState[1] = true;\r\n } else {\r\n this.activeState[1] = false;\r\n }\r\n }\r\n taskWidth = () =>\r\n this.activeTasks.reduce((a, c) => Math.max(a, c.label.length), 0) / 2 +\r\n 'em';\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromUserAuthorization from './store/user-authorization.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { UserAuthorizationEffects } from './store/user-authorization.effects';\r\nimport { UserAuthorizationContainerComponent } from './user-authorization-container/user-authorization-container.component';\r\nimport { UserAuthorizationComponent } from './user-authorization/user-authorization.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { UserAuthorizationsRoute } from './user-authorization.route';\r\nimport { UpdateMultipleAuthorizationsComponent } from './update-multiple-authorizations/update-multiple-authorizations.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n UserAuthorizationContainerComponent,\r\n UserAuthorizationComponent,\r\n UpdateMultipleAuthorizationsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n StoreModule.forFeature(\r\n fromUserAuthorization.userAuthorizationsFeatureKey,\r\n fromUserAuthorization.reducer\r\n ),\r\n EffectsModule.forFeature([UserAuthorizationEffects]),\r\n UIRouterModule.forChild({\r\n states: [UserAuthorizationsRoute]\r\n })\r\n ]\r\n})\r\nexport class UserAuthorizationsModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { IAuthorizationClass } from '../lookups/IAuthorizationClass';\r\nimport { IAuthorizationType } from '../lookups/IAuthorizationType';\r\nimport { IDirectReport } from '../lookups/IDirectReport';\r\nimport { IServiceItem } from '../lookups/IServiceItem';\r\nimport { ITask } from '../lookups/ITask';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IUserAuthorizationResponse, UserAuthorization } from './store';\r\nimport { PendingAuthorization } from './store/pending-authorization.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserAuthorizationsService {\r\n private uri = `${environment.apiLocation}/Authorization`;\r\n private pendingCountUri = `${environment.apiLocation}/AuthPending`;\r\n private pendingAuthsUri = `${environment.apiLocation}/AuthPrep`;\r\n constructor(\r\n private http: HttpClient,\r\n private log: LoggingService\r\n ) {}\r\n // TODO: fix the case mismatches\r\n buildPostRequest(params: {\r\n // endDate?: Date;\r\n directReports?: Array>;\r\n tasks?: Array>;\r\n serviceItems?: Array>;\r\n classes?: Array>;\r\n authTypes?: Array>;\r\n modifiedDate?: Date;\r\n endDateOperator?: string;\r\n modifiedDateOperator?: string;\r\n AddAuthMode?: boolean;\r\n AddAuthAction?: boolean;\r\n showSI?: boolean;\r\n showPI?: boolean;\r\n EmployeeAuthStartDate?: Date;\r\n EmployeeAuthEndDate?: Date;\r\n }): {\r\n ModifiedDateTime: string;\r\n DirectReports: Array>;\r\n Tasks: Array>;\r\n ServiceItems: Array>;\r\n Classes: Array>;\r\n AuthTypes: Array>;\r\n EndDateOperator: string;\r\n ModifiedDateOperator: string;\r\n AddAuthAction?: boolean;\r\n AddAuthMode?: boolean;\r\n ShowSI?: boolean;\r\n ShowPI?: boolean;\r\n EmployeeAuthStartDate?: string;\r\n EmployeeAuthEndDate?: string;\r\n } {\r\n const defaults = {\r\n endDateOperator: 'GE',\r\n // params.AddAuthMode === true\r\n // ? params.EmployeeAuthEndDate\r\n // ? 'GE'\r\n // : null\r\n // : 'GE',\r\n modifiedDateOperator: undefined,\r\n // endDate: moment().format('YYYY-MM-DD'),\r\n modifiedDate: undefined,\r\n directReports: [],\r\n tasks: [],\r\n serviceItems: [],\r\n classes: [],\r\n authTypes: [],\r\n AddAuthAction: false,\r\n AddAuthMode: true,\r\n // EmployeeAuthStartDate: moment().format('YYYY-MM-01'),\r\n EmployeeAuthStartDate: undefined,\r\n EmployeeAuthEndDate:\r\n params.AddAuthMode === true\r\n ? undefined\r\n : moment(params.EmployeeAuthEndDate).format('YYYY-MM-DD') ??\r\n moment().format('YYYY-MM-DD')\r\n };\r\n\r\n const temp = {\r\n endDateOperator: params.endDateOperator || defaults.endDateOperator,\r\n modifiedDateOperator:\r\n params.modifiedDateOperator || defaults.modifiedDateOperator,\r\n // endDate: params.endDate || defaults.endDate,\r\n modifiedDate: params.modifiedDate || defaults.modifiedDate,\r\n directReports: params.directReports || defaults.directReports,\r\n tasks: params.tasks || defaults.tasks,\r\n serviceItems: params.serviceItems || defaults.serviceItems,\r\n classes: params.classes || defaults.classes,\r\n authTypes: params.authTypes || defaults.authTypes,\r\n AddAuthAction: params.AddAuthAction || defaults.AddAuthAction,\r\n AddAuthMode: params.AddAuthMode || defaults.AddAuthMode,\r\n showSI: params.showSI,\r\n showPI: params.showPI,\r\n EmployeeAuthStartDate: params.EmployeeAuthStartDate\r\n ? moment(params.EmployeeAuthStartDate).format('YYYY-MM-DD')\r\n : defaults.EmployeeAuthStartDate,\r\n EmployeeAuthEndDate: params.EmployeeAuthEndDate\r\n ? moment(params.EmployeeAuthEndDate).format('YYYY-MM-DD')\r\n : defaults.EmployeeAuthEndDate\r\n };\r\n\r\n const request = {\r\n // TODO: what's the create date param?\r\n ModifiedDateTime: temp.modifiedDate\r\n ? moment(temp.modifiedDate).format('YYYY-MM-DD')\r\n : null,\r\n DirectReports: temp.directReports,\r\n Tasks: temp.tasks,\r\n // Tasks: temp.tasks,\r\n ServiceItems: temp.serviceItems,\r\n // ServiceItems: temp.serviceItems,\r\n Classes: temp.classes,\r\n AuthTypes: temp.authTypes,\r\n EndDateOperator: temp.endDateOperator,\r\n ModifiedDateOperator: temp.modifiedDateOperator,\r\n AddAuthAction: temp.AddAuthAction,\r\n AddAuthMode: temp.AddAuthMode,\r\n ShowSI: temp.showSI,\r\n ShowPI: temp.showPI,\r\n EmployeeAuthStartDate: temp.EmployeeAuthStartDate,\r\n EmployeeAuthEndDate: temp.EmployeeAuthEndDate\r\n };\r\n\r\n this.log.debug({\r\n type: 'UserAuthorizationsService:buildPostRequest',\r\n defaults,\r\n request,\r\n params,\r\n temp\r\n });\r\n // if (!params.EmployeeAuthStartDate) {\r\n // delete request.EmployeeAuthStartDate;\r\n // }\r\n return request;\r\n }\r\n mapAuthorization(item: UserAuthorization): UserAuthorization {\r\n return {\r\n ...item,\r\n id: item.EmpAuthID,\r\n EmpAuthEndDate: moment(item.EmpAuthEndDate).isValid()\r\n ? moment(item.EmpAuthEndDate).toDate()\r\n : null,\r\n EmpAuthStartDate: moment(item.EmpAuthStartDate).isValid()\r\n ? moment(item.EmpAuthStartDate).toDate()\r\n : null,\r\n ModifiedDateTime: moment(item.ModifiedDateTime).isValid()\r\n ? moment(item.ModifiedDateTime).toDate()\r\n : null\r\n } as UserAuthorization;\r\n }\r\n mapAuthorizations(items: UserAuthorization[]): UserAuthorization[] {\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:mapAuthorizations',\r\n this: this\r\n });\r\n return items.map(item => this.mapAuthorization(item));\r\n }\r\n public getUserAuthorizations(params: {\r\n endDate?: Date;\r\n directReports?: Array;\r\n tasks?: Array;\r\n serviceItems?: Array;\r\n classes?: Array;\r\n authTypes?: Array;\r\n modifiedDate?: Date;\r\n endDateOperator?: string;\r\n modifiedDateOperator?: string;\r\n AddAuthAction?: boolean;\r\n AddAuthMode?: boolean;\r\n showSI?: boolean;\r\n showPI?: boolean;\r\n }): Observable> {\r\n this.log.debug({\r\n type: 'UserAuthorizationsService:getUserAuthorizations',\r\n params\r\n });\r\n\r\n const request = this.buildPostRequest(params);\r\n\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:getUserAuthorizations',\r\n uri: this.uri,\r\n request\r\n });\r\n return this.http.post(this.uri, request).pipe(\r\n map(items => this.mapAuthorizations(items)),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:getUserAuthorizations:reponse',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n\r\n public putUserAuthorizations(\r\n authorizations: Array\r\n ): Observable {\r\n return this.http\r\n .put(this.uri, {\r\n Authorizations: authorizations\r\n // TODO: remove the enddateoperator when it is removed from the API\r\n .map(this.mapAuthorization)\r\n .map(a => ({\r\n ...a,\r\n EndDateOperator: 'XX',\r\n ClassListID: a.ClassListID || 'na'\r\n }))\r\n })\r\n .pipe(\r\n map(resp => ({\r\n ...resp,\r\n Items: this.mapAuthorizations(resp.Items)\r\n })),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:putUserAuthorizations:reponse',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n public deleteAuthorizations(\r\n authorizations: Array\r\n ): Observable {\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:deleteAuthorizations',\r\n uri: this.uri,\r\n authorizations\r\n });\r\n\r\n return (\r\n this.http\r\n // TODO: change to .delete when upgrading to NG7\r\n .request('DELETE', this.uri, {\r\n body: { EntityIDs: authorizations }\r\n })\r\n .pipe(\r\n map(res => {\r\n return {\r\n ...res,\r\n Items: this.mapAuthorizations(res.Items)\r\n };\r\n }),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:deleteAuthorizations:reponse',\r\n data\r\n })\r\n )\r\n )\r\n );\r\n }\r\n public getPendingAuthorizationsCount(): Observable {\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:getPendingAuthorizationsCount'\r\n });\r\n return this.http\r\n .get<{ AuthPending: number }>(this.pendingCountUri)\r\n .pipe(map(x => x.AuthPending));\r\n }\r\n public addPendingAuthorizations(params: {\r\n endDate: Date;\r\n endDateOperator: string;\r\n directReports: Array>;\r\n tasks: Array>;\r\n serviceItems: Array>;\r\n classes: Array>;\r\n authTypes: Array>;\r\n modifiedDate: Date;\r\n AddAuthMode?: boolean;\r\n AddAuthAction?: boolean;\r\n showSI?: boolean;\r\n EmployeeAuthStartDate?: Date;\r\n EmployeeAuthEndDate?: Date;\r\n }): Observable {\r\n const request: any = this.buildPostRequest(params);\r\n request.AddAuthMode = true;\r\n request.AddAuthAction = true;\r\n\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:addPendingAuthorizations',\r\n uri: this.uri,\r\n request\r\n });\r\n\r\n return this.http.post>(this.uri, request).pipe(\r\n map(items => this.mapAuthorizations(items)),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserAuthorizationsService:addPendingAuthorizations:reponse',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n public getPendingAuthorizations(): Observable {\r\n return this.http.get(this.pendingAuthsUri);\r\n }\r\n}\r\n","import { IUserAccess } from './store/user.reducer';\r\nimport { IUserInfo } from './IUserInfo';\r\n\r\nexport interface IUser extends IUserAccess {\r\n givenName: string;\r\n familyName: string;\r\n // messages: number;\r\n userInfo: IUserInfo;\r\n}\r\n","export interface IUserColor {\r\n EmployeeListID: string;\r\n StatusID: number;\r\n Status: string;\r\n Forecolor_Hex: string;\r\n Forecolor_Name: string;\r\n Backcolor_hex: string;\r\n Backcolor_Name: string;\r\n IsBold: boolean;\r\n}\r\n","export interface IUserInfo {\r\n CurrentPayPeriodStart: Date;\r\n CurrentPayPeriodEnd: Date;\r\n PrevPayPeriodStart: Date;\r\n PrevPayPeriodEnd: Date;\r\n EmployeeListID: string;\r\n EmployeeName: string;\r\n EUserID: string;\r\n EmailAddr: string;\r\n MobileNumber: string;\r\n CompanyName: string;\r\n DefaultRoleGroupID: number;\r\n FYStartDate: Date;\r\n FYEndDate: Date;\r\n UserEntryStartDate: Date;\r\n UserEntryEndDate: Date;\r\n IsSuperUser?: boolean;\r\n OversignRequired: boolean;\r\n RoleGroupID: number;\r\n ExpensePurposeRequired?: boolean;\r\n Emppaycycle?: boolean;\r\n Allowsplitday?: boolean;\r\n TCIncludeClassify?: boolean;\r\n MaxNbrofReports?: number;\r\n eFC_Beta?: boolean;\r\n Signaturepolicyrequired?: boolean;\r\n UserHasSplitDay?: boolean;\r\n ShowSignaturePolicy?: boolean;\r\n Initialroutename?: string;\r\n Initialcatid?: number;\r\n Customcompanyurl?: string;\r\n LeaveAccrualInfo?: string;\r\n Requiretimesubmit?: boolean;\r\n AccountNumber?: string;\r\n ShowSI?: boolean;\r\n IsActive?: boolean;\r\n ShowBetaMessage?: boolean;\r\n UsingIntuitPayroll?: boolean;\r\n LegacyPswdReset?: boolean;\r\n Isprocessing?: boolean;\r\n Leaveasfycarryover?: boolean;\r\n UserEntryPeriodExpectedHours?: number;\r\n ShowFR?: boolean;\r\n ShowMH?: boolean;\r\n ShowM2?: boolean;\r\n LastInvoiceStart?: Date;\r\n LastInvoiceEnd?: Date;\r\n}\r\n","export enum UserRoleEnum {\r\n None = 0,\r\n Administrator = 1,\r\n Supervisor = 12024,\r\n TaskManager = 12025,\r\n ReportAdmin = 12029,\r\n Subcontractor = 12030,\r\n ProcessAdmin = 12023\r\n}\r\n","export * from './store';\r\nexport * from './IUser';\r\nexport * from './IUserColor';\r\nexport * from './IUserInfo';\r\nexport * from './IUserRole';\r\n","export * from './user.actions';\r\nexport * from './user.reducer';\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { UserInfoService } from '../user-info.service';\r\nimport { map, catchError, flatMap, switchMap } from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../store';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Injectable()\r\nexport class UserInfoEffects {\r\n constructor(\r\n private actions$: Actions,\r\n @Inject(UserInfoService) private userInfoService: UserInfoService,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n @Effect() UserProcessCategories$ = this.actions$.pipe(\r\n ofType(\r\n fromUser.UserActionTypes.LoadUserPermissions\r\n ),\r\n switchMap(action =>\r\n this.userInfoService.get().pipe(\r\n map(\r\n perms =>\r\n new fromUser.SetUserPermissions({\r\n ...perms,\r\n UserProcessesMain: perms.UserProcessesMain.map(\r\n x => ({\r\n ...x,\r\n target: x.target ?? '_blank'\r\n })\r\n ),\r\n UserProcessCategories:\r\n perms.UserProcessCategories.map(x => ({\r\n ...x,\r\n UserProcesses: x.UserProcesses.map(y => ({\r\n ...y,\r\n target: y.target ?? '_blank'\r\n }))\r\n }))\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadUserInfo$ = this.actions$.pipe(\r\n ofType(fromUser.UserActionTypes.LoadUserInfo),\r\n switchMap(action =>\r\n this.userInfoService.getUserInfo().pipe(\r\n map(\r\n info =>\r\n new fromUser.SetUserInfo({\r\n ...info\r\n })\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadUserColors$ = this.actions$.pipe(\r\n ofType(\r\n fromUser.UserActionTypes.LoadUserColors\r\n ),\r\n switchMap(x =>\r\n this.userInfoService.getUserColors(x.EmployeeListID).pipe(\r\n map(colors => new fromUser.SetUserColors(colors)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport { IUserColor } from '../IUserColor';\r\nimport { IUserInfo } from '../IUserInfo';\r\nimport { IUserAccess } from './user.reducer';\r\n\r\nexport enum UserActionTypes {\r\n LoadUserPermissions = '[user-info] Load User Permissions',\r\n SetUserPermissions = '[user-info] Set User Permissions',\r\n Logout = '[user-info] Logout',\r\n LoadUserInfo = '[user-info] Load User Info',\r\n LoadUserColors = '[user-info] Load User Colors',\r\n SetUserColors = '[user-info] Set User Colors',\r\n SetUserInfo = '[user-info] Set User Info',\r\n SetSignaturePolicy = '[user-info] Set Signature Policy'\r\n}\r\n\r\nexport class LoadUserInfo implements Action {\r\n readonly type = UserActionTypes.LoadUserInfo;\r\n}\r\nexport class SetUserInfo implements Action {\r\n readonly type = UserActionTypes.SetUserInfo;\r\n constructor(public payload: IUserInfo) {}\r\n}\r\nexport class LoadUserColors implements Action {\r\n readonly type = UserActionTypes.LoadUserColors;\r\n constructor(public EmployeeListID: string) {}\r\n}\r\nexport class SetUserColors implements Action {\r\n readonly type = UserActionTypes.SetUserColors;\r\n constructor(public payload: Array) {}\r\n}\r\n\r\nexport class LoadUserPermissions implements Action {\r\n readonly type = UserActionTypes.LoadUserPermissions;\r\n}\r\nexport class SetUserPermissions implements Action {\r\n readonly type = UserActionTypes.SetUserPermissions;\r\n constructor(public payload: IUserAccess) {}\r\n}\r\n\r\nexport class SetSignaturePolicy implements Action {\r\n readonly type = UserActionTypes.SetSignaturePolicy;\r\n constructor(public payload: IUserInfo) {}\r\n}\r\n\r\nexport type UserActionsUnion =\r\n | LoadUserPermissions\r\n | SetUserPermissions\r\n | LoadUserInfo\r\n | SetUserInfo\r\n | LoadUserColors\r\n | SetUserColors\r\n | SetSignaturePolicy;\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { environment } from '../../../environments/environment';\r\nimport { IReport } from '../../report/IReport';\r\nimport { Process } from '../../shared';\r\nimport { Category } from '../../shared/category/category.model';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { IUserColor } from '../IUserColor';\r\nimport { IUserInfo } from '../IUserInfo';\r\nimport { UserActionsUnion, UserActionTypes } from './user.actions';\r\nimport { IUser } from '../IUser';\r\nexport const userFeatureKey = 'user';\r\nexport interface IUserAccess {\r\n UserProcessCategories: Array;\r\n UserProcessesMain: Array;\r\n UserReportsMain: Array;\r\n}\r\n\r\nconst log = new LoggingService();\r\n\r\nexport interface State extends IUserAccess {\r\n givenName: string | undefined;\r\n familyName: string | undefined;\r\n userInfo: IUserInfo;\r\n UserWebColors: Array;\r\n}\r\n\r\nexport const initialState: State = {\r\n UserProcessCategories: [],\r\n UserProcessesMain: [],\r\n UserReportsMain: [],\r\n givenName: undefined as any,\r\n familyName: undefined as any,\r\n userInfo: {\r\n MaxNbrofReports: environment.defaultMaxReports\r\n } as IUserInfo,\r\n UserWebColors: []\r\n};\r\n\r\nfunction parseName(employeeName: string) {\r\n const parts = employeeName.split(',');\r\n return {\r\n givenName: parts[1],\r\n familyName: parts[0]\r\n };\r\n}\r\n\r\nexport function reducer(\r\n state: State = initialState,\r\n action: UserActionsUnion\r\n): State {\r\n let name = {\r\n familyName: undefined as any,\r\n givenName: undefined as any\r\n };\r\n switch (action.type) {\r\n case UserActionTypes.SetUserPermissions:\r\n log.debug({\r\n type: 'UserInfoReducer:SetUserPermissions',\r\n payload: action.payload\r\n });\r\n try {\r\n name = parseName(\r\n action.payload.UserReportsMain[0].EmployeeName\r\n );\r\n } catch (e) {\r\n // nothing\r\n }\r\n return {\r\n ...state,\r\n ...action.payload,\r\n givenName: name.givenName,\r\n familyName: name.familyName\r\n };\r\n case UserActionTypes.SetUserInfo:\r\n return {\r\n ...state,\r\n userInfo: {\r\n ...action.payload,\r\n MaxNbrofReports:\r\n action.payload.MaxNbrofReports ||\r\n state.userInfo.MaxNbrofReports,\r\n ShowSignaturePolicy: true,\r\n LastInvoiceEnd: new Date(\r\n action.payload.LastInvoiceEnd as any\r\n ),\r\n LastInvoiceStart: new Date(\r\n action.payload.LastInvoiceStart as any\r\n )\r\n }\r\n };\r\n case UserActionTypes.SetUserColors:\r\n return {\r\n ...state,\r\n UserWebColors: [...action.payload]\r\n };\r\n case UserActionTypes.SetSignaturePolicy:\r\n return {\r\n ...state,\r\n userInfo: {\r\n ...state.userInfo,\r\n ShowSignaturePolicy: action.payload.ShowSignaturePolicy\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\nconst userState = createFeatureSelector('user');\r\nexport const getUserProcessCategories = createSelector(\r\n userState,\r\n x => x.UserProcessCategories\r\n);\r\nexport const getUserProcessesMain = createSelector(\r\n userState,\r\n x => x.UserProcessesMain\r\n);\r\n// export const getUserReportsMain = (state: State) => state.UserReportsMain;\r\n// export const getUserRememberMe = (state: State) => state.rememberMe;\r\nexport const getUserInfo = createSelector(userState, x => x.userInfo);\r\nexport const getUser = createSelector(userState, x => x as IUser);\r\n// TODO: map to new userInfo property when API is updated\r\nexport const getSuperuserEnabled = createSelector(\r\n userState,\r\n x => x.userInfo.IsSuperUser\r\n);\r\nexport const getUserColors = createSelector(userState, x => x.UserWebColors);\r\nexport const getUserColorsSorted = createSelector(getUserColors, x =>\r\n [...x].sort((a, b) => a.StatusID - b.StatusID)\r\n);\r\nexport const getMaxReports = createSelector(\r\n userState,\r\n x => x.userInfo.MaxNbrofReports\r\n);\r\nexport const getUserProcesses = createSelector(\r\n userState,\r\n x =>\r\n x.UserProcessCategories.reduce(\r\n (a, c) => a.concat(c.UserProcesses),\r\n [] as Process[]\r\n ) as Process[]\r\n);\r\nexport const getProcessByName = createSelector(\r\n getUserProcesses,\r\n (x: Process[], props: { ProcessName: string }) =>\r\n x.find(y => y.ProcessName === props.ProcessName)\r\n);\r\n\r\nexport const getUserProcessesMainByName = createSelector(\r\n getUserProcessesMain,\r\n (x: Process[], props: { ProcessName: string }) =>\r\n x.find(y => y.ProcessName === props.ProcessName)\r\n);\r\n","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { Subscription } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { MenuItem } from '../shared/efaact-primeng.module';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport * as fromUser from '../user-info/store/user.reducer';\r\nimport { IUserRole } from '../user-role/IUserRole';\r\nimport * as fromRole from '../user-role/store/reducers';\r\nimport { UserRoleComponent } from '../user-role/user-role.component';\r\nimport { IUser } from './IUser';\r\n\r\n@Component({\r\n selector: 'ef-user-info',\r\n templateUrl: './user-info.component.html',\r\n styleUrls: ['./user-info.component.scss']\r\n})\r\nexport class UserInfoComponent implements OnInit, OnDestroy {\r\n private userSub: Subscription;\r\n private roleSub: Subscription;\r\n public employeeName: string;\r\n public defaultRoleGroupID: number;\r\n public roleGroupName: string;\r\n private urStore: Store;\r\n public urc: UserRoleComponent;\r\n @Input() public user: IUser;\r\n active = true;\r\n public menuItems: MenuItem[];\r\n public userRoles: IUserRole[];\r\n public roleItems: MenuItem[];\r\n constructor(\r\n private store: Store,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this.userSub.unsubscribe();\r\n this.roleSub.unsubscribe();\r\n this.active = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.urc = new UserRoleComponent(this.urStore, this.store, this.log);\r\n // this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.roleSub = this.store\r\n .pipe(\r\n takeWhile(() => this.active),\r\n select(fromRole.getUserRoles)\r\n )\r\n .subscribe(roles => {\r\n this.log.debug({\r\n type: 'UserInfoComponent:role-subscribe',\r\n roles\r\n });\r\n this.userRoles = roles;\r\n roles.forEach(role => {\r\n if (role.RoleGroupID == this.defaultRoleGroupID) {\r\n this.roleGroupName = role.GroupName;\r\n }\r\n });\r\n });\r\n\r\n this.roleItems = this.rolesToItems(this.userRoles);\r\n\r\n this.userSub = this.store\r\n .pipe(\r\n takeWhile(() => this.active),\r\n select(fromUser.getUser)\r\n )\r\n .subscribe(user => {\r\n this.log.debug({\r\n type: 'UserInfoComponent:user-subscribe',\r\n user\r\n });\r\n this.user = user;\r\n\r\n if (user.userInfo.EmployeeName != null) {\r\n this.employeeName = user.userInfo.EmployeeName;\r\n this.defaultRoleGroupID = user.userInfo.DefaultRoleGroupID;\r\n\r\n this.menuItems = [\r\n {\r\n label: this.employeeName,\r\n items: [\r\n {\r\n label: `User Role (this.roleGroupName)`,\r\n items: this.roleItems\r\n },\r\n {\r\n label: 'Logout'\r\n // command: () => this.urc.roleChosen(role.RoleGroupID)\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n });\r\n }\r\n\r\n public rolesToItems(roles) {\r\n const rolesAsItems: MenuItem[] = [];\r\n roles.forEach(role => {\r\n rolesAsItems.push({\r\n label: role.GroupName,\r\n command: () => this.urc.roleChosen(role.RoleGroupID)\r\n });\r\n });\r\n return rolesAsItems;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { UserInfoEffects } from './store/user-info.effects';\r\nimport { reducer, userFeatureKey } from './store/user.reducer';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n , StoreModule.forFeature(userFeatureKey, reducer)\r\n , EffectsModule.forFeature([UserInfoEffects]),\r\n ],\r\n declarations: []\r\n})\r\nexport class UserInfoModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { IUserAccess } from '../user-info/store/user.reducer';\r\nimport { IUserInfo } from './IUserInfo';\r\nimport * as fromUser from '../user-info/store/user.reducer';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { UserRoleComponent } from '../user-role/user-role.component';\r\nimport { IUserColor } from './IUserColor';\r\nimport * as moment from 'moment';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserInfoService {\r\n public userRoleComponent: UserRoleComponent;\r\n private userSub: Subscription;\r\n public userInfo: IUserInfo;\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) {}\r\n\r\n public get(): Observable {\r\n const url = `${environment.apiLocation}/Main`;\r\n\r\n return this.http.get(url).pipe(\r\n tap(res =>\r\n this.log.verbose({\r\n type: 'UserInfoService:get:reponse',\r\n res\r\n })\r\n )\r\n );\r\n }\r\n\r\n public getUserInfo(): Observable {\r\n const url = `${environment.apiLocation}/UserInfo`;\r\n return this.http.get>(url).pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserInfoService:getUserInfo:reponse',\r\n data\r\n })\r\n ),\r\n map(x => x[0]),\r\n map(x => ({\r\n ...x,\r\n CurrentPayPeriodStart: moment(x.CurrentPayPeriodStart).toDate(),\r\n CurrentPayPeriodEnd: moment(x.CurrentPayPeriodEnd).toDate(),\r\n FYStartDate: moment(x.FYStartDate).toDate(),\r\n FYEndDate: moment(x.FYEndDate).toDate(),\r\n PrevPayPeriodStart: moment(x.PrevPayPeriodStart).toDate(),\r\n PrevPayPeriodEnd: moment(x.PrevPayPeriodEnd).toDate(),\r\n UserEntryStartDate: moment(x.UserEntryStartDate).toDate(),\r\n UserEntryEndDate: moment(x.UserEntryEndDate).toDate()\r\n }))\r\n );\r\n }\r\n public getUserColors(\r\n EmployeeListID: string\r\n ): Observable> {\r\n const url = `${environment.apiLocation}/UserWebColor`;\r\n this.log.verbose({\r\n type: 'UserInfoService:getUserColors',\r\n EmployeeListID\r\n });\r\n return this.http\r\n .post>(url, { EmployeeListID: EmployeeListID })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserInfoService:getUserColors:reponse',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n}\r\n","export interface IUserRole {\r\n RoleGroupID: number;\r\n GroupName: string;\r\n Purpose: string;\r\n}\r\n","export * from './IUserRole';\r\nexport * from './store';\r\n","import { Action } from '@ngrx/store';\r\nimport { IUserRole } from '../IUserRole';\r\n\r\nexport enum UserRoleActionTypes {\r\n LoadUserRoles = '[user_role] Load User Roles',\r\n SetUserRole = '[user_role] Set Role',\r\n Reset = '[user_role] Reset'\r\n}\r\n\r\nexport class Reset implements Action {\r\n readonly type = UserRoleActionTypes.Reset;\r\n}\r\nexport class LoadUserRoles implements Action {\r\n readonly type = UserRoleActionTypes.LoadUserRoles;\r\n}\r\nexport class SetUserRole implements Action {\r\n constructor(public payload: Array) {}\r\n readonly type = UserRoleActionTypes.SetUserRole;\r\n}\r\n\r\nexport type UserRoleActionsUnion = LoadUserRoles | SetUserRole | Reset;\r\n","export * from './reducers';\r\nexport * from './actions';\r\n","import * as fromUserRole from './actions';\r\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { IUserRole } from '../IUserRole';\r\n\r\nexport interface UserRoleState {\r\n userRoles: Array;\r\n}\r\n\r\nexport const initialState: UserRoleState = {\r\n userRoles: []\r\n};\r\n\r\nexport function reducer(\r\n state: UserRoleState = initialState,\r\n action: fromUserRole.UserRoleActionsUnion\r\n): UserRoleState {\r\n switch (action.type) {\r\n case fromUserRole.UserRoleActionTypes.SetUserRole:\r\n return {\r\n ...state,\r\n userRoles: [...action.payload]\r\n };\r\n case fromUserRole.UserRoleActionTypes.Reset:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst userRoleState = createFeatureSelector('user_role');\r\n\r\nexport const getUserRoles = createSelector(userRoleState, x => x.userRoles);\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport { UserRoleService } from '../user-role.service';\r\nimport {\r\n UserRoleActionTypes,\r\n SetUserRole,\r\n LoadUserRoles,\r\n Reset\r\n} from './actions';\r\nimport { mergeMap, map, catchError, switchMap, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { IUserRole } from '../IUserRole';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport { UserRoleEnum } from '../../user-info';\r\nimport { StateService } from '@uirouter/core';\r\n@Injectable()\r\nexport class UserRoleEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private userRoleService: UserRoleService,\r\n private log: LoggingService,\r\n private ss: StateService\r\n ) {}\r\n\r\n @Effect() LoadUserRoles$ = this.actions$.pipe(\r\n ofType(UserRoleActionTypes.LoadUserRoles),\r\n switchMap(action =>\r\n this.userRoleService.getUserRoles().pipe(\r\n map(roles => new SetUserRole(roles)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n @Effect({ dispatch: false }) SetUserRole$ = this.actions$.pipe(\r\n ofType(UserRoleActionTypes.SetUserRole),\r\n tap((action: SetUserRole) => {\r\n this.log.verbose({ type: 'SetUserGroups$', action });\r\n if (\r\n action.payload.some(\r\n x => x.RoleGroupID === UserRoleEnum.Administrator\r\n )\r\n ) {\r\n this.log.verbose({\r\n type: 'SetUserGroups$',\r\n message: 'user is admin, redirecting to register (user-role.effects)'\r\n });\r\n this.ss.go('register', {\r\n supercede: true\r\n });\r\n }\r\n })\r\n );\r\n}\r\n","import { Component, OnInit, Inject, Input, OnDestroy, EventEmitter, Output } from '@angular/core';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { IUserRole } from './IUserRole';\r\nimport { Observable } from 'rxjs';\r\nimport * as fromUserRole from './store/reducers';\r\nimport * as fromUser from '../user-info/store/user.reducer';\r\nimport { UserRoleState } from './store/reducers';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { SetUserInfo } from '../user-info/store/user.actions';\r\nimport { IUserInfo } from '../user-info/IUserInfo';\r\nimport { UserInfoService } from '../user-info/user-info.service';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ef-user-role',\r\n templateUrl: './user-role.component.html',\r\n styleUrls: ['./user-role.component.scss']\r\n})\r\nexport class UserRoleComponent implements OnInit, OnDestroy {\r\n\r\n active = true;\r\n roleFormGroup: FormGroup;\r\n public userInfoService: UserInfoService;\r\n public userRoles$: Observable>;\r\n public userRoles: Array;\r\n public userInfo$: Observable;\r\n public userInfo: IUserInfo;\r\n public selectedRoleID: number;\r\n @Input() public roleGroupName: string;\r\n constructor(\r\n private store: Store,\r\n private userInfoStore: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n ) {\r\n this.roleFormGroup = new FormGroup({\r\n userRole: new FormControl(null)\r\n });\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.userRoles$ = this.store.pipe(select(fromUserRole.getUserRoles));\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n\r\n this.roleFormGroup.controls['userRole'].valueChanges.pipe(\r\n takeWhile(_ => this.active)\r\n )\r\n .subscribe(value => this.roleChosen(value));\r\n\r\n this.userInfo$\r\n .pipe(\r\n takeWhile(() => this.active)\r\n )\r\n .subscribe(x => this.userInfo = x);\r\n\r\n this.userRoles$\r\n .pipe(\r\n takeWhile(() => this.active)\r\n )\r\n .subscribe(x => this.userRoles = x);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n// INFO: these XXXDisplay functions are for deficiences with mat-autocomplete, see\r\n// https://material.angular.io/components/autocomplete/overview#setting-separate-control-and-display-values\r\n public roleDisplay(id) {\r\n const that = this as any;\r\n if (that) {\r\n // return that.find(a => a.AuthTypeId === id).AuthType;\r\n return that.findIndex(x => x.RoleGroupID === id) < 0\r\n ? id\r\n : that.find(a => a.RoleGroupID === id).GroupName;\r\n }\r\n }\r\n roleChosen(roleID: number) {\r\n this.log.debug({type: 'UserRoleComponent:roleChosen', roleID});\r\n this.selectedRoleID = roleID;\r\n this.userInfoStore.dispatch(new SetUserInfo({...this.userInfo, DefaultRoleGroupID: roleID}));\r\n this.userRoles.forEach((role) => {\r\n if (role.RoleGroupID == this.selectedRoleID) {\r\n this.roleGroupName = role.GroupName;\r\n }\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport * as fromUserRole from './store/reducers';\r\nimport { UserRoleComponent } from './user-role.component';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { UserRoleEffects } from './store/user-role.effects';\r\nimport { MultiSelectModule } from '../shared/efaact-primeng.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n , StoreModule.forFeature('user_role', fromUserRole.reducer)\r\n , EffectsModule.forFeature([UserRoleEffects])\r\n , EfaactMaterialModule\r\n , FormsModule\r\n , ReactiveFormsModule\r\n , BrowserAnimationsModule\r\n , MultiSelectModule\r\n ],\r\n declarations: [\r\n // UserRoleComponent\r\n ]\r\n\r\n})\r\nexport class UserRoleModule { }\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable, Observer } from 'rxjs';\r\nimport * as moment from 'moment';\r\nimport { tap } from 'rxjs/operators';\r\nimport { IUserRole } from './IUserRole';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserRoleService {\r\n private uri = `${environment.apiLocation}/UserRole`;\r\n public roles$: Observable> = new Observable>(\r\n o => (this._observer = o)\r\n );\r\n constructor(\r\n @Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService\r\n ) { }\r\n\r\n private _observer: Observer>;\r\n\r\n public getUserRoles (): Observable> {\r\n return this.http\r\n .get>(this.uri)\r\n .pipe(\r\n tap(data => this.log.verbose({ type: 'UserRoleService:getUserRoles:reponse', data }))\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output, Inject, OnDestroy, AfterViewInit, forwardRef, ViewChild, AfterContentInit } from '@angular/core';\r\nimport { IDirectReport } from '../../lookups';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { Dropdown } from '../../shared/efaact-primeng.module';\r\n\r\n@Component({\r\n selector: 'ef-user-selector-dropdown',\r\n templateUrl: './user-selector-dropdown.component.html',\r\n styleUrls: ['./user-selector-dropdown.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UserSelectorDropdownComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UserSelectorDropdownComponent\r\n implements OnInit, AfterViewInit, AfterContentInit, ControlValueAccessor {\r\n @Input() Users: Array;\r\n @Input() public filter: boolean;\r\n @Input() public placeholder: string;\r\n @ViewChild('ddUser', { static: true }) ddUser: Dropdown;\r\n private formControlChanged: Function;\r\n private formControlTouched: Function;\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.log.verbose({type: 'UserSelectorDropdownComponent:ngOnInit', Users: this.Users});\r\n }\r\n ngAfterContentInit (): void {\r\n this.ddUser.registerOnChange(this.formControlChanged);\r\n this.ddUser.registerOnTouched(this.formControlTouched);\r\n }\r\n\r\n ngAfterViewInit (): void {\r\n }\r\n // #ControlValueAccessor\r\n writeValue(obj: any) {\r\n if (this.ddUser) {this.ddUser.writeValue(obj); }\r\n }\r\n public registerOnChange(fn: Function) {\r\n this.formControlChanged = fn || function() {};\r\n }\r\n\r\n public registerOnTouched(fn: Function) {\r\n this.formControlTouched = fn || function() {};\r\n }\r\n setDisabledState(isDisabled: boolean) {\r\n this.ddUser.setDisabledState(isDisabled);\r\n }\r\n // #end ControlValueAccessor\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UserSelectorDropdownComponent } from './presenters/user-selector-dropdown.component';\r\nimport { DropdownModule } from '../shared/efaact-primeng.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n , DropdownModule\r\n ],\r\n exports: [\r\n UserSelectorDropdownComponent\r\n ],\r\n declarations: [\r\n UserSelectorDropdownComponent,\r\n ]\r\n})\r\nexport class UserSelectorModule { }\r\n","export * from './user-setting.feature';\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { Process } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, map, takeWhile } from 'rxjs/operators';\r\nimport { UserSetting } from '../store';\r\nimport * as fromUserInfo from '../../user-info';\r\nimport * as fromUserSetting from '../store';\r\nimport * as fromLookups from '../../lookups';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-user-setting-feature',\r\n templateUrl: './user-setting.feature.html',\r\n styleUrls: ['./user-setting.feature.scss']\r\n})\r\nexport class UserSettingFeatureComponent implements OnInit, OnDestroy {\r\n process$: Observable;\r\n settings$: Observable>;\r\n categories$: Observable<{ CatID; Description }[]>;\r\n colors$: Observable;\r\n timeZones$: Observable>>;\r\n private active = true;\r\n constructor(\r\n private log: LoggingService,\r\n private store: Store\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.store.dispatch(new fromLookups.LoadUserTimeZones());\r\n this.store.dispatch(new fromLookups.LoadColors());\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n // this.store.dispatch(new fromLookups.LoadPayrollFrequency());\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.timeZones$ = this.store.pipe(select(fromLookups.getUserTimeZones));\r\n this.colors$ = this.store.pipe(select(fromLookups.getColors));\r\n this.settings$ = this.store.pipe(\r\n select(fromUserSetting.selectAll),\r\n tap(settings =>\r\n this.log.verbose({\r\n type: 'UserSettingFeatureComponent:settings$',\r\n settings\r\n })\r\n ),\r\n map(x =>\r\n x.map(y => ({\r\n ...y,\r\n CtrlType: y.CtrlType.toLocaleLowerCase(),\r\n EmpSettingValue:\r\n y.CtrlType.toLocaleLowerCase() === 'checkbox'\r\n ? y.EmpSettingValue === '1'\r\n : y.EmpSettingValue\r\n }))\r\n )\r\n );\r\n this.categories$ = this.store.pipe(\r\n select(fromUserSetting.getCategories)\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n this.store\r\n .pipe(\r\n select(fromUserInfo.getUserInfo),\r\n takeWhile(() => this.active)\r\n )\r\n .subscribe(userInfo => {\r\n this.store.dispatch(\r\n fromUserSetting.getUserSettings({\r\n EmployeeListID: userInfo.EmployeeListID\r\n })\r\n );\r\n });\r\n }\r\n onSave(setting: UserSetting) {\r\n this.log.verbose({\r\n type: 'UserSettingFeatureComponent:onSave',\r\n setting\r\n });\r\n this.store.dispatch(\r\n fromUserSetting.putUserSettings({ settings: [setting] })\r\n );\r\n }\r\n}\r\n","export * from './feature';\r\nexport * from './presenters';\r\nexport * from './store';\r\n","export * from './user-setting.component';\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ChangeDetectorRef,\r\n ViewChild,\r\n Output,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, AbstractControl } from '@angular/forms';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { UnsavedChangesService } from '../../shared/modal-dialog';\r\nimport { TransitionService, Transition } from '@uirouter/core';\r\nimport {\r\n Table,\r\n Accordion,\r\n SortEvent,\r\n SelectItem\r\n} from '../../shared/efaact-primeng.module';\r\nimport { UserSetting } from '../store';\r\nimport { Process } from '../../shared';\r\nimport { ReplaySubject, Subject, merge } from 'rxjs';\r\nimport * as moment from 'moment';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromLookups from '../../lookups';\r\nimport { Color, ITimeZone } from '../../lookups';\r\nimport { takeWhile, throttleTime, debounceTime, filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ef-user-setting',\r\n templateUrl: './user-setting.component.html',\r\n styleUrls: ['./user-setting.component.scss']\r\n})\r\nexport class UserSettingComponent implements OnInit, OnDestroy {\r\n public loading = true;\r\n private active = true;\r\n private _settings: Array;\r\n userSettingsForm: FormGroup;\r\n passwordForm: FormGroup;\r\n protected openTabs: Array = [];\r\n public editing: UserSetting;\r\n rowGroupMetadata: any;\r\n private TextboxChangedSubject = new ReplaySubject<{\r\n value: string;\r\n data: UserSetting;\r\n }>(1);\r\n private EditCompleteSubject = new ReplaySubject<{\r\n value: string;\r\n data: UserSetting;\r\n }>(1);\r\n private SettingChangedSubject = new ReplaySubject<{\r\n value: string;\r\n data: UserSetting;\r\n }>(1);\r\n @Output() public Save = new Subject();\r\n @ViewChild('settingsAccordion') settingsEl: Accordion;\r\n @ViewChild('dtSettings') settingsTable: Table;\r\n @Input() colors: Color[];\r\n @Input() timeZones: Array;\r\n @Input() public set settings(value: Array) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:settings',\r\n value,\r\n settingsEl: this.settingsEl\r\n });\r\n this.loading = false;\r\n if (value && value.length) {\r\n this.userSettingsForm = new FormGroup({});\r\n this._settings = value\r\n .sort((a, b) => a.CatID - b.CatID)\r\n .map(x => {\r\n this.userSettingsForm.addControl(\r\n x.EmpSettingType,\r\n new FormControl(x.EmpSettingValue)\r\n );\r\n return {\r\n ...x,\r\n EmpSettingValue:\r\n x.CtrlType.toLocaleLowerCase() === 'datetimepicker'\r\n ? moment(x.EmpSettingValue).toDate()\r\n : x.EmpSettingValue\r\n };\r\n });\r\n }\r\n this.updateRowGroupMetaData(value);\r\n }\r\n public get settings(): Array {\r\n return this._settings\r\n ? this._settings.sort((a, b) => a.CatID - b.CatID)\r\n : [];\r\n }\r\n @Input() public set categories(\r\n value: { CatID: number; Description: string }[]\r\n ) {\r\n if (value && value.length > 0) {\r\n this.categoryItems = value\r\n .sort((a, b) => a.CatID - b.CatID)\r\n .map(x => ({\r\n value: x.CatID,\r\n label: x.Description\r\n }));\r\n }\r\n }\r\n categoryItems: SelectItem[];\r\n private tUnregister: Function;\r\n private me: UserSettingComponent;\r\n moment: any;\r\n constructor(\r\n private log: LoggingService,\r\n private cdRef: ChangeDetectorRef,\r\n public confirmservice: UnsavedChangesService,\r\n public transitionService: TransitionService\r\n ) {\r\n this.moment = moment;\r\n this.passwordForm = new FormGroup({\r\n password: new FormControl()\r\n });\r\n this.userSettingsForm = new FormGroup({});\r\n this.tUnregister = transitionService.onStart(\r\n { from: 'usersetting' },\r\n this.uiCanExit.bind(this)\r\n );\r\n this.me = this;\r\n }\r\n\r\n ngOnInit() {\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n this.tUnregister();\r\n }\r\n uiCanExit(transition?: Transition) {\r\n function getControlName(c: AbstractControl): string | null {\r\n const formGroup = c.parent.controls;\r\n return (\r\n Object.keys(formGroup).find(name => c === formGroup[name]) ||\r\n null\r\n );\r\n }\r\n let result = true;\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:uiCanExit',\r\n userSettingsForm: this.userSettingsForm,\r\n transition,\r\n controls: this.userSettingsForm.controls\r\n });\r\n // there should only be one dirty item possible\r\n // TODO: check for form dirty and save if it is.\r\n const keys = Object.keys(this.userSettingsForm.controls);\r\n return new Promise((r, e) => {\r\n keys.forEach(key => {\r\n const c = this.userSettingsForm.controls[key];\r\n const setting = this.settings.find(\r\n x => x.EmpSettingType === key\r\n );\r\n if (c.dirty) {\r\n this.log.info({\r\n type: 'UserSettingPresenterComponent:uiCanExit',\r\n value: 'dirty control',\r\n key,\r\n c\r\n });\r\n if (\r\n setting.Validation &&\r\n setting.Validation === 'confirm'\r\n ) {\r\n this.log.warn({\r\n type: 'UserSettingPresenterComponent:uiCanExit',\r\n value: 'validation control',\r\n key,\r\n c\r\n });\r\n result = false;\r\n return this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to update ${setting.EmpSettingTypeLabel}`\r\n })\r\n .then(() => {\r\n this.settingChanged(c.value, setting);\r\n result = true;\r\n r(result);\r\n // result = result && true;\r\n })\r\n .catch(() => {\r\n result = false;\r\n r(result);\r\n });\r\n } else {\r\n this.settingChanged(c.value, setting);\r\n // result = result && true;\r\n }\r\n } else {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:uiCanExit',\r\n value: 'clean control',\r\n key,\r\n c\r\n });\r\n }\r\n });\r\n if (result) {\r\n r(true);\r\n }\r\n });\r\n }\r\n getDescriptionForDropdown(settingType, settingValue) {\r\n const options = this.getValuesForDropdown(settingType);\r\n if (settingType.toLocaleLowerCase().includes('color')) {\r\n return this.colors.find(x => x.Colorhex === settingValue).Colorname;\r\n }\r\n switch (settingType.toLocaleLowerCase()) {\r\n case 'timezone':\r\n return this.timeZones.find(x => x.DisplayName === settingValue)\r\n ? this.timeZones.find(x => x.DisplayName === settingValue)\r\n .DisplayName\r\n : settingValue;\r\n }\r\n return settingValue;\r\n }\r\n getValuesForDropdown(settingType: string) {\r\n if (settingType.toLocaleLowerCase().includes('color')) {\r\n return this.colors.map(x => ({\r\n label: x.Colorname,\r\n value: x.Colorhex\r\n }));\r\n }\r\n switch (settingType.toLocaleLowerCase()) {\r\n case 'timezone':\r\n return this.timeZones.map(x => ({\r\n label: x.DisplayName,\r\n value: x.StandardName\r\n }));\r\n }\r\n return [];\r\n }\r\n protected settingChanged(value, setting) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:settingChanged',\r\n value,\r\n setting\r\n });\r\n // const newVal = $event.value || $event;\r\n // const setting = this.settings.find(\r\n // x => x.SettingType === item.SettingType\r\n // );\r\n this.updateSetting(value, setting);\r\n }\r\n updateSetting(value, setting: UserSetting) {\r\n const saveSetting = (s: UserSetting, v) => {\r\n s.Status = {\r\n StatusCode: ResponseStatus.Loading,\r\n Message: 'Saving'\r\n };\r\n s.EmpSettingValue = v;\r\n this.loading = true;\r\n this.Save.next(s);\r\n // this.editing = null;\r\n };\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:updateSetting',\r\n value,\r\n setting\r\n });\r\n if (setting.Validation && setting.Validation.includes('confirm')) {\r\n this.confirmservice\r\n .confirmPromise({\r\n dialogText: `Are you sure you want to update ${setting.EmpSettingTypeLabel}`\r\n })\r\n .then(() => {\r\n saveSetting.bind(this.me)(setting, value);\r\n return;\r\n })\r\n .catch(e => {\r\n this.log.verbose({\r\n type:\r\n 'UserSettingPresenterComponent:updateSetting:confirm:catch',\r\n e,\r\n setting,\r\n control: this.userSettingsForm.controls[\r\n setting.EmpSettingType\r\n ].value\r\n });\r\n setting.EmpSettingValue = this.editing.EmpSettingValue;\r\n this.userSettingsForm.controls[\r\n setting.EmpSettingType\r\n ].reset(setting.EmpSettingValue);\r\n this.userSettingsForm.controls[\r\n setting.EmpSettingValue\r\n ].setValue(setting.EmpSettingValue);\r\n this.cdRef.detectChanges();\r\n });\r\n } else {\r\n saveSetting.bind(this.me)(setting, value);\r\n }\r\n }\r\n textboxChanged($event, data) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:textboxChanged',\r\n $event,\r\n data\r\n });\r\n this.TextboxChangedSubject.next({ value: $event, data });\r\n }\r\n textboxBlur($event, data: UserSetting) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:textboxBlur',\r\n $event,\r\n data\r\n });\r\n\r\n if (\r\n this.editing &&\r\n this.editing.EmpSettingValue !== data.EmpSettingValue\r\n ) {\r\n this.SettingChangedSubject.next({ value: $event, data: data });\r\n // this.updateSetting($event, data);\r\n }\r\n }\r\n checkboxChanged($event, data) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:checkboxChanged',\r\n $event,\r\n data\r\n });\r\n this.SettingChangedSubject.next({ value: $event.checked, data });\r\n }\r\n dropdownChanged($event, data) {\r\n this.SettingChangedSubject.next({ value: $event.value, data });\r\n }\r\n setupSubscriptions() {\r\n this.SettingChangedSubject.pipe(\r\n takeWhile(() => this.active),\r\n throttleTime(100)\r\n ).subscribe(x => {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:SettingChangedSubject',\r\n x\r\n });\r\n this.settingChanged(x.value, x.data);\r\n });\r\n\r\n const latestChange = merge(\r\n this.TextboxChangedSubject.pipe(\r\n debounceTime(3000),\r\n filter(x => !x.data.Validation)\r\n ),\r\n this.EditCompleteSubject,\r\n 2\r\n ).pipe(\r\n takeWhile(() => this.active),\r\n throttleTime(100)\r\n );\r\n\r\n latestChange.subscribe(z => {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:latestChange(z)',\r\n z\r\n });\r\n this.SettingChangedSubject.next(z);\r\n });\r\n }\r\n onSave($event) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:onSave',\r\n $event\r\n });\r\n this.Save.next($event);\r\n }\r\n onEditInit($event: { data: UserSetting }) {\r\n const setting = this.settings.find(\r\n x => x.EmpSettingType === $event.data.EmpSettingType\r\n );\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:onEditInit',\r\n $event,\r\n editing: this.editing,\r\n setting\r\n });\r\n // if (setting.CtrlType !== 'checkbox') {\r\n this.editing = { ...$event.data };\r\n // }\r\n if (\r\n (!!this.editing &&\r\n this.editing.EmpSettingType !== $event.data.EmpSettingType) ||\r\n setting.CtrlType === 'checkbox'\r\n ) {\r\n this.onEditComplete({ data: this.editing || $event.data });\r\n }\r\n }\r\n onEditComplete($event: { data: Partial }) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:onEditComplete',\r\n $event\r\n });\r\n const setting = this.settings.find(\r\n x => x.EmpSettingType === $event.data.EmpSettingType\r\n );\r\n const ctrlType = setting.CtrlType.toLocaleLowerCase();\r\n\r\n let newVal = setting.EmpSettingValue;\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:onEditComplete',\r\n $event,\r\n setting,\r\n editing: this.editing,\r\n newVal\r\n });\r\n if (newVal === this.editing.EmpSettingValue) {\r\n return;\r\n }\r\n if (ctrlType === 'datetimepicker') {\r\n newVal = moment(setting.EmpSettingValue).format('MM/DD/YYYY');\r\n this.SettingChangedSubject.next({ value: newVal, data: setting });\r\n }\r\n if (ctrlType === 'textbox' || ctrlType === 'password') {\r\n this.SettingChangedSubject.next({ value: newVal, data: setting });\r\n }\r\n }\r\n onDatepickerClose($event) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:onDatepickerClose',\r\n $event,\r\n editing: this.editing\r\n });\r\n }\r\n customSort(event: SortEvent) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:customSort',\r\n event\r\n });\r\n event.data.sort((a, b) => {\r\n const result = a.CatDescription.toLocaleLowerCase().localeCompare(\r\n b.CatDescription.toLocaleLowerCase()\r\n );\r\n return result === 0\r\n ? a[event.field]\r\n .toLocaleLowerCase()\r\n .localeCompare(b[event.field].toLocaleLowerCase())\r\n : result;\r\n });\r\n }\r\n filterTable(value, column, operator) {\r\n // dtSettings.filter($event.value.Description, 'CatDescription', 'in')\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:filterTable',\r\n value,\r\n column,\r\n operator\r\n });\r\n this.settingsTable.filter(value, column, operator);\r\n }\r\n onFilter($event) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:onFilter',\r\n $event\r\n });\r\n // setTimeout(() => {\r\n this.onUpdateRowGroupMetaData($event.filteredValue);\r\n // }, 50);\r\n }\r\n onSort($event) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:onSort',\r\n $event\r\n });\r\n setTimeout(() => {\r\n this.onUpdateRowGroupMetaData(\r\n this.settingsTable.filteredValue || this.settingsTable.value\r\n );\r\n }, 50);\r\n }\r\n onUpdateRowGroupMetaData(data) {\r\n this.updateRowGroupMetaData(data);\r\n }\r\n\r\n updateRowGroupMetaData(data) {\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:updateRowGroupMetaData',\r\n data\r\n });\r\n this.rowGroupMetadata = {};\r\n if (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n const rowData = data[i];\r\n const category = rowData.CatID;\r\n if (i === 0) {\r\n this.rowGroupMetadata[category] = { index: 0, size: 1 };\r\n } else {\r\n const previousRowData = data[i - 1];\r\n const previousRowGroup = previousRowData.CatID;\r\n if (category === previousRowGroup) {\r\n this.rowGroupMetadata[category].size++;\r\n } else {\r\n this.rowGroupMetadata[category] = { index: i, size: 1 };\r\n }\r\n }\r\n }\r\n this.log.verbose({\r\n type: 'UserSettingPresenterComponent:updateRowGroupMetaData',\r\n data,\r\n rowGroupMetadata: this.rowGroupMetadata\r\n });\r\n this.cdRef.markForCheck();\r\n }\r\n }\r\n}\r\n","export * from './user-setting.actions';\r\nexport * from './user-setting.reducer';\r\nexport * from './user-setting.model';\r\nexport * from './user-setting.selectors';\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { UserSetting } from './user-setting.model';\r\n\r\nexport const loadUserSettings = createAction(\r\n '[UserSetting/API] Load UserSettings',\r\n props<{ userSettings: UserSetting[] }>()\r\n);\r\n\r\nexport const addUserSetting = createAction(\r\n '[UserSetting/API] Add UserSetting',\r\n props<{ userSetting: UserSetting }>()\r\n);\r\n\r\nexport const upsertUserSetting = createAction(\r\n '[UserSetting/API] Upsert UserSetting',\r\n props<{ userSetting: UserSetting }>()\r\n);\r\n\r\nexport const addUserSettings = createAction(\r\n '[UserSetting/API] Add UserSettings',\r\n props<{ userSettings: UserSetting[] }>()\r\n);\r\n\r\nexport const upsertUserSettings = createAction(\r\n '[UserSetting/API] Upsert UserSettings',\r\n props<{ userSettings: UserSetting[] }>()\r\n);\r\n\r\nexport const updateUserSetting = createAction(\r\n '[UserSetting/API] Update UserSetting',\r\n props<{ userSetting: Update }>()\r\n);\r\n\r\nexport const updateUserSettings = createAction(\r\n '[UserSetting/API] Update UserSettings',\r\n props<{ userSettings: Update[] }>()\r\n);\r\n\r\nexport const deleteUserSetting = createAction(\r\n '[UserSetting/API] Delete UserSetting',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteUserSettings = createAction(\r\n '[UserSetting/API] Delete UserSettings',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearUserSettings = createAction(\r\n '[UserSetting/API] Clear UserSettings'\r\n);\r\n\r\nexport const getUserSettings = createAction(\r\n '[UserSetting/API] Get UserSettings',\r\n props<{ EmployeeListID: string, EmpSettingID?: number }>()\r\n);\r\n\r\nexport const putUserSettings = createAction(\r\n '[UserSetting/API] Put UserSettings',\r\n props<{ settings: Array> }>()\r\n);\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, concatMap, map, switchMap, tap } from 'rxjs/operators';\r\nimport * as fromShared from '../../shared';\r\nimport { ResponseStatus } from '../../shared';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info';\r\nimport { UserSettingService } from '../user-setting.service';\r\nimport * as UserSettingActions from './user-setting.actions';\r\n\r\n@Injectable()\r\nexport class UserSettingEffects {\r\n clearUserSettings$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserSettingActions.getUserSettings),\r\n map(() => UserSettingActions.clearUserSettings())\r\n );\r\n });\r\n getUserSettings$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserSettingActions.getUserSettings),\r\n tap(a =>\r\n this.log.verbose({\r\n type: 'UserSettingEffects:getUserSettings$',\r\n a\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.get(a.EmployeeListID, a.EmpSettingID).pipe(\r\n concatMap(userSettings =>\r\n userSettings\r\n ? [\r\n UserSettingActions.loadUserSettings({\r\n userSettings\r\n })\r\n ]\r\n : [\r\n fromShared.Errors.handleNullDataError(\r\n userSettings,\r\n 'User Settings'\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n\r\n putUserSetting$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(UserSettingActions.putUserSettings),\r\n switchMap(a =>\r\n this.service.put(a.settings).pipe(\r\n concatMap(resp =>\r\n fromShared.Errors.IsSuccessStatus(resp.StatusCode)\r\n ? [\r\n UserSettingActions.upsertUserSettings({\r\n userSettings: resp.Items.filter(\r\n x => x.CtrlType\r\n )\r\n }),\r\n a.settings.findIndex(x => x.EmpSettingID == 31.0) != -1\r\n ?\r\n { type: 'EMPTY' }\r\n :\r\n new fromUser.LoadUserColors(\r\n resp.Items[0].EmployeeListID\r\n ),\r\n\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x =>\r\n x.Status.StatusCode ===\r\n ResponseStatus.Success\r\n ).map(x => x.EmpSettingType.toString())\r\n )\r\n ]\r\n : [\r\n new fromShared.Errors.SetErrors(\r\n fromShared.Errors.MapErrorsToStatus(resp)\r\n ),\r\n UserSettingActions.upsertUserSettings({\r\n userSettings: resp.Items.filter(\r\n x => x.CtrlType\r\n )\r\n }),\r\n new fromUser.LoadUserColors(\r\n resp.Items[0].EmployeeListID\r\n )\r\n ]\r\n ),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n });\r\n constructor(\r\n private log: LoggingService,\r\n private actions$: Actions,\r\n private service: UserSettingService\r\n ) {}\r\n}\r\n","import { IStatusMessage } from '../../shared';\r\n\r\nexport interface UserSetting {\r\n CatID: number;\r\n CatDescription: string;\r\n EmployeeListID: string;\r\n EmpSettingID: number;\r\n EmpSettingType: string;\r\n EmpSettingTypeLabel: string;\r\n EmpSettingValue: any;\r\n CtrlType: string;\r\n Validation: string;\r\n Isconfirmrequired: boolean;\r\n Status: IStatusMessage;\r\n Row_Version: string;\r\n}\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as UserSettingActions from './user-setting.actions';\r\nimport { UserSetting } from './user-setting.model';\r\n\r\nexport const userSettingsFeatureKey = 'userSettings';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n}\r\n\r\nexport const adapter: EntityAdapter =\r\n createEntityAdapter({\r\n selectId: (model: UserSetting) => model.EmpSettingType\r\n });\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n});\r\n\r\nconst userSettingReducer = createReducer(\r\n initialState,\r\n on(UserSettingActions.addUserSetting, (state, action) =>\r\n adapter.addOne(action.userSetting, state)\r\n ),\r\n on(UserSettingActions.upsertUserSetting, (state, action) =>\r\n adapter.upsertOne(action.userSetting, state)\r\n ),\r\n on(UserSettingActions.addUserSettings, (state, action) =>\r\n adapter.addMany(action.userSettings, state)\r\n ),\r\n on(UserSettingActions.upsertUserSettings, (state, action) =>\r\n adapter.upsertMany(action.userSettings, state)\r\n ),\r\n on(UserSettingActions.updateUserSetting, (state, action) =>\r\n adapter.updateOne(action.userSetting, state)\r\n ),\r\n on(UserSettingActions.updateUserSettings, (state, action) =>\r\n adapter.updateMany(action.userSettings, state)\r\n ),\r\n on(UserSettingActions.deleteUserSetting, (state, action) =>\r\n adapter.removeOne(action.id, state)\r\n ),\r\n on(UserSettingActions.deleteUserSettings, (state, action) =>\r\n adapter.removeMany(action.ids, state)\r\n ),\r\n on(UserSettingActions.loadUserSettings, (state, action) =>\r\n adapter.setAll(action.userSettings, state)\r\n ),\r\n on(UserSettingActions.clearUserSettings, state => adapter.removeAll(state))\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return userSettingReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromUserSetting from './user-setting.reducer';\r\nimport * as fromShared from '../../shared';\r\n\r\nexport const selectUserSettingState = createFeatureSelector<\r\n fromUserSetting.State\r\n>(fromUserSetting.userSettingsFeatureKey);\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = fromUserSetting.adapter.getSelectors(selectUserSettingState);\r\nexport const getCategories = createSelector(selectAll, settings =>\r\n fromShared.uniqBy(\r\n settings.map(x => ({\r\n CatID: x.CatID,\r\n Description: x.CatDescription\r\n })),\r\n x => x.CatID\r\n )\r\n);\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromUserSetting from './store/user-setting.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { UserSettingEffects } from './store/user-setting.effects';\r\nimport { UserSettingFeatureComponent } from './feature/user-setting.feature';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { UserSettingRoute } from './user-setting.route';\r\nimport { UserSettingComponent } from '.';\r\n\r\n@NgModule({\r\n declarations: [UserSettingFeatureComponent, UserSettingComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule,\r\n StoreModule.forFeature(\r\n fromUserSetting.userSettingsFeatureKey,\r\n fromUserSetting.reducer\r\n ),\r\n EffectsModule.forFeature([UserSettingEffects]),\r\n UIRouterModule.forChild({\r\n states: [UserSettingRoute]\r\n })\r\n ]\r\n})\r\nexport class UserSettingModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { CategoriesService } from '../shared/category/categories.service';\r\nimport { Process } from '../shared';\r\nimport * as fromUserSetting from '.';\r\nimport { processResolver } from '../efaact-routing/process-resolver';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const UserSettingRoute: Ng2StateDeclaration = {\r\n name: 'usersetting',\r\n url: '/usersetting',\r\n data: { requiresAuth: true },\r\n params: { process: {} },\r\n resolve: [\r\n {\r\n token: 'process',\r\n deps: [Transition, CategoriesService],\r\n resolveFn: processResolver\r\n }\r\n ],\r\n component: fromUserSetting.UserSettingFeatureComponent\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { UserSetting } from './store';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { IGenericResponse } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserSettingService {\r\n private uri = `${environment.apiLocation}/UserSetting`;\r\n constructor(private http: HttpClient, private log: LoggingService) {}\r\n\r\n public get(EmployeeListID: string, EmpSettingID?: number): Observable> {\r\n return this.http\r\n .post>(this.uri, {\r\n EmployeeListID,\r\n EmpSettingID\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserSettingService:getUserSetting',\r\n data\r\n })\r\n ),\r\n map(this.mapSettings),\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserSettingService:getUserSetting:mapped',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n public put(\r\n setting: Array>\r\n ): Observable> {\r\n this.log.verbose({\r\n type: 'UserSettingService:putUserSetting',\r\n setting\r\n });\r\n return this.http\r\n .put>(this.uri, {\r\n UserSettingList: [\r\n ...setting.map(x => ({\r\n EmployeeListID: x.EmployeeListID,\r\n EmpSettingID: x.EmpSettingID,\r\n EmpSettingType: x.EmpSettingType,\r\n EmpSettingValue:\r\n x.CtrlType.toLocaleLowerCase() === 'checkbox'\r\n ? x.EmpSettingValue\r\n ? '1'\r\n : '0'\r\n : x.EmpSettingValue\r\n }))\r\n ]\r\n })\r\n .pipe(\r\n tap(data =>\r\n this.log.verbose({\r\n type: 'UserSettingService:putUserSetting:response',\r\n data\r\n })\r\n ),\r\n map(resp => ({\r\n ...resp,\r\n Items: [...this.mapSettings(resp.Items)]\r\n })),\r\n tap(data =>\r\n this.log.verbose({\r\n type:\r\n 'UserSettingService:putUserSetting:response:mapped',\r\n data\r\n })\r\n )\r\n );\r\n }\r\n private mapSettings(settings: Array): Array {\r\n return settings.map(x => ({\r\n ...x,\r\n Validation: x.Isconfirmrequired ? 'confirm' : '',\r\n EmpSettingValue:\r\n x.CtrlType.toLocaleLowerCase() === 'checkbox'\r\n ? x.EmpSettingValue === 'true' ||\r\n x.EmpSettingValue === true ||\r\n x.EmpSettingValue === 1 ||\r\n x.EmpSettingValue === '1'\r\n ? '1'\r\n : '0'\r\n : x.EmpSettingValue\r\n }));\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n Inject,\r\n ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { IUserGroups } from '../IUserGroups';\r\nimport { combineLatest, Observable, ReplaySubject, Subscription } from 'rxjs';\r\nimport { IUserEntryDate } from '../IUserEntryDates';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromUser from '../../user-info/store/user.reducer';\r\nimport * as fromUED_r from '../store/reducer';\r\nimport * as fromErrors from '../../shared';\r\nimport {\r\n LoadGroups,\r\n Reset,\r\n LoadUserEntryDates,\r\n UpdateUserEntryDates,\r\n LoadEntryDatesByGroup\r\n} from '../store/actions';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { UserentrydatesPresentersComponent } from '../presenters/userentrydates-presenters.component';\r\nimport { IUser, SetUserInfo } from '../../user-info';\r\nimport { DatePipe } from '@angular/common';\r\nimport * as fromShared from '../../shared';\r\n\r\n@Component({\r\n selector: 'ef-userentrydates-features',\r\n templateUrl: './userentrydates-features.component.html',\r\n styleUrls: ['./userentrydates-features.component.scss']\r\n})\r\nexport class UserentrydatesFeaturesComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n process$: Observable;\r\n ShowError = new ReplaySubject(1);\r\n public groups$: Observable>;\r\n public groups: Array = [];\r\n public entryDates$: Observable>;\r\n public entryDates: Array = [];\r\n\r\n errors$: Observable;\r\n selectedError$: Observable;\r\n\r\n public userSub: Subscription;\r\n @Input() public user: IUser;\r\n public startDate: string;\r\n public endDate: string;\r\n public entryStart: Date = new Date();\r\n public entryEnd: Date = new Date();\r\n\r\n @ViewChild(UserentrydatesPresentersComponent, { static: true })\r\n uEDC: UserentrydatesPresentersComponent;\r\n\r\n public active = true;\r\n\r\n constructor(\r\n private entryDatesStore: Store,\r\n @Inject(LoggingService) private log: LoggingService,\r\n private store: Store,\r\n private datePipe: DatePipe,\r\n private errorStore: Store\r\n ) {}\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n transformDate(date): Date {\r\n return new Date(this.datePipe.transform(date, 'yyyy-MM-dd'));\r\n }\r\n\r\n ngOnInit() {\r\n this.entryDatesStore.dispatch(new LoadGroups());\r\n this.entryDatesStore.dispatch(new LoadUserEntryDates());\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n\r\n this.groups$ = this.entryDatesStore.pipe(select(fromUED_r.getGroups));\r\n\r\n this.entryDates$ = this.entryDatesStore.pipe(\r\n select(fromUED_r.getEntryDates)\r\n );\r\n\r\n this.errors$ = this.store.pipe(select(fromUED_r.getEntryDatesErrors));\r\n\r\n this.selectedError$ = this.errorStore.pipe(\r\n select(fromShared.Errors.getShowErrors)\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n // getting the start and end date from the user info data in the store\r\n this.userSub = this.store\r\n .pipe(\r\n takeWhile(_ => this.active),\r\n select(fromUser.getUser)\r\n )\r\n .subscribe(user => {\r\n this.log.debug({\r\n type: 'FixedPriceShellComponent:user-subscribe',\r\n user\r\n });\r\n this.user = user;\r\n\r\n if (\r\n user.userInfo.CurrentPayPeriodEnd &&\r\n user.userInfo.CurrentPayPeriodStart\r\n ) {\r\n this.startDate =\r\n user.userInfo.CurrentPayPeriodStart.toString();\r\n this.endDate = user.userInfo.CurrentPayPeriodEnd.toString();\r\n this.entryStart = new Date(this.startDate);\r\n this.entryEnd = new Date(this.endDate);\r\n this.entryStart = this.transformDate(this.entryStart);\r\n this.entryEnd = this.transformDate(this.entryEnd);\r\n }\r\n });\r\n this.groups$.pipe(takeWhile(_ => this.active)).subscribe(_groups => {\r\n this.groups = _groups;\r\n });\r\n\r\n combineLatest([this.process$, this.ShowError])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.entryDates$\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(_entrydates => {\r\n this.entryDates = _entrydates;\r\n });\r\n\r\n this.uEDC.startDateSelected\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:startDateSelected',\r\n value\r\n });\r\n });\r\n\r\n this.uEDC.endDateSelected\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'GroupsFeatureComponent:endDateSelected',\r\n value\r\n });\r\n });\r\n\r\n this.uEDC.applyClicked\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.entryDatesStore.dispatch(\r\n new UpdateUserEntryDates(value)\r\n );\r\n }\r\n });\r\n\r\n this.uEDC.groupsSelected\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n if (value != null) {\r\n this.entryDatesStore.dispatch(\r\n new LoadEntryDatesByGroup(value)\r\n );\r\n }\r\n });\r\n\r\n this.uEDC.resetAction\r\n .pipe(takeWhile(_ => this.active))\r\n .subscribe(value => {\r\n this.entryDatesStore.dispatch(new LoadUserEntryDates());\r\n });\r\n }\r\n\r\n public onResetData() {\r\n this.entryDatesStore.dispatch(new Reset());\r\n }\r\n\r\n onSaveEntryDates($event) {\r\n if ($event != null) {\r\n this.entryDatesStore.dispatch(\r\n new UpdateUserEntryDates([$event])\r\n );\r\n this.store.dispatch(\r\n new SetUserInfo({...this.user.userInfo, UserEntryStartDate: $event.MinWorkDate, UserEntryEndDate: $event.MaxWorkDate})\r\n );\r\n }\r\n }\r\n onMultiSaveEntryDates($event) {\r\n if ($event != null) {\r\n this.entryDatesStore.dispatch(\r\n new UpdateUserEntryDates($event)\r\n );\r\n \r\n const currentUserEntry = $event.find(x => x.EmployeeListId == this.user.userInfo.EmployeeListID) != null ? $event.find(x => x.EmployeeListId == this.user.userInfo.EmployeeListID) : '';\r\n if (currentUserEntry != '') {\r\n this.store.dispatch(\r\n new SetUserInfo({...this.user.userInfo, UserEntryStartDate: currentUserEntry.MinWorkDate, UserEntryEndDate: currentUserEntry.MaxWorkDate})\r\n );\r\n } \r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport * as $ from 'jquery';\r\nimport * as moment from 'moment';\r\nimport { fromEvent, ReplaySubject } from 'rxjs';\r\nimport { startWith, takeWhile, tap } from 'rxjs/operators';\r\nimport Tabulator from 'tabulator-tables';\r\nimport { DisplayMessageMinimum, getStatusIcon, Process, SelectItem, Table } from '../../shared';\r\nimport { DisplayErrors, IShowErrors } from '../../shared/errors-sidenav';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport { TabulatorService } from '../../tabulator.service';\r\nimport { IUserEntryDate } from '../IUserEntryDates';\r\nimport { IUserGroups } from '../IUserGroups';\r\n\r\n@Component({\r\n selector: 'ef-userentrydates-presenters',\r\n templateUrl: './userentrydates-presenters.component.html',\r\n styleUrls: ['./userentrydates-presenters.component.scss']\r\n})\r\nexport class UserentrydatesPresentersComponent extends DisplayErrors\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @Input() public process: Process;\r\n private _errors: Array;\r\n downloadOptions: { label: string; icon: string; command: () => any }[];\r\n // @Input() public set errors(value: Array) {\r\n // this.log.debug({\r\n // type: 'UserEntryDatesPresenterComponent:errors:set',\r\n // value\r\n // });\r\n // this._errors = value;\r\n // if (value && value.length) {\r\n // this.errorHelpText = value\r\n // .reduce((a, c) => a + c + '\\r\\n', '')\r\n // .trim();\r\n // } else {\r\n // this.errorHelpText = '';\r\n // }\r\n // if (this.tabEntryDates) {\r\n // this.tabEntryDates.redraw();\r\n // }\r\n // }\r\n // public get errors(): Array {\r\n // return this._errors;\r\n // }\r\n // private _selectedError: IShowErrors;\r\n // @Input() public set selectedError(value: IShowErrors) {\r\n // this.log.debug({\r\n // type: 'UserEntryDatesPresenterComponent:selectedError:set',\r\n // value\r\n // });\r\n // if (this.process) {\r\n // if (value.MsgProcessID === this.process.ProcessID) {\r\n // if (this._selectedError) {\r\n // const prevRow = this.tabEntryDates\r\n // .getRows()\r\n // .find(\r\n // row =>\r\n // row.getData().EmployeeListId ===\r\n // this._selectedError.MsgEntityID\r\n // );\r\n // if (prevRow) {\r\n // prevRow.getElement().classList.remove('highlight');\r\n // }\r\n // }\r\n // this._selectedError = value;\r\n // const theRow = this.tabEntryDates\r\n // .getRows()\r\n // .find(\r\n // row =>\r\n // row.getData().EmployeeListId === value.MsgEntityID\r\n // );\r\n // if (theRow) {\r\n // theRow.scrollTo();\r\n // // this.tabEntryDates.scrollToRow(3, 'center', false);\r\n // theRow.getElement().classList.add('highlight');\r\n // // theRow.getElement().css({'background-color': 'green'});\r\n // this.log.debug({\r\n // type: 'UserEntryDatesPresenterComponent:selectedError:set',\r\n // rowElement: theRow.getElement()\r\n // });\r\n // }\r\n // }\r\n // }\r\n // }\r\n // public get selectedError(): IShowErrors {\r\n // return this._selectedError;\r\n // }\r\n\r\n employeeSelectItem: SelectItem[] = [];\r\n\r\n EntryDatesSubject = new ReplaySubject(1);\r\n private _entryDates: Array = [];\r\n @Input('entryDates') set entryDates(value: Array) {\r\n if (value && value.length > 0) {\r\n this._entryDates = value.map(x => ({ ...x }));\r\n this.EntryDatesSubject.next(this._entryDates);\r\n\r\n this.employeeSelectItem = value.map(x => ({\r\n label: x.EmployeeName,\r\n value: x.EmployeeListId\r\n }));\r\n }\r\n\r\n if (this.tabEntryDates) {\r\n if (this._entryDates.length > 0) {\r\n if (this._entryDates.some(x => x.Splitday != null) == true) {\r\n this.IsSplitDayVisible = true;\r\n this.tabEntryDates.showColumn('Splitday');\r\n } else {\r\n this.IsSplitDayVisible = false;\r\n this.tabEntryDates.hideColumn('Splitday');\r\n }\r\n //this.tabEntryDates.replaceData(this._entryDates);\r\n //this.tabEntryDates.redraw(true);\r\n\r\n }\r\n }\r\n\r\n // this.loadingData = !(value && value.length);\r\n }\r\n get entryDates(): Array {\r\n return this._entryDates;\r\n }\r\n\r\n private _groups: Array;\r\n @Input('groups') set groups(value: Array) {\r\n this._groups = value.map(x => ({ ...x }));\r\n this.arraySort(this._groups);\r\n }\r\n get groups(): Array {\r\n return this._groups;\r\n }\r\n\r\n @Input() entryStartDate: Date;\r\n @Input() entryEndDate: Date;\r\n\r\n public tabEntryDates;\r\n\r\n public filterFormGroup: FormGroup;\r\n public multiUpdateFormGroup: FormGroup;\r\n public loadingData = false;\r\n public todaysDate: Date = new Date();\r\n public selectedStartDate: Date;\r\n public selectedEndDate: Date;\r\n public active = true;\r\n public selectColumnWidth = 50;\r\n public selectAllFilteredCount = 0;\r\n public GroupsDropdownText = 'Groups';\r\n public selectedRowsCheckbox = { checked: false, indeterminate: false };\r\n public errorHelpText = '';\r\n\r\n @ViewChild('cbxColumnHeader', { static: true })\r\n cbxColumnHeader: MatCheckbox;\r\n @ViewChild('applyMulti', { read: ElementRef, static: true })\r\n applyUpdatesButton: ElementRef;\r\n\r\n @Output() startDateSelected = new EventEmitter();\r\n @Output() endDateSelected = new EventEmitter();\r\n @Output() applyClicked = new EventEmitter>();\r\n @Output() groupsSelected = new EventEmitter>();\r\n @Output() resetAction = new EventEmitter();\r\n @Output() public ShowError = new EventEmitter();\r\n\r\n public uEDComp: UserentrydatesPresentersComponent = this;\r\n\r\n @ViewChild('UEDTable', { static: true }) UEDTable: Table;\r\n\r\n public editing?: IUserEntryDate = {} as IUserEntryDate;\r\n clonedEntryDates: { [i: string]: IUserEntryDate } = {};\r\n @Output() SaveEntryDates = new ReplaySubject(1);\r\n @Output() MultiSaveEntryDates = new ReplaySubject(1);\r\n\r\n minWorkDate: Date;\r\n maxWorkDate: Date;\r\n\r\n uedTableSelection: IUserEntryDate[] = [];\r\n\r\n public moment: any;\r\n\r\n IsSplitDayVisible: boolean;\r\n\r\n latestRowChanged: any;\r\n\r\n constructor(\r\n @Inject(LoggingService) private log: LoggingService,\r\n @Inject(TabulatorService) private tabService: TabulatorService\r\n ) {\r\n super();\r\n this.moment = moment;\r\n this.filterFormGroup = new FormGroup({\r\n groups: new FormControl(null),\r\n users: new FormControl(null)\r\n });\r\n\r\n this.multiUpdateFormGroup = new FormGroup({\r\n startDate: new FormControl(null),\r\n endDate: new FormControl(null),\r\n apply: new FormControl(null)\r\n });\r\n\r\n // Catches any changes made to a single row\r\n this.tabService.rowChanged$\r\n .pipe(takeWhile(x => this.active))\r\n .subscribe(row => {\r\n this.latestRowChanged = row;\r\n\r\n const rowData = row.getData();\r\n const minDate = new Date(rowData.MinWorkDate.toString());\r\n const maxDate = new Date(rowData.MaxWorkDate.toString());\r\n if (row._row.cells[4].oldValue != null) {\r\n if (minDate > maxDate) {\r\n rowData.MaxWorkDate = rowData.MinWorkDate;\r\n }\r\n }\r\n if (row._row.cells[5].oldValue != null) {\r\n if (maxDate < minDate) {\r\n rowData.MinWorkDate = rowData.MaxWorkDate;\r\n }\r\n }\r\n\r\n const data = this.entryDates.find(\r\n x => x.EmployeeListId === rowData.EmployeeListId\r\n );\r\n\r\n this.applyClicked.emit([\r\n {\r\n ...data,\r\n ...rowData\r\n }\r\n ]);\r\n });\r\n }\r\n\r\n public downloadTable(type) {\r\n this.tabEntryDates.download(\r\n type,\r\n `${this.process.ProcessTitle}_${moment(new Date()).format(\r\n 'MM-DD-YYYY'\r\n )}.${type}`,\r\n { sheetName: 'User Entry Dates' }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.downloadOptions = [\r\n {\r\n label: 'CSV',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('csv')\r\n },\r\n {\r\n label: 'Excel',\r\n icon: 'pi pi-download',\r\n command: () => this.downloadTable('xlsx')\r\n }\r\n ];\r\n this.setupSubscriptions();\r\n\r\n }\r\n setupSubscriptions() {\r\n this.EntryDatesSubject.pipe(takeWhile(() => this.active)).subscribe(value => {\r\n if (value && value.length > 0 && this.tabEntryDates == null) {\r\n //this.createTabulator(this, value, []);\r\n } else {\r\n // if (this.latestRowChanged != null) {\r\n // var data = value.find(x => x.EmployeeListId == this.latestRowChanged.getData().EmployeeListId);\r\n // var rowData = this.latestRowChanged.getData();\r\n // this.latestRowChanged.update({\r\n // ...rowData,\r\n // MinWorkDate: data.MinWorkDate,\r\n // MaxWorkDate: data.MaxWorkDate,\r\n // Status: data.Status\r\n // });\r\n // }\r\n }\r\n\r\n });\r\n\r\n }\r\n ngAfterViewInit() {\r\n this.multiUpdateFormGroup = new FormGroup({\r\n startDate: new FormControl(\r\n new Date(\r\n this.entryStartDate.getTime() -\r\n this.entryStartDate.getTimezoneOffset() * -60000\r\n )\r\n ),\r\n endDate: new FormControl(\r\n new Date(\r\n this.entryEndDate.getTime() -\r\n this.entryStartDate.getTimezoneOffset() * -60000\r\n )\r\n ),\r\n apply: new FormControl(null)\r\n });\r\n\r\n this.tabService.tabulator = $('#tabEntryDates');\r\n\r\n this.filterFormGroup.controls['users'].valueChanges\r\n .pipe(\r\n startWith([]),\r\n takeWhile(_ => this.active),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:users:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:users:valueChanges:subscribe',\r\n value\r\n });\r\n //this.filterData(value, 'EmployeeName', 'EmployeeName');\r\n });\r\n\r\n this.filterFormGroup.controls['groups'].valueChanges\r\n .pipe(\r\n startWith([]),\r\n takeWhile(_ => this.active),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:groups:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:groups:valueChanges:subscribe',\r\n value\r\n });\r\n this.groupsSelected.emit(value);\r\n });\r\n\r\n this.multiUpdateFormGroup.controls['startDate'].valueChanges\r\n .pipe(\r\n startWith(this.entryStartDate),\r\n takeWhile(_ => this.active),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:startDate:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:startDate:valueChanges:subscribe',\r\n value\r\n });\r\n this.selectedStartDate = value;\r\n this.startDateSelected.emit(value);\r\n });\r\n\r\n this.multiUpdateFormGroup.controls['endDate'].valueChanges\r\n .pipe(\r\n startWith(this.entryEndDate),\r\n takeWhile(_ => this.active),\r\n tap(value =>\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:endDate:valueChanges:tap',\r\n value\r\n })\r\n )\r\n )\r\n .subscribe(value => {\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:endDate:valueChanges:subscribe',\r\n value\r\n });\r\n this.selectedEndDate = value;\r\n this.startDateSelected.emit(value);\r\n });\r\n\r\n fromEvent(this.applyUpdatesButton.nativeElement, 'click')\r\n .pipe(\r\n tap(_ =>\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:applyUpdatesButton:tap:click'\r\n })\r\n ),\r\n takeWhile(_ => this.active)\r\n )\r\n .subscribe(button => {\r\n this.log.debug({\r\n type: 'UserentrydatesPresentersComponent:applyUpdatesButton:subscribe:click'\r\n });\r\n\r\n\r\n // const selectedRows = this.tabEntryDates.getSelectedRows();\r\n // const selectedRowsData = [];\r\n // const controls = this.multiUpdateFormGroup.controls;\r\n\r\n // const selectedData = this.tabEntryDates.getSelectedData();\r\n // selectedData.forEach(data => {\r\n // if (controls['startDate'].value) {\r\n // data.MinWorkDate = controls['startDate'].value;\r\n // }\r\n // if (controls['endDate'].value) {\r\n // data.MaxWorkDate = controls['endDate'].value;\r\n // }\r\n // });\r\n\r\n // this.applyClicked.emit(\r\n // selectedData.map(newData => {\r\n // const id = newData.EmployeeListID; // should be uniqueID\r\n // const oldData = this.entryDates.find(\r\n // x => x.EmployeeListId === id\r\n // );\r\n // return {\r\n // ...oldData, // old values\r\n // ...newData // applying new values\r\n // };\r\n // })\r\n // );\r\n });\r\n }\r\n\r\n arraySort(array: Array) {\r\n array.sort((a, b) => {\r\n if (a.GroupName.toLowerCase() === b.GroupName.toLowerCase()) {\r\n return 0;\r\n }\r\n if (\r\n typeof a.GroupName.toLowerCase() ===\r\n typeof b.GroupName.toLowerCase()\r\n ) {\r\n return a.GroupName < b.GroupName ? -1 : 1;\r\n }\r\n return typeof a.GroupName < typeof b.GroupName ? -1 : 1;\r\n });\r\n }\r\n\r\n // private createTabulator(\r\n // fp: UserentrydatesPresentersComponent,\r\n // entryDates: Array,\r\n // errors: Array\r\n // ) {\r\n // let headerClicked = false;\r\n // const count = 0;\r\n // function checkIndeterminate() {\r\n // if (fp.tabEntryDates) {\r\n // const rows = fp.tabEntryDates.getRows(true);\r\n // const selectedRows: Array = [];\r\n // rows.forEach(row => {\r\n // if (row._row.data.selected === true) {\r\n // selectedRows.push(row);\r\n // }\r\n // });\r\n\r\n // fp.cbxColumnHeader.checked = rows.reduce(\r\n // (a, c) => a && c.getData().selected,\r\n // true\r\n // );\r\n // fp.cbxColumnHeader.indeterminate =\r\n // selectedRows.length > 0 &&\r\n // !rows.reduce((a, c) => a && c.getData().selected, true);\r\n // }\r\n // }\r\n\r\n // this.tabEntryDates = new Tabulator('#tabEntryDates', {\r\n // placeholder: 'No Data Available',\r\n // height: '40vh',\r\n // // minWidth: '40vh',\r\n // autoResize: true,\r\n // layout: 'fitColumns',\r\n // data: entryDates,\r\n // // TODO: define columns we want to see\r\n // // autoColumns:true,\r\n // columns: [\r\n // {\r\n // title: 'Id',\r\n // field: 'EmployeeListID',\r\n // visible: false\r\n // },\r\n // // 1 Status\r\n // {\r\n // title: '',\r\n // download: false,\r\n // width: fp.selectColumnWidth,\r\n // field: 'Status',\r\n // formatter: (cell, params, onRendered) => {\r\n // const status = cell.getValue();\r\n // if (status) {\r\n // return getStatusIcon(status.StatusCode).iconText;\r\n // }\r\n // },\r\n // headerSort: false,\r\n // cellClick: function (e, cell) {\r\n // const status = cell.getValue();\r\n // fp.log.verbose({\r\n // type: 'UserEntryDatesPresenterComponent:StatusCellClick',\r\n // status\r\n // });\r\n // if (status) {\r\n // switch (status.StatusCode) {\r\n // case 2:\r\n // case 3:\r\n // case 4:\r\n // case 5:\r\n // fp.ShowError.emit({\r\n // open: true,\r\n // MsgEntityID: status.MsgEntityID\r\n // });\r\n // }\r\n // }\r\n // }\r\n // },\r\n // // 2 Selected\r\n // {\r\n // title: 'Selected',\r\n // field: 'selected',\r\n // download: false,\r\n // headerSort: false,\r\n // width: fp.selectColumnWidth,\r\n // titleFormatter: () =>\r\n // document.getElementById('cbxColumnHeader'),\r\n // headerClick: () => {\r\n // headerClicked = true;\r\n\r\n // const checked = fp.cbxColumnHeader.checked;\r\n\r\n // this.log.debug({\r\n // type: 'UserentrydatesPresentersComponent:headerClick',\r\n // rows: this.tabEntryDates.getRows(true).length\r\n // });\r\n // const rows = fp.tabEntryDates.getRows(true);\r\n\r\n // rows.forEach(function (row) {\r\n // if (!checked) {\r\n // row.select();\r\n // } else {\r\n // row.deselect();\r\n // }\r\n // row.update({ selected: !checked });\r\n // });\r\n\r\n // if (!checked) {\r\n // // TODO: convert this to use css transitions\r\n // $('#divSelectAll').fadeIn(500);\r\n // }\r\n\r\n // headerClicked = false;\r\n // },\r\n // formatter: 'tickCross',\r\n // formatterParams: { crossElement: false },\r\n // editor: false,\r\n // selectablePersistence: false,\r\n // cellClick: (e, cell) => {\r\n // const row = cell.getRow();\r\n // row.toggleSelect();\r\n // }\r\n // },\r\n // // 3 Page Specific Columns\r\n // {\r\n // title: 'Username',\r\n // field: 'EmployeeName',\r\n // cssClass: 'tabulator-cell-readonly disabled',\r\n // minWidth: 250\r\n // },\r\n // {\r\n // title: 'Split Day',\r\n // field: 'Splitday',\r\n // sorter: 'string',\r\n // cssClass: 'tabulator-cell-readonly disabled',\r\n // width: 100\r\n // },\r\n // {\r\n // title: 'Start Date',\r\n // field: 'MinWorkDate',\r\n // width: 175,\r\n // formatter: 'datetime',\r\n // formatterParams: c => {\r\n // return { outputFormat: 'MM/DD/YYYY' };\r\n // },\r\n // editor: this.tabService.dateEditor\r\n // },\r\n // {\r\n // title: 'End Date',\r\n // field: 'MaxWorkDate',\r\n // width: 175,\r\n // formatter: 'datetime',\r\n // formatterParams: c => {\r\n // return { outputFormat: 'MM/DD/YYYY' };\r\n // },\r\n // editor: this.tabService.dateEditor\r\n // },\r\n // {\r\n // title: '',\r\n // field: 'Row_Version',\r\n // visible: false\r\n // }\r\n // ],\r\n // rowSelected: function (row) {\r\n // row.update({ selected: true });\r\n // if (!headerClicked) {\r\n // checkIndeterminate();\r\n // }\r\n // },\r\n // rowDeselected: function (row) {\r\n // row.update({ selected: false });\r\n // if (!headerClicked) {\r\n // checkIndeterminate();\r\n // }\r\n // },\r\n // cellEdited: this.tabService.cellEdited,\r\n // cellEditing: this.tabService.cellEditing,\r\n // cellClick: this.tabService.cellMouseHandler,\r\n // cellTap: this.tabService.cellMouseHandler,\r\n // rowClick: this.tabService.rowMouseHandler,\r\n // rowTap: this.tabService.rowMouseHandler\r\n // });\r\n // }\r\n\r\n public hasErrorStatus = ued =>\r\n ued && ued.Status && ued.Status.StatusCode >= DisplayMessageMinimum;\r\n\r\n public clearSelectedRows() {\r\n this.tabEntryDates.deselectRow();\r\n const data = this.tabEntryDates.getRows();\r\n data.forEach(d => {\r\n d.update({ selected: false });\r\n });\r\n this.cbxColumnHeader.checked = false;\r\n }\r\n\r\n public clearFilters() {\r\n this.tabEntryDates.clearFilter(true);\r\n this.filterFormGroup.controls['users'].reset();\r\n this.filterFormGroup.controls['groups'].reset();\r\n this.resetAction.emit();\r\n }\r\n\r\n // filterData(filters: any[], fieldName: string, valueName: string) {\r\n // this.tabEntryDates.clearFilter(true);\r\n\r\n // const filtersToApply: Array<\r\n // Array<{\r\n // field: string;\r\n // type: string;\r\n // value: any;\r\n // }>\r\n // > = [[]];\r\n\r\n // if (filters && filters.length > 0) {\r\n // filters.forEach(v => {\r\n // filtersToApply[0].push({\r\n // field: fieldName,\r\n // type: '=',\r\n // value: v[valueName]\r\n // });\r\n // });\r\n // }\r\n\r\n // this.tabEntryDates.setFilter(filtersToApply);\r\n // }\r\n\r\n tableFilter($event, type) {\r\n if (type == 'EmployeeName') {\r\n this.UEDTable.filter($event.value, 'EmployeeListId', 'in');\r\n }\r\n }\r\n\r\n onRowSelect($event) {\r\n\r\n }\r\n\r\n onRowUnselect($event) {\r\n\r\n }\r\n\r\n multiUpdate() {\r\n var arr = [];\r\n if (this.uedTableSelection.length > 0) {\r\n this.uedTableSelection.forEach(ele => {\r\n if (this.selectedStartDate != null) {\r\n ele.MinWorkDate = moment(this.selectedStartDate).format('MM/DD/YYYY');\r\n }\r\n if (this.selectedEndDate != null) {\r\n ele.MaxWorkDate = moment(this.selectedEndDate).format('MM/DD/YYYY');\r\n }\r\n arr.push(ele);\r\n });\r\n this.MultiSaveEntryDates.next(arr);\r\n }\r\n this.uedTableSelection = [];\r\n }\r\n\r\n onEditInit($event: { data: IUserEntryDate }) {\r\n this.editing = { ...$event.data };\r\n }\r\n\r\n onRowEditInit(rowData: IUserEntryDate) {\r\n this.clonedEntryDates[rowData.EmployeeListId] = { ...rowData };\r\n this.editing = rowData;\r\n this.log.verbose('onRowEditInit');\r\n if (moment(rowData.MinWorkDate).isValid() == false) {\r\n this.minWorkDate = new Date();\r\n } else {\r\n this.minWorkDate = new Date(rowData.MinWorkDate);\r\n }\r\n if (moment(rowData.MaxWorkDate).isValid() == false) {\r\n this.maxWorkDate = new Date();\r\n } else {\r\n this.maxWorkDate = new Date(rowData.MaxWorkDate);\r\n }\r\n }\r\n\r\n onRowEditSave(rowData: IUserEntryDate) {\r\n rowData = {\r\n ...rowData,\r\n MinWorkDate: this.minWorkDate != null ? moment(this.minWorkDate).format('MM/DD/YYYY') : rowData.MinWorkDate,\r\n MaxWorkDate: this.maxWorkDate != null ? moment(this.maxWorkDate).format('MM/DD/YYYY') : rowData.MaxWorkDate,\r\n };\r\n this.SaveEntryDates.next(rowData);\r\n delete this.clonedEntryDates[rowData.EmployeeListId];\r\n delete this.editing;\r\n this.log.verbose('onRowEditSave');\r\n this.minWorkDate = null;\r\n this.maxWorkDate = null;\r\n }\r\n\r\n onRowEditCancel(item: IUserEntryDate) {\r\n delete this.clonedEntryDates[item.EmployeeListId];\r\n delete this.editing;\r\n this.log.verbose('onRowEditCancel');\r\n }\r\n}\r\n","import { Action } from '@ngrx/store';\r\nimport { IUserGroups } from '../IUserGroups';\r\nimport { IUserEntryDate, IUserEntryDatesResponse } from '../IUserEntryDates';\r\n\r\n\r\nexport enum ActionTypes {\r\n LoadGroups = '[entrydates] Load Groups',\r\n LoadUserEntryDates = '[entrydates] Load Entry Dates',\r\n LoadEntryDatesByGroup = '[entrydates] Load Entry Dates By Group',\r\n SetEntryDatesByGroup = '[entrydates] Set Entry Dates By Group',\r\n SetGroups = '[entrydates] Set Groups',\r\n SetUserEntryDates = '[entrydates] Set Entry Dates',\r\n UpdateUserEntryDates = '[entrydates] Update Entry Dates',\r\n UpdateUserEntryDatesSuccess = '[entrydates] Update Entry Dates Success',\r\n Reset = '[entrydates] Reset'\r\n}\r\n\r\nexport class Reset implements Action {\r\n readonly type = ActionTypes.Reset;\r\n}\r\n\r\nexport class LoadGroups implements Action {\r\n constructor() {\r\n }\r\n readonly type = ActionTypes.LoadGroups;\r\n}\r\n\r\nexport class LoadEntryDatesByGroup implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.LoadEntryDatesByGroup;\r\n}\r\n\r\nexport class SetEntryDatesByGroup implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetEntryDatesByGroup;\r\n}\r\n\r\nexport class SetGroups implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetGroups;\r\n}\r\n\r\nexport class LoadUserEntryDates implements Action {\r\n constructor() {\r\n }\r\n readonly type = ActionTypes.LoadUserEntryDates;\r\n}\r\n\r\nexport class SetUserEntryDates implements Action {\r\n constructor(public payload: Array) {\r\n }\r\n readonly type = ActionTypes.SetUserEntryDates;\r\n}\r\n\r\nexport class UpdateUserEntryDates implements Action {\r\n constructor(public payload: Array) { }\r\n readonly type = ActionTypes.UpdateUserEntryDates;\r\n}\r\n\r\nexport class UpdateUserEntryDatesSuccess implements Action {\r\n constructor(public payload: IUserEntryDatesResponse) { }\r\n readonly type = ActionTypes.UpdateUserEntryDatesSuccess;\r\n}\r\n\r\nexport type ActionsUnion = LoadGroups | SetGroups | LoadUserEntryDates | SetUserEntryDates | UpdateUserEntryDates | UpdateUserEntryDatesSuccess | LoadEntryDatesByGroup | SetEntryDatesByGroup | Reset\r\n ;\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport * as fromUED from './actions';\r\nimport {\r\n mergeMap,\r\n map,\r\n catchError,\r\n flatMap,\r\n tap,\r\n withLatestFrom,\r\n switchMap\r\n} from 'rxjs/operators';\r\nimport { LoggingService } from '../../shared/services/logging/logging.service';\r\nimport * as fromErrors from '../../shared';\r\nimport { Store, select } from '@ngrx/store';\r\nimport {\r\n IStatusMessage,\r\n ResponseStatus,\r\n DisplayMessageMinimum\r\n} from '../../shared';\r\nimport * as fromShared from '../../shared';\r\nimport { LoadGroups } from './actions';\r\nimport { UserEntryDatesService } from '../userentrydates.service';\r\n\r\n@Injectable()\r\nexport class UserEntryDatesEffects {\r\n constructor(\r\n private actions$: Actions,\r\n private service: UserEntryDatesService,\r\n private log: LoggingService\r\n ) {}\r\n\r\n @Effect() LoadEntryDatesByGroup$ = this.actions$.pipe(\r\n ofType(\r\n fromUED.ActionTypes.LoadEntryDatesByGroup\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'UserEntryDatesEffects:LoadEntryDatesByGroup$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getEntryDatesByGroup(x.payload).pipe(\r\n map(exp => new fromUED.SetEntryDatesByGroup(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadGroups$ = this.actions$.pipe(\r\n ofType(fromUED.ActionTypes.LoadGroups),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'UserEntryDatesEffects:LoadGroups$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getUserGroups().pipe(\r\n map(exp => new fromUED.SetGroups(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() LoadUserEntryDates$ = this.actions$.pipe(\r\n ofType(\r\n fromUED.ActionTypes.LoadUserEntryDates\r\n ),\r\n tap(action =>\r\n this.log.debug({\r\n type: 'UserEntryDatesEffects:LoadUserEntryDates$:filtered',\r\n action\r\n })\r\n ),\r\n switchMap(x =>\r\n this.service.getEntryDates().pipe(\r\n map(exp => new fromUED.SetUserEntryDates(exp)),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n\r\n @Effect() UpdateUserEntryDates$ = this.actions$.pipe(\r\n ofType(\r\n fromUED.ActionTypes.UpdateUserEntryDates\r\n ),\r\n tap(x =>\r\n this.log.verbose({\r\n type: 'UserEntryDatesEffects:UpdateUserEntryDates$',\r\n x\r\n })\r\n ),\r\n switchMap(a =>\r\n this.service.putEntryDates([...a.payload]).pipe(\r\n flatMap(resp => [\r\n new fromUED.UpdateUserEntryDatesSuccess(resp),\r\n new fromShared.Errors.RemoveErrors(\r\n resp.Items.filter(\r\n x => x.Status.StatusCode === ResponseStatus.Success\r\n ).map(x => x.EmployeeListId.toString())\r\n ),\r\n new fromShared.Errors.SetErrors(\r\n [\r\n ...resp.ErrorMessages.map(\r\n x =>\r\n ({\r\n StatusCode: -1,\r\n Message: x,\r\n MsgProcessID: 0,\r\n MsgEntityID: ''\r\n } as IStatusMessage)\r\n ),\r\n ...resp.Items.filter(\r\n x =>\r\n x &&\r\n x.Status.StatusCode >= DisplayMessageMinimum\r\n ).map(x => x.Status)\r\n ].filter(fromShared.Errors.filterErrors)\r\n )\r\n ]),\r\n catchError(fromShared.Errors.handleServiceError)\r\n )\r\n )\r\n );\r\n}\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as actions from './actions';\r\nimport { IUserEntryDate } from '../IUserEntryDates';\r\nimport { IUserGroups } from '../IUserGroups';\r\n\r\nexport interface State {\r\n groups: Array;\r\n entryDates: Array;\r\n errors: Array;\r\n}\r\n\r\nexport const initialState: State = {\r\n groups: [],\r\n entryDates: [],\r\n errors: []\r\n};\r\n\r\nexport function reducer(\r\n state = initialState,\r\n action: actions.ActionsUnion\r\n): State {\r\n switch (action.type) {\r\n case actions.ActionTypes.Reset:\r\n return initialState;\r\n case actions.ActionTypes.SetEntryDatesByGroup:\r\n return {\r\n ...state,\r\n entryDates: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetGroups:\r\n return {\r\n ...state,\r\n groups: [...action.payload]\r\n };\r\n case actions.ActionTypes.SetUserEntryDates:\r\n return {\r\n ...state,\r\n entryDates: [...action.payload]\r\n };\r\n case actions.ActionTypes.UpdateUserEntryDatesSuccess:\r\n const gresp = action.payload;\r\n return {\r\n ...state,\r\n entryDates: state.entryDates\r\n .map(\r\n x =>\r\n gresp.Items.find(\r\n y => y.EmployeeListId === x.EmployeeListId\r\n ) || {\r\n ...x\r\n }\r\n ) // update any existing\r\n .concat(\r\n gresp.Items.filter(\r\n x =>\r\n !state.entryDates.find(\r\n y => y.EmployeeListId === x.EmployeeListId\r\n )\r\n )\r\n ), // add any new\r\n errors: gresp.ErrorMessages\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\nconst StateFeatureSelector = createFeatureSelector('entrydates');\r\n\r\nexport const getGroups = createSelector(StateFeatureSelector, x => x.groups);\r\nexport const getEntryDates = createSelector(\r\n StateFeatureSelector,\r\n x => x.entryDates\r\n);\r\n// export const getEntryDatesByGroup = createSelector(StateFeatureSelector, x => x.entryDates);\r\nexport const getEntryDatesErrors = createSelector(\r\n StateFeatureSelector,\r\n x => x.errors\r\n);\r\n","import { NgModule } from '@angular/core';\r\nimport * as fromUED from './store/reducer';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { UserEntryDatesEffects } from './store/effects';\r\nimport { EfaactMaterialModule } from '../efaact-material/efaact-material.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MultiSelectModule, DropdownModule } from '../shared/efaact-primeng.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UserentrydatesFeaturesComponent } from './features/userentrydates-features.component';\r\nimport { UserentrydatesPresentersComponent } from './presenters/userentrydates-presenters.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n , StoreModule.forFeature('entrydates', fromUED.reducer)\r\n , EffectsModule.forFeature([UserEntryDatesEffects])\r\n , EfaactMaterialModule\r\n , FormsModule\r\n , ReactiveFormsModule\r\n , MultiSelectModule\r\n , DropdownModule\r\n , SharedModule\r\n ],\r\n declarations: [UserentrydatesFeaturesComponent, UserentrydatesPresentersComponent],\r\n})\r\nexport class UserEntryDatesModule { }\r\n","import { IUserEntryDate, IUserEntryDatesResponse } from './IUserEntryDates';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { Observable } from 'rxjs';\r\nimport { IUserGroups } from './IUserGroups';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class UserEntryDatesService {\r\n\r\n constructor(@Inject(HttpClient) private http: HttpClient,\r\n @Inject(LoggingService) private log: LoggingService) { }\r\n\r\n private groupUri = `${environment.apiLocation}/UserGroup`;\r\n private uri = `${environment.apiLocation}/UserEntryDates`;\r\n\r\n public getUserGroups (): Observable> {\r\n return this.http.get>(this.groupUri)\r\n .pipe(res => {\r\n this.log.verbose({ type: 'UserentrydatesComponent:getUserGroups:reponse', res });\r\n return res;\r\n });\r\n }\r\n public getEntryDates (): Observable> {\r\n return this.http.get>(this.uri)\r\n .pipe(res => {\r\n this.log.verbose({ type: 'UserentrydatesComponent:getEntryDates:reponse', res });\r\n return res;\r\n });\r\n }\r\n public getEntryDatesByGroup (groups: Array): Observable> {\r\n return this.http.post>(this.uri, groups)\r\n .pipe(res => {\r\n this.log.verbose({ type: 'UserentrydatesComponent:getEntryDatesByGroup:reponse', res });\r\n return res;\r\n });\r\n }\r\n public putEntryDates (entryDates: Array): Observable {\r\n this.log.debug({ type: 'GroupsService:putGroup', entryDates });\r\n this.log.verbose(JSON.stringify({ GroupMemberList: entryDates }));\r\n return this.http.put(this.uri, { UserEntryDates: entryDates })\r\n .pipe(res => {\r\n this.log.verbose({ type: 'GroupsService:putGroup:reponse', res });\r\n return res;\r\n });\r\n }\r\n}\r\n","export * from './vendor-container.component';\r\n","import { Component, OnInit, Renderer2, ViewChild } from '@angular/core';\r\nimport { EntityCollectionService, EntityServices } from '@ngrx/data';\r\nimport { Observable, ReplaySubject, combineLatest, pipe } from 'rxjs';\r\nimport { map, takeWhile } from 'rxjs/operators';\r\nimport clone from 'just-clone';\r\nimport { LoggingService } from '../../shared/services/logging';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { Store, select } from '@ngrx/store';\r\nimport * as fromLookups from '../../lookups';\r\nimport { SelectItem } from 'primeng/api';\r\nimport * as fromShared from '../../shared';\r\nimport { IUserInfo } from '../../user-info';\r\nimport * as fromUser from '../../user-info';\r\n@Component({\r\n selector: 'ef-vendor-container',\r\n templateUrl: './vendor-container.component.html',\r\n styleUrls: ['./vendor-container.component.scss']\r\n})\r\nexport class VendorContainerComponent implements OnInit {\r\n VendorModelDS: EntityCollectionService;\r\n VendorModel$: Observable[]>;\r\n ManageUsersModelDS: EntityCollectionService;\r\n ManageUsersModel$: Observable;\r\n\r\n employeesSelectItem$: Observable;\r\n userInfo$: Observable;\r\n directReports$: Observable;\r\n\r\n process$: Observable;\r\n active = true;\r\n ShowErrorSubject = new ReplaySubject(1);\r\n selectedErrorWithStatus$: Observable;\r\n constructor(\r\n private log: LoggingService,\r\n public entityServices: EntityServices,\r\n private store: Store\r\n ) {\r\n this.log.verbose({ type: 'VendorContainerComponent::' });\r\n this.VendorModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.Vendor.entityName\r\n );\r\n this.ManageUsersModelDS =\r\n entityServices.getEntityCollectionService(\r\n fromDataServices.ManageUsers.entityName\r\n );\r\n }\r\n ngOnInit(): void {\r\n this.VendorModelDS.clearCache();\r\n this.VendorModelDS.getWithQuery({\r\n MatchOnName: 'false',\r\n Only1099: 'false'\r\n });\r\n this.ManageUsersModelDS.clearCache();\r\n this.ManageUsersModelDS.getWithQuery({\r\n ShowInactive: 'false',\r\n UserFilterID: '7'\r\n });\r\n\r\n this.VendorModel$ = this.VendorModelDS.entities$.pipe(\r\n map(items => [...clone(items)])\r\n );\r\n this.ManageUsersModel$ = this.ManageUsersModelDS.entities$.pipe(\r\n map(items => [...clone(items)])\r\n );\r\n\r\n this.setupObservables();\r\n this.setupSubscriptions();\r\n }\r\n ngOnDestroy() {\r\n this.active = false;\r\n }\r\n setupObservables() {\r\n this.userInfo$ = this.store.pipe(select(fromUser.getUserInfo));\r\n this.selectedErrorWithStatus$ = this.store.pipe(\r\n select(fromShared.Errors.selectErrorWithStatus)\r\n );\r\n this.process$ = this.store.pipe(select(fromShared.selectCurrent));\r\n this.directReports$ = this.store\r\n .pipe(select(fromLookups.getDirectReportsLookup))\r\n .pipe(map(x => fromShared.uniqBy(x, y => y.EmployeeListID)));\r\n\r\n this.employeesSelectItem$ = combineLatest([\r\n this.directReports$,\r\n this.ManageUsersModel$\r\n ]).pipe(\r\n // this.directReports$.pipe(\r\n map(([dr, users]) =>\r\n dr\r\n .filter(\r\n y =>\r\n y.IsActive === true &&\r\n users.find(\r\n x => x.EmployeeListID === y.EmployeeListID\r\n )?.EUserID !== null\r\n // && y.IsValidUser === true\r\n )\r\n .map(y => ({\r\n label: y.EmployeeName,\r\n value: y.EmployeeListID\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label))\r\n )\r\n );\r\n }\r\n\r\n setupSubscriptions() {\r\n combineLatest([this.process$, this.ShowErrorSubject])\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(([process, event]) => {\r\n this.store.dispatch(\r\n new fromShared.Errors.SetShowErrors({\r\n open: event.open,\r\n MsgEntityID: event.MsgEntityID,\r\n MsgProcessID: process.ProcessID\r\n })\r\n );\r\n });\r\n\r\n this.userInfo$\r\n .pipe(takeWhile(() => this.active))\r\n .subscribe(userInfo => {\r\n this.store.dispatch(\r\n new fromLookups.LoadDirectReports({\r\n user: userInfo,\r\n activeOnly: false\r\n })\r\n );\r\n });\r\n }\r\n\r\n onSaveVendor($event) {\r\n this.VendorModelDS.upsert($event);\r\n }\r\n onGetVendor($event) {\r\n this.VendorModelDS.clearCache();\r\n this.VendorModelDS.getWithQuery($event);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport * as fromShared from '../../shared';\r\nimport * as fromDataServices from '../../data-services';\r\nimport { VendorModel } from '../../data-services/vendor';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { DisplayErrors } from '../../shared/errors-sidenav';\r\n\r\n@Component({\r\n selector: 'ef-vendor-presenter',\r\n templateUrl: './vendor-presenter.component.html',\r\n styleUrls: ['./vendor-presenter.component.scss']\r\n})\r\nexport class VendorPresenterComponent\r\nextends fromShared.EditGrid\r\n implements OnInit\r\n{\r\n numCols = 5;\r\n\r\n @ViewChild(fromShared.Table, { static: true })\r\n dataTable: fromShared.Table;\r\n\r\n @Input() employeesSelectItem: fromShared.SelectItem[];\r\n\r\n @Output() SaveVendor = new ReplaySubject(1);\r\n @Output() GetVendor = new ReplaySubject(1);\r\n\r\n only1099 = false;\r\n matchOnName = false;\r\n\r\n vendorFilterSelectItem: fromShared.SelectItem[] = [];\r\n\r\n clonedVendors: VendorModel[] = [];\r\n loadClone = true;\r\n rowData: VendorModel;\r\n\r\n private VendorSubject = new ReplaySubject>(1);\r\n private _vendors: Array;\r\n @Input() set vendors(value: Array) {\r\n this._vendors = value;\r\n this.VendorSubject.next(value);\r\n\r\n if (value && value.length > 0) {\r\n\r\n if (this.loadClone == true) {\r\n this.clonedVendors = value;\r\n this.loadClone = false;\r\n } else {\r\n if (this.rowData != null) {\r\n if (value.some(x => x.Status.StatusCode == 3) == true) {\r\n this.rowData.Status = {\r\n StatusCode: fromShared.ResponseStatus.Error,\r\n Message: 'Update Failed'\r\n };\r\n } else {\r\n this.rowData.Status = {\r\n StatusCode: fromShared.ResponseStatus.Success,\r\n Message: 'Success'\r\n };\r\n }\r\n }\r\n }\r\n\r\n this.vendorFilterSelectItem = value.map(x => ({\r\n label: x.VendorName,\r\n value: x.VendorListID\r\n }));\r\n }\r\n }\r\n get vendors(): Array {\r\n return this._vendors;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onConTimeChange($event, rowData) {\r\n\r\n this.rowData = rowData;\r\n\r\n this.SaveVendor.next({\r\n ...rowData,\r\n ConTime: $event\r\n });\r\n }\r\n onConExpChange($event, rowData) {\r\n\r\n this.rowData = rowData;\r\n\r\n this.SaveVendor.next({\r\n ...rowData,\r\n ConExp: $event\r\n });\r\n }\r\n onEmployeeChange($event, rowData) {\r\n\r\n this.rowData = rowData;\r\n\r\n const selectedOption =\r\n this.employeesSelectItem.find(x => x.value == $event.value) != null\r\n ? this.employeesSelectItem.find(x => x.value == $event.value)\r\n : { label: '', value: '' };\r\n\r\n this.SaveVendor.next({\r\n ...rowData,\r\n EmployeeListID: selectedOption.value,\r\n EmployeeName: selectedOption.label\r\n });\r\n }\r\n\r\n onOnly1099FilterChange($event) {\r\n this.loadClone = true;\r\n this.GetVendor.next({\r\n Only1099: $event,\r\n MatchOnName: this.matchOnName\r\n });\r\n }\r\n\r\n onMatchOnNameFilterChange($event) {\r\n this.loadClone = true;\r\n this.GetVendor.next({ Only1099: this.only1099, MatchOnName: $event });\r\n }\r\n\r\n filterTable($event) {\r\n // use this for all table filters\r\n this.dataTable.filter($event.value, 'VendorListID', 'in');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { VendorContainerComponent } from './vendor-container/vendor-container.component';\r\nimport { VendorPresenterComponent } from './vendor-presenter/vendor-presenter.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { UIRouterModule } from '@uirouter/angular';\r\nimport { VendorRoute } from './vendor.route';\r\n\r\n@NgModule({\r\n declarations: [VendorContainerComponent, VendorPresenterComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n UIRouterModule.forChild({\r\n states: [VendorRoute]\r\n })\r\n ]\r\n})\r\nexport class VendorModule {}\r\n","import { Ng2StateDeclaration, Transition } from '@uirouter/angular';\r\nimport { LoggingService } from '../shared/services/logging/logging.service';\r\nimport { VendorContainerComponent } from './vendor-container';\r\n\r\nconst log = new LoggingService();\r\n\r\nexport const VendorRoute: Ng2StateDeclaration = {\r\n // name: 'Vendor.**'\r\n name: 'vendor',\r\n url: '/vendor',\r\n // , loadChildren: () => import('./leave-request.module').then(r => r.VendorModule)\r\n data: { requiresAuth: true },\r\n // params: { process: {} },\r\n // resolve: [\r\n // {\r\n // token: 'process',\r\n // deps: [Transition, VendorService],\r\n // resolveFn: processResolver\r\n // }\r\n // ],\r\n component: VendorContainerComponent\r\n};\r\n","import packageInfo from '../../package.json';\r\nimport { LogLevel } from '../app/shared/services/logging/LogLevelEnum';\r\n\r\n// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\nexport const environment = {\r\n environment: 'staging (testing v13.36.0)',\r\n local: false,\r\n production: false,\r\n apiLocation: 'https://mvcservices.efc-test.com/efaactcentral/api', // staging api\r\n // apiLocation: 'https://mvcservices.efc-test.com/efaactcentral/api', // staging \"production\" api\r\n // apiLocation: 'https://mvcservices.efaactcentral.com/efaactcentral/api', // production api\r\n reportsLocation: 'https://reports.efc-test.com/displayreporteFC.aspx', // staging reports api\r\n // reportsLocation: 'https://reports.efaactcentral.com/displayreporteFC.aspx', // production reports api\r\n logLevel: LogLevel.All,\r\n // logLevel: LogLevel.Info,\r\n defaultMaxReports: 6,\r\n version: packageInfo.version,\r\n dropdownItemHeight: 19,\r\n flags: {\r\n // feature flags\r\n postingItem: false,\r\n 'manageUsers-sendUserCredentials': true,\r\n forgotPassword: true,\r\n advisorSwitch: false,\r\n hideHolidayAuths: true,\r\n projectBudgetForecast: false,\r\n qboReleaseDate: true,\r\n qboresend: true,\r\n projectBudgetDownload: false\r\n },\r\n currencyFormatter: new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n })\r\n};\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\n// (\r\n// document.getElementById('theme-css') as HTMLLinkElement\r\n// ).href = `/assets/theme/efaact-blue/theme-light.css?${environment.version}`;\r\n// (\r\n// document.getElementById('layout-css') as HTMLLinkElement\r\n// ).href = `/assets/theme/efaact-blue/theme-light.css?${environment.version}`;\r\n\r\n// let link = document.createElement('link');\r\n// link.id = 'theme-css';\r\n// link.rel = 'stylesheet';\r\n// link.href = `assets/theme/theme-blue.css?${environment.version}`;\r\n// document.body.appendChild(link);\r\n\r\n// link = document.createElement('link');\r\n// link.id = 'layout-css';\r\n// link.rel = 'stylesheet';\r\n// link.href = `assets/layout/css/layout-joomla.css${environment.version}`;\r\n// document.body.appendChild(link);\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n .bootstrapModule(AppModule, [\r\n // {defaultEncapsulation: ViewEncapsulation.Emulated}\r\n // {defaultEncapsulation: ViewEncapsulation.ShadowDom}\r\n ])\r\n .catch(err => console.error(err));\r\n","export * from './attachment-view-feature.component';\r\nexport * from './attachment.module';\r\n","export default function formatMoney (n, c, d, t) {\r\n var c = isNaN(c = Math.abs(c)) ? 2 : c\r\n , d = d == undefined ? '.' : d\r\n , t = t == undefined ? ',' : t\r\n , s = n < 0 ? '-' : ''\r\n , i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(c)))\r\n , j = (j = i.length) > 3 ? j % 3 : 0;\r\n return s + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');\r\n };","/*! modernizr 3.11.3 (Custom Build) | MIT *\r\n * https://modernizr.com/download/?-inputtypes-setclasses !*/\r\n!function(e,t,n,a){function s(e,t){return typeof e===t}var o=[],i={_version:\"3.11.3\",_config:{classPrefix:\"\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){o.push({name:e,fn:t,options:n})},addAsyncTest:function(e){o.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=i,Modernizr=new Modernizr;var l=[],r=n.documentElement,c=\"svg\"===r.nodeName.toLowerCase(),f=function(){return\"function\"!=typeof n.createElement?n.createElement(arguments[0]):c?n.createElementNS.call(n,\"http://www.w3.org/2000/svg\",arguments[0]):n.createElement.apply(n,arguments)}(\"input\");!function(){for(var e,t,a,s=[\"search\",\"tel\",\"url\",\"email\",\"datetime\",\"date\",\"month\",\"week\",\"time\",\"datetime-local\",\"number\",\"range\",\"color\"],o=0;o0&&(t+=\" \"+n+e.join(\" \"+n)),c?r.className.baseVal=t:r.className=t)}(l),delete i.addTest,delete i.addAsyncTest;for(var u=0;u