public async Task UpdateDriver(DriverUpdateVm driver)
        {
            BudAkutenUsers d = await idctx.Users.Where(p => p.UserName == driver.UserName).SingleOrDefaultAsync();

            d.Email        = driver.Email;
            d.StreetAdress = driver.StreetAdress;
            d.ZipCode      = driver.ZipCode;
            d.City         = driver.City;
            d.PhoneNumber  = driver.PhoneNumber;
            d.UserName     = driver.UserName;

            var driver2 = await appctx.Driver.Where(p => p.AspNetUsersId == d.Id).SingleOrDefaultAsync();

            driver2.Description = driver.Description;
            driver2.A           = driver.A;
            driver2.B           = driver.B;
            driver2.C           = driver.C;
            driver2.Ce          = driver.CE;
            driver2.D           = driver.D;
            driver2.FirstName   = driver.FirstName;
            driver2.LastName    = driver.LastName;

            await appctx.SaveChangesAsync();

            await idctx.SaveChangesAsync();
        }
        public async Task <DriverIndexVm> GetAdsNotStartedAsync(BudAkutenUsers loggedInUser)
        {
            var loggedInDriverId       = GetDriverId(loggedInUser.Id);
            var indexVm                = new DriverIndexVm();
            List <DriverIndexAdVm> ads = new List <DriverIndexAdVm>();

            var allAds = await appctx.Ad.Where(d => d.DriverId == loggedInDriverId).ToListAsync();

            foreach (var ad in allAds)
            {
                var company = appctx.Company.Where(c => c.Id == ad.CompanyId).SingleOrDefault();

                var companyUser = await CompanySer.GetCompanyById(company.AspNetUsersId);

                ads.Add(new DriverIndexAdVm
                {
                    DriverId = ad.DriverId,
                    Id       = ad.Id,
                    Header   = ad.Header,
                    Image    = companyUser.Image,
                    Start    = ad.StartDate,
                    End      = ad.EndDate.Value
                });
            }

            indexVm.AdsNotStarted = ads;

            return(indexVm);
        }
        public async Task <CompanyVm> GetCompanyByName(string name)
        {
            BudAkutenUsers companyUser = await idctx.Users.Where(p => p.UserName == name).
                                         Select(d => new BudAkutenUsers
            {
                Email        = d.Email,
                StreetAdress = d.StreetAdress,
                ZipCode      = d.ZipCode,
                City         = d.City,
                PhoneNumber  = d.PhoneNumber,
                UserName     = d.UserName,
                Image        = d.Image,
                Id           = d.Id
            })
                                         .SingleOrDefaultAsync();

            CompanyVm companyVm = await dbContext.Company.Where(p => p.AspNetUsersId == companyUser.Id).
                                  Select(d => new CompanyVm
            {
                Description = d.Description,
                CompanyName = d.CompanyName
            })
                                  .SingleOrDefaultAsync();

            companyVm.Email        = companyUser.Email;
            companyVm.StreetAdress = companyUser.StreetAdress;
            companyVm.ZipCode      = companyUser.ZipCode;
            companyVm.City         = companyUser.City;
            companyVm.PhoneNumber  = companyUser.PhoneNumber;
            companyVm.UserName     = companyUser.UserName;
            companyVm.Image        = companyUser.Image;

            return(companyVm);
        }
        public async Task <CompanyIndexVm> GetAdsNotStartedAsync(BudAkutenUsers loggedInUser)
        {
            var indexVm        = new CompanyIndexVm();
            var usersCompanyId = dbContext.Company.Where(c => c.AspNetUsersId == loggedInUser.Id).Select(c => c.Id).FirstOrDefault();
            var allAds         = await dbContext.Ad.Where(a => a.CompanyId == usersCompanyId).ToListAsync();

            indexVm.AdsNotStarted = allAds
                                    .Where(a => DateTime.Compare(a.StartDate, DateTime.Now) > 0)
                                    .Select(a => new CompanyIndexAdVm {
                Header = a.Header, Id = a.Id, DriverId = a.DriverId, Start = a.StartDate.Date, End = a.EndDate
            })
                                    .ToList();
            indexVm.AdsActive = allAds
                                .Where(a => (DateTime.Compare(a.StartDate, DateTime.Now) < 0) && (DateTime.Compare((DateTime)a.EndDate, DateTime.Now) > 0))
                                .Select(a => new CompanyIndexAdVm {
                Header = a.Header, Id = a.Id, DriverId = a.DriverId, Start = a.StartDate.Date, End = a.EndDate
            })
                                .ToList();
            indexVm.AdsFinished = allAds
                                  .Where(a => DateTime.Compare((DateTime)a.EndDate, DateTime.Now) < 0)
                                  .Select(a => new CompanyIndexAdVm {
                Header = a.Header, Id = a.Id, DriverId = a.DriverId, Start = a.StartDate.Date, End = a.EndDate
            })
                                  .ToList();
            return(indexVm);
        }
        public async Task UploadImage(string userName, IFormFile Image)
        {
            BudAkutenUsers d = await idctx.Users.Where(p => p.UserName == userName).SingleOrDefaultAsync();

            using (var ms = new MemoryStream())
            {
                Image.CopyTo(ms);
                d.Image = ms.ToArray();
            }

            await idctx.SaveChangesAsync();
        }
        public async Task UpdateCompanyAsync(CompanyUpdateVm company)
        {
            BudAkutenUsers c = await idctx.Users.Where(o => o.UserName == company.UserName).SingleOrDefaultAsync();

            c.Email        = company.Email;
            c.StreetAdress = company.StreetAddress;
            c.ZipCode      = company.ZipCode;
            c.City         = company.City;
            c.PhoneNumber  = company.PhoneNumber;
            c.UserName     = company.UserName;


            var company2 = await dbContext.Company.Where(o => o.AspNetUsersId == c.Id).SingleOrDefaultAsync();

            company2.Description = company.Description;
            company2.CompanyName = company.CompanyName;

            await dbContext.SaveChangesAsync();

            await idctx.SaveChangesAsync();
        }
        public async Task <DriverVm> GetDriverByUserName(string name)
        {
            BudAkutenUsers driverUser = await idctx.Users.Where(p => p.UserName == name).
                                        Select(d => new BudAkutenUsers
            {
                Email        = d.Email,
                StreetAdress = d.StreetAdress,
                ZipCode      = d.ZipCode,
                City         = d.City,
                PhoneNumber  = d.PhoneNumber,
                UserName     = d.UserName,
                Image        = d.Image,
                Id           = d.Id
            })
                                        .SingleOrDefaultAsync();

            DriverVm driverVm = await appctx.Driver.Where(p => p.AspNetUsersId == driverUser.Id).
                                Select(d => new DriverVm
            {
                Description = d.Description,
                A           = d.A,
                B           = d.B,
                C           = d.C,
                CE          = d.Ce,
                D           = d.D,
                FirstName   = d.FirstName,
                LastName    = d.LastName
            })
                                .SingleOrDefaultAsync();

            driverVm.Email        = driverUser.Email;
            driverVm.StreetAdress = driverUser.StreetAdress;
            driverVm.ZipCode      = driverUser.ZipCode;
            driverVm.City         = driverUser.City;
            driverVm.PhoneNumber  = driverUser.PhoneNumber;
            driverVm.UserName     = driverUser.UserName;
            driverVm.Image        = driverUser.Image;

            return(driverVm);
        }