public CatererRegistrationResponseDto TryToRegister(CatererRegistrationRequestDto dto)
        {
            if (uow.Users.GetAll().Where(x => x.Username == dto.Email).FirstOrDefault() != null)
                throw new System.Exception("Invalid Email Address");

            var user = new User()
            {
                Username = dto.Email,
                Firstname = dto.Firstname,
                Lastname = dto.Lastname,
                Password = encryptionService.TransformPassword(dto.Password),
            };

            var account = new Account()
            {
                Firstname = dto.Firstname,
                Lastname = dto.Lastname,
                Email = dto.Email,
                AccountType = AccountType.Bidder,
                User = user
            };

            var profile = new Profile()
            {
                Name = string.Format("{0} {1}", dto.Firstname, dto.Lastname),
                Account = account,
                ProfileType = ProfileType.Caterer
            };

            var caterer = new Caterer()
            {
                Firstname = dto.Firstname,
                Lastname = dto.Lastname,
                Profile = profile,
                Email = dto.Email
            };

            user.Accounts.Add(account);
            account.Profiles.Add(profile);

            uow.Users.Add(user);
            uow.Accounts.Add(account);
            uow.Caterers.Add(caterer);
            uow.SaveChanges();

            var response = new CatererRegistrationResponseDto()
            {
                Firstname = caterer.Firstname,
                Lastname = caterer.Lastname,
                Id = caterer.Id
            };

            return response;
        }
        public Bidder CreateBidder(BidderRegistrationRequestDto dto, Profile profile, IWeddingBiddersUow uow)
        {
            Bidder bidder = null;

            if (dto.BidderType == BidderType.Caterer)
            {
                bidder = new Caterer()
                {
                    Firstname = dto.Firstname,
                    Lastname = dto.Lastname,
                    Profile = profile,
                    Email = dto.Email,
                    CompanyName = dto.CompanyName
                };

                var gallery = new Gallery() { Name = "Profile" };
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_1.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_2.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_3.jpg" });
                bidder.Galleries.Add(gallery);

                uow.Caterers.Add(bidder as Caterer);
            }

            if (dto.BidderType == BidderType.EventPlanner)
            {
                bidder = new EventPlanner()
                {
                    Firstname = dto.Firstname,
                    Lastname = dto.Lastname,
                    Profile = profile,
                    Email = dto.Email
                };

                var gallery = new Gallery() { Name = "Profile" };
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_1.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_2.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_3.jpg" });
                bidder.Galleries.Add(gallery);

                uow.EventPlanners.Add(bidder as EventPlanner);
            }

            if (dto.BidderType == BidderType.MakeUpArtist)
            {
                bidder = new MakeUpArtist()
                {
                    Firstname = dto.Firstname,
                    Lastname = dto.Lastname,
                    Profile = profile,
                    Email = dto.Email
                };

                var gallery = new Gallery() { Name = "Profile" };
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_1.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_2.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_3.jpg" });
                bidder.Galleries.Add(gallery);

                uow.MakeUpArtists.Add(bidder as MakeUpArtist);
            }

            if (dto.BidderType == BidderType.Photographer)
            {
                bidder = new Photographer()
                {
                    Firstname = dto.Firstname,
                    Lastname = dto.Lastname,
                    Profile = profile,
                    Email = dto.Email,
                    CompanyName = dto.CompanyName
                };

                var gallery = new Gallery() { Name = "Profile" };
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_1.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_2.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_3.jpg" });
                bidder.Galleries.Add(gallery);

                uow.Photographers.Add(bidder as Photographer);
            }

            if (dto.BidderType == BidderType.DiscJockey)
            {
                bidder = new DiscJockey()
                {
                    Firstname = dto.Firstname,
                    Lastname = dto.Lastname,
                    Profile = profile,
                    Email = dto.Email,
                    CompanyName = dto.CompanyName
                };

                var gallery = new Gallery() { Name = "Profile" };
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_1.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_2.jpg" });
                gallery.Photos.Add(new Photo() { Url = "assets/images/carousel_3.jpg" });
                bidder.Galleries.Add(gallery);

                uow.DiscJockeys.Add(bidder as DiscJockey);
            }

            return bidder;
        }