diff --git a/ThirdLesson/Messenger.sln b/ThirdLesson/Messenger.sln new file mode 100644 index 0000000..b691dfa --- /dev/null +++ b/ThirdLesson/Messenger.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2041 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Messenger", "Messenger\Messenger.csproj", "{540DA987-1B8D-4642-9B88-CDFE2352C18C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {540DA987-1B8D-4642-9B88-CDFE2352C18C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {540DA987-1B8D-4642-9B88-CDFE2352C18C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {540DA987-1B8D-4642-9B88-CDFE2352C18C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {540DA987-1B8D-4642-9B88-CDFE2352C18C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {98225E3B-48F5-4430-A131-AD4A924FC5D9} + EndGlobalSection +EndGlobal diff --git a/ThirdLesson/Messenger/Channel.cs b/ThirdLesson/Messenger/Channel.cs new file mode 100644 index 0000000..df7ddc4 --- /dev/null +++ b/ThirdLesson/Messenger/Channel.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Messenger +{ + public class Channel : Myrialog + { + public string Name { get; private set; } + + public Channel (string name, List messages, List users, Dictionary admins, Guid id) + :base(messages, users, admins, false, id) + { + Name = name; + } + + public Channel (string name, User Master) + : base(false, new Guid()) + { + Users.Add(Master); + Admins.Add(Master, true); + Name = name; + } + } +} diff --git a/ThirdLesson/Messenger/Chat.cs b/ThirdLesson/Messenger/Chat.cs new file mode 100644 index 0000000..1c277b0 --- /dev/null +++ b/ThirdLesson/Messenger/Chat.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Messenger +{ + public class Chat : Myrialog + { + public Chat(List messages, List users, Dictionary admins, Guid id) + : base(messages, users, admins, true, id) + { + + } + + public Chat(User first, User second) + : base(true, new Guid()) + { + Users.Add(first); + Admins.Add(first, false); + Users.Add(second); + Admins.Add(second, false); + } + } +} diff --git a/ThirdLesson/Messenger/Group.cs b/ThirdLesson/Messenger/Group.cs new file mode 100644 index 0000000..3da2002 --- /dev/null +++ b/ThirdLesson/Messenger/Group.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Messenger +{ + public class Group : Myrialog + { + public string Name { get; private set; } + + public Group(string name, List messages, List users, Dictionary admins, Guid id) + : base(messages, users, admins, true, id) + { + Name = name; + } + + public Group(string name, User Master) + : base(true, new Guid()) + { + Users.Add(Master); + Admins.Add(Master, true); + Name = name; + } + } +} diff --git a/ThirdLesson/Messenger/Message.cs b/ThirdLesson/Messenger/Message.cs new file mode 100644 index 0000000..dedf38f --- /dev/null +++ b/ThirdLesson/Messenger/Message.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Messenger +{ + public class Message + { + public User Author { get; } + public string Text { get; set; } + public DateTimeOffset Date { get; } + public Guid Id { get; } + + public Message(User author, string text, DateTimeOffset date, Guid id) + { + Author = author; + Text = text; + Date = date; + Id = id; + } + } +} diff --git a/ThirdLesson/Messenger/Messenger.csproj b/ThirdLesson/Messenger/Messenger.csproj new file mode 100644 index 0000000..082c1c9 --- /dev/null +++ b/ThirdLesson/Messenger/Messenger.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {540DA987-1B8D-4642-9B88-CDFE2352C18C} + Library + Properties + Messenger + Messenger + v4.6.1 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ThirdLesson/Messenger/Myrialog.cs b/ThirdLesson/Messenger/Myrialog.cs new file mode 100644 index 0000000..cc71f20 --- /dev/null +++ b/ThirdLesson/Messenger/Myrialog.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Messenger +{ + public class Myrialog + { + public List Messages { get; set; } + public List Users { get; set; } + public Dictionary Admins { get; set; } + public bool AbleToAdd { get; } + public Guid Id { get; } + + public bool AddUser(User Master, User ToAdd) + { + if (!Admins[Master]) return false; + else + { + Users.Add(ToAdd); + Admins.Add(ToAdd, false); + return true; + } + } + + public bool AddAdmin(User Master, User ToAdd) + { + if ((Admins[Master]) && (Users.Contains(ToAdd))){ + Admins[ToAdd] = true; + return true; + }else + return false; + } + + public bool AddMesage(User Master, Message ToAdd) + { + if ((Admins[Master]) || (AbleToAdd)) + { + Messages.Add(ToAdd); + return true; + } + else return false; + } + + public bool DeleteMessage(User Master, Guid MessageId) + { + for (int i = 0; i < Messages.Count; i++) + { + if ((Messages[i].Id == MessageId) && ((Admins[Master]) || (Messages[i].Author == Master))) + { + Messages.RemoveAt(i); + return true; + } + } + + return false; + } + + public bool EditMessage(User Master, Guid MessageId, string NewText) + { + for (int i = 0; i < Messages.Count; i++) + { + if ((Messages[i].Id == MessageId) && (Messages[i].Author == Master)) + { + Messages[i].Text = NewText; + return true; + } + } + + return false; + } + + public Myrialog(List messages, List users, Dictionary admins, bool ableToAdd, Guid id) + { + Messages = messages; + Users = users; + Admins = admins; + AbleToAdd = ableToAdd; + Id = id; + } + + public Myrialog(bool ableToAdd, Guid id) + { + Messages = new List(); + Users = new List(); + Admins = new Dictionary(); + AbleToAdd = ableToAdd; + Id = id; + } + } +} diff --git a/ThirdLesson/Messenger/Properties/AssemblyInfo.cs b/ThirdLesson/Messenger/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9039f16 --- /dev/null +++ b/ThirdLesson/Messenger/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("Messenger")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Messenger")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, задайте атрибуту ComVisible значение TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("540da987-1b8d-4642-9b88-cdfe2352c18c")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номер сборки и номер редакции по умолчанию. +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ThirdLesson/Messenger/User.cs b/ThirdLesson/Messenger/User.cs new file mode 100644 index 0000000..d4c36d1 --- /dev/null +++ b/ThirdLesson/Messenger/User.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Messenger +{ + public class User + { + public string Name { get; } + public Guid Id { get; } + + public User(string name, Guid id) + { + Name = name; + Id = id; + } + } +} diff --git a/ThirdLesson/Messenger/bin/Debug/Messenger.dll b/ThirdLesson/Messenger/bin/Debug/Messenger.dll new file mode 100644 index 0000000..57509ae Binary files /dev/null and b/ThirdLesson/Messenger/bin/Debug/Messenger.dll differ diff --git a/ThirdLesson/Messenger/bin/Debug/Messenger.pdb b/ThirdLesson/Messenger/bin/Debug/Messenger.pdb new file mode 100644 index 0000000..9da0c61 Binary files /dev/null and b/ThirdLesson/Messenger/bin/Debug/Messenger.pdb differ diff --git a/ThirdLesson/Messenger/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/ThirdLesson/Messenger/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..35f29c7 Binary files /dev/null and b/ThirdLesson/Messenger/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/ThirdLesson/Messenger/obj/Debug/Messenger.csproj.CoreCompileInputs.cache b/ThirdLesson/Messenger/obj/Debug/Messenger.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..e59c092 --- /dev/null +++ b/ThirdLesson/Messenger/obj/Debug/Messenger.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +f8ec3abc22431a6f48128bf894e858240bc3862a diff --git a/ThirdLesson/Messenger/obj/Debug/Messenger.csproj.FileListAbsolute.txt b/ThirdLesson/Messenger/obj/Debug/Messenger.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a60f37c --- /dev/null +++ b/ThirdLesson/Messenger/obj/Debug/Messenger.csproj.FileListAbsolute.txt @@ -0,0 +1,6 @@ +C:\Users\markp\Desktop\Programming\C#\League\Messenger\Messenger\bin\Debug\Messenger.dll +C:\Users\markp\Desktop\Programming\C#\League\Messenger\Messenger\bin\Debug\Messenger.pdb +C:\Users\markp\Desktop\Programming\C#\League\Messenger\Messenger\obj\Debug\Messenger.csprojAssemblyReference.cache +C:\Users\markp\Desktop\Programming\C#\League\Messenger\Messenger\obj\Debug\Messenger.csproj.CoreCompileInputs.cache +C:\Users\markp\Desktop\Programming\C#\League\Messenger\Messenger\obj\Debug\Messenger.dll +C:\Users\markp\Desktop\Programming\C#\League\Messenger\Messenger\obj\Debug\Messenger.pdb diff --git a/ThirdLesson/Messenger/obj/Debug/Messenger.csprojAssemblyReference.cache b/ThirdLesson/Messenger/obj/Debug/Messenger.csprojAssemblyReference.cache new file mode 100644 index 0000000..51e185e Binary files /dev/null and b/ThirdLesson/Messenger/obj/Debug/Messenger.csprojAssemblyReference.cache differ diff --git a/ThirdLesson/Messenger/obj/Debug/Messenger.dll b/ThirdLesson/Messenger/obj/Debug/Messenger.dll new file mode 100644 index 0000000..57509ae Binary files /dev/null and b/ThirdLesson/Messenger/obj/Debug/Messenger.dll differ diff --git a/ThirdLesson/Messenger/obj/Debug/Messenger.pdb b/ThirdLesson/Messenger/obj/Debug/Messenger.pdb new file mode 100644 index 0000000..9da0c61 Binary files /dev/null and b/ThirdLesson/Messenger/obj/Debug/Messenger.pdb differ diff --git a/ThirdLesson/readme.md b/ThirdLesson/readme.md index 681ccfd..28e5673 100644 --- a/ThirdLesson/readme.md +++ b/ThirdLesson/readme.md @@ -1 +1 @@ -Third lesson of Margelov Vitaly \ No newline at end of file +Third lesson of Vishnevsky Mark