Git Product home page Git Product logo

codecrafterstransportglobal's Introduction

Transport Global Application

This project aims to create an e-service application that connects people with transportation needs from all around the world with the companies that provide transportation services, developed using the ASP.NET Core.

Features

This application provides a platform for users to handle their transportation needs. Users can perform the following functions:

1. Creating Transport Requests

Customers can enter requests for transportation services such as home-to-home moving, office relocation, and transporting large and heavy cargo. They can create reservations based on the offers they receive.

2. Creating Transport Contracts

Shippers can submit offers to customers' open transport requests. Customers can review and accept these offers.

3. Viewing Company Information

Users can access detailed information about the vehicles used in transportation. They can obtain detailed information about the vehicle to be used in their reservation. Additionally, they can view information about the vehicle transportation team and see reviews from other users regarding these companies.

4. Communication

After creating transportation requests, customers can communicate with the shippers that submitted offers to customers' transport request through the messaging system within the application, ensuring efficient and smooth communication.

5. Evaluation

Upon completion of the transportation process, customers can provide feedback and ratings based on their experience. This helps guide other customers and improves the quality of services provided by companies on the platform.

Technologies Used

The following technologies and tools were used in this project:

  • C# programming language
  • ASP.NET Core Web API for backend
  • ASP.NET Core MVC for frontend
  • MSSQL for database
  • DDD for backend architecuture
  • Entity Framework Core for ORM
  • AutoMapper for mappings
  • CQRS pattern to manage data
  • RestSharp for HTTP requests
  • GitHub for version control
  • GitHub Projects to manage tasks
  • Visual Studio to develop project
  • Google Meet for meetings

Installation

To run the application in your local development environment, you can follow these steps:

  1. Clone this repository: git clone https://github.com/ynsmrkrds/CodeCraftersTransportGlobal
  2. Open the project in Visual Studio or your preferred .NET IDE.
  3. Use NuGet Package Manager to install dependencies.
  4. Use Entity Framework Code First Migration to create the database and add data.
  5. Start the applications (TransportGlobal.API and TransportGlobalWeb.UI) and use the local server's address to view it in your browser.

Contributing

This project is open source, and we welcome contributions. If you find any issues or wish to add new features, please submit a pull request or open an issue.

codecrafterstransportglobal's People

Contributors

ynsmrkrds avatar onur0481 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

onur0481

codecrafterstransportglobal's Issues

Creating messaging bounded context

During this task the following methods will be developed.

CHAT

Endpoints:

  1. Create Chat: POST /api/Chat
  2. Get All Chats: GET /api/Chat
  3. Delete Chat: DELETE /api/Chat/{chatID}

Entity:
ID, TransportRequestID, SenderUserID, ReceiverUserID, CreatedDate

Notes:

  1. Görüşmenin oluşturulabilmesi için kullanıcının Shipper tipinde olması gerekmektedir.

MESSAGE

Endpoints:

  1. Create Message: POST /api/Message
  2. Get All Message: GET /api/Message

Entity:
ID, ChatID, Content, SendingDate, WasRead

Refactoring project

Within the scope of this task, the project will be refactored and deficiencies will be eliminated.

Creating user bounded context

During this task the following methods will be developed.

USER

Endpoints:

  1. Register: POST /api/User/register
  2. Login: POST /api/User/login
  3. Get User: GET /api/User
  4. Update User: PUT /api/User
  5. Update Password: PUT /api/User/updatePassword

Entity:
ID, Name, Surname, Email, Password, Type

Type Types:
Shipper: Nakliyeyi yapan firma kullanıcısı
Customer: Nakliyeye ihtiyacı olan kullanıcı

Coding of deficiencies and fixing bugs

Within the scope of this task, deficiencies in the project will be coded and bugs will be fixed

  1. Entity'lere isDeleted eklenecek ve logic bunun etrafında şekillenecek
  2. Transport Contract kabul edildiğinde transport request'in statüsü anlaşıldı olacak.
  3. Transport Request'in statüsünü değiştirmek için üç tane endpoint olacak. Birincisi işe başlandı, ikincisi iş tamamlandı, üçüncüsü ise iş iptal edildi. Birinciyi ve üçüncüyü Shipper yapabilirken, ikinciyi kullanıcı yapabilecek.
  4. Employee oluştururken vehicle'ın kullanıcıya ait olup olmadığına bakılacak
  5. Contract oluştururken vehicle'ın kullaıcıya ait olup olmadığına bakılacak

Creating review screens

