Meeskond:PennyFriends

From ICO wiki


Liikmed

  • Helen Kösta
  • Kersti Miller
  • Kirke Narusk

Idee

Kes kellele ja kui palju võlgneb? Rakendus aitab järge pidada sõprade ühisostudel ja võlgnevustel ning teostab tasaarveldused. Programm teeb keerulised arvutused ära, et sõbrad saaksid jääda sõpradeks.

Must have:

  • Kasutajate andmebaas - säilitatakse rakenduse ksautajate andmeid
  • Info ostude ja ostusumma jagunemise kohta kasutajate vahel
  • Kasutaja bilanss - kasutaja oodatavad laekumised, võlgnevused, tehtud maksed ja saabunud laekumised
  • Ostusumma jaotise sisestamine vähemalt kahel eri kujul (% kogusummast, osamakse summa)
  • Ostude ajalugu ja selle pärimine
  • Kasutajate võlgnevuste ajalugu ja selle pärimine
  • Võlgnevuste likvideerimine
  • Tasaarveldus
  • Igal kasutajal on oma vaade võlgnevuste, bilansi, võlglaste ja laenu andjate kohta

Funktsionaalsused

Kasutaja sisestamine

  • Rakenduse kasutamiseks on vaja kontot.
  • Konto loomiseks on vaja sisestada a) eesnimi, b) perenimi, c) e-mail, d) parool. Väljad on kohutuslikud.
  • E-mail peab olema unikaalne ja on hiljem sisse logimisel kasutajanime asemel.
  • Parool peab olema vähemalt 6 tähemärki.
  • Vea korral (vähem kui 6 tähemärki) kuvatakse kliendile veateade.

Sisse logimine

  • Peale kasutaja sisestamist luuakse kasutajale konto ja ta saab sinna sisse logida.
  • Sisselogimsieks kasutatakse kasutaja lisamisel salvestatud e-maili aadressi ja parooli.

Sõprade lisamine

  • Kasutajad saavad lisada sõpru kellega arveid jagatakse ja arveldatakse.
  • Lisamiseks on vaja sisestada sõbra e-maili aadress, millele saadetakse kutse sõpruskonnaga ühinemiseks.

Ostude sisestamine

  • Kasutajad lisavad oma tehtud ostud. Lisatakse arve kuupäev, summa, ostu liik ja kirjeldus.
  • Luuakse uue ostu kirje.

Ostuinfo sisestamine

  • Loodud ostu kirje juurde sisestatakse ostu eest tasujad ja ostusumma jagunemine sõprade vahel
  • Süsteem jaotab summa vaikimisi kõikide sõpruskonna liikmete vahel, kui ei valita teisiti.
  • Saab valida kelle vahel peaks summa jagunema ning millistes osakaaludes makstakse.
  • Vaikimisi jaotatakse summa võrdselt.
  • Ostuga seotud kasutajate rahakoti vaatesse ilmub info ostude, võlgnevuste ja oodatavate laekumiste kohta.
  • Ostuga seotud infot saab pärida ostude ajaloost.

Kasutaja ostude info pärimine

  • Otsing laseb kuvada iga kasutaja kohta eraldi tehtud sissekandeid: sisestatud arved, laekumised, võlgnevused, maksed.
  • Päringu tulemusena kuvatakse: a) ostu nimetus, b) ostu kuupäev, c) ostuga seotud kasutajad, d) ostusumma jagunemine kasutajate vahel, e) võlgnikud, f) võlgu olev summa, g) maksete laekumise kuupäev.

Rahakoti vaade

  • Kasutaja näeb reaalajas võlgnevuste ja oodatavate laekumiste andmeid
  • Kasutaja näeb: a) oodatavate laekumiste kogusummat, b) teistele kasutajatele võlgu olevat kogusummat, c) eraldi ridadena, kellele ja kui palju kasutaja parajasti võlgu on ning kes ja kui palju antud kasutajale parajasti võlgu on
  • Oodatavate laekumiste ja võlgnevuste ridade juures kuvatakse: a)ostu nimetus, b) ostu kuupäev, c) võlgnevuse/oodatava laekumise summa, d) laenu võtja/laenu andja andmed.

