Ακυρώθηκε

WPF MVVM project extension.

Dear developers,

for this job I need a software programer to extend an existing WPF 2010 master-detail project. The existing project manages people ( firstnames, lastnames, age....) and their telephonenumbers. (1 to n relation)

And now to continue this project the data of a third table of the same SQL-database shall be displayed in a separate window. This new window could for example be opened when the user double-clicks an item (person) in the existing Listbox on the already existing mainwindow of the project. This new window shall display the matching calendar entries of the people stored in the master table. These calendar entries are reminders, appointments, birthdays, evnets of any kind a.s.o.

I think that all this is a rather easy task for a confirmed software programer. The central point, therefore, is not only that the project runs fine but the way **how the project is coded** matters to me too! The fact is that I am trying to learn WPF myself. And this project shall be a **tutorial for me** from which I can learn WPF, the MVVM pattern and "best practice"

of course.

You can find a list of the most important requirements to meet in the "Advanced--Additional Informatio".

PROJECT VERSION:

Visual Studio Version: 2010

Code behind: Visual Basic ( NOT C#)

PROGRAMMING TECHNIQUES:

WPF MVVM pattern (separation of View, ViewModel and Model)

Datacontext: Entities (from SQL into Entities, automatic generated (by wizard) entityclass when data is added as entity to the project)

Databinding: Properties of EntityClass

Support of:

MoveCurrentToFirst, MoveCurrentToNext, MoveCurrentToPrevious, MoveCurrentToLast..... for datanavigation in the events, reminders and other calendarentries.

Sorting, grouping and filtering of the data.

Editing: AddNew, Remove, RemoveAt.....CancelEdit, CommitEdit....

Commands for the buttons.

And last but not least, a lot of comments to explain what's happening where in the code would help me to understand the used techniques.

Who accepts the challenge?

Best regards,

Jeiss

## Deliverables

The whole point of the exercise is to manage and display Reminders, Appointments, Evnets of any kind, Birthdays a.s.o. In the following description of the job I will use the term of

"Reminder" for every possible entry-type. It shall be a Master-Detail WPF-Project. The Master-data is composed of People with a FirstName, SurName,... a.s.o. For every person in

the People-data one or more related reminders do exist. These reminders are stored in the child-table "tblReminders". On start only the data of the Mastertable(People) shall be

displayed in the existing mainwindow of the poject. By clicking a button (or double-click on a list-item) a second window with the Reminder-data shall open and display the related reminders for the current Person.

1) The data shall be listed-up in a Listview or datagrid and the details of the current item shall be displayed in speciffic, separated elements

(above the list).

2) In addition to that, the Reminders shall "appear" as bolded dates in a calendar-element (maybe on a panel on the left side of the window) This calendar-element shall work in both

directions. I mean when clicking on a bolded date, the current item shall be set to that selected calendar-entry.

3) In the List of all the reminders a color-code shall inform about the "status" of an entry. For example Greeen for "Done", red for "date passed"(but not done), yellow for "watch out,

approaching date".

4) Only the items where the field "Hide" is set to "False" in the DataBase shall be displayed. To view all of the items (even the "Hide" = True) the user has to enter a password!

5) Filtering the different states of the reminders shall be possible. Main filter is the access-level: see point 4. Other filters are All, only "Done", not yet "Done"

6) Filtering of the different "EventTypes" shall be possible

7) buttons for CRUD-operations of the reminder-data (add, delete, update With confirmation messagebox for delete-operation!)

8) Extra, separated window for adding or updating items.

9) When editing an item then "autocomplete"-feature (maybe ComboBoxes) for the fields Event, Place, WhereExactly, EventType and ContactPerson.

10) Concerning this "WarningEmail-feature" I think that for the moment it's enough when the current person of the main-data gets a warning-messagebox.

Nonetheless the code to check if there is a "mailDate" and if "mailSent" is True or False should be provided by the coder. This should be checked right at the start

of the project, not only when the Reminder-window is shown.

11) While editing a reminder the coder has to make sure that EventDay (start date of a reminder) always is "smaller" or at least "equal" to the date of EventEnd. So if EventDate is

changed to a "bigger" date than EventEnd, EventEnd has to change to the new date of EventDay. But if the user sets a "smaller" date for EventEnd than EventDay, then the user must

get an errormessage.

12) When a reminder lasts for more than one day, then the "duration" of the reminder has to be set as bolded dates in the calendar-element.

13) In the detail-area of the reminder-window an element has to inform the user how many days are left until the current reminder occurs. Different styles (color, font...) to mark if a

reminder is nearing or maybe already passed would be good!

14) I would be glad about a groupdescription on the "EntryType" field.

