Git Product home page Git Product logo

clientmanager's People

Contributors

alex-klyuchnik avatar goacoustic avatar ivanzaporozhchenko avatar kirillbuga avatar titarenko avatar yakimechko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clientmanager's Issues

Refactor MailMessageConverter

Since you were so fast, and implemented more than required in #11, here is a new task. Refactor MailMessageConverter class so it contains only one method that receives Input.MailMessage and returns Entites.MailMessage. Consider injecting IRepository instance through constructor and then use it in aforementioned method for retrieving of relevant Persons by their emails. One more thing: you must write unit test for this class (consider creating mock for IRepository).

Review Data Access Implementation Snippet

Go to http://pastebin.com/u/titarenko for snippets of data access implementation. Make sure you understand what are going there. We will additionally have conference call where everyone can ask any related questions. This is high priority issue and it will be closed when everyone clearly understands data access implementation we will use.

Email Processing (Email Parser)

Start with email parser implementation. At the moment it should only associate email message with client and employee. Initially I assume that Client and Employee entities will be created, then you'll do lookup in storage using info extracted from email and then you'll associate these entities with mail message instance by filling up corresponding properties. If Client or Employee doesn't exist, you should create one. Please, contact me if you need more details.

Remove Inline Styles

Make sure we do not have <div ... style="..." in our HTML markup. If we do - move these styles to Site.css.

Actualize Navigation Bar

Make sure we have links to our pages where lists of entities are displayed: clients, employees, dashboard, maybe something else. Currently there is only "Clients" link there and this is sad :(

Refactor IEmailClient (Method Renaming)

Change name for GetMessages method to GetNewMessages or GetUnreadMessages (consider pros and cons of each new name). Make sure documentation is updated as well. Also take note that this issue can interfere with #5.

Implement Event-Based IEmailClient

ImapClient from Ae.Net.Mail has event MailMessage or something like this. Investigate how to use it and create simple implementation of our IEmailClient which will listen to this event and immediately raise our own MailReceived event. You can take AeEmailClient as example (initialization, disposing, etc).

Create Person Class

Person should have identifier, first name, last name, creation date (not birthday :) but when they were added to our system), and of course email. We'll extend properties list later if needed, but at the moment that's it.

Client Editor

Create editor for Client entity. It should be accessible via link located on page with list of all clients (each client record should have "Edit" button - actually link styled as button). You can take Inquiry editor as example.

Dashboard: First Iteration

Create page where dashboard should be displayed. Use our sketches (see Skype history). Note that each column should be implemented as list ("ul" HTML element). Make sure #13 is completed before starting with this. Note: use inquiry controller created during #14 implementation.

Remove Unused Packages from WebUi

Analyze usages of references (use ReSharper: open References, then right click on certain reference, finally "Find Code Dependent..."), then remove unused packages using NuGet dialog (right click on references, then "Manage..."). Also update jQuery to latest version (again, using NuGet) and remove unused packages related to scripts (I mean Modernizr and so on).

Employee Assignment for Inquiry

Enable employee assignment for inquiry on dashboard page. When employee is assigned inquiry should change status to "In Progress" and page should be reloaded to reflect recent changes.

Create Implementation of IConfiguration

Create AppConfiguration where use ConfigurationManager's (http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx) AppSettings to retrieve values. Subsection should be represented as prefix with dot for AppSetting's key. For example, add key="MailClient.Host" value="localhost" - here "MailClient" is subsection name and "Host" is key within this subsection. Also try to implement generic GetValue, you can use something like Convert FCL (Framework Class Library) class (http://msdn.microsoft.com/en-us/library/system.convert.aspx).

Replace Usage of IIdentifiable<T> with IIdentifiable

Probably someone used suggestion of ReSharper to use IIdentifiable from TeamFoundation API. This is completely wrong! We need to use our own IIdentifiable which should consist only one property - Id with type int. So replace wrong usages with correct ones.

Finish Implementation of EmailClient

Do googling before starting implementation - surely someone already has solved this task before (and you can find nice and easy-to-use library).

Create Input.MailMessage Class

Create additional MailMessage class in Input namespace. It's role will be transferring of data from IEmailClient to another service, which will create Entities.MailMessage. Reason - Input.MailMessage represents Sender/Receivers using MailAddress and Entities.MailMessage will represent them as Person instances. Do necessary refactorings (IEmailClient, AeEmailClient, tests, maybe something else).

Client List

Create page where user can see full list of clients. Create controller if needed (I suggest something like ClientsController). Make sure #13 is completed before starting with this.

Go Through Tests

Go through tests and change (not necessary all, but indeed it'll be great if all) usages of new Mock<...>... to code which uses NSubstitute, manual object creation to code which use NBuilder, and Assert-style assertions to code which use Fluent Assertions.

Viewing Inquiry

Create controller responsible for operations with inquiries. Implement first such operation - rendering a page with inquiry details. This page should contain details about both inquiry and related email (from which this inquiry was created). If Inquiry entity is absent, create it in ...DomainModel.Entities namespace (start with simple list of properties, let's say, Issuer and Subject). Make sure #13 is finished before starting with this story.

Mailing History

Create page where user can view entire mailing history with client. I suggest use of ClientsController/MailingHistory controller/action for this. Make sure #13 is completed before starting with implementation.

Write Readme

Fill readme with project high level overview, mention that this is Binary Studio Academy project.

Review Code

Go through existing code base and review code written by your collegues. Make sure .Query() method is properly used, tests are fine and so on.

Replace Enums With Constants

Since Entity Framework (at least < 5.0) is so weird that it doesn't support mapping of enums (even as ints!) and we need a huge workarounds (as expression rewriters, or enum wrappers, or maybe something else), let's simplify things and use constants. Example is here http://pastebin.com/wWBXQbaF.

Updating Inquiry

Modify page implemented in #14 so user can edit Inquiry fields and then post changes to server. Make sure #14 is completed before starting with this.

Employee Editor

Create editor for Employee entity. It should be accessible via link located on page with list of all employees (each employee record should have "Edit" button - actually link styled as button). You can take Inquiry editor as example.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.