38 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Hints
 | |
| 
 | |
| ## General
 | |
| 
 | |
| - Read about using `with` in the [official Getting Started guide][getting-started-with].
 | |
| - Review the functions available in the [`NaiveDateTime` module][naive-date-time], the [`Date` module][date], and the [`Time` module][time].
 | |
| 
 | |
| ## 1. Get into the building
 | |
| 
 | |
| - Match the `:ok` tuple returned by `enter_building/1` in `with` with `<-`.
 | |
| - In the `do` part of `with`, return an `:ok` tuple with the value you just matched.
 | |
| - Since you don't need to modify the error, you don't need an `else` block.
 | |
| 
 | |
| ## 2. Go to the information desk and find which counter you should go to
 | |
| 
 | |
| - Match the `:ok` tuple returned by `find_counter_information/1` in `with` with `<-`.
 | |
| - Apply the anonymous function your just matched and match the result with `<-`.
 | |
| - In the `do` part of `with`, return an `:ok` tuple with the counter you obtained.
 | |
| - Add an `else` block that will expect a `:coffee_break` tuple and return a `:retry` tuple with a `NaiveDateTime`.
 | |
| - A minute has `60` seconds.
 | |
| - There is a [built-in function][naive-date-time-add] that adds a given number of seconds to a `NaiveDateTime` struct.
 | |
| - Other errors should be returned as they are.
 | |
| 
 | |
| ## 3. Go to the counter and get your form stamped
 | |
| 
 | |
| - Match the `:ok` tuple returned by `stamp_form/3` in `with` with `<-`.
 | |
| - In the `do` part of `with`, return an `:ok` tuple with the checksum.
 | |
| 
 | |
| ## 4. Receive your new passport
 | |
| 
 | |
| - In the `do` part of `with`, use `get_new_passport_number/3` and return the result in an `:ok` tuple.
 | |
| 
 | |
| [with]: https://hexdocs.pm/elixir/Kernel.SpecialForms.html#with/1
 | |
| [getting-started-with]: https://hexdocs.pm/elixir/docs-tests-and-with.html#with
 | |
| [naive-date-time]: https://hexdocs.pm/elixir/NaiveDateTime.html
 | |
| [time]: https://hexdocs.pm/elixir/Time.html
 | |
| [date]: https://hexdocs.pm/elixir/Date.html
 | |
| [naive-date-time-add]: https://hexdocs.pm/elixir/NaiveDateTime.html#add/3 |