public ServiceResult AddVoyage(VoyageDTO voyageDto) { var result = new ServiceResult(); if (voyageDto.EndPoint == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "EndPoint", Message = "Voyage gotta have some end point" }); if (voyageDto.StartPoint == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "StartPoint", Message = "Voyage gotta have some start point" }); if (voyageDto.StartPoint == null || voyageDto.EndPoint == null) return result; voyageDto.Status = DTO.VoyageStatus.Open; voyageDto.LifeCycle = new VoyageLifeCycleDTO { Opened = DateTime.Now }; try { _db.Voyages.Create(Mapper.Map<Voyage>(voyageDto)); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult DeleteVehicle(int vehicleId) { var result = new ServiceResult(); var vehicle = _db.Vehicles.Get(vehicleId); if (vehicle == null) { result.Errors.Add(new PropertyMessagePair { PropertyName = "vehicleId", Message = "There is no vehicle wtih such id in db" }); return result; } if (!IsVehicleFree(vehicleId, DateTime.Now)) { result.Errors.Add(new PropertyMessagePair { PropertyName = "vehicleId", Message = "This vehicle is in usage" }); return result; } vehicle.EntryState = EntryState.Removed; try { _db.Vehicles.Update(vehicle); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult ChangeRoleForUser(Int32 userId, Int32 roleId) { var result = new ServiceResult(); var user = _db.Users.Get(userId); var role = _db.Roles.Get(roleId); if (user == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "userId", Message = "Such user doesn't exist in db" }); if (role == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "roleId", Message = "Such role doesn't exist in db" }); if (user == null || role == null) return result; user.Role = null; user.RoleId = role.Id; try { _db.Users.Update(user); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult AddVehicle(VehicleDTO vehicleDto) { var result = new ServiceResult(); if (vehicleDto.Drive == null && vehicleDto.DriveId == 0) result.Errors.Add(new PropertyMessagePair { PropertyName = "Drive", Message = "You gotta determine drive" }); if (vehicleDto.Class == null && vehicleDto.VehicleClassId == 0) result.Errors.Add(new PropertyMessagePair { PropertyName = "Class", Message = "You gotta determine vehicle class" }); if (vehicleDto.Dimensions == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "Dimensions", Message = "You gotta determine vehicle dimensions" }); if ((vehicleDto.Class != null || vehicleDto.VehicleClassId != 0) && (vehicleDto.Drive != null || vehicleDto.DriveId != 0) &&vehicleDto.Dimensions != null) { _db.Vehicles.Create(Mapper.Map<Vehicle>(vehicleDto)); _db.Save(); } return result; }
public ServiceResult AcceptRequest(int voyageId, int driverId) { CheckStatus(); var result = new ServiceResult(); var request = _db.DriverVoyageRequests.Find(x => x.DriverId == driverId && x.VoyageId == voyageId).FirstOrDefault(); var allRequestsForVoyage = _db.DriverVoyageRequests.Find(x => x.VoyageId == voyageId).ToList(); if (request == null) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId/driverId", Message = "There is no request in db with such id" }); return result; } var voyage = _db.Voyages.Get(voyageId); voyage.Requests = null; try { allRequestsForVoyage.ForEach(x => _db.DriverVoyageRequests.Remove(x.Id)); voyage.DriverId = driverId; voyage.Status = VoyageStatus.Accepted; voyage.LifeCycle.Acceped = DateTime.Now; _db.Voyages.Update(voyage); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult ConfirmUser(int userId) { var result = new ServiceResult(); var user = _db.Users.Get(userId); if (user == null) { result.Errors.Add(new PropertyMessagePair {PropertyName = "userId", Message = "There is no such user in db"}); return result; } try { user.IsConfirmed = true; _db.Users.Update(user); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult ModifyVoyage(VoyageDTO voyageDto) { var result = new ServiceResult(); var voyage = _db.Voyages.Get(voyageDto.Id); if (voyage == null) { result.Errors.Add(new PropertyMessagePair { PropertyName = "Id", Message = "There is no such voyage in db you wanna modify" }); return result; } if (voyage.Status == VoyageStatus.Processing) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageDto", Message = "You can't modify voyage while it's processing" }); return result; } if (voyage.Status == VoyageStatus.Accepted) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageDto", Message = "You can't modify voyage after accepting" }); return result; } if (voyage.Status == VoyageStatus.Succeded) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageDto", Message = "You can't modify voyage after it's succeded" }); return result; } try { _db.Voyages.Update(Mapper.Map<Voyage>(voyageDto)); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult MakeDriverVoyageRequest(int voyageId, int userId) { CheckStatus(); var result = new ServiceResult(); var voyage = _db.Voyages.Get(voyageId); var user = _db.Users.Get(userId); var driver = user.Driver; if (voyage == null || driver == null) { if (voyage == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "There is no voyage in db with such id" }); if (driver == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "driverId", Message = "There is no driver in db with such id" }); return result; } var isFree = (!_db.DriverVoyageRequests.Find( x => x.Driver == driver && voyage.RequestedEndTime.AddHours(1) > x.Voyage.RequestedStartTime && voyage.RequestedStartTime < x.Voyage.RequestedEndTime.AddHours(1)).Any()); if (!isFree) { result.Errors.Add(new PropertyMessagePair { PropertyName = "driverId", Message = "Driver is busy for this period of time" }); return result; } try { _db.DriverVoyageRequests.Create(new DriverVoyageRequest { VoyageId = voyage.Id, DriverId = driver.Id }); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult DeleteVoyage(int voyageId) { CheckStatus(); var result = new ServiceResult(); var voyage = _db.Voyages.Get(voyageId); if (voyage == null) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "There is no voyage with such id" }); return result; } if (voyage.Status == VoyageStatus.Processing) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "You can't delete voyage while it's processing" }); return result; } if (voyage.Status == VoyageStatus.Open || voyage.Status == VoyageStatus.Accepted) { voyage.Status = VoyageStatus.Canceled; voyage.LifeCycle.Canceled = DateTime.Now; } voyage.EntryState = DAL.Entities.EntryState.Removed; try { _db.Voyages.Update(voyage); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult Complete(int id, int userId) { CheckStatus(); var result = new ServiceResult(); var user = _db.Users.Get(userId); if (user == null) { result.Errors.Add(new PropertyMessagePair {PropertyName = "userId", Message = "There is no such user in db"}); return result; } var driver = _db.Drivers.Get(user.Driver.Id); if (driver == null) { result.Errors.Add(new PropertyMessagePair {PropertyName = "userId", Message = "User has no driver attached"}); return result; } var voyage = _db.Voyages.Get(id); if (voyage == null) { result.Errors.Add(new PropertyMessagePair {Message = "There is no voyage in db with such id", PropertyName = "id"}); return result; } if (voyage.DriverId != driver.Id) { result.Errors.Add(new PropertyMessagePair {PropertyName = "driverId", Message = "Only voyage driver can mark voyage as succeded"}); return result; } voyage.Status = VoyageStatus.Succeded; voyage.LifeCycle.Succeded = DateTime.Now; try { _db.Voyages.Update(voyage); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult CancelVoyage(int voyageId) { CheckStatus(); var result = new ServiceResult(); var voyage = _db.Voyages.Get(voyageId); if (voyage == null) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "There is no voyage with such id" }); return result; } if (voyage.Status == VoyageStatus.Processing) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "You can't cancel voyage while it's processing" }); return result; } if (voyage.Status == VoyageStatus.Succeded) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "You can't cancel voyage if it's already succeded" }); return result; } if (voyage.Status == VoyageStatus.Canceled) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "You can't cancel already canceled voyage" }); return result; } voyage.Status = VoyageStatus.Canceled; voyage.LifeCycle.Canceled = DateTime.Now; try { _db.Voyages.Update(voyage); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult CancelDriverVoyageRequest(int voyageId, int userId) { var result = new ServiceResult(); var voyage = _db.Voyages.Get(voyageId); var user = _db.Users.Get(userId); var driver = user.Driver; if (voyage == null || driver == null) { if (voyage == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId", Message = "There is no voyage in db with such id" }); if (driver == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "driverId", Message = "There is no driver in db with such id" }); return result; } var voyageRequest = _db.DriverVoyageRequests.Find(x => x.Voyage == voyage && x.Driver == driver).FirstOrDefault(); if (voyageRequest == null) { result.Errors.Add(new PropertyMessagePair { PropertyName = "voyageId, driverId", Message = "There is no such request" }); return result; } try { _db.DriverVoyageRequests.Remove(voyageId); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }
public ServiceResult ModifyVehicle(VehicleDTO vehicleDto) { var result = new ServiceResult(); if (vehicleDto.Drive == null && vehicleDto.DriveId == 0) result.Errors.Add(new PropertyMessagePair { PropertyName = "Drive", Message = "You gotta determine drive" }); if (vehicleDto.Class == null && vehicleDto.VehicleClassId == 0) result.Errors.Add(new PropertyMessagePair { PropertyName = "Class", Message = "You gotta determine vehicle class" }); if (vehicleDto.Dimensions == null) result.Errors.Add(new PropertyMessagePair { PropertyName = "Dimensions", Message = "You gotta determine vehicle dimensions" }); if ((vehicleDto.Class != null || vehicleDto.VehicleClassId!=0) && (vehicleDto.Drive != null || vehicleDto.DriveId != 0) && vehicleDto.Dimensions != null) { try { _db.Vehicles.Update(Mapper.Map<Vehicle>(vehicleDto)); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } } return result; }
public ServiceResult RegisterUser(UserDTO userDto) { var result = new ServiceResult(); var userExists = _db.Users.Find(x => x.Nickname == userDto.Nickname).Any(); if (userExists) { result.Errors.Add(new PropertyMessagePair { PropertyName = "Nickname", Message = "User with such nickname already exists" }); return result; } userDto.Password = Crypto.HashPassword(userDto.Password); var user = Mapper.Map<User>(userDto); if (user.Driver != null && user.Driver.DriverLicense != null) { user.Driver.DriverLicense.VehicleClasses = new Collection<VehicleClass>(); userDto.Driver.DriverLicense.VehicleClassIds .Select(x => _db.VehicleClasses.Get(x)) .ToList() .ForEach(user.Driver.DriverLicense.VehicleClasses.Add); } if (user.Role == null || user.RoleId == 0) { var driverRole = _db.Roles.Find(x => x.Name == "Driver").FirstOrDefault(); if (driverRole != null) user.RoleId = driverRole.Id; } try { _db.Users.Create(user); _db.Save(); } catch (DbEntityValidationException ex) { result.Append(ex); } return result; }