diff --git a/DatesLibrary/.DS_Store b/DatesLibrary/.DS_Store new file mode 100644 index 0000000..5600681 Binary files /dev/null and b/DatesLibrary/.DS_Store differ diff --git a/DatesLibrary/Calculations.cs b/DatesLibrary/Calculations.cs new file mode 100644 index 0000000..fa7697f --- /dev/null +++ b/DatesLibrary/Calculations.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; + +namespace DatesLibrary; + +public class Calculations +{ + public static string[] AvailablePeriods( + TimeSpan[] startTimes, + int[] durations, + TimeSpan beginWorkingTime, + TimeSpan endWorkingTime, + int consultationTime) + { + List availablePeriods = new(); + TimeSpan workTime = beginWorkingTime; + int i = 0; + + while (workTime < endWorkingTime) + { + TimeSpan nextBusyStart = (i < startTimes.Length) ? startTimes[i] : endWorkingTime; + int availableMinutes = (int)(nextBusyStart - workTime).TotalMinutes; + + if (availableMinutes < consultationTime) + { + if (i < startTimes.Length) + { + workTime = startTimes[i].Add(TimeSpan.FromMinutes(durations[i])); + i++; + } + else + { + break; + } + continue; + } + + while (availableMinutes >= consultationTime) + { + TimeSpan nextAvailableEnd = workTime.Add(TimeSpan.FromMinutes(consultationTime)); + + if (nextAvailableEnd > endWorkingTime) + break; + + availablePeriods.Add($"{workTime:hh\\:mm}-{nextAvailableEnd:hh\\:mm}"); + + workTime = nextAvailableEnd; + availableMinutes -= consultationTime; + } + + if (i < startTimes.Length) + { + workTime = startTimes[i].Add(TimeSpan.FromMinutes(durations[i])); + i++; + } + else + { + break; + } + } + + return availablePeriods.ToArray(); + } +} \ No newline at end of file diff --git a/DatesLibrary/DatesLibrary.csproj b/DatesLibrary/DatesLibrary.csproj new file mode 100644 index 0000000..3a63532 --- /dev/null +++ b/DatesLibrary/DatesLibrary.csproj @@ -0,0 +1,9 @@ + + + + net8.0 + enable + enable + + + diff --git a/DatesLibrary/bin/Debug/net8.0/DatesLibrary.deps.json b/DatesLibrary/bin/Debug/net8.0/DatesLibrary.deps.json new file mode 100644 index 0000000..a58806b --- /dev/null +++ b/DatesLibrary/bin/Debug/net8.0/DatesLibrary.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "DatesLibrary/1.0.0": { + "runtime": { + "DatesLibrary.dll": {} + } + } + } + }, + "libraries": { + "DatesLibrary/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/DatesLibrary/bin/Debug/net8.0/DatesLibrary.dll b/DatesLibrary/bin/Debug/net8.0/DatesLibrary.dll new file mode 100644 index 0000000..000b9ec Binary files /dev/null and b/DatesLibrary/bin/Debug/net8.0/DatesLibrary.dll differ diff --git a/DatesLibrary/bin/Debug/net8.0/DatesLibrary.pdb b/DatesLibrary/bin/Debug/net8.0/DatesLibrary.pdb new file mode 100644 index 0000000..ae22af8 Binary files /dev/null and b/DatesLibrary/bin/Debug/net8.0/DatesLibrary.pdb differ diff --git a/DatesLibrary/obj/DatesLibrary.csproj.nuget.dgspec.json b/DatesLibrary/obj/DatesLibrary.csproj.nuget.dgspec.json new file mode 100644 index 0000000..e405531 --- /dev/null +++ b/DatesLibrary/obj/DatesLibrary.csproj.nuget.dgspec.json @@ -0,0 +1,66 @@ +{ + "format": 1, + "restore": { + "/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj": {} + }, + "projects": { + "/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj", + "projectName": "DatesLibrary", + "projectPath": "/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj", + "packagesPath": "/Users/feitanportor/.nuget/packages/", + "outputPath": "/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/Users/feitanportor/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/DatesLibrary/obj/DatesLibrary.csproj.nuget.g.props b/DatesLibrary/obj/DatesLibrary.csproj.nuget.g.props new file mode 100644 index 0000000..9a506e6 --- /dev/null +++ b/DatesLibrary/obj/DatesLibrary.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /Users/feitanportor/.nuget/packages/ + /Users/feitanportor/.nuget/packages/ + PackageReference + 6.12.2 + + + + + \ No newline at end of file diff --git a/DatesLibrary/obj/DatesLibrary.csproj.nuget.g.targets b/DatesLibrary/obj/DatesLibrary.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/DatesLibrary/obj/DatesLibrary.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/DatesLibrary/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/DatesLibrary/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..dca70aa --- /dev/null +++ b/DatesLibrary/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfo.cs b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfo.cs new file mode 100644 index 0000000..53f1f6c --- /dev/null +++ b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("DatesLibrary")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e17dc4eddd001a6a849b2c0b6467413b04e28cf3")] +[assembly: System.Reflection.AssemblyProductAttribute("DatesLibrary")] +[assembly: System.Reflection.AssemblyTitleAttribute("DatesLibrary")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Создано классом WriteCodeFragment MSBuild. + diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfoInputs.cache b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfoInputs.cache new file mode 100644 index 0000000..e979324 --- /dev/null +++ b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +9f2cd084273665ab8691af544f069687bf66e04af355e1209614edec18fc2db7 diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.GeneratedMSBuildEditorConfig.editorconfig b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..d31ef35 --- /dev/null +++ b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = DatesLibrary +build_property.ProjectDir = /Users/feitanportor/dev/C#/demo5/DatesLibrary/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.GlobalUsings.g.cs b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.assets.cache b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.assets.cache new file mode 100644 index 0000000..c2b8128 Binary files /dev/null and b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.assets.cache differ diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.csproj.CoreCompileInputs.cache b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..f6a21b4 --- /dev/null +++ b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +cde01dab5a47e056fc3edd6c6b4683dad92fa51c03d3237c72ac2ca324b5e5ef diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.csproj.FileListAbsolute.txt b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..8cbb1b3 --- /dev/null +++ b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +/Users/feitanportor/dev/C#/demo5/DatesLibrary/bin/Debug/net8.0/DatesLibrary.deps.json +/Users/feitanportor/dev/C#/demo5/DatesLibrary/bin/Debug/net8.0/DatesLibrary.dll +/Users/feitanportor/dev/C#/demo5/DatesLibrary/bin/Debug/net8.0/DatesLibrary.pdb +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/DatesLibrary.GeneratedMSBuildEditorConfig.editorconfig +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfoInputs.cache +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/DatesLibrary.AssemblyInfo.cs +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/DatesLibrary.csproj.CoreCompileInputs.cache +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/DatesLibrary.dll +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/refint/DatesLibrary.dll +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/DatesLibrary.pdb +/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/Debug/net8.0/ref/DatesLibrary.dll diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.dll b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.dll new file mode 100644 index 0000000..000b9ec Binary files /dev/null and b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.dll differ diff --git a/DatesLibrary/obj/Debug/net8.0/DatesLibrary.pdb b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.pdb new file mode 100644 index 0000000..ae22af8 Binary files /dev/null and b/DatesLibrary/obj/Debug/net8.0/DatesLibrary.pdb differ diff --git a/DatesLibrary/obj/Debug/net8.0/ref/DatesLibrary.dll b/DatesLibrary/obj/Debug/net8.0/ref/DatesLibrary.dll new file mode 100644 index 0000000..1741b8f Binary files /dev/null and b/DatesLibrary/obj/Debug/net8.0/ref/DatesLibrary.dll differ diff --git a/DatesLibrary/obj/Debug/net8.0/refint/DatesLibrary.dll b/DatesLibrary/obj/Debug/net8.0/refint/DatesLibrary.dll new file mode 100644 index 0000000..1741b8f Binary files /dev/null and b/DatesLibrary/obj/Debug/net8.0/refint/DatesLibrary.dll differ diff --git a/DatesLibrary/obj/project.assets.json b/DatesLibrary/obj/project.assets.json new file mode 100644 index 0000000..89d42cb --- /dev/null +++ b/DatesLibrary/obj/project.assets.json @@ -0,0 +1,71 @@ +{ + "version": 3, + "targets": { + "net8.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net8.0": [] + }, + "packageFolders": { + "/Users/feitanportor/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj", + "projectName": "DatesLibrary", + "projectPath": "/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj", + "packagesPath": "/Users/feitanportor/.nuget/packages/", + "outputPath": "/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/Users/feitanportor/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/DatesLibrary/obj/project.nuget.cache b/DatesLibrary/obj/project.nuget.cache new file mode 100644 index 0000000..4736966 --- /dev/null +++ b/DatesLibrary/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "45rdrwaLYz4=", + "success": true, + "projectFilePath": "/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file diff --git a/DatesLibrary/obj/project.packagespec.json b/DatesLibrary/obj/project.packagespec.json new file mode 100644 index 0000000..b36faa8 --- /dev/null +++ b/DatesLibrary/obj/project.packagespec.json @@ -0,0 +1 @@ +"restore":{"projectUniqueName":"/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj","projectName":"DatesLibrary","projectPath":"/Users/feitanportor/dev/C#/demo5/DatesLibrary/DatesLibrary.csproj","outputPath":"/Users/feitanportor/dev/C#/demo5/DatesLibrary/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/DatesLibrary/obj/rider.project.model.nuget.info b/DatesLibrary/obj/rider.project.model.nuget.info new file mode 100644 index 0000000..1a12fba --- /dev/null +++ b/DatesLibrary/obj/rider.project.model.nuget.info @@ -0,0 +1 @@ +17411553227322059 \ No newline at end of file diff --git a/DatesLibrary/obj/rider.project.restore.info b/DatesLibrary/obj/rider.project.restore.info new file mode 100644 index 0000000..1a12fba --- /dev/null +++ b/DatesLibrary/obj/rider.project.restore.info @@ -0,0 +1 @@ +17411553227322059 \ No newline at end of file