Compare commits
3 Commits
98a8b297ab
...
b1fc78eb26
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1fc78eb26 | ||
|
|
84abc28e16 | ||
|
|
64b6e01512 |
36
CollectionUtils.cs
Normal file
36
CollectionUtils.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace First_week
|
||||
{
|
||||
public static class CollectionUtils
|
||||
{
|
||||
public static bool IsNullOrEmpty<T>(this IEnumerable<T> collection)
|
||||
{
|
||||
return collection == null || !collection.Any();
|
||||
}
|
||||
public static List<T> ToSafeList<T>(this IEnumerable<T> collection)
|
||||
{
|
||||
return collection?.ToList() ?? new List<T>();
|
||||
}
|
||||
|
||||
public static void Shuffle<T>(this IList<T> list)
|
||||
{
|
||||
if (list == null)
|
||||
return;
|
||||
|
||||
Random rng = new Random();
|
||||
int n = list.Count;
|
||||
while (n > 1)
|
||||
{
|
||||
n--;
|
||||
int k = rng.Next(n + 1);
|
||||
T value = list[k];
|
||||
list[k] = list[n];
|
||||
list[n] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4
First week.slnx
Normal file
4
First week.slnx
Normal file
@@ -0,0 +1,4 @@
|
||||
<Solution>
|
||||
<Project Path="../ContactsApp/ContactsApp.csproj" Id="a2bc9165-c669-4d35-8a64-2c0bbeff9da4" />
|
||||
<Project Path="UtilityLibrary.csproj" />
|
||||
</Solution>
|
||||
48
StringUtils.cs
Normal file
48
StringUtils.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace First_week
|
||||
{
|
||||
public class StringUtils
|
||||
{
|
||||
public static bool IsPalindrome(string s)
|
||||
{
|
||||
if (string.IsNullOrEmpty(s))
|
||||
return false;
|
||||
|
||||
string cleaned = new string(s.Where(c => char.IsLetterOrDigit(c)).ToArray()).ToLower();
|
||||
string reversed = new string(cleaned.Reverse().ToArray());
|
||||
|
||||
return cleaned == reversed;
|
||||
}
|
||||
|
||||
public static string ReverseWords(string sentence)
|
||||
{
|
||||
if (string.IsNullOrEmpty(sentence))
|
||||
return sentence;
|
||||
|
||||
var words = sentence.Split(' ');
|
||||
var reversedWords = words.Select(word => new string(word.Reverse().ToArray()));
|
||||
|
||||
return string.Join(" ", reversedWords);
|
||||
}
|
||||
|
||||
public static string RemovePunctuation(string s)
|
||||
{
|
||||
if (string.IsNullOrEmpty(s))
|
||||
return s;
|
||||
|
||||
return new string(s.Where(c => !char.IsPunctuation(c)).ToArray());
|
||||
}
|
||||
|
||||
public static bool IsAlphaNumeric(string s)
|
||||
{
|
||||
if (string.IsNullOrEmpty(s))
|
||||
return false;
|
||||
|
||||
return s.All(char.IsLetterOrDigit);
|
||||
}
|
||||
}
|
||||
}
|
||||
13
Test.cs
Normal file
13
Test.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.Net.Mail;
|
||||
using First_week;
|
||||
|
||||
User nekit = new User("Nikita", "Polyanin", new MailAddress("polyanin@mail.ru"), new DateOnly(2004, 12, 8));
|
||||
Console.WriteLine(nekit.GetFullName());
|
||||
|
||||
nekit.UpdateEmail(new MailAddress("lox@mail.ru"));
|
||||
Console.WriteLine(nekit.Email);
|
||||
|
||||
nekit.UpdateDate(new DateOnly(2024,12, 8));
|
||||
Console.WriteLine(nekit.Date);
|
||||
|
||||
CollectionUtils.Shuffle()
|
||||
61
User.cs
Normal file
61
User.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Dynamic;
|
||||
using System.Net.Mail;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace First_week
|
||||
{
|
||||
public class User
|
||||
{
|
||||
public Guid Id { get; }
|
||||
public string Name { get; private set; }
|
||||
public string Surname { get; private set; }
|
||||
public MailAddress? Email { get; private set; }
|
||||
public DateOnly Date { get; private set; }
|
||||
public bool IsActive { get; private set; }
|
||||
|
||||
public User(string name, string surname, MailAddress email, DateOnly date)
|
||||
{
|
||||
if (name == null || name.Length > 100)
|
||||
throw new Exception("Incorrect name");
|
||||
|
||||
if (surname == null || surname.Length > 100)
|
||||
throw new Exception("Incorrect surname");
|
||||
|
||||
if (date.CompareTo(DateOnly.FromDateTime(DateTime.Now)) > 0)
|
||||
throw new Exception("Incorrect birthdate");
|
||||
|
||||
Id = Guid.NewGuid();
|
||||
Name = name;
|
||||
Surname = surname;
|
||||
Email = email;
|
||||
Date = date;
|
||||
IsActive = true;
|
||||
}
|
||||
|
||||
public string GetFullName()
|
||||
{
|
||||
return ($"{Surname} {Name}");
|
||||
}
|
||||
|
||||
public void UpdateEmail(MailAddress newMail)
|
||||
{
|
||||
Email = newMail;
|
||||
}
|
||||
|
||||
public void UpdateDate(DateOnly date)
|
||||
{
|
||||
if (date.CompareTo(DateOnly.FromDateTime(DateTime.Now)) > 0)
|
||||
throw new Exception("Wrong date");
|
||||
|
||||
Date = date;
|
||||
}
|
||||
|
||||
public void Deactivate()
|
||||
{
|
||||
IsActive = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
60
UserManager.cs
Normal file
60
UserManager.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Mail;
|
||||
using System.Text;
|
||||
|
||||
namespace First_week
|
||||
{
|
||||
public class UserManager
|
||||
{
|
||||
public List <User> Registory = new();
|
||||
|
||||
public void AddUser(User user)
|
||||
{
|
||||
CheckUniqe(user);
|
||||
Registory.Add(user);
|
||||
}
|
||||
|
||||
public void RemoveUser(Guid id)
|
||||
{
|
||||
User? user = Registory.Find(x => x.Id == id);
|
||||
if (user == null)
|
||||
return;
|
||||
|
||||
Registory.Remove(user);
|
||||
}
|
||||
|
||||
public User Find(Guid id)
|
||||
{
|
||||
User? user = Registory.Find(x => x.Id == id);
|
||||
if (user == null)
|
||||
throw new Exception("Not found");
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public User Find(MailAddress email)
|
||||
{
|
||||
User? user = Registory.Find(x => x.Email == email);
|
||||
if (user == null)
|
||||
throw new Exception("Not found");
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
private void CheckUniqe(User user)
|
||||
{
|
||||
if (Registory.FirstOrDefault(x => x.Equals(user)) != null)
|
||||
throw new Exception("Such a user already exists");
|
||||
}
|
||||
|
||||
public void Show()
|
||||
{
|
||||
foreach (var user in Registory)
|
||||
{
|
||||
Console.WriteLine($"{user.GetFullName} {user.Id}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
UtilityLibrary.csproj
Normal file
11
UtilityLibrary.csproj
Normal file
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<RootNamespace>First_week</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user