@model FixConnect.PL.ViewModels.WorkerProfileViewModel @using FixConnect.DAL.Data.Enums @{ ViewData["Title"] = "My Profile"; Layout = "_WorkerLayout"; }
@if (TempData["Error"] != null) {
error @TempData["Error"]
} @if (TempData["Success"] != null) {
check_circle @TempData["Success"]
}
@Model.FullName Profile
@if (Model.AvailabilityStatus == AvailabilityStatus.Available.ToString()) {
Available
}

@Model.FullName

@if (Model.IsVerified) { verified }

@Model.SpecialtyName | @Model.Email

star @Model.AvgRating.ToString("0.0") / 5 (@Model.Reviews.Count Reviews)
task_alt @Model.CompletedJobsCount Completed Jobs
@if (!Model.IsVerified) {
@(Model.HasPendingVerification ? "pending_actions" : "gpp_maybe")
@if (Model.HasPendingVerification) { ⏳ Your verification is under review. } else { 🔒 Not verified yet. Upload your ID to get verified. }
} @if (!string.IsNullOrEmpty(Model.Bio)) {

About Me

@Model.Bio

}

Portfolio (@Model.PortfolioItems.Count / 10)

@if (Model.PortfolioItems.Count < 10) { }
@if (!Model.PortfolioItems.Any()) {
No portfolio items yet. Show off your best work!
} else {
@foreach (var item in Model.PortfolioItems) {
@if (!string.IsNullOrEmpty(item.ImageUrl)) { @item.Title } else {
image
}

@item.Title

@item.Description

}
}

Client Reviews

@Model.Reviews.Count Reviews
@if (!Model.Reviews.Any()) {

No reviews yet.

} else {
@foreach (var r in Model.Reviews) {
@(!string.IsNullOrEmpty(r.CustomerName) ? r.CustomerName.Substring(0, 1).ToUpper() : "U")

@r.CustomerName

@r.AvgRating.ToString("0.0") star
@if (r.SuggestWorker) { thumb_up Recommends }
@if (!string.IsNullOrEmpty(r.Comment)) {

"@r.Comment"

}
@{ void TailwindRatingBar(string label, int val, string icon) {
@icon @label @val/5
} } @{ TailwindRatingBar("Accuracy", r.AccuracyRating, "track_changes"); } @{ TailwindRatingBar("Commitment", r.CommitmentRating, "calendar_clock"); } @{ TailwindRatingBar("Price", r.PriceRating, "payments"); }
}
}
toggle_on

Set Availability

@foreach (var status in Enum.GetValues()) { var isActive = Model.AvailabilityStatus == status.ToString(); var colors = status switch { AvailabilityStatus.Available => isActive ? "bg-green-600 text-white border-green-700 shadow-md" : "bg-surface border-outline hover:bg-green-50 hover:text-green-700", AvailabilityStatus.Busy => isActive ? "bg-amber-500 text-white border-amber-600 shadow-md" : "bg-surface border-outline hover:bg-amber-50 hover:text-amber-700", AvailabilityStatus.Offline => isActive ? "bg-secondary text-white border-secondary shadow-md" : "bg-surface border-outline hover:bg-surface-container-high", _ => "bg-surface" };
}
map

Service Areas

@foreach (var region in Model.WorkingRegions) {
@region
} @if (!Model.WorkingRegions.Any()) { No areas selected. }
search
Map representation
task_alt @Model.CompletedJobsCount Jobs Completed
workspace_premium Top 5% Platform Rank

translate Languages

English Native
Arabic Fluent