/PromoIt

Promot System GUI ,My private development for Promoit, C#, MySQL, Azure Queue, Azure Function - PromoIt Project - made by (Yaron Malul) ,(Ariel Hillel), (Arthur Zarankin)

Primary LanguageC#MIT LicenseMIT

Important!: Please install the icluaded SQL file "Promoit-Database-MySQL.sql" inside the local Database.
Please set it inside the file "PromotItLibrary\Models\Configuration.cs".
Please run all the 4 projects:

  • PromotItFormApp
  • PromoitTwitterAPI
  • PromoitFunctions
  • PromoitQueue

Logo

Project made by: Yaron Malul, Arthur Zarankin and Ariel Hillel.


(Navigate Here)

About The Project

MainApp

PromoIt? What is it?
PromoIt is a campaign-friendly application based on social media platforms, this application is still under development thus it supports Twitter only. In such a modern society, where the social media is the main core of the advertising world - we thought of a way to actually benefit the world, along with the users, by promoting non-profit campaigns through our application. We are encouraging the younger generation to work for a better future, better society and better ideologies by giving them an option to earn products on participation in the program we built and offer.

(back to top)

Built With

  • [.NET 6.0]
  • [MySQL]
  • [Azure Functions]
  • [Twitter API]
  • [Azure Queue Storage]

(back to top)

Getting Started

Registry

  • REGISTRY
    This service is being used to register four different types of users. By the type of the user the system will associate the specific type into an individual database table. The registry panel was built using windows form, a new tab is being displayed with a selection out of four different roles, each role directs to a unique panel to navigate in, according to the role's features and needs. When the registration is proceed, the user automatically being moved to the login panel.

ProLobby Owner (Admin)
This user manages the system.
Registration Form: A new window-form with three fields: Full Name, Username and Password.

Non-Profit Organization (Campaigns Creator)
This user is the main core of the campaigns creation, represnting a non-profit organization.
Registration Form: A new window-form with five fields: Organization Name, Username, Password, Website/URL and Email.

Business Company Representative (Sponsor/Donor)
This user is a company that stands for campaigns and donate their goods in order to promote an agenda or just support them. This role is also the one sending the products to social-activists.
Registration Form: A new window-form with three fields: Company Name, Company Username and Password.

Social Activist (Promoter/Supporter)
This role is the wind in our sails. It's main goal is supporting a campaign, or many, by posting tweets and showing a supportive agenda. By promoting campaigns, the social activists are earning dollars/points (A dollar for a tweet and another dollar for a re-tweet). So they can redeem the money and purchase products, from our application.
Registration Form: A new window-form with six fields: Full Name, Twitter Username, Password, Email, Address and Phone Number.

Login

  • LOGIN
    This service is being used to let registered users log in to the application. The login should be checking whether the fields match a registered user's information within it's table.
    If the user is indeed registered, a panel designed for the role (User's type) will be displayed and contain it's special features, considered the role is being signed in. Otherwise, if there isn't a user exist, a pop-up notification should appear with a description of the error.

ProLobby Owner (Admin)
Dashboard: Within this role's panel, there are three buttons that represent different types of reports. Tweets, Users and Campaigns. Each button displays a data grid of the specific reported being clicked, it's also optional to save the logs of the reports in the main folder.

Non-Profit Organization (Campaigns Creator)
Dashboard: Within this role's panel, there is a button to create a new campaign, following the fields: Campaign Name, Hashtag and Website/URL (Landing page of the campaign).
Data grid that is linked to the MySQL's campaigns table which is used to display the campaigns that already created by the SAME user, including a delete button for easeir control.


Business Company Representative (Sponsor/Donor)
Dashboard: Within this role's panel, there are two data grids: Buyers List and Campaigns List.
Buyers List: Including two columns: Buyer Name, name of the social activist who bought a product and Product Name, the name of the product that was purchased. This grid provides a button to send a product.
By clicking on 'Send Product', a tweet is being posted on the main account and a message sent to the Social Activist's messages-panel. (Example below)

Tweet


Campaigns List: Including two columns: Hashtag, the campaign's hashtag to provide so social-activists can refer to what they're posting and URL. Within this grid, there are two buttons, Products List - So a company can see what products were donated and Donate, so a company can donate products and support a campaign or mutual agenda, a company can donate to any campaign.

Social Activist (Promoter/Supporter)
Dashboard: In the social-activist's panel there are many features, Total Balance, Messages Panel and Data Grid.
Total Balance: In this panel, the user can always watch and follow it's current balance.
Messages Panel: In this panel, the user is getting all the notifications to - when buying, donating or a general message.
Data Grid: This grid contains three columns, Hashtag, URL and Balance, they represent the campaign and it's currency by tweeting to it.
All the campaigns that were created in our application would be visible for the social-activist, also, a buttom for 'Products List' which is responsible for the navigation between products that were donated, with a button to buy a product or a button to donate it back to the campaign it was bought from.

(back to top)

Services

  • Campaigns Service
    This service allows a Non-Profit Organization user to create a new campaign, delete a campaign and basically giving the user an easier control.
    Additionally, it should also gather and display a list of the created campaigns, made by the same user only!

  • Products Service
    This service provides a simple products management system. On-click, a Business Company user should have an option of creating a new product and assigning it to the campaign, moreover, the systems allows the user to inspect already donated products and list of created campaigns.
    (Getting a list of products so a Social-Activist user could buy or alternatively donate from by achieving points/dollars when posting tweets and re-tweets in Twitter)
    (In future this feature should be expanded into a bigger scale of social platforms)

  • Balance Service
    This service updates the Social-Activist user's current balance, each time the system gets a notification from Twitter when both conditions were made, Hashtag and URL. A Social-Activist user will get a dollar per tweet when they post from their personal account and another dollar per re-tweet

  • Twitter Service
    The Twitter Service is provided by API, V1.1 ACCESS V2 ACCESS and OAuth 1.0a. When the authorization is granted, the service follows hashtags and URLs made by a Social-Activist user.
    When Tweet is posted by a Social-Activist, the service validates both hashtag and a website/URL, it will after synchronize the process with the Balance Service and by that it will keep the Social-Activist current balance updated. Each time a Tweet accomplishes the conditions of earnings, a notification should be next in the balance service queue.

  • Purchase Service
    This service works in full conjunction with the Balance Service, when a Social-Activist user holds sufficient dollars/points, the system gives the option of purchasing a new product from the given list or alternatively donate from it to the same campaign.
    If the product was purchased or donated, the Social-Activist's balance should be set according to the product that was picked from the list and update the quantity, if a product was bought, it's quantity should be decreased by the amount purchased, although, if the products were donated, the quantity should not be changed due to the fact they donate it to the same campaign.

    Additionally, when a Social-Activist user buys or donates a product, a Business Company user gets a request to accept the purchase. When the process is done, a new tweet should be posted from the system main Twitter account.

(back to top)

Usage

Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.

For more examples, please refer to the Documentation

(back to top)

Roadmap

(back to top)

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Yaron Malul - @GitHub - melloulyar@gmail.com
Ariel Hillel - @GitHub - arielhillel@gmail.com
Arthur Zarankin - @GitHub - w3arthur@gmail.com

Project Link: https://github.com/w3arthur/PromoIt

(back to top)

Diagrams:

UseCase

ERD