Example #1
0
        public async Task <(bool, string)> Create(RentContractDataViewModel contractVM)
        {
            var success  = true;
            var msg      = string.Empty;
            var contract = ContractVMToApiModel(contractVM);

            using (TransactionScope tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                contract.ID = Guid.NewGuid().ToString();

                //  Create Domain in DB.
                var domainContract = new Domain.Contract
                {
                    Id         = contract.ID,
                    ProviderId = contract.contractProvider.ID,
                    ClientId   = contract.contractClient.ID
                };
                contractsRepo.Insert(domainContract);

                await contractsRepo.SaveAsync();

                //  Create Blockchain data.
                (success, msg) = await bcContracts.Create(contract);

                if (success)
                {
                    tx.Complete();
                }
            }
            return(success, msg);
        }
        private bool KeepContract(Domain.Car car, Domain.Client client)
        {
            Domain.Contract contract = Domain.Contract.CreateContract(car, client);
            contract.CarId    = car.Id;
            contract.ClientId = client.Id;
            Console.WriteLine("Please enter the contract type is Debit or Credit ?");
            string type = Console.ReadLine();

            try
            {
                if (type.ToLower() == ContractType.Debit.ToString().ToLower())
                {
                    contract.TotalCost    = car.Price;
                    contract.Type         = ContractType.Debit;
                    contract.FirstPayment = contract.TotalCost;
                }
                else
                {
                    Console.WriteLine("How much months will contract keep?");
                    short months = short.Parse(Console.ReadLine());
                    contract.Months        = months;
                    contract.FirstPayment  = car.Price / contract.Months.Value;
                    contract.Type          = ContractType.Credit;
                    contract.MonthsPayment = contract.FirstPayment;
                    contract.TotalCost     = car.Price;
                }
                _contractRepository.AddContract(contract);
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Example #3
0
        public override CommandResult Execute()
        {
            Console.WriteLine("Please enter contract id");
            long contractId = long.Parse(Console.ReadLine());

            Domain.Contract contract = _contractRepository.FindContract(contractId);
            bool            success  = true;
            string          message  = "";

            if (contract == null)
            {
                message = $"Contract with this id: {contractId} was not found";
                success = false;
            }
            message = $"Here are contract's info with id: {contract.Id}\nclient name: {contract.Client.Name}\nPasportId: {contract.Client.PasportId}\nCar number: {contract.Car.Number}\nprice: {contract.Car.Price}\nPayment type : {contract.Type}";
            return(new CommandResult(success, message));
        }