Esempio n. 1
0
        public async Task <ReplaceOneResult> UpdateCampingTrip(string id, CampingTripFull trip)
        {
            var tripNonFull = new CampingTrip(trip);

            return(await campingTripContext.CampingTrips
                   .ReplaceOneAsync(n => n.ID.Equals(id), tripNonFull, new UpdateOptions { IsUpsert = true }));
        }
Esempio n. 2
0
        public async Task <IEnumerable <CampingTripFull> > GetAllUnconfirmedTrips()
        {
            var driverIsNull = Builders <CampingTrip> .Filter.Eq(trip => trip.DriverID, 0);

            var hasGuide = Builders <CampingTrip> .Filter.Eq(trip => trip.HasGuide, true);

            var guideIdNull = Builders <CampingTrip> .Filter.Eq(trip => trip.GuideID, 0);

            var hasPhotographer = Builders <CampingTrip> .Filter.Eq(trip => trip.HasPhotographer, true);

            var photographerIsNull = Builders <CampingTrip> .Filter.Eq(trip => trip.PhotographerID, 0);

            var organizedByUser = Builders <CampingTrip> .Filter.Eq(trip => trip.OrganizationType, TypeOfOrganization.orderByUser);

            var trips = await campingTripContext.CampingTrips.Find((driverIsNull | (hasGuide & guideIdNull) | (hasPhotographer & photographerIsNull))& organizedByUser)?.ToListAsync();

            var campingTrips = new List <CampingTripFull>();

            if (trips != null)
            {
                foreach (var trip in trips)
                {
                    var tripFull = new CampingTripFull(trip);

                    tripFull.Organizer = await GetUserAsync(trip.OrganzierID);

                    campingTrips.Add(tripFull);
                }
            }

            return(campingTrips);
        }
Esempio n. 3
0
        private async Task <CampingTripFull> GetCampingTripMembersAndDPGForAdmin(CampingTrip trip, bool getMembers = true)
        {
            var fullTrip = new CampingTripFull(trip);

            if (getMembers && trip.OrganizationType != TypeOfOrganization.orderByUser)
            {
                fullTrip.MembersOfCampingTrip = await GetCampingTripMembersAsync(trip.MembersOfCampingTrip);
            }

            if (trip.HasPhotographer && trip.PhotographerID != 0)
            {
                fullTrip.Photographer = await GetTripPhotographerAsync(trip.PhotographerID);
            }

            if (trip.DriverID != 0)
            {
                fullTrip.Driver = await GetTripDriverAsync(trip.DriverID);
            }

            if (trip.HasGuide && trip.GuideID != 0)
            {
                fullTrip.Guide = await GetTripGuideAsync(trip.GuideID);
            }
            if (trip.OrganzierID != 0)
            {
                fullTrip.Organizer = await GetUserAsync(trip.OrganzierID);
            }

            return(fullTrip);
        }
Esempio n. 4
0
        public async Task AddCampingTripAsync(CampingTripFull item)
        {
            var trip = new CampingTrip(item);

            await campingTripContext.CampingTrips.InsertOneAsync(trip);

            item.ID = trip.ID;

            await SendingServiceRequestsAsync(item);
        }
        public void Put(string campingTripId, [FromBody] CampingTripFull campingTrip)
        {
            var identity = (ClaimsIdentity)User.Identity;

            IEnumerable <Claim> claims = identity.Claims;

            var userIdClaim = claims.Where(claim => claim.Type == "user_id").First();

            if (userIdClaim == null)
            {
                throw new Exception("user_id claim not found");
            }

            if (!int.TryParse(userIdClaim.Value, out int userId))
            {
                throw new Exception("Invalid value for user_id in users claims");
            }

            campingTripRepository.UpdateUserRegistredCampingTripAsync(campingTripId, userId, campingTrip);
        }
Esempio n. 6
0
        public async Task SendingServiceRequestsAsync(CampingTripFull campingTrip)
        {
            var tokenClient = new TokenClient(discoveryResponse.TokenEndpoint, "campingTrip", "secret");

            var tokenResponce = await tokenClient.RequestClientCredentialsAsync("userManagement");

            var httpClient = new HttpClient();

            httpClient.BaseAddress = new Uri("http://localhost:5000/");

            httpClient.SetBearerToken(tokenResponce.AccessToken);

            var guideAndPhotographer = 0;


            if (campingTrip.HasGuide)
            {
                var responseGuide = await httpClient.GetAsync("api/Guide");

                if (responseGuide.IsSuccessStatusCode)
                {
                    var content = responseGuide.Content;

                    var guidesJson = await content.ReadAsStringAsync();

                    var guides = JsonConvert.DeserializeObject <List <Guide> >(guidesJson);

                    if (guides != null)
                    {
                        foreach (var guide in guides)
                        {
                            await AddServiceRequestAsync(new ServiceRequest
                            {
                                CampingTripId         = campingTrip.ID,
                                ProviderId            = guide.Id,
                                RequestValidityPeriod = campingTrip.DepartureDate
                            });
                        }
                    }
                }

                guideAndPhotographer++;
            }

            if (campingTrip.HasPhotographer)
            {
                var responsePhotographer = await httpClient.GetAsync("api/Photographer");

                if (responsePhotographer.IsSuccessStatusCode)
                {
                    var content = responsePhotographer.Content;

                    var photographersJson = await content.ReadAsStringAsync();

                    var photographers = JsonConvert.DeserializeObject <List <Photographer> >(photographersJson);

                    if (photographers != null)
                    {
                        foreach (var photographer in photographers)
                        {
                            await AddServiceRequestAsync(new ServiceRequest
                            {
                                CampingTripId         = campingTrip.ID,
                                ProviderId            = photographer.Id,
                                RequestValidityPeriod = campingTrip.DepartureDate
                            });
                        }
                    }
                }

                guideAndPhotographer++;
            }

            var response = await httpClient.GetAsync($"api/Car/{campingTrip.CountOfMembers + guideAndPhotographer}");

            if (response.IsSuccessStatusCode)
            {
                var content = response.Content;

                var carsJson = await content.ReadAsStringAsync();

                var cars = JsonConvert.DeserializeObject <List <CarWithDriverId> >(carsJson);

                if (cars != null)
                {
                    foreach (var car in cars)
                    {
                        await AddServiceRequestAsync(new ServiceRequest
                        {
                            CampingTripId         = campingTrip.ID,
                            ProviderId            = car.DriverId,
                            RequestValidityPeriod = campingTrip.DepartureDate
                        });
                    }
                }
            }
        }
