Meeskond: CoverMe

From ICO wiki

Meeskond: CoverMe

  • Karit Kilgi
  • Sten Kaasik
  • Ragne Auling
  • Silja Kralik

Idee

XML fail

XML

<?xml version="1.0" encoding="utf-8" ?>
<employees>
  <employee id="10012" available="false">
    <personalCode>768-22-XXXX</personalCode>
    <image>https://yt3.ggpht.com/-V92UP8yaNyQ/AAAAAAAAAAI/AAAAAAAAAAA/zOYDMx8Qk3c/s900-c-k-no-mo-rj-c0xffffff/photo.jpg</image>
    <name>
      <firstName>Lucia</firstName>
      <middleName>J.</middleName>
      <lastName>Gaskill</lastName>
    </name>
    <!-- Sugu: 0 - määramata, 1 - naine, 2 - mees -->
    <gender>1</gender>
    <birthDate>1959-04-05</birthDate>
    <phone>904-366-8831</phone>
    <email>LuciaJGaskill@jourrapide.com</email>
    <!-- Status: 0 - tööl, 1 - puhkusel jne. -->
    <contract id="1" startDate="2002-02-05" endDate="2008-03-15" status="0">
      <company>Cadbury</company>
      <department>Service</department>
      <occupation>Cashier</occupation>
      <!-- töökoormus tundides nädal kohta-->
      <workload>40</workload>
      <extraWork id="1" startDate="2003-03-20" endDate="2003-04-20">
        <company>Mr Fables</company>
        <task>Cleaner</task>
        <totalHours>80</totalHours>
      </extraWork>
    </contract>
    <contract id="2" startDate="2008-03-16" status="0">
      <company>Cadbury</company>
      <department>Service</department>
      <occupation>Manager</occupation>
      <workload>40</workload>
    </contract>
  </employee>
  
  <employee id="10013" available="false">
    <personalCode>769-48-XXXX</personalCode>
    <image></image>
    <name>
      <firstName>Martha</firstName>
      <lastName>Cornwell</lastName>
    </name>
    <!-- Sugu: 0 - määramata, 1 - naine, 2 - mees -->
    <gender>1</gender>
    <birthDate>1998-07-05</birthDate>
    <phone>123-456-7785</phone>
    <email>MarthaCornwall@jourrapide.com</email>
    <!-- Status: 0 - tööl, 1 - puhkusel jne. -->
    <contract id="5" startDate="2001-03-21" status="0">
      <company>Cadbury</company>
      <department>Service</department>
      <occupation>Servant</occupation>
      <workload>40</workload>
    </contract>
  </employee>
  <employee id="10234" available="true">
    <personalCode>019-05-XXXX</personalCode>
    <image>http://weknowyourdreams.com/images/dog/dog-08.jpg</image>
    <name>
      <firstName>James</firstName>
      <lastName>Gibson</lastName>
    </name>
    <gender>2</gender>
    <birthDate>1957-08-02</birthDate>
    <phone>781-896-5862</phone>
    <email>JamesGibson@armyspy.com</email>
    <contract id="3" startDate="2016-12-27" status="1">
      <company>Brilliant Home Designs</company>
      <department>Accounting</department>
      <occupation>Accountant</occupation>
      <workload>40</workload>
    </contract>
  </employee>
  <employee id="11454" available="true">
    <personalCode>623-11-XXXX</personalCode>
    <image>https://www.mein-schoener-garten.de/sites/default/files/styles/inline_l/public/eichhoernchen-winter-2617791-blp-fotolia.jpg?itok=2UsYbm24</image>
    <name>
      <firstName>Elizabeth</firstName>
      <middleName>L.</middleName>
      <lastName>May</lastName>
    </name>
    <gender>1</gender>
    <birthDate>1997-01-12</birthDate>
    <phone>530-730-0818</phone>
    <email>ElizabethLMay@dayrep.com</email>
    <contract id="4" startDate="2015-05-23" status="1">
      <company>Corinthian Designs</company>
      <department>Helpdesk</department>
      <occupation>Information and record clerk</occupation>
      <workload>20</workload>
      <extraWork id="1" startDate="2016-03-20" endDate="2016-03-22">
        <company>Mr Fables</company>
        <task>Data processor</task>
        <totalHours>10</totalHours>
      </extraWork>
    </contract>
  </employee>
  <employee id="11455" available="true">
    <personalCode>624-54-XXXX</personalCode>
    <image>http://www.miksike.ee/docs/referaadid2005/kiirgliblikas_evelin.jpg</image>
    <name>
      <firstName>Judy</firstName>
      <middleName>A.</middleName>
      <lastName>April</lastName>
    </name>
    <gender>1</gender>
    <birthDate>1970-02-22</birthDate>
    <phone>530-730-0818</phone>
    <email>JudyAApril@dayrep.com</email>
    <contract id="9" startDate="2010-07-23" status="0">
      <company>Corinthian Designs</company>
      <department>Helpdesk</department>
      <occupation>Secretary</occupation>
      <workload>40</workload>
      <extraWork id="1" startDate="2016-03-20" endDate="2016-03-22">
        <company>Mr Fables</company>
        <task>Data processor</task>
        <totalHours>16</totalHours>
      </extraWork>
    </contract>
  </employee>
  <employee id="11456" available="true">
    <personalCode>1157-02-XXXX</personalCode>
    <image>https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS7I-9NIN5ys4TUSF61BYALQ_O_01w_XNNzQw5_mfueta0IQbvAqA</image>
    <name>
      <firstName>Tom</firstName>
      <lastName>Johnson</lastName>
    </name>
    <gender>0</gender>
    <birthDate>1972-02-02</birthDate>
    <phone>124-548-998</phone>
    <email>TomJohnson@dayrep.com</email>
    <contract id="14" startDate="1995-11-23" status="0">
      <company>Corinthian Designs</company>
      <department>Analysis</department>
      <occupation>Analyst</occupation>
      <workload>40</workload>
      <extraWork id="1" startDate="2016-03-20" endDate="2016-03-25">
        <company>Mr Fables</company>
        <task>Data processor</task>
        <totalHours>30</totalHours>
      </extraWork>
    </contract>
  </employee>
