static void Main(string[] args) { Console.WriteLine("Вырать профиль (1 admin / 2 user / 3 cop /4 student / 5 company)"); string menu = Console.ReadLine(); switch (menu) { default: break; case "1": { #region Админ Admin.Administrator admin1 = new Administrator(); Console.WriteLine("1. Активировать аккаунт\n" + "2. Создать учетку\n3. Показать " + "критерии приемлимости компании для процесса найма\n" + "4. Принять или отклонить посещение компании"); string adminchoice = Console.ReadLine(); switch (adminchoice) { default: break; case "1": admin1.activateAccount(); break; case "2": admin1.createRole(); break; case "3": admin1.showCriteria(); break; case "4": admin1.acceptAttendance(); break; } #endregion } break; case "2": { } break; case "3": { cop.COPcl cop1 = new cop.COPcl(); Console.WriteLine("1. посмотреть уведомление о посещении компании\n" + "2. Отправить уведомление о посещении студенту\n" + "3. Выбор студента для компании" + "4. Отправка уведомления студенту"); string copChoice = Console.ReadLine(); switch (copChoice) { default: break; case "1": { } break; case "2": { cop1.sendAttendance(); } break; case "3": { } break; case "4": { cop1.sendNotification(); } break; } } break; case "4": { } break; case "5": //только для компании создается объект в мэйне т.к. только она может сама зарегаться { Company.Company company1 = new Company.Company(); company1.menu(); //делегаты интерфейс и наследование тут } break; } Console.ReadKey(); }
public abstract Task ProcessCompany(Company.Company company, IServiceProvider sp);
public async Task Send(Company.Company f, Company.Company to, IEdiMessage message) { }
public override async Task ProcessCompany(Company.Company company, IServiceProvider sp) { var driverRepo = sp.GetService <BaseRepository <Driver.Driver> >(); var vehicleRepo = sp.GetService <BaseRepository <Vehicle.Vehicle> >(); var userRepo = sp.GetService <BaseRepository <ApplicationUser> >(); var safetyRepo = sp.GetService <BaseRepository <DriverSafety.DriverSafety> >(); var config = sp.GetService <Config <SamsaraConfig> >(); var mediator = sp.GetService <IMediator>(); var samsaraApi = new SamsaraApi(config.Cached.ApiKey, config.Cached.GroupId); if (config.Cached.Enabled == false || config.Cached.ApiKey == null || config.Cached.GroupId == null) { return; } if (config.Cached.SyncDrivers) { var vehicles = samsaraApi.GetFleetList(); foreach (var item in vehicles) { var v = vehicleRepo.Get().FirstOrDefault(p => p.ExternalIds.SamsaraId == item.id) ?? new Vehicle.Vehicle(); v.Vin = item.vin; v.Name = item.name; v.EngineHours = item.engineHours; v.OdometerMeters = item.odometerMeters; v.Note = item.note; v.CompanyId = company.Id; if (v.ExternalIds == null) { v.ExternalIds = new BlockArray.ServiceModel.ExternalIds(); } v.ExternalIds.SamsaraId = item.id; await vehicleRepo.Save(v); } var locations = samsaraApi.GetFleetLocations(); foreach (var item in locations) { var v = vehicleRepo.Get().FirstOrDefault(p => p.Vin == item.vin); if (v == null) { continue; } v.CurrentLocation = new TrackingLocationServiceModel() { Lat = item.latitude, Lng = item.longitude, Timestamp = new DateTime(1970, 1, 1).AddMilliseconds(item.time) }; await vehicleRepo.Save(v); } var drivers = samsaraApi.GetFleetDrivers(); foreach (var item in drivers) { var driver = driverRepo.Get().FirstOrDefault(p => p.ExternalIds.SamsaraId == item.id) ?? new Driver.Driver(); var vehicle = vehicleRepo.Get() .FirstOrDefault(p => p.ExternalIds.SamsaraId == item.currentVehicleId); driver.CurrentVehicleId = vehicle?.Id; if (vehicle?.CurrentLocation?.Lat != 0) { driver.CurrentLocation = vehicle?.CurrentLocation; } if (!string.IsNullOrEmpty(config.Cached.EmailDomain)) { driver.Email = $"{item.username}@{config.Cached.EmailDomain}"; } driver.LicenseNumber = item.licenseNumber; driver.LicenseState = item.licenseState; driver.Notes = item.notes; driver.Name = item.name; driver.Phone = item.phone; driver.CompanyId = company.Id; if (string.IsNullOrEmpty(driver.InvoiceItemCategoryId)) { driver.InvoiceItemCategoryId = config.Cached.InvoiceItemCategoryId; driver.PayrollRate = config.Cached.PayrollRate; driver.PayrollType = config.Cached.PayrollType; } if (driver.ExternalIds == null) { driver.ExternalIds = new BlockArray.ServiceModel.ExternalIds(); } driver.ExternalIds.SamsaraId = item.id; ApplicationUser usr = null; if (userRepo.Get().FirstOrDefault(p => p.NormalizedEmail == driver.Email.ToUpper()) != null) { usr = userRepo.Get().FirstOrDefault(p => p.NormalizedEmail == driver.Email.ToUpper()); } else if (!string.IsNullOrEmpty(driver.LicenseNumber)) { usr = _companyAccountService.CreateCompanyUser(driver.Email, driver.LicenseNumber.ToLower(), company.Id, new[] { "Driver" }, true).Result; } if (usr != null) { driver.UserId = usr.Id; } await driverRepo.Save(driver); var safetyRecord = samsaraApi.GetSafetyRecord(item.id); if (safetyRecord != null) { var record = safetyRepo.Get().FirstOrDefault(p => p.DriverId == driver.Id) ?? new DriverSafety.DriverSafety(); record.CrashCount = safetyRecord.crashCount; record.SafetyScore = safetyRecord.safetyScore; record.HarshAccelCount = safetyRecord.harshAccelCount; record.HarshBrakingCount = safetyRecord.harshBrakingCount; record.HarshTurningCount = safetyRecord.harshTurningCount; record.TotalHarshEventCount = safetyRecord.totalHarshEventCount; record.SafetyScoreRank = Convert.ToInt32(safetyRecord.safetyScoreRank); record.TotalDistanceDrivenMeters = Convert.ToInt64(safetyRecord.totalDistanceDrivenMeters); record.TotalTimeDrivenMs = Convert.ToInt64(safetyRecord.totalTimeDrivenMs); record.TimeOverSpeedLimitMs = Convert.ToInt64(safetyRecord.timeOverSpeedLimitMs); record.DriverId = driver.Id; await safetyRepo.Save(record); } } } }