Esempio n. 1
0
        public Email(MainEmail mainEmail, GuestNumber guestNumber, IEnumerable <Guest> guestList, AdditionalInfo additionalInfo,
                     NeedHotel needHotel, NeedDrive needDrive)
        {
            MainEmail      = mainEmail;
            GuestNumber    = guestNumber;
            GuestList      = guestList;
            AdditionalInfo = additionalInfo;
            NeedHotel      = needHotel;
            NeedDrive      = needDrive;

            Validate();
        }
Esempio n. 2
0
        public static Email MapFromDto(EmailDTO dto)
        {
            var mainEmail = new MainEmail {
                Value = dto.MainEmail
            };
            var guestNumber = new GuestNumber {
                Value = dto.GuestNumber
            };
            var guestList      = dto.GuestList.Select(GuestDTO.MapFromDto).ToList();
            var additionalInfo = new AdditionalInfo {
                Value = dto.AdditionalInfo
            };
            var needHotel = new NeedHotel {
                Value = dto.NeedHotel
            };
            var needDrive = new NeedDrive {
                Value = dto.NeedDrive
            };

            return(new Email(mainEmail, guestNumber, guestList, additionalInfo, needHotel, needDrive));
        }
        public async Task <ApiResponse <CustomerInfoDTO> > GuestLogin()
        {
            ApiResponse <CustomerInfoDTO> result = new ApiResponse <CustomerInfoDTO>();

            try
            {
                var currentGuestNumberResult = await unitOfWork.GuestNumberManager.GetAsync();

                List <GuestNumber> currentGuestNumberList = currentGuestNumberResult.ToList();

                if (currentGuestNumberList.Count == 0)
                {
                    GuestNumber initialGuestNumber = new GuestNumber();

                    initialGuestNumber.CurrentGuestNumber = 0;


                    var guestNumberResult = await unitOfWork.GuestNumberManager.CreateAsync(initialGuestNumber);

                    await unitOfWork.SaveChangesAsync();

                    if (guestNumberResult != null)
                    {
                        GuestNumber currentGuestNumber = guestNumberResult;

                        Customer customer = new Customer();

                        customer.Name = "Guest " + currentGuestNumber.CurrentGuestNumber.ToString();

                        customer.LastVisitDate = DateTime.Now;

                        customer.PhoneNumber = "00000000";

                        customer.Email = "Guest";

                        customer.TotalNumberOfVisits = 1;

                        var customerResult = await unitOfWork.CustomersManager.CreateAsync(customer);

                        var guestNumberUpdateResult = await unitOfWork.GuestNumberManager.GetByIdAsync(currentGuestNumber.Id);

                        guestNumberUpdateResult.CurrentGuestNumber++;

                        var res = await unitOfWork.SaveChangesAsync();

                        CustomerInfoDTO customerInfoToReturn = new CustomerInfoDTO();

                        customerInfoToReturn.Id            = customer.Id;
                        customerInfoToReturn.Name          = customer.Name;
                        customerInfoToReturn.LastVisitDate = customer.LastVisitDate;

                        if (res == true)
                        {
                            result.Data      = customerInfoToReturn;
                            result.Data.Name = customerResult.Name;
                            result.Succeeded = true;
                            return(result);
                        }
                        else
                        {
                            result.Succeeded = false;
                            result.Errors.Add("Failed to login as guest !");
                            result.ErrorType = ErrorType.LogicalError;
                            return(result);
                        }
                    }
                    else
                    {
                        result.Succeeded = false;
                        result.Errors.Add("Failed to initialize guest number !");
                        result.ErrorType = ErrorType.LogicalError;
                        return(result);
                    }
                }
                else
                {
                    GuestNumber currentGuestNumber = currentGuestNumberList[0];

                    Customer customer = new Customer();

                    customer.Name = "Guest " + currentGuestNumber.CurrentGuestNumber.ToString();

                    customer.LastVisitDate = DateTime.Now;

                    customer.PhoneNumber = "*******";

                    customer.Email = "*******";

                    customer.TotalNumberOfVisits = 1;

                    var customerResult = await unitOfWork.CustomersManager.CreateAsync(customer);

                    var guestNumberUpdateResult = await unitOfWork.GuestNumberManager.GetByIdAsync(currentGuestNumber.Id);

                    guestNumberUpdateResult.CurrentGuestNumber++;

                    var res = await unitOfWork.SaveChangesAsync();

                    CustomerInfoDTO customerInfoToReturn = new CustomerInfoDTO();

                    customerInfoToReturn.Id            = customer.Id;
                    customerInfoToReturn.Name          = customer.Name;
                    customerInfoToReturn.LastVisitDate = customer.LastVisitDate;

                    if (res == true)
                    {
                        result.Data      = customerInfoToReturn;
                        result.Data.Name = customerResult.Name;
                        result.Succeeded = true;
                        return(result);
                    }
                    else
                    {
                        result.Succeeded = false;
                        result.Errors.Add("Failed to login as guest !");
                        result.ErrorType = ErrorType.LogicalError;
                        return(result);
                    }
                }
            }
            catch (Exception ex)
            {
                result.Succeeded = false;
                result.Errors.Add(ex.Message);
                return(result);
            }
        }