Within the scope of this task, the following screens will be developed:

  1. Customer tipindeki kullanıcın daha önce yaptığı değerlendirmeleri görüntüleyebildiği ekrandır. Ayrıca değerlendirmesini silebilir.

Creating transporter screens

Within the scope of this task, the following screens will be developed:

  1. Company Screen: Shipper tipindeki kullanıcın kendine ait olan company'yi görebildiği, düzenleyebildiği ve silebildiği ekrandır. Kullanıcıya ait bir company yok ise bir buton gözükecek. O butona basınca şirket oluşturmak için detaylar gözükecek. Sonucunda kullanıcın şirketine ait detaylar gözükecek.

  2. Company Detail Screen: Şirkete ait olan detayların ve review'ların görüntülendiği ekrandır.

  3. Vehicles Screen: Şirkete ait araçların listelendiği ekrandır. Yeni bir araç oluşturma işlemini de bu ekranda yapar.

  4. Vehicle Detail Screen: Araca ait detayların gözüktüğü ekrandır. Araca ait olan employee'ler de bu ekranda gözükür. Güncelleme ve silme işlemi bu ekranda yapılır.

  5. Eployees Screen: Şirkete ait çalışanların listelendiği ekrandır. Yeni bir çalışan oluşturma işlemini de bu ekranda yapar.

  6. Employee Detail Screen: Çalışana ait detayların gözüktüğü ekrandır. Güncelleme ve silme işlemi bu ekranda yapılır.

Creating messaging screens

Within the scope of this task, the following screens will be developed:

  1. Chats Screen: Kullanıcının kendine ait chat'larini görüntülediği ekrandır.

  2. Message Screen: Kullanıcın seçtiği chat'a ait olan mesajların gözüktüğü ekrandır. Mesaj da atabilir. Bu ekranda kullanıcı eğer shipper ise yeniden teklif ver butonu gözükür. Customer ise teklifi kabul et ve işi tamamla butonları gözükür. Kullanıcı işi tamamla butonuna basarsa review popup'ı gelir ve kullanıcı review yapar. Kullanıcı customer ise mesajlardaki contract'lardaki contract detaylarını görüntüleme butonuna basarak detayları görüntüleyebilir. Ayrıca şirket bilgilirini görüntülemek için üsteki şirket profiline tıklabilir.

Updating Api Response Model

Within the scope of this task, updates will be made in the api response model. Affected places will be corrected.

Creating review bounded context

During this task the following methods will be developed.

REVIEW

Endpoints:

  1. Create Review: POST /api/Review
  2. Get All Review: GET /api/Review?TransportID=1
  3. Delete Review: DELETE /api/Chat/{chatID}

Entity:
ID, TransportID, Score, Comment

Notes:

  1. Değerlendirmenin oluşturulabilmesi ve silinebilmesi için kullanıcının Customer tipinde olması gerekmektedir.

Creating transport bounded context

During this task the following methods will be developed.

TRANSPORT REQUEST

Endpoints:

  1. Create Transport Request: POST /api/TransportRequest
  2. Get Pending Transport Requests: GET /api/TransportRequest/pending
  3. Get Transport Request: GET /api/TransportRequest/{TransportID}
  4. Update Transport Request: PUT /api/TransportRequest/{TransportID}
  5. Delete Transport Request: DELETE /api/TransportRequest/{TransportID}

Entity:
ID, UserID, TransportType, Weight, Volume, TransportDate, RequestDate, LoadingAddress, DeliveryAddress, Status

Transport Types:
Evden eve taşıma, Ofis taşıma, Büyük hacim ve ağırlıkta taşıma, Antika eşya, Beyaz eşya taşıma, Sanat eseri taşıma

Status Types:
Pending: Talep oluşturuldu ancak henüz anlaşma yapılmadı.
DealDone: Anlaşma yapıldı.
Cancelled: Talep iptal edildi.
InProcess: Nakliyat işlemi devam ediyor ve henüz tamamlanmadı.
Done: Nakliyat işlemi başarıyla tamamlandı.

Notes:

  1. Talebin güncellenebilmesi ve silinebilmesi için Pending yada Cancelled durumunda olması gerekmektedir.
  2. Talebin oluşturulabilmesi için kullanıcının Customer tipinde olması gerekmektedir.

TRANSPORT:

Endpoints:

  1. Create Transport: POST /api/Transport

Entity:
ID, TransportRequestID, VehicleID, CreatedDate

Notes:

  1. Transport'ın oluşturulabilmesi için kullanıcının Shipper tipinde olması gerekmektedir.

