コード例 #1
0
ファイル: ClientController.cs プロジェクト: harsh18594/jpfc
        public async Task <IActionResult> Receipt(CreateClientReceiptViewModel model)
        {
            _logger.LogInformation(GetLogDetails() + " - model:{@Model}", new object[] { model });

            if (ModelState.IsValid)
            {
                var userId = _userManager.GetUserId(User);
                var result = await _clientReceiptService.SaveClientReceiptAsync(model, userId);

                if (result.Success)
                {
                    SetSiteMessage(MessageType.Success, DisplayFor.FullRequest, "Receipt has been saved successfully.");
                    return(RedirectToAction(nameof(Receipt), routeValues: new { clientId = model.ClientId, receiptId = result.ReceiptId }));
                }

                SetSiteMessage(MessageType.Error, DisplayFor.FullRequest, result.Error);
                return(RedirectToAction(nameof(EditClient), routeValues: new { id = model.ClientId }));
            }

            SetSiteMessage(MessageType.Error, DisplayFor.FullRequest, "Invalid/ missing values.");
            return(View(model));
        }
コード例 #2
0
ファイル: ClientController.cs プロジェクト: harsh18594/jpfc
        public async Task <IActionResult> AddReceipt(CreateClientReceiptViewModel model)
        {
            _logger.LogInformation(GetLogDetails() + " - model:{@Model}", new object[] { model });

            if (ModelState.IsValid)
            {
                var userId = _userManager.GetUserId(User);
                var result = await _clientReceiptService.SaveClientReceiptAsync(model, userId);

                return(Json(new
                {
                    success = result.Success,
                    error = result.Error,
                    receiptId = result.ReceiptId
                }));
            }

            return(Json(new
            {
                success = false,
                error = "Invalid Request"
            }));
        }
コード例 #3
0
        public async Task <(bool Success, string Error, CreateClientReceiptViewModel Model)> GetCreateClientReceiptViewModelAsync(int clientId, int?receiptId)
        {
            var success = false;
            var error   = "";
            var model   = new CreateClientReceiptViewModel
            {
                ClientBelongingViewModel = new ClientBelongingViewModel
                {
                    ClientReceiptId = receiptId ?? 0
                }
            };

            try
            {
                if (clientId > 0)
                {
                    model.ClientId = clientId;
                    model.Date     = DateTime.Now;

                    // fetch client information
                    var client = await _clientRepository.FetchBaseByIdAsync(clientId);

                    model.ClientName    = $"{client.FirstName} {client.LastName}";
                    model.ClientNumber  = client.ReferenceNumber;
                    model.Address       = Encryption.Decrypt(client.AddressEncrypted, client.AddressUniqueKey);
                    model.ContactNumber = Encryption.Decrypt(client.ContactNumberEncrypted, client.ContactNumberUniqueKey);

                    if (receiptId > 0)
                    {
                        var receipt = await _clientReceiptRepository.FetchBaseByIdAsync(receiptId ?? 0);

                        if (receipt != null && receipt.ClientId == clientId)
                        {
                            model.Date                   = receipt.Date;
                            model.ClientReceiptId        = receipt.ClientReceiptId;
                            model.ReceiptNumber          = receipt.ReceiptNumber;
                            model.PaymentAmount          = receipt.PaymentAmount;
                            model.PaymentDate            = receipt.PaymentDate;
                            model.IsPaidInterestOnly     = receipt.IsPaidInterestOnly ?? false;
                            model.PaymentMethod          = receipt.PaymentMethod;
                            model.ClientIdentificationId = receipt.ClientIdentificationId;

                            // convert utc to local time
                            var timeZone = _dateTimeService.FetchTimeZoneInfo(Constants.System.TimeZone);
                            model.CreatedDateTime = _dateTimeService.ConvertUtcToDateTime(receipt.CreatedUtc, timeZone);

                            success = true;
                        }
                        else
                        {
                            error = "Invalid Receipt Id.";
                        }
                    }
                    else
                    {
                        success = true;
                    }
                }
                else
                {
                    error = "Invalid Request";
                }
            }
            catch (Exception ex)
            {
                error = "Unexpected error occurred while processing your request.";
                _logger.LogError("ClientReceiptService.GetCreateClientReceiptViewModelAsync - ex:{@Ex}", new object[] { ex });
            }

            return(success, error, model);
        }
コード例 #4
0
        public async Task <(bool Success, string Error, int ReceiptId)> SaveClientReceiptAsync(CreateClientReceiptViewModel model, string userId)
        {
            var success   = false;
            var error     = "";
            int receiptId = 0;

            try
            {
                Models.ClientReceipt receipt = null;
                if (model.ClientReceiptId > 0)
                {
                    receipt = await _clientReceiptRepository.FetchBaseByIdAsync(model.ClientReceiptId.Value);
                }
                if (receipt == null)
                {
                    // save reference number for new records
                    var maxReceiptId = await _clientReceiptRepository.GetMaxReceiptIdAsync();

                    var receiptNumber = $"RE{DateTime.Now.ToString("yyyyMMdd")}{maxReceiptId + 1}";

                    receipt = new Models.ClientReceipt
                    {
                        CreatedUserId = userId,
                        CreatedUtc    = DateTime.UtcNow,
                        // assign date and client once only when the receipt is created, do not allow modifying them
                        ClientId      = model.ClientId,
                        Date          = DateTime.Now.Date,
                        ReceiptNumber = receiptNumber
                    };
                }
                else
                {
                    receipt.AuditUserId = userId;
                    receipt.AuditUtc    = DateTime.UtcNow;
                }

                // if saved id is selected, use that, else create a new one
                if (model.ClientIdentificationId.HasValue)
                {
                    receipt.ClientIdentificationId = model.ClientIdentificationId.Value;
                }
                else
                {
                    // save client id first and assign it to receipt
                    // encrypt id info
                    var idNumberEncryptionResult = Encryption.Encrypt(model.IdentificationDocumentNumber);
                    var clientIdentification     = new ClientIdentification
                    {
                        ClientId = model.ClientId,
                        IdentificationDocumentId = model.IdentificationDocumentId,
                        IdentificationDocumentNumberEncrypted = idNumberEncryptionResult.EncryptedString,
                        IdentificaitonDocumentNumberUniqueKey = idNumberEncryptionResult.UniqueKey,
                        CreatedUserId = userId,
                        CreatedUtc    = DateTime.UtcNow
                    };
                    await _clientIdentificationRepository.SaveClientIdentificationAsync(clientIdentification);

                    receipt.ClientIdentificationId = clientIdentification.ClientIdentificationId;
                }

                receipt.PaymentDate        = model.PaymentDate;
                receipt.PaymentAmount      = model.PaymentAmount;
                receipt.IsPaidInterestOnly = model.IsPaidInterestOnly;
                receipt.PaymentMethod      = model.PaymentMethod;

                // save to database
                await _clientReceiptRepository.SaveClientReceiptAsync(receipt);

                receiptId = receipt.ClientReceiptId;
                success   = true;
            }
            catch (Exception ex)
            {
                error = "Unexpected error occurred while processing your request.";
                _logger.LogError("ClientReceiptService.SaveClientReceiptAsync - ex:{@Ex}", new object[] { ex });
            }

            return(success, error, receiptId);
        }