diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0e3c3b3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea
+bin
+obj
+*DotSettings.user
\ No newline at end of file
diff --git a/CODEOWNERS b/CODEOWNERS
new file mode 100644
index 0000000..d70eb51
--- /dev/null
+++ b/CODEOWNERS
@@ -0,0 +1,2 @@
+# Global fallback
+* @quadpay/tech-lead-em
diff --git a/README.md b/README.md
index 10a0aaf..d68f288 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,18 @@
-# QuadPay Software Engineer Interview
+# Zip Software Engineer Interview
## Overview
-QuadPay is a payment gateway that lets consumers split purchases into 4 interest free installments, every two weeks. The first 25% is taken when the purchase is made, and the remaining 3 installments of 25% are automatically taken every 14 days. We help customers manage their cash-flow while helping merchants increase conversion rates and average order values.
+Zip is a payment gateway that lets consumers split purchases into 4 interest free installments, every two weeks. The first 25% is taken when the purchase is made, and the remaining 3 installments of 25% are automatically taken every 14 days. We help customers manage their cash-flow while helping merchants increase conversion rates and average order values.
-It may help to see our [product in action online](https://www.ugg.com/women-boots-classic-boots/classic-short-ii-boot/1016223.html?dwvar_1016223_color=CHE#start=2&cgid=women-boots), checkout our app on [ios](https://apps.apple.com/us/app/quadpay-buy-now-pay-later/id1425045070) or [android](https://play.google.com/store/apps/details?id=com.quadpay.quadpay&hl=en_US), and to read our documentation (https://docs.quadpay.com).
+It may help to see our [product in action online](https://www.fanatics.com/mlb/new-york-yankees/new-york-yankees-nike-home-replica-custom-jersey-white/o-8976+t-36446587+p-2520909211+z-8-3193055640?_ref=p-CLP:m-GRID:i-r0c1:po-1), checkout our app on [ios](https://apps.apple.com/us/app/quadpay-buy-now-pay-later/id1425045070) or [android](https://play.google.com/store/apps/details?id=com.quadpay.quadpay&hl=en_US), and to read our documentation (https://docs.us.zip.co).
## Background
-One of the cornerstones of QuadPay's culture is openness and transparency. When reviewing our existing interview structure, we found that pair-programming challenges rarely replicated what our employees actually do in their day-to-day work. For example, when was the last time you coded without google, or when the requirements weren't clearly defined? To tackle that, we've decided to publish our pair programming interview and share it directly with candidates beforehand.
+One of the cornerstones of Zip's culture is openness and transparency. When reviewing our existing interview structure, we found that pair-programming challenges rarely replicated what our employees actually do in their day-to-day work. For example, when was the last time you coded without google, or when the requirements weren't clearly defined? To tackle that, we've decided to publish our pair programming interview and share it directly with candidates beforehand.
-As an Engineer at QuadPay you’ll help solve interesting problems on a daily basis. Some areas that you'll work on include fraud prevention, building real-time credit-decisioning models and, most importantly, shipping products that are secure, frictionless, and deliver a high-quality consumer experience.
+As an Engineer at Zip you’ll help solve interesting problems on a daily basis. Some areas that you'll work on include fraud prevention, building real-time credit-decisioning models and, most importantly, shipping products that are secure, frictionless, and deliver a high-quality consumer experience.
-The pair programming challenge will take an hour, and will more closely replicate a day-in-the-life at QuadPay. You’re free to use whichever resources help you to get the job done. When we evaluate your code at the end of the session, we will be looking for:
+The pair programming challenge will take an hour, and will more closely replicate a day-in-the-life at Zip. You’re free to use whichever resources help you to get the job done. When we evaluate your code at the end of the session, we will be looking for:
- A high code health
- Simplicity
- Readability
@@ -30,7 +30,7 @@ During the interview, you will build a core service for our business, an Install
#### Installment Calculator
##### User Story
-As a QuadPay Customer, I would like to establish a payment plan spread over 6 weeks that splits the original charge evenly over 4 installments.
+As a Zip Customer, I would like to establish a payment plan spread over 6 weeks that splits the original charge evenly over 4 installments.
##### Acceptance Criteria
- Given it is the 1st of January, 2020
@@ -64,4 +64,4 @@ While we won't give you the exact prompt ahead of time, our general recommendati
## Closing Thoughts
-We very much look forwrard to meeting you. Our goal is to make interviewers feel comfortable and prepared, so always feel free to reach out to your recruiter if you have any questions. Afterward, we welcome any and all feedback. We're constantly iterating and improving this process, and anything you share will help us make our interviews better for future candidates.
+We very much look forward to meeting you. Our goal is to make interviewers feel comfortable and prepared, so always feel free to reach out to your recruiter if you have any questions. Afterward, we welcome any and all feedback. We're constantly iterating and improving this process, and anything you share will help us make our interviews better for future candidates.
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs
deleted file mode 100644
index e7801f1..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/.NETCoreApp,Version=v3.0.AssemblyAttributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-using System;
-using System.Reflection;
-[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.0", FrameworkDisplayName = "")]
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/QuadPay.InstallmentsService.Test.AssemblyInfo.cs b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/QuadPay.InstallmentsService.Test.AssemblyInfo.cs
deleted file mode 100644
index df2af58..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/QuadPay.InstallmentsService.Test.AssemblyInfo.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Reflection;
-
-[assembly: System.Reflection.AssemblyCompanyAttribute("QuadPay.InstallmentsService.Test")]
-[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
-[assembly: System.Reflection.AssemblyProductAttribute("QuadPay.InstallmentsService.Test")]
-[assembly: System.Reflection.AssemblyTitleAttribute("QuadPay.InstallmentsService.Test")]
-[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
-
-// Generated by the MSBuild WriteCodeFragment class.
-
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/QuadPay.InstallmentsService.Test.AssemblyInfoInputs.cache b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/QuadPay.InstallmentsService.Test.AssemblyInfoInputs.cache
deleted file mode 100644
index 6c35f8b..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/obj/Debug/netcoreapp3.0/QuadPay.InstallmentsService.Test.AssemblyInfoInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-88c5b7bb5b907b64e00ca6bd15696547930f04c0
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/PaymentPlanFactory.cs b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/PaymentPlanFactory.cs
deleted file mode 100644
index 3551cf5..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/PaymentPlanFactory.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace QuadPay.InstallmentsService
-{
- ///
- /// This class is responsible for building the PaymentPlan according to the QuadPay product definition.
- ///
- public class PaymentPlanFactory
- {
- ///
- /// Builds the PaymentPlan instance.
- ///
- /// The total amount for the purchase that the customer is making.
- /// The PaymentPlan created with all properties set.
- public PaymentPlan CreatePaymentPlan(decimal purchaseAmount)
- {
- // TODO
- return new PaymentPlan();
- }
- }
-}
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/QuadPay.InstallmentsService.csproj b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/QuadPay.InstallmentsService.csproj
deleted file mode 100644
index 8bd9799..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/QuadPay.InstallmentsService.csproj
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- netstandard2.1
- 8
-
-
-
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs
deleted file mode 100644
index 729e4de..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-using System;
-using System.Reflection;
-[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.AssemblyInfo.cs b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.AssemblyInfo.cs
deleted file mode 100644
index 7a18699..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.AssemblyInfo.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Reflection;
-
-[assembly: System.Reflection.AssemblyCompanyAttribute("QuadPay.InstallmentsService")]
-[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
-[assembly: System.Reflection.AssemblyProductAttribute("QuadPay.InstallmentsService")]
-[assembly: System.Reflection.AssemblyTitleAttribute("QuadPay.InstallmentsService")]
-[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
-
-// Generated by the MSBuild WriteCodeFragment class.
-
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.AssemblyInfoInputs.cache b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.AssemblyInfoInputs.cache
deleted file mode 100644
index 8624ff6..0000000
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.AssemblyInfoInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-b7fd477c4b18343b4425771c2385915c1480e1a5
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.csprojAssemblyReference.cache b/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.csprojAssemblyReference.cache
deleted file mode 100644
index 3d3dfb5..0000000
Binary files a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/obj/Debug/netstandard2.1/QuadPay.InstallmentsService.csprojAssemblyReference.cache and /dev/null differ
diff --git a/SoftwareEngineerInterview/CSharp/README.md b/SoftwareEngineerInterview/CSharp/README.md
index decd73d..1019619 100644
--- a/SoftwareEngineerInterview/CSharp/README.md
+++ b/SoftwareEngineerInterview/CSharp/README.md
@@ -1,15 +1,25 @@
# CSharp Project
## Requirements
-> Visual Studio Code
-> Dotnet SDK 3.1
+```
+Visual Studio Code
+Dotnet SDK 6.0
+```
## Install
-> TODO
+```
+cd Zip.InstallmentsService
+dotnet restore
+```
## Quick Start
-> TODO
+```
+cd Zip.InstallmentsService
+dotnet run
+```
## Run Tests
-> cd QuadPay.InstallmentsService
-> dotnet test QuadPay.InstallmentsService.sln
+```
+cd Zip.InstallmentsService
+dotnet test Zip.InstallmentsService.sln
+```
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/DesignTimeBuild/.dtbcache.v2 b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/DesignTimeBuild/.dtbcache.v2
new file mode 100644
index 0000000..c27b7b0
Binary files /dev/null and b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/4c38ec0e-f120-476c-8520-98c6ac7aa393.vsidx b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/4c38ec0e-f120-476c-8520-98c6ac7aa393.vsidx
new file mode 100644
index 0000000..9f74346
Binary files /dev/null and b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/4c38ec0e-f120-476c-8520-98c6ac7aa393.vsidx differ
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/6464d4d8-8866-4182-830b-7cda8adbe19a.vsidx b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/6464d4d8-8866-4182-830b-7cda8adbe19a.vsidx
new file mode 100644
index 0000000..f644818
Binary files /dev/null and b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/6464d4d8-8866-4182-830b-7cda8adbe19a.vsidx differ
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/777ebf08-f681-46fb-8856-01af50b74fba.vsidx b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/777ebf08-f681-46fb-8856-01af50b74fba.vsidx
new file mode 100644
index 0000000..d9bd241
Binary files /dev/null and b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/777ebf08-f681-46fb-8856-01af50b74fba.vsidx differ
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/read.lock b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/FileContentIndex/read.lock
new file mode 100644
index 0000000..e69de29
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/.suo b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/.suo
new file mode 100644
index 0000000..6377cec
Binary files /dev/null and b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/.suo differ
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/TestStore/0/000.testlog b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/TestStore/0/000.testlog
new file mode 100644
index 0000000..6247dad
Binary files /dev/null and b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/TestStore/0/000.testlog differ
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/TestStore/0/testlog.manifest b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/TestStore/0/testlog.manifest
new file mode 100644
index 0000000..e92ede2
Binary files /dev/null and b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/.vs/Zip.InstallmentsService/v17/TestStore/0/testlog.manifest differ
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/PaymentPlanFactoryTests.cs b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.Test/PaymentPlanFactoryTests.cs
similarity index 91%
rename from SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/PaymentPlanFactoryTests.cs
rename to SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.Test/PaymentPlanFactoryTests.cs
index ade1269..292cb7c 100644
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/PaymentPlanFactoryTests.cs
+++ b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.Test/PaymentPlanFactoryTests.cs
@@ -1,7 +1,7 @@
using Shouldly;
using Xunit;
-namespace QuadPay.InstallmentsService.Test
+namespace Zip.InstallmentsService.Test
{
public class PaymentPlanFactoryTests
{
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/QuadPay.InstallmentsService.Test.csproj b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.Test/Zip.InstallmentsService.Test.csproj
similarity index 67%
rename from SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/QuadPay.InstallmentsService.Test.csproj
rename to SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.Test/Zip.InstallmentsService.Test.csproj
index 4fe2904..3644275 100644
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.Test/QuadPay.InstallmentsService.Test.csproj
+++ b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.Test/Zip.InstallmentsService.Test.csproj
@@ -1,11 +1,13 @@
- netcoreapp3.0
+ net6.0
false
- 8
+ latestmajor
+
+ Zip.InstallmentsService.Test
@@ -17,7 +19,7 @@
-
+
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.sln b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.sln
similarity index 86%
rename from SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.sln
rename to SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.sln
index d36fa92..60d66d6 100644
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService.sln
+++ b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuadPay.InstallmentsService", "QuadPay.InstallmentsService\QuadPay.InstallmentsService.csproj", "{E7F1FB5D-5D7B-49D1-8F44-C31B60A7E1DC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Zip.InstallmentsService", "Zip.InstallmentsService\Zip.InstallmentsService.csproj", "{E7F1FB5D-5D7B-49D1-8F44-C31B60A7E1DC}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuadPay.InstallmentsService.Test", "QuadPay.InstallmentsService.Test\QuadPay.InstallmentsService.Test.csproj", "{DF298FE5-362D-44BD-AD57-7DFC04CEB8B7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Zip.InstallmentsService.Test", "Zip.InstallmentsService.Test\Zip.InstallmentsService.Test.csproj", "{DF298FE5-362D-44BD-AD57-7DFC04CEB8B7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/Installment.cs b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/Installment.cs
similarity index 94%
rename from SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/Installment.cs
rename to SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/Installment.cs
index 0841515..796dc42 100644
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/Installment.cs
+++ b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/Installment.cs
@@ -1,6 +1,6 @@
using System;
-namespace QuadPay.InstallmentsService
+namespace Zip.InstallmentsService
{
///
/// Data structure which defines all the properties for an installment.
diff --git a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/PaymentPlan.cs b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/PaymentPlan.cs
similarity index 89%
rename from SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/PaymentPlan.cs
rename to SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/PaymentPlan.cs
index 22e67ff..11cbe10 100644
--- a/SoftwareEngineerInterview/CSharp/QuadPay.InstallmentsService/QuadPay.InstallmentsService/PaymentPlan.cs
+++ b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/PaymentPlan.cs
@@ -1,6 +1,6 @@
using System;
-namespace QuadPay.InstallmentsService
+namespace Zip.InstallmentsService
{
///
/// Data structure which defines all the properties for a purchase installment plan.
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/PaymentPlanFactory.cs b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/PaymentPlanFactory.cs
new file mode 100644
index 0000000..323b912
--- /dev/null
+++ b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/PaymentPlanFactory.cs
@@ -0,0 +1,36 @@
+using System.Collections.Generic;
+using Microsoft.VisualBasic;
+
+namespace Zip.InstallmentsService
+{
+ ///
+ /// This class is responsible for building the PaymentPlan according to the Zip product definition.
+ ///
+ public class PaymentPlanFactory
+ {
+ ///
+ /// Builds the PaymentPlan instance.
+ ///
+ /// The total amount for the purchase that the customer is making.
+ /// The PaymentPlan created with all properties set.
+ public PaymentPlan CreatePaymentPlan(decimal purchaseAmount)
+ {
+ Installment insObj = new Installment();
+ var inscount = 4;
+ insObj.Amount = purchaseAmount / inscount;
+ insObj.DueDate = System.DateTime.Now;
+ List insList = new List();
+
+ PaymentPlan pp = new PaymentPlan();
+
+ for (int i = 0; i < inscount; i++)
+ {
+ insObj.DueDate.AddDays(i*14);
+
+ }
+
+
+ return pp;
+ }
+ }
+}
diff --git a/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/Zip.InstallmentsService.csproj b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/Zip.InstallmentsService.csproj
new file mode 100644
index 0000000..88704f4
--- /dev/null
+++ b/SoftwareEngineerInterview/CSharp/Zip.InstallmentsService/Zip.InstallmentsService/Zip.InstallmentsService.csproj
@@ -0,0 +1,9 @@
+
+
+
+ net6.0
+ latestmajor
+ Zip.InstallmentsService
+
+
+
diff --git a/SoftwareEngineerInterview/Go/README.md b/SoftwareEngineerInterview/Go/README.md
new file mode 100644
index 0000000..24d5fa0
--- /dev/null
+++ b/SoftwareEngineerInterview/Go/README.md
@@ -0,0 +1,10 @@
+# Golang Project
+
+## Requirements
+> Go 1.16
+
+## Install
+> go get ./...
+
+## Run Tests
+> go test ./payment_plan
diff --git a/SoftwareEngineerInterview/Go/installments/go.mod b/SoftwareEngineerInterview/Go/installments/go.mod
new file mode 100644
index 0000000..3e3f820
--- /dev/null
+++ b/SoftwareEngineerInterview/Go/installments/go.mod
@@ -0,0 +1,5 @@
+module github.com/quadpay/software-engineer-interview/SoftwareEngineerInterview/Go/installments
+
+go 1.17
+
+require github.com/google/uuid v1.3.0
diff --git a/SoftwareEngineerInterview/Go/installments/go.sum b/SoftwareEngineerInterview/Go/installments/go.sum
new file mode 100644
index 0000000..3dfe1c9
--- /dev/null
+++ b/SoftwareEngineerInterview/Go/installments/go.sum
@@ -0,0 +1,2 @@
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
diff --git a/SoftwareEngineerInterview/Go/installments/installment/installment.go b/SoftwareEngineerInterview/Go/installments/installment/installment.go
new file mode 100644
index 0000000..a65c1e0
--- /dev/null
+++ b/SoftwareEngineerInterview/Go/installments/installment/installment.go
@@ -0,0 +1,44 @@
+package installment
+
+import (
+ "time"
+
+ "github.com/google/uuid"
+)
+
+// Installment is a structure that defines all the properties for an installment.
+type Installment struct {
+ id uuid.UUID
+ dueDate time.Time
+ amount float64
+}
+
+// Id gets the unique identifier for each installment.
+func (i Installment) Id() uuid.UUID {
+ return i.id
+}
+
+// SetId sets the unique identifier for each installment.
+func (i Installment) SetId(id uuid.UUID) {
+ i.id = id
+}
+
+// DueDate gets the due date for each installment.
+func (i Installment) DueDate() time.Time {
+ return i.dueDate
+}
+
+// SetDueDate sets the due date for each installment.
+func (i Installment) SetDueDate(dueDate time.Time) {
+ i.dueDate = dueDate
+}
+
+// Amount gets the installment amount.
+func (i Installment) Amount() float64 {
+ return i.amount
+}
+
+// SetAmount sets the installment amount.
+func (i Installment) SetAmount(amount float64) {
+ i.amount = amount
+}
diff --git a/SoftwareEngineerInterview/Go/installments/paymentplan/payment_plan.go b/SoftwareEngineerInterview/Go/installments/paymentplan/payment_plan.go
new file mode 100644
index 0000000..0413075
--- /dev/null
+++ b/SoftwareEngineerInterview/Go/installments/paymentplan/payment_plan.go
@@ -0,0 +1,49 @@
+package paymentplan
+
+import (
+ "github.com/google/uuid"
+ "github.com/quadpay/software-engineer-interview/SoftwareEngineerInterview/Go/installments/installment"
+)
+
+// PaymentPlan is a structure that defines all the properties for a payment plan.
+type PaymentPlan struct {
+ id uuid.UUID
+ purchaseAmount float64
+ installments []installment.Installment
+}
+
+// Id gets the unique identifier for each payment plan.
+func (p PaymentPlan) Id() uuid.UUID {
+ return p.id
+}
+
+// SetId sets the unique identifier for each payment plan.
+func (p PaymentPlan) SetId(id uuid.UUID) {
+ p.id = id
+}
+
+// PurchaseAmount gets the purchase amount for each payment plan.
+func (p PaymentPlan) PurchaseAmount() float64 {
+ return p.purchaseAmount
+}
+
+// SetPurchaseAmount sets the purchase amount for each payment plan.
+func (p PaymentPlan) SetPurchaseAmount(purchaseAmount float64) {
+ p.purchaseAmount = purchaseAmount
+}
+
+// Installments gets the installments for each payment plan.
+func (p PaymentPlan) Installments() []installment.Installment {
+ return p.installments
+}
+
+// SetInstallments sets the installments for each payment plan.
+func (p PaymentPlan) SetInstallments(installments []installment.Installment) {
+ p.installments = installments
+}
+
+// New creates a new payment plan according to purchase amount.
+func New(purchaseAmount float64) (PaymentPlan, error) {
+ // TODO
+ return PaymentPlan{}, nil
+}
diff --git a/SoftwareEngineerInterview/Go/installments/paymentplan/payment_plan_test.go b/SoftwareEngineerInterview/Go/installments/paymentplan/payment_plan_test.go
new file mode 100644
index 0000000..2f667ba
--- /dev/null
+++ b/SoftwareEngineerInterview/Go/installments/paymentplan/payment_plan_test.go
@@ -0,0 +1,11 @@
+package paymentplan
+
+import "testing"
+
+func TestCreateNewPaymentPlanWithValidOrderAmount(t *testing.T) {
+ _, err := New(123.45)
+
+ if err != nil {
+ t.Errorf("creating payment plan error: %v", err)
+ }
+}