diff --git a/CORP-MAUI/Pages/ChatPage.xaml b/CORP-MAUI/Pages/ChatPage.xaml
index 490b97f..dba513c 100644
--- a/CORP-MAUI/Pages/ChatPage.xaml
+++ b/CORP-MAUI/Pages/ChatPage.xaml
@@ -2,73 +2,83 @@
+ Title="Чат"
+ BackgroundColor="#E5E5E5">
-
+ ColumnDefinitions="50,Auto,*,50"
+ Padding="15,10"
+ BackgroundColor="White">
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -79,13 +89,14 @@
MaximumWidthRequest="300"
BackgroundColor="{StaticResource Primary}"
StrokeShape="RoundRectangle 15"
- Padding="10"
+ Stroke="Transparent"
+ Padding="12"
Margin="50,0,0,0"
- Shadow="{Shadow Brush=Black, Opacity=0.2, Offset='0,1', Radius=3}">
+ Shadow="{Shadow Brush=Black, Opacity=0.1, Offset='0,1', Radius=3}">
-
+
@@ -119,10 +130,10 @@
FontSize="10"
HorizontalOptions="End"
TextColor="White"
- Opacity="0.7">
+ Opacity="0.8">
-
+
@@ -136,35 +147,56 @@
+ Padding="15,10"
+ BackgroundColor="White"
+ Stroke="Transparent"
+ StrokeShape="RoundRectangle 0">
-
+
+ Padding="15,0">
+
+
-
diff --git a/CORP-MAUI/Pages/DepartmentDetailsPage.xaml.cs b/CORP-MAUI/Pages/DepartmentDetailsPage.xaml.cs
index 0905c4c..4e00c35 100644
--- a/CORP-MAUI/Pages/DepartmentDetailsPage.xaml.cs
+++ b/CORP-MAUI/Pages/DepartmentDetailsPage.xaml.cs
@@ -1,4 +1,4 @@
-using System.Collections.ObjectModel;
+using System.Collections.ObjectModel;
using System.Diagnostics;
using CORP_MAUI.Models;
namespace CORP_MAUI.Pages;
@@ -41,6 +41,12 @@ public partial class DepartmentDetailsPage : ContentPage
throw;
}
}
+
+ private async void OnBackTapped(object sender, TappedEventArgs e)
+ {
+ await Navigation.PopAsync();
+ }
+
private async Task LoadDepartmentDataAsync()
{
try
@@ -105,16 +111,6 @@ public partial class DepartmentDetailsPage : ContentPage
}
}
- private async void OnTeamMemberSelected(object sender, SelectionChangedEventArgs e)
- {
- if (e.CurrentSelection.FirstOrDefault() is User selectedUser)
- {
- TeamCollectionView.SelectedItem = null;
-
- // Открываем профиль сотрудника
- await Navigation.PushAsync(new EmployeeProfilePage(selectedUser));
- }
- }
///
/// Обработчик клика по карточке сотрудника (открытие профиля)
diff --git a/CORP-MAUI/Pages/DepartmentsPage.xaml b/CORP-MAUI/Pages/DepartmentsPage.xaml
index a4090f4..5f12e9a 100644
--- a/CORP-MAUI/Pages/DepartmentsPage.xaml
+++ b/CORP-MAUI/Pages/DepartmentsPage.xaml
@@ -2,25 +2,87 @@
+ Title="Отделы"
+ BackgroundColor="#E5E5E5">
-
+
-
-
+
-
-
+ ColumnDefinitions="50,*,50"
+ Padding="15,10"
+ BackgroundColor="#E5E5E5">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -28,19 +90,27 @@
+ SelectionChanged="OnDepartmentSelected"
+ BackgroundColor="Transparent">
+
+ Text="Нет отделов"
+ Style="{StaticResource EmptyStateTitle}"
+ Margin="0,10,0,0"/>
+
-
+
@@ -70,16 +140,24 @@
-
-
+
+
+
+
+
+
-
+
+
+
+
+
@@ -105,7 +183,7 @@
+ Title="Профиль сотрудника"
+ BackgroundColor="#E5E5E5">
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
+ Style="{StaticResource CardBorderLarge}"
+ x:Name="EmailSection"
+ IsVisible="False">
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
diff --git a/CORP-MAUI/Pages/EmployeeProfilePage.xaml.cs b/CORP-MAUI/Pages/EmployeeProfilePage.xaml.cs
index aae359f..4c70003 100644
--- a/CORP-MAUI/Pages/EmployeeProfilePage.xaml.cs
+++ b/CORP-MAUI/Pages/EmployeeProfilePage.xaml.cs
@@ -176,5 +176,10 @@ public partial class EmployeeProfilePage : ContentPage
await DisplayAlert("Ошибка", "Не удалось открыть чат", "OK");
}
}
+
+ private async void OnBackTapped(object sender, TappedEventArgs e)
+ {
+ await Navigation.PopAsync();
+ }
}
diff --git a/CORP-MAUI/Pages/EmployeesPage.xaml b/CORP-MAUI/Pages/EmployeesPage.xaml
index f82c908..c4f2a3e 100644
--- a/CORP-MAUI/Pages/EmployeesPage.xaml
+++ b/CORP-MAUI/Pages/EmployeesPage.xaml
@@ -4,44 +4,112 @@
xmlns:models="clr-namespace:CORP_MAUI.Models"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="CORP_MAUI.Pages.EmployeesPage"
- Title="Сотрудники">
+ Title="Сотрудники"
+ BackgroundColor="#E5E5E5">
-
+
-
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SelectionMode="None"
+ BackgroundColor="Transparent">
+
+ Text="Нет сотрудников"
+ Style="{StaticResource EmptyStateTitle}"
+ Margin="0,10,0,0"/>
+
-
+
@@ -115,7 +183,7 @@
/// Обработчик клика по карточке сотрудника (открытие профиля)
diff --git a/CORP-MAUI/Pages/LoginPage.xaml b/CORP-MAUI/Pages/LoginPage.xaml
index 2802f0e..2f14349 100644
--- a/CORP-MAUI/Pages/LoginPage.xaml
+++ b/CORP-MAUI/Pages/LoginPage.xaml
@@ -36,11 +36,12 @@
Margin="0,0,0,20"/>
-
+ Stroke="Transparent"
+ Shadow="{Shadow Brush=Black, Opacity=0.2, Offset='0,4', Radius=8}">
@@ -48,51 +49,62 @@
+ FontAttributes="Bold"
+ TextColor="{StaticResource Gray700}"/>
-
+ Stroke="{StaticResource Gray200}"
+ Padding="12,0"
+ HeightRequest="50">
+
+
-
+ Stroke="{StaticResource Gray200}"
+ Padding="12,0"
+ HeightRequest="50">
+
+
@@ -104,7 +116,7 @@
HorizontalOptions="Center"/>
-
+
+
+
diff --git a/CORP-MAUI/Pages/PostsPage.xaml b/CORP-MAUI/Pages/PostsPage.xaml
index ad9a193..7bc7780 100644
--- a/CORP-MAUI/Pages/PostsPage.xaml
+++ b/CORP-MAUI/Pages/PostsPage.xaml
@@ -182,7 +182,7 @@
@@ -219,7 +219,11 @@
Source="like.png"
WidthRequest="18"
HeightRequest="18"
- VerticalOptions="Center"/>
+ VerticalOptions="Center">
+
+
+
+
+ VerticalOptions="Center">
+
+
+
+
+ Title="Профиль"
+ BackgroundColor="#E5E5E5">
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
diff --git a/CORP-MAUI/Pages/RequestsPage.xaml b/CORP-MAUI/Pages/RequestsPage.xaml
index a46be80..0539708 100644
--- a/CORP-MAUI/Pages/RequestsPage.xaml
+++ b/CORP-MAUI/Pages/RequestsPage.xaml
@@ -2,29 +2,92 @@
+ Title="Заявления"
+ BackgroundColor="#E5E5E5">
-
+
-
-
+
-
-
+ ColumnDefinitions="50,*,50"
+ Padding="15,10"
+ BackgroundColor="#E5E5E5">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HorizontalScrollBarVisibility="Never"
+ BackgroundColor="#E5E5E5">
@@ -69,7 +132,7 @@
@@ -77,7 +140,8 @@
+ SelectionChanged="OnRequestSelected"
+ BackgroundColor="Transparent">
@@ -94,7 +158,10 @@
-
+
@@ -178,7 +245,7 @@
-
+
\ No newline at end of file
diff --git a/CORP-MAUI/Platforms/Android/Resources/xml/network_security_config.xml b/CORP-MAUI/Platforms/Android/Resources/xml/network_security_config.xml
new file mode 100644
index 0000000..8640f12
--- /dev/null
+++ b/CORP-MAUI/Platforms/Android/Resources/xml/network_security_config.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+ corp.robotail.pro
+
+
+
+
+
+
diff --git a/CORP-MAUI/Services/ApiService.cs b/CORP-MAUI/Services/ApiService.cs
index a0c0cf0..f221e64 100644
--- a/CORP-MAUI/Services/ApiService.cs
+++ b/CORP-MAUI/Services/ApiService.cs
@@ -47,6 +47,19 @@ public class ApiService : IDisposable
public bool IsAuthenticated => !string.IsNullOrEmpty(_accessToken);
+ ///
+ /// Создаёт платформенно-специфичный HttpMessageHandler
+ ///
+ private static HttpMessageHandler CreatePlatformHandler()
+ {
+ // Используем стандартны�� HttpClientHandler с отключённой проверкой сертификатов для отладки
+ // В продакшене следует убрать ServerCertificateCustomValidationCallback
+ return new HttpClientHandler
+ {
+ ServerCertificateCustomValidationCallback = (_, _, _, _) => true
+ };
+ }
+
///
/// Получить текущий access токен (для WebSocket и других сервисов)
///
@@ -64,7 +77,9 @@ public class ApiService : IDisposable
Trace.WriteLine($"[ApiService] TokenObtainPath: {_config.TokenObtainPath}");
Trace.WriteLine($"[ApiService] TokenRefreshPath: {_config.TokenRefreshPath}");
- _httpClient = new HttpClient
+ // Создаём HttpClient с платформенным хэндлером для корректной работы на Android
+ HttpMessageHandler handler = CreatePlatformHandler();
+ _httpClient = new HttpClient(handler)
{
BaseAddress = new Uri(_config.BaseUrl),
Timeout = TimeSpan.FromSeconds(_config.Timeout)