15) If WPF still supports the NumericUpDown-element then I think it would be the right choice for the "Interval" field for the periodic repeating items. And maybe radioButtons could do

for setting the "RadioBtn" field's value.

Name of the table: tblReminders.

----------------------------------------------

Description of the fields:

Name: Id; Type: int; AllowNull = False; IsIdentity = True (primary key)

Name: Fk_People; Type: int; AllowNull = False (foreign key of master table People)

Name: EventDay; Type: datetime; AllowNull = True

Name: EventEnd; Type: datetime; AllowNull = True

Always >= EvnetDay; Never before EventDay!!

Name: EventTime; Type: nvarchar(15); AllowNull = True

Daytime of the Reminder. F. ex: 14:15:00

Name: Event; Type: nvarchar(100); AllowNull = True

Description of the event

Name: Place; Type: nvarchar(60); AllowNull = True

Description of the place where the reminder is taking place

Name: WhereExactly; Type: nvarchar(60); AllowNull = True

The exact place. [url removed, login to view]: second floor, first office on the left

Name: EventType; Type: nvarchar(40); AllowNull = True

Every reminder belongs to an eventtype. Is used for grouping, sorting or filtering the reminders

Name: ContactPerson; Type: nvarchar(50); AllowNull = True

Can be a name of a person, a phonenumber or an e-mail

Name: Notes; Type: nvarchar(380); AllowNull = True

Additional notes to describe the reminder

Name: Done; Type: bit; AllowNull = True

When set to TRUE then the reminder is "done". Will not be displayed in the standard view (filtered out)

Name: Periodic; Type: bit; AllowNull = True

Certain reminders repeat periodically, like a birthday f.ex. turns back every year

Name: Interval; Type: int; AllowNull = True

The time-span in which a periodic reminder will repeat. F.ex. every month, every five years, every 10 days....

Name: RadioBtn; Type: nvarchar(10); AllowNull = True

Sets the interval-type. The user can choose by radiobutton of a reminder repeats in x days, x weeks, x month or x years

Name: Ask; Type: bit; AllowNull = True

When set to False the next date for a periodic reminder is "automatically" changed to be displayed as a date "to come" in the future.

When set to TRUE then, when the date for a periodically returning reminder has passed, a button has to appear on the window. The reminder will be displayed as "passed"

until the user hits this "display at next date"-button. At that moment a function has to calculate the next time (date) when this periodic reminder will occure again.

Name: StartDate; Type: date; AllowNull = True

The date on which a reminder is added.

Name: Day_J_in; Type: int; AllowNull = True

This value sets how many days the person in the Master table has to be warned by e-mail, BEFORE the reminder occures.

Name: WarningAddress; Type: nvarchar(90); AllowNull = True

The e-mail addresses for the warning e-mails. Comma-separated string containig the e-mails. (fore the case that there are more than only one.)

Name: mailDate; Type: date; AllowNull = True

The date on which a "warning e-mail" is sent to "WarningAddress"

Name: mailSent; Type: bit; AllowNull = True

When set to False, a warning e-mail is sent. When set to True, no warning e-mail.

Name: Hide; Type: bit; AllowNull = True

Defaul = False When set to True this entry is only displayed when the user has entered the right password.

Special case 1:

The date of a periodically returning reminder is re-calculated because it's date is passed. Then the new StartDate (for the warning e-mail) has to be recalculated,

considering the "Day_J_in" value. The field "mailSent" has to be unchecked too!

Ικανότητες: .NET, MySQL, SQL, Visual Basic, Windows Επιφάνεια Εργασίας

Περισσότερα: mvvm tutorial wpf, wpf programming, where to learn programming, where to get a programer, where to find for good programer, where i can find job for programming, where do i find the best software developers, where do i find developers, where do find developers, where can i learn programming, where can i learn data entry, where can i find a programming job, where can i find a programer, what is visual basic programming, what is string matching, what is sorting data, what is data sorting, what is data entry 10 key, what is a string in programming, what is an entry level job

Σχετικά με τον Εργοδότη:
( 12 αξιολογήσεις ) Esch/Alzette, Luxembourg

Ταυτότητα Εργασίας: #3523933

4 freelancers are bidding on average $57 for this job

bolbols

See private message.

$59.5 USD σε 14 μέρες
(77 Αξιολογήσεις)
5.9
vespercreativevw

See private message.

$59.5 USD σε 14 μέρες
(9 Αξιολογήσεις)
3.6
hdpamara

See private message.

$59.5 USD σε 14 μέρες
(4 Αξιολογήσεις)
2.5
maxifocussl

See private message.

$51 USD σε 14 μέρες
(0 Αξιολογήσεις)
0.0