Kasutaja bilansi pärimine (ajalugu)

  • Kasutaja saab pärida perioodi kaupa väljavõtte oma võlgnevuste, juba toimund ning oodatavate laekumiste kohta (negatiivsete ja positiivsete kannete info).
  • Päringu tulemusena kuvatakse: a) ostu nimetus, b) ostu kuupäev, c) kasutaja poolt võlgnevuse tasumise/kasutajale summa laekumise kuupäev, d) võlgnevuse/laekumise summa, e) laenu võtja/laenu andja andmed.

Laenu andja saab kustutada võla.

  • Võlgnik tasub oma võla kas ülekandega, sularahas või muul süsteemivälisel teel.
  • Laenu andja saab oma rahakoti vaates valida antud võlgnikuga seotud kirje ning klikib nupul "Kustuta võlg".
  • Võlgnevus kustutatakse.
  • Laenu andja ja laenu saaja rahakoti vaatest kaob antud võlgnevusega seotud kirje.
  • Antud tehinguga seotud infot saab pärida ajaloost.

Järgmise ühisostu puhul toimub tasaarveldus.

  • Kasutajd teevad järgmise ühisostu ja võlgnik tasub arve
  • Arve kantakse süsteemi
  • Süsteem teeb automaatse tasaarvelduse: võlg kustutatakse.


Nice to have funktsionaalsused:

  • Ühiskassa olemasolu ootamatuteks ostudeks - Lisaks praegu olemasolevale võimalusele sisestada sooritatud ostudega seotud võlgnevusi ja laekumisi saab süsteemi sisestada ka infot sõpruskonna ühiskassa laekumiste kohta. Kassa ise asub väljaspool rakendust kas pangas või kellegi padjapüüris, aga rakendus aitab järge pidada ühiskassa laekumiste kohta ja makse sooritajate kohta. Laekur sisestab makse sooritaja, sooritamise aja ja makse summa. Süsteemis kuvatakse kõikidele kassaga seotud kasutajatele kogutud summa ning pärida saab makse sooritanud kasutajate infot ning nende osalust ühiskassas.
  • Fondi loomine planeeritud ostudeks - kasutajad saavad sisestada fikseeritud summaga fondi planeeritud ostuks, näiteks reisiks. Fondis saab ära määrata kõikide seotud kasutajate maksemäära. Kõik seotud kasutajad näevad, kui suur summa on fondis juba kokku kogutud ja kui suur summa on veel vaja kokku koguda. Iga kasutaja näeb oma kontol infot enda kogutud ja puuduoleva summa kohta. Fondi ajaloost saab teha väljavõtted fondi laekumiste, kasutajate maksetete,kogutud summa ja veel puuduoleva summa kohta. Fond nagu ühiskassagi asub ise väljaspool rakendust. Rakenduses peetakse ainult järge toimunud ülekannete kohta.
  • Graafiline liides - kuvatakse diagrammid võlgnevuste ja kulutuste kohta.
  • Kasutajad saavad valida, kas tasaarveldus on lubatud.

Andmemudel

DB pennyFriends.png


Tehnoloogiad

  • C#
  • SQL
  • Windows Presentation Foundation

Blogi

  • 17.09.17 Meeskonna moodustamine
  • 28.10.17 Teema valimine ja Wiki lehe loomine
  • 02.11.17 Skype koosolek: idee, must have ja nice to have kirjeldamine
  • 04.11.17 Analüüsi kirjeldamine
  • 05.11.17 TFS konto loomine projektile
  • 11.11.17 Analüüsi retsensiooni sisestamine meeskonnale Märkmik.
  • 13.11.17 Projekti loomine TFSis
  • 14.11.17 Andmebaasi ühendus ja tabelid, esimene migratsioon
  • 19.11.17 Serviced lisatud - User, Purchase
  • 27.11.17 Domain: Friendship,FriendshipPurchase, Purchase, PurchaseType, User, UserPurchase
  • 28.11.17 Esimene prototüüp valmis GUI jaoks
  • 01.12.17 Vaatemudelite disain
  • 11-17.12.17 Intensiivne töö prototüübiga
  • 17.12.17 Prototüübi esitamine
  • 02.01.18 Sisse logimise funktsionaalsus loodud
  • 06.01.18 Sõprade lisamise funktsionaalsus loodud
  • 07.01.18 Kasutaja registreerimise funktsionaalsus loodud