</employees>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employees">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="employee">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="personalCode" type="xs:string" nillable="false"/>
              <xs:element name="image" type="xs:string"/>
              <xs:element name="name">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="firstName" type="xs:string" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="middleName" type="xs:string" />
                    <xs:element name="lastName" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="gender" type="xs:unsignedByte" nillable="false"/>
              <xs:element name="birthDate" type="xs:date" />
              <xs:element name="phone" type="xs:string" />
              <xs:element name="email" type="xs:string" />
              <xs:element minOccurs="0" maxOccurs="unbounded" name="contract">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="company" type="xs:string" />
                    <xs:element name="department" type="xs:string" />
                    <xs:element name="occupation" type="xs:string" />
                    <xs:element name="workload" type="xs:unsignedByte" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="extraWork">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="company" type="xs:string" />
                          <xs:element name="task" type="xs:string" />
                          <xs:element name="totalHours" type="xs:unsignedByte" />
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                        <xs:attribute name="startDate" type="xs:date" use="required" />
                        <xs:attribute name="endDate" type="xs:date" use="optional" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="startDate" type="xs:date" use="required" />
                  <xs:attribute name="endDate" type="xs:date" use="optional" />
                  <xs:attribute name="status" type="xs:unsignedByte" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedInt" use="required" />
            <xs:attribute name="available" type="xs:boolean" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT 1 (html)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
        <head>
          <title>Employees</title>
          <style>
          </style>
        </head>
        <body>
          <h1>Employees</h1>
            <table border ="1">
                <tr>
                  <th>ID</th> 
                  <th>First name</th>
                  <th>Last name</th>
                  <th>Company</th>
                  <th>Present occupation</th>
                  <th>Available for extra work</th>
                  <th>Image</th>
                </tr>
              <xsl:for-each select ="/employees/employee"> 
                <tr>
                  <td><xsl:value-of select="@id"/></td>
                  <td><xsl:value-of select="name/firstName"/></td>
                  <td><xsl:value-of select="name/lastName"/></td>
                  
                  <td>
                    <xsl:if test="contract/@endDate = 0"></xsl:if>
                      <xsl:value-of select="contract/company"/></td>

                  <td>
                    <xsl:value-of select="contract/occupation"/>
                  </td>

                  <td>
                    <xsl:choose>
                      <xsl:when test="@available = 'true' ">
                        Yes
                      </xsl:when>
                      <xsl:otherwise>
                        No
                      </xsl:otherwise>
                    </xsl:choose>
                  </td>
                  <td>
                    <xsl:choose>
                      <xsl:when test="not(normalize-space(image)='')">
                        <img width="150" height="95" src="{image}"/>
                      </xsl:when>
                      <xsl:otherwise>
                        Image not available
                      </xsl:otherwise>
                    </xsl:choose>
                  </td>
               </tr>
              </xsl:for-each>
              </table>
          </body>
      </html>
      </xsl:template>
</xsl:stylesheet>

XSLT 2 (xml)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">
      <xsl:element name="contracts">
        <xsl:for-each select="//employee">
          <xsl:sort select="contract/@id"/>
          <xsl:for-each select="contract">
            <xsl:element name="contract">

              <xsl:attribute name="id">
                <xsl:value-of select="@id"/>
              </xsl:attribute>
              <xsl:attribute name="startDate">
                <xsl:value-of select="@startDate"/>
              </xsl:attribute>
              <xsl:attribute name="endDate">
                <xsl:value-of select="@endDate"/>
              </xsl:attribute>
              <xsl:attribute name="status">
                <xsl:value-of select="@status"/>
              </xsl:attribute>
              <xsl:element name="employee">
                <xsl:attribute name="id">
                  <xsl:value-of select="../@id"/>
                </xsl:attribute>
                <xsl:attribute name="available">
                  <xsl:value-of select="../@available"/>
                </xsl:attribute>
                <xsl:copy-of select="../name"/>
                <xsl:copy-of select="../personalCode"/>
              </xsl:element>

              <xsl:copy-of select="*"></xsl:copy-of>

            </xsl:element>
          </xsl:for-each>
        </xsl:for-each>
      </xsl:element>
    </xsl:template>