Creating transport screens

Within the scope of this task, the following screens will be developed:

  1. Transport Requests Screen: Kullanıcı shipper ise bu ekranda pending transport request'ler görünür. Customer ise own transport request'ler görünür. Ayrıca yeni transport request girişi yapabilir.

  2. Transport Request Detail Screen: Transport Request'e ait detayların gözüktüğü ekrandır. Kullanıcı transport request sahibi ise detayları güncelleyebilir veya request'i silebilir. Kullanıcı shipper ise bu ekranda teklif ver butonu gözükecek. Butona basılınca bir popup açılacak ve contract detayları girilecek. Sonrasında teklif ver endpointi çağrılacak. Dolayısıyla shipper request'e teklif vermiş olacak. Eğer shipper bu ekrana tekrar girerse ve transport request'in statüsü halen pending durumunda ise yeniden teklif verebilecek. Bunun için shipper'ın ilgili transport request'e daha önce teklif verip vermediğini geri dönen bir endpoint tasarlanacak.

  3. Tranpsort Contracts Screen: Kullanıcılar bu ekranda kendilerine ait olan transport contractları görüntüleyebilecekler.

  4. Transport Contract Detail Screen: Transport Contract'a ait detayların gözüktüğü ekrandır.

Creating user screens

Within the scope of this task, the following screens will be developed:

  1. Login Screen
  2. Sign Up Screen
  3. Profile Screen

Creating company bounded context

During this task the following methods will be developed.

COMPANY

Endpoints:

  1. Create Company: POST /api/Company
  2. Get All Companies: GET /api/Company
  3. Get Company: GET /api/Company/{companyID}
  4. Update Company: PUT /api/Company/{companyID}
  5. Delete Company: DELETE /api/Company/{companyID}

Entity:
ID, Name, Address, Phone Number, Email, CreatedDate, IsDeleted

Notes:

  1. Şirket silindikten sonra IsDeleted true yapılır ve IsDeleted alanı true ise şirket, geçmiş işlemler için görünür olur, aksi halde görünür olmaz.
  2. Şirketin oluşturulabilmesi, güncellenebilmesi ve silinebilmesi için kullanıcının Shipper tipinde olması gerekmektedir.

VEHICLE

Endpoints:

  1. Create Vehicle: POST /api/Vehicle
  2. Get All Vehicles: GET /api/Vehicle
  3. Get Vehicle: GET /api/Vehicle/{vehicleID}
  4. Get All Vehicles By Company ID: GET /api/Vehicle?companyID=1
  5. Update Vehicle: PUT /api/Vehicle/{vehicleID}
  6. Delete Vehicle: DELETE /api/Vehicle/{vehicleID}

Entity:
ID, CompanyID, IdentificationNumber, Type, Status, CreatedDate, IsDeleted

Type Types:
Kamyon, Kamyonet, Tır, Gemi, Tren, Uçak

Status Types:
Available: Araç müsait
AtWork: Araç başka işte
NotWorking: Araç şu an hizmet vermiyor

Notes:

  1. Araç silindikten sonra IsDeleted true yapılır ve IsDeleted alanı true ise araç, geçmiş işlemler için görünür olur, aksi halde görünür olmaz.
  2. Aracın oluşturulabilmesi, güncellenebilmesi ve silinebilmesi için kullanıcının Shipper tipinde olması gerekmektedir.

EMPLOYEE

Endpoints:

  1. Create Employee: POST /api/Employee
  2. Get All Employees: GET /api/Employee
  3. Get Employee: GET /api/Employee/{employeeID}
  4. Get All EmployeeBy Company ID: GET /api/Employee?companyID=1
  5. Get All Employee By Vehicle ID: GET /api/Employee?vehicleID=1
  6. Update Employee: PUT /api/Employee/{employeeID}
  7. Delete Employee: DELETE /api/Employee/{employeeID}

Entity:
ID, CompanyID, VehicleID, Name, Surname, Title, CreatedDate, IsDeleted

Type Types:
Sürücü, Nakliyat Koordinatörü, Yükleme/Boşaltma Görevlisi

Notes:

  1. Çalışan silindikten sonra IsDeleted true yapılır ve IsDeleted alanı true ise araç, geçmiş işlemler için görünür olur, aksi halde görünür olmaz.
  2. Çalışanın oluşturulabilmesi, güncellenebilmesi ve silinebilmesi için kullanıcının Shipper tipinde olması gerekmektedir.

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.