Prototüüp 17.12.2017

Liikmed:

  • Helen Kösta
  • Kersti Miller
  • Kirke Narusk

Lähtekood: https://hekost.visualstudio.com/_git/PennyFriends

Versioonihaldus: https://hekost.visualstudio.com/_git/PennyFriends/commits

Vaated: Rahakoti vaade: Kasutaja näeb reaalajas, kui palju ta on kulutanud kokku (Minu kõik ostud), kui palju ja kellele ta on võlgu (Minu võlgnevused) ning kes ja kui palju on temale võlgu (Minu laekumised).

Wallet PF.png

Arvete pärimise vaade: Kasutaja saab pärida eri parameetrite (näiteks kuupäev, ostu kirjelduses leiduva alamsõne, ostuliigi jne) alusel infot oma ostude ajaloo kohta.

History PN.png
Description PN.png

Sõprade lisamise ja pärimise vaade: Kasutaja näeb oma sõpruskonda. Järgmisena on plaanis lisada ka sõprade lisamise funktsionaalsus.

Friends PN.png

Ostude lisamise vaade: Kasutaja saab lisada oste. Funktsionaalsus on olemas, kui vaja wpf-is veel vormistada.

Purchase PF.png

Töö senine kulg:

Ajakava:

  • Vaata Blogi sissekandeid

Probleemid:

  • Alguses oli probleemiks mitmekesi koodi haldamine Gitis.
  • Kuna andmebaas on lokaalne, siis ei ole head ühist testbaasi.
  • wpf-i tegemisel läks aega sündmuste muutmise loogikale pihta saamise peale
  • Navigatsiooni riba saime tööle, kuid probleeme valmistab sujuva switchi rakendamine eri vaadete vahel.

Mis takistab tööga edasi liikumist:

  • Võiks olla rohkem tausta teadmisi andmebaaside kohta - loomine, pärimine, sidumine jne, kuigi hetkel oleme hakkama saanud.
  • Ületamatuid takistusi ei oska hetkel nimetada.

Edasised arendused:

  • Navigatsioonisüsteem
  • Frame elemendis kuvada Vaadete sisu
  • Ostude sisestamine wpf-i kaudu, hetkel saab vaid Main meetodis konsoolirakenduses oste sisestada.
  • Erindite loomine (try catch / if else blokid), mis kontrollivad sisestatud infot ning annavad kasutajale veateateid ning juhiseid.
  • Sisse logimise funktsionaalsuse loomine
  • Sõprade lisamise funktsionaalsus, hetkel saab juba olemasolevaid sõpru andmebaasist pärida.
  • Laenu andja saab kustutada oma võlgniku võla funktsionaalsuse loomine.

Hinnang prototüübile:

  • Oleme realiseerinud mitmeid olulisi funktsionaalsuseid.
  • Koodi oleme kirjutanud mustri järgi.
  • Andmebaas on realiseeritud analüüsi käigus loodud andmemudeli järgi ning ärikihis on loodud hulk meetodeid andmete pärimiseks, salvestamiseks, kustutamiseks, omavahel seostamiseks jne
  • Rakendusel on juba olemas ka esialgne disain ning silmailu.
  • Rakenduse põhistruktuur ja vaated on valmis, kuid vaja on veel lisada mitu põhifunktsionaalsust (olulisemad neist sõprade lisamine, ostude lisamine)
  • Eelpool toodud vaadetes ei ole loogikat kirjutanud otse vaatesse.
  • Loodud on ports eri andmebaasist pärimise meetodeid, mida rakendatud edukalt wpf-iga vaatemudelites, sh keerulisemaid, nagu kasutaja võlgnevuste või laekumiste pärimine iga sõbra kohta, kus ei piisa üherealisest lihtpäringust.
  • Rakenduses ei ole veel kuigi palju tegeldud vigade haldamisega.
  • Vaadete loomisel on kastatud binding'ut andmete kuvamiseks.

kui palju punkte võiks prototüübi eest meeskonna hinnangul saada? Meeskond annaks endale 8-10 punkti