</xsl:stylesheet>

Retsensioonid

XML failide retsensioon meeskonnale PC KartKicker: Talk:Team_PC_KartKicker

XML failide retsensioon meeskonnale PC KartKicker: Talk:Team_Ticketer

Veebiteenuse analüüs

Rakenduse eesmärk on võimaldada tööandjatel leida ettevõttesse/asutusse asenduseks sobivaid inimesi lühikese etteteatamisajaga. Näiteks kui kaupluse kassapidaja peaks jääma haigeks või õpetaja jääb lapsega hoolduslehele. Tööhuvilistel on võimalik andmebaasi lisada oma võimalikud töötamise ajad, oskused ning tasusoov. Tööandjad saavad teha andmebaasist päringut samadel alustel. Rakendus on sarnane GoWorkaBit (https://goworkabit.com) rakendusele, kuid meie juhul on andmebaasist päringute tegijateks tööandjad ja andmete sisestajateks töötajad ise.

Must have

  • Sisselogimine
  • Sisseloginud kasutaja saab lisada enda kohta vabasid aegasid 1 nädal ette
  • Profiilis määratakse oskused (rippmenüü) ja soovitud tasu 1 h kohta
  • Kasutaja saab otsida töötajaid vastavalt enda poolt sisestatud ajale vabadele aegadele, oskustele ning töötasule
  • Kui leitakse sobivad töötajad, saadetakse neile teade.
  • Kõikidel väljavalitutel on võimalik pakkumisega nõustuda, kuid vaid kiireim vastanu saab lepingu
  • Kasutaja saab oma profiili ja vabasid aegasid muuta ning kustutada
  • Teenuse kasutajate ja kasutusstatistika üle arve pidamine kasutajate lõikes
  • Teenuse poole pöördumiste arvu piiramine ja piirangute haldamine

Nice to have

  • Tööandjast kasutaja saab vaadata, millistel aegadel on kõige rohkem töötajaid kättesaadavad
  • Kasutajad saavad vaadata erinevat statistikat, näiteks millised on töötasusoovid erinevate oskustega isikutel või millist tasu erinevate tööde eest üldiselt pakutakse
  • Ekstreemselt äge kasutusmugavus, kaasahaarav kasutajaliides
  • Töötajatel, kes ei jõudnud tööd vastu võtta, on võimalus jääda varutööliste järjekorda

Andmebaasi skeem

CoverME

Lähtekood

Lähtekood on allalaetav siit.

Logi

  • 17.03.17 Esimene kohtumine. Idee. Wiki leht
  • 31.03.17 Idee arutelu.
  • 07.04.17 XML failide ja idee analüüsi ning retsensioonidega seotud ülesannete jaotamine.
  • 14.04.17 Jaotatud ülesannete üleslaadimine, nendega tutvumine.
  • 16.04.17 XML failide, analüüsi ja retsensioonide teemaline kohtumine.
  • 17.04.17 XML failide, retsensioonide ja analüüsi laadimine wikisse.
  • 28.04.17 Veebiteenuse andmebaasimudeli koostamine.
  • 31.04.17 Arutelu veebiteenuse ülesühituse osas, veebiteenuse analüüs ja kavand valmis.
  • 07.05.17 Veebiteenuse andmebaasi mudeli viimistlemine ning veebiteenusega seotud arutelu, ülesannete jagamine.
  • 14.05.17 Klassid, repod, interface, entity framework - vaatame üle tehtud töö ja jagame järgmised ülesanded
  • 19.05.17 Kohtumine teemal seedimine, dependencyd, uow-d ja factory-d, ülesannete jagamine
  • 24.05.17 Kohtumine teemal seedimine, dependencyd, uow-d ja factory-d, ülesannete jagamine
  • 25.05.17 Ühekordsete ülesannete ühine lahendamine
  • 28.05.17 Kontrollerid, nende õiged get-id, post-id koos oma tavaliste (Ok) ja eriliste tagastustega
  • 30.05.17 Kas servicid või uow-d, klientrakenduse alustamine
  • 31.05.17 Päringud, mida antud teenuses peab saama teha
  • 04.06.17 Security, identity, klientrakendus
  • 05.06.17 Tekkinud küsimuste arutelu, ühekordsete ülesannete ühine lahendamine
  • 06.06.17 Tekkinud küsimuste arutelu, ühekordsete ülesannete ühine lahendamine
  • 07.06.17 Tekkinud küsimuste arutelu, ühekordsete ülesannete ühine lahendamine
  • 08.06.17 Tekkinud küsimuste arutelu, ühekordsete ülesannete ühine lahendamine
  • 09.06.17 Tekkinud küsimuste arutelu, ühekordsete ülesannete ühine lahendamine