Mongo Entities

Create the following classes for the entities that will exist in the API based on the diagram above.

.\Entities\UserStatus.cs
using MongoDB.Bson;

namespace SlackClone.Entities
{
    public class UserStatus
    {
        public ObjectId Id { get; set; }
        public string Status { get; set; }
        public string Description { get; set; }
        public int Rank { get; set; }
    }
}
.\Entities\User.cs
using MongoDB.Bson;

namespace SlackClone.Entities
{
    public class User
    {
        public ObjectId Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName { get => $"{FirstName} {LastName}"; }
        public string Email { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public UserStatus Status { get; set; }
    }
}
.\Entities\DirectMessage.cs
using System;
using MongoDB.Bson;

namespace SlackClone.Entities
{
    public class DirectMessage
    {
        public ObjectId Id { get; set; }
        public string Content { get; set; }
        public User Author { get; set; }
        public User SentTo { get; set; }
        public DateTime CreatedAt { get; set; }
    }
}
.\Entities\Channel.cs
using System.Collections.Generic;
using MongoDB.Bson;

namespace SlackClone.Entities
{
    public class Channel
    {
        public ObjectId Id { get; set; }
        public string Name { get; set; }
        public Team Team { get; set; }
        public ICollection<ChannelMessage> ChannelMessages{ get; set; }
    }
}
.\Entities\ChannelMessage.cs
using System;
using MongoDB.Bson;

namespace SlackClone.Entities
{
    public class ChannelMessage
    {
        public ObjectId Id { get; set; }
        public Channel Channel { get; set; }
        public string Content { get; set; }
        public User Author { get; set; }
        public DateTime CreatedAt { get; set; }
        public int Likes { get; set; }
    }
}
.\Entities\Team.cs
using System.Collections.Generic;
using MongoDB.Bson;


namespace SlackClone.Entities
{
    public class Team
    {
        public ObjectId Id { get; set; }
        public string Name { get; set; }
        public ICollection<Channel> Channels { get; set; }
    }
}

Last updated