private async Task <List <DocumentDetails> > GetLettersWithStatus(LetterStatusEnum status)
        {
            var tableName    = _documentsTable.TableName;
            var queryRequest = new QueryRequest
            {
                TableName                = tableName,
                IndexName                = "Status",
                ScanIndexForward         = true,
                KeyConditionExpression   = "#status = :value",
                ExpressionAttributeNames = new Dictionary <string, string> {
                    { "#status", "Status" }
                },
                ExpressionAttributeValues = new Dictionary <string, AttributeValue>
                {
                    { ":value", new AttributeValue {
                          S = status.ToString()
                      } },
                },
            };
            var results = await _databaseClient.QueryAsync(queryRequest);

            return(results.Items.Select(entry => new DocumentDetails
            {
                DocumentCreator = entry["DocumentCreatorUserName"].S?.ToString(),
                CominoDocumentNumber = entry["CominoDocumentNumber"].S?.ToString(),
                DocumentType = entry["DocumentType"].S?.ToString(),
                LetterType = entry["LetterType"].S?.ToString(),
                Id = entry["InitialTimestamp"].S?.ToString(),
                Date = entry["InitialTimestamp"].S?.ToString(),
                Status = Enum.Parse <LetterStatusEnum>(entry["Status"].S?.ToString()),
                GovNotifyNotificationId = entry.ContainsKey("GovNotifyNotificationId")
                    ? entry["GovNotifyNotificationId"].S?.ToString()
                    : null,
            }).ToList());
        }
Exemplo n.º 2
0
        public static string PrettierStatusName(this LetterStatusEnum status)
        {
            switch (status)
            {
            case LetterStatusEnum.GovNotifyPendingVirusCheck:
                return("Pending Virus Check");

            case LetterStatusEnum.GovNotifyVirusScanFailed:
                return("Virus Scan Failed");

            case LetterStatusEnum.GovNotifyValidationFailed:
                return("Validation Failed");

            case LetterStatusEnum.LetterSent:
                return("Letter Sent");

            case LetterStatusEnum.ProcessingError:
                return("Processing Error");

            case LetterStatusEnum.WaitingForApproval:
                return("Waiting for Approval");

            case LetterStatusEnum.ReadyForGovNotify:
                return("Ready for Gov Notify");

            case LetterStatusEnum.SentToGovNotify:
                return("Sent to Gov Notify");

            case LetterStatusEnum.Cancelled:
                return("Cancelled");

            default:
                return(status.ToString());
            }
        }
        public async Task <UpdateStatusResponse> UpdateStatus(string id, LetterStatusEnum newStatus)
        {
            var updateDoc = new Document
            {
                ["InitialTimestamp"] = id,
                ["Status"]           = newStatus.ToString(),
            };
            var oldAttributes = await _documentsTable.UpdateItemAsync(updateDoc, new UpdateItemOperationConfig { ReturnValues = ReturnValues.UpdatedOldAttributes });

            var statusChange = oldAttributes["Status"].ToString() != newStatus.ToString();

            if (statusChange)
            {
                await LogMessage(id, $"Status changed to {newStatus}");
            }

            LambdaLogger.Log($"Status change: {statusChange}. New status {newStatus}, old status {oldAttributes["Status"]}");
            return(new UpdateStatusResponse
            {
                StatusUpdated = statusChange
            });
        }
Exemplo n.º 4
0
        private async Task <DocumentDetails> AddDocumentToDatabase(DocumentDetails document,
                                                                   string currentTimestamp = null, LetterStatusEnum status = LetterStatusEnum.Waiting)
        {
            var timestamp    = currentTimestamp ?? GetCurrentTimestamp();
            var documentItem = new Document
            {
                ["CominoDocumentNumber"]    = document.CominoDocumentNumber,
                ["DocumentCreatorUserName"] = document.DocumentCreator,
                ["InitialTimestamp"]        = document.Date,
                ["LetterType"]   = document.LetterType,
                ["DocumentType"] = document.DocumentType,
                ["Status"]       = status.ToString(),
                ["Id"]           = document.Date
            };

            await DatabaseClient.DocumentTable.PutItemAsync(documentItem);

            document.Status = status;
            document.Log    = new Dictionary <string, string>();
            return(document);
        }