public ResponseDto AddAddress(AddAddressRequest request)
        {
            ResponseDto response = new ResponseDto();
            Consumer    consumer = null;

            response.has_resource = 0;
            try
            {
                using (UserDao dao = new UserDao())
                {
                    consumer = GetAuthUser(dao, request.user_id, request.auth_token, true);
                    if (consumer == null)
                    {
                        MakeNouserResponse(response);
                        return(response);
                    }
                    ConsumerAddress address = new ConsumerAddress();
                    address.ConsID = request.user_id;
                    UsersHelper.CopyToEntity(address, request);
                    address.CreatedDate = DateTime.Now;
                    address.UpdatedDate = address.CreatedDate;
                    address.StatusID    = 1;
                    if (consumer.ConsumerAddresses.Count == 0)
                    {
                        address.IsDefault = true;
                    }
                    else
                    {
                        address.IsDefault = Convert.ToBoolean(request.is_default);
                        if (Convert.ToBoolean(request.is_default))
                        {
                            foreach (var item in consumer.ConsumerAddresses)
                            {
                                item.IsDefault = false;
                            }
                            dao.Update(consumer);
                        }
                    }
                    dao.AddAddress(address);
                    response.code    = 0;
                    response.message = MessagesSource.GetMessage("addr.added");
                    return(response);
                }
            }
            catch (Exception ex)
            {
                response.MakeExceptionResponse(ex);
            }
            return(response);
        }
        /// <summary>
        /// Register a new consumer.
        /// </summary>
        /// <param name="request">The DTO with requst form data parameters.</param>
        /// <returns>The response DTO with result of the operation.</returns>
        public RegisterResponse Register(RegisterRequest request)
        {
            request.mobile_number = Common.GetStandardMobileNumber(request.mobile_number);
            RegisterResponse responseDto = new RegisterResponse();
            Consumer         consumer    = new Consumer();

            //Get posted parameter values into the entity from the DTO
            UsersHelper.CopyToEntity(consumer, request);
            consumer.Password = TokenGenerator.GetHashedPassword(request.user_password, 49);//To fit into the password field of database table

            //Generate unique auth /access token for the user.
            consumer.AccToken      = TokenGenerator.GenerateToken(request.user_name, request.user_password, request.mobile_number);
            consumer.CreatedDate   = DateTime.Now;
            consumer.UpdatedDate   = consumer.CreatedDate;
            consumer.StatusID      = 1;
            consumer.ConsActivated = true;
            try
            {
                using (UserDao dao = new UserDao())
                {
                    // Check if the mobile number is registered
                    if (dao.CheckPhoneExists(request.mobile_number))
                    {
                        responseDto.code         = 1;
                        responseDto.has_resource = 0;
                        responseDto.message      = MessagesSource.GetMessage("cons.reg.dupl");
                    }
                    else
                    {
                        consumer = dao.Insert(consumer);                   // save the entity.
                        UsersHelper.CopyFromEntity(responseDto, consumer); //Copy to the response DTO
                        string otp = OTPServices.GenerateAndSendOTP(request.mobile_number);
                        if (OTPServices.SaveOTP(otp, consumer.ConsID, "C"))
                        {
                            responseDto.new_user.send_otp = 1; // state that OTP has been sent.
                        }
                        responseDto.code         = 0;          // Result OK.
                        responseDto.has_resource = 1;
                        responseDto.message      = MessagesSource.GetMessage("cons.reg.ok");
                    }
                }
            }
            catch (Exception ex)
            {
                responseDto.MakeExceptionResponse(ex);
            }
            return(responseDto);
        }
        public ResponseDto UpdateAddress(UpdateAddressRequest request)
        {
            ResponseDto response = new ResponseDto();
            Consumer    consumer = null;

            response.has_resource = 0;
            try
            {
                using (UserDao dao = new UserDao())
                {
                    consumer = GetAuthUser(dao, request.user_id, request.auth_token, true);

                    if (consumer == null)
                    {
                        MakeNouserResponse(response);
                        return(response);
                    }
                    ConsumerAddress address = dao.FindAddressById(request.address_id);
                    if (address == null)
                    {
                        response.code    = 1;
                        response.message = MessagesSource.GetMessage("no.addr");
                        return(response);
                    }

                    if (Convert.ToBoolean(request.is_default))
                    {
                        foreach (var item in consumer.ConsumerAddresses.Where(x => x.IsDefault).ToList())
                        {
                            item.IsDefault = false;
                        }
                        UsersHelper.CopyToEntity(consumer.ConsumerAddresses.Where(x => x.AddrID == request.address_id).FirstOrDefault(), request);
                        dao.Update(consumer);
                    }
                    else
                    {
                        if (consumer.ConsumerAddresses.Where(x => x.IsDefault && x.AddrID != request.address_id).Count() == 0)
                        {
                            UsersHelper.CopyToEntity(consumer.ConsumerAddresses.Where(x => x.AddrID == request.address_id).FirstOrDefault(), request);
                            address.IsDefault = true;
                            dao.Update(consumer);
                        }
                        else
                        {
                            UsersHelper.CopyToEntity(consumer.ConsumerAddresses.Where(x => x.AddrID == request.address_id).FirstOrDefault(), request);
                            dao.Update(consumer);
                        }
                    }

                    //UsersHelper.CopyToEntity(address, request);
                    // dao.UpdateAddress(address);
                    response.code    = 0;
                    response.message = MessagesSource.GetMessage("addr.updated");
                    return(response);
                }
            }
            catch (Exception ex)
            {
                response.MakeExceptionResponse(ex);
            }
            return(response);
        }