Esempio n. 7
0
        private async Task <CampingTripFull> GetCampingTripMembersAndDPGForUser(CampingTrip trip, bool getMembers = true)
        {
            var fullTrip = new CampingTripFull(trip);

            if (getMembers && trip.OrganizationType == TypeOfOrganization.orderByAdmin)
            {
                var members = await GetCampingTripMembersAsync(trip.MembersOfCampingTrip);

                if (members != null)
                {
                    if (fullTrip.MembersOfCampingTrip == null)
                    {
                        fullTrip.MembersOfCampingTrip = new List <User>();
                    }
                    foreach (var member in members)
                    {
                        fullTrip.MembersOfCampingTrip.Add(new User
                        {
                            Id        = member.Id,
                            FirstName = member.FirstName,
                            LastName  = member.LastName,
                            Gender    = member.Gender,
                            Img       = member.Img
                        });
                    }
                }
            }

            if (trip.HasPhotographer && trip.PhotographerID != 0)
            {
                var potographer = await GetTripPhotographerAsync(trip.PhotographerID);

                fullTrip.Photographer = new Photographer
                {
                    Id                    = potographer.Id,
                    FirstName             = potographer.FirstName,
                    LastName              = potographer.LastName,
                    Gender                = potographer.Gender,
                    Camera                = potographer.Camera,
                    KnowledgeOfLanguages  = potographer.KnowledgeOfLanguages,
                    HasCameraStabilizator = potographer.HasCameraStabilizator,
                    HasDron               = potographer.HasDron,
                    HasGopro              = potographer.HasGopro,
                    Profession            = potographer.Profession,
                    Img                   = potographer.Img,
                    Rating                = potographer.Rating,
                    WorkExperience        = potographer.WorkExperience,
                    NumberOfAppraisers    = potographer.NumberOfAppraisers
                };
            }

            if (trip.DriverID != 0)
            {
                var driver = await GetTripDriverAsync(trip.DriverID);

                fullTrip.Driver = new Driver
                {
                    Id                   = driver.Id,
                    FirstName            = driver.FirstName,
                    LastName             = driver.LastName,
                    Gender               = driver.Gender,
                    Img                  = driver.Img,
                    Car                  = driver.Car,
                    KnowledgeOfLanguages = driver.KnowledgeOfLanguages,
                    NumberOfAppraisers   = driver.NumberOfAppraisers,
                    Rating               = driver.Rating,
                };
            }

            if (trip.HasGuide && trip.GuideID != 0)
            {
                var guide = await GetTripGuideAsync(trip.GuideID);

                fullTrip.Guide = new Guide
                {
                    Id                   = guide.Id,
                    FirstName            = guide.FirstName,
                    LastName             = guide.LastName,
                    Gender               = guide.Gender,
                    Img                  = guide.Img,
                    EducationGrade       = guide.EducationGrade,
                    KnowledgeOfLanguages = guide.KnowledgeOfLanguages,
                    NumberOfAppraisers   = guide.NumberOfAppraisers,
                    Places               = guide.Places,
                    Profession           = guide.Profession,
                    Rating               = guide.Rating,
                    WorkExperience       = guide.WorkExperience
                };
            }

            return(fullTrip);
        }
Esempio n. 8
0
        public async Task UpdateUserRegistredCampingTripAsync(string campingTripId, int orginizerId, CampingTripFull campingTrip)
        {
            var tripNonFull = new CampingTrip(campingTrip);

            await campingTripContext.CampingTrips
            .ReplaceOneAsync(n => n.ID.Equals(campingTripId) && n.OrganzierID == orginizerId, tripNonFull, new UpdateOptions { IsUpsert = true });
        }
 public async void Put(string tripId, [FromBody] CampingTripFull campingTrip)
 {
     await campingTripRepository.UpdateCampingTrip(tripId, campingTrip);
 }
Esempio n. 10
0
 public void Put(string id, [FromBody] CampingTripFull campingTrip)
 {
     campingTripRepository.UpdateCampingTrip(id, campingTrip);
 }
Esempio n. 11
0
 public void Post([FromBody] CampingTripFull campingTrip)
 {
     campingTripRepository.AddCampingTripAsync(campingTrip);
 }
 public async void Put(string campingTripId, [FromBody] CampingTripFull campingTrip)
 {
     await campingTripRepository.SendingServiceRequestsAsync(campingTrip);
 }