Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds confirm to response of legacy overview #442

Merged
merged 1 commit into from
Nov 6, 2024
Merged

Conversation

Andreass2
Copy link
Collaborator

@Andreass2 Andreass2 commented Nov 6, 2024

Description

  • Adds confirm to response of legacy overview

Related Issue(s)

  • #{issue number}

Verification

  • Your code builds clean without any errors or warnings
  • Manual testing done (required)
  • Relevant automated test added (if you find this hard, leave it and we'll help out)
  • All tests run green

Documentation

  • User documentation is updated with a separate linked PR in altinn-studio-docs. (if applicable)

Summary by CodeRabbit

  • New Features
    • Introduced a new Confirmed property to the correspondence overview, allowing users to see the confirmation status of correspondence.
    • Added a nullable DateTimeOffset property for the confirmation date, enhancing the data representation for users.

Copy link
Contributor

coderabbitai bot commented Nov 6, 2024

📝 Walkthrough

Walkthrough

The pull request introduces a new nullable DateTimeOffset property named Confirmed to the LegacyCorrespondenceOverviewExt class and integrates it into the MapToExternal method of the LegacyCorrespondenceOverviewMapper class. This modification allows the confirmation status to be included in the external representation of the correspondence overview, enhancing the data mapping functionality without altering the existing logic or error handling.

Changes

File Path Change Summary
src/Altinn.Correspondence.API/Mappers/LegacyCorrespondenceOverviewMapper.cs Added Confirmed property to LegacyCorrespondenceOverviewExt in MapToExternal method.
src/Altinn.Correspondence.API/Models/LegacyCorrespondenceOverviewExt.cs Introduced public DateTimeOffset? Confirmed { get; set; } property with JSON representation.

Possibly related PRs

  • Changes to legacy response models  #435: This PR modifies the LegacyCorrespondenceOverviewExt class by adding a new property Confirmed, which is directly related to the changes made in the main PR that also introduces the Confirmed property to the same class.

Suggested labels

kind/feature-request

Suggested reviewers

  • CelineTrammi

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between b65a8c3 and 561ab10.

📒 Files selected for processing (2)
  • src/Altinn.Correspondence.API/Mappers/LegacyCorrespondenceOverviewMapper.cs (1 hunks)
  • src/Altinn.Correspondence.API/Models/LegacyCorrespondenceOverviewExt.cs (1 hunks)
🔇 Additional comments (2)
src/Altinn.Correspondence.API/Mappers/LegacyCorrespondenceOverviewMapper.cs (1)

42-42: LGTM! Verify property type consistency.

The addition of the Confirmed property mapping is correct and well-placed within the object initialization. The mapping is straightforward and aligns with the PR objectives.

Let's verify that the property types match between the source and destination models:

✅ Verification successful

Let me try a different approach to verify the property types by searching for the class definitions directly.


Let me fix the regex and search for the Confirmed property in both classes, including the base class:


Let me try one final search with escaped characters:


Property types are consistent, mapping is correct

The verification confirms that both the source and destination models have the Confirmed property defined as DateTimeOffset?:

  • Source (LegacyGetCorrespondenceOverviewResponse): public DateTimeOffset? Confirmed { get; set; }
  • Destination (LegacyCorrespondenceOverviewExt): public DateTimeOffset? Confirmed { get; set; }

The direct mapping in the mapper is appropriate given the matching types.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify property type consistency between models
# Expected: Both properties should be of type DateTimeOffset?

# Check source model (LegacyGetCorrespondenceOverviewResponse)
echo "Checking source model:"
ast-grep --pattern 'class LegacyGetCorrespondenceOverviewResponse {
  $$$
  Confirmed $_
  $$$
}'

# Check destination model (LegacyCorrespondenceOverviewExt)
echo "Checking destination model:"
ast-grep --pattern 'class LegacyCorrespondenceOverviewExt {
  $$$
  Confirmed $_
  $$$
}'

Length of output: 311


Script:

#!/bin/bash
# Search for class definitions and their Confirmed property
echo "Searching for LegacyGetCorrespondenceOverviewResponse:"
rg -A 10 "class LegacyGetCorrespondenceOverviewResponse" 

echo -e "\nSearching for LegacyCorrespondenceOverviewExt:"
rg -A 10 "class LegacyCorrespondenceOverviewExt"

# Also search for any Confirmed property declarations to catch if defined elsewhere
echo -e "\nSearching for Confirmed property declarations:"
rg "public \w+\??\s+Confirmed\s*{\s*get;" 

Length of output: 3512


Script:

#!/bin/bash
# Search for Confirmed property declarations with fixed regex
echo "Searching for Confirmed property declarations:"
rg "public.*Confirmed.*{.*get"

# Check the base class CorrespondenceOverviewExt since LegacyCorrespondenceOverviewExt inherits from it
echo -e "\nChecking base class CorrespondenceOverviewExt:"
rg -A 15 "class CorrespondenceOverviewExt"

Length of output: 2025


Script:

#!/bin/bash
# Search for Confirmed property with properly escaped regex
echo "Searching for Confirmed property in all models:"
rg "public\s+\w+[\?\s]+Confirmed\s*\{\s*get"

# Also check the BaseCorrespondenceExt class since CorrespondenceOverviewExt inherits from it
echo -e "\nChecking BaseCorrespondenceExt class:"
rg -A 15 "class BaseCorrespondenceExt"

Length of output: 2259

src/Altinn.Correspondence.API/Models/LegacyCorrespondenceOverviewExt.cs (1)

42-46: LGTM! The implementation follows established patterns.

The new Confirmed property is well-documented, properly annotated, and follows the same patterns as other similar properties in the class (e.g., Archived). Using DateTimeOffset? is appropriate for a confirmation timestamp, and making it nullable correctly handles cases where correspondence hasn't been confirmed yet.

Let's verify if any validation attributes are used on similar timestamp properties in other model classes:

✅ Verification successful

LGTM! The implementation follows established patterns and no validation attributes are needed.

Looking at all DateTimeOffset properties across the Models directory, I can confirm that:

  1. None of the similar nullable DateTimeOffset properties use validation attributes
  2. Only required properties are marked with [Required] attribute
  3. All properties consistently use [JsonPropertyName] for serialization

Since Confirmed is an optional property (nullable), following the existing patterns in the codebase, no additional validation attributes are needed.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if validation attributes are used on DateTimeOffset properties in model classes
# Expected: Find any validation patterns we should follow

# Search for DateTimeOffset property declarations in model classes
rg -g "*/Models/*.cs" "DateTimeOffset.*{.*get.*set" -A 2

Length of output: 185


Script:

#!/bin/bash
# Description: Check if validation attributes are used on DateTimeOffset properties in model classes
# Expected: Find any validation patterns we should follow

# Search for DateTimeOffset property declarations in model classes
rg -g "*/Models/*.cs" "DateTimeOffset" -B 2 -A 2

# Also search specifically for validation attributes on properties
rg -g "*/Models/*.cs" "\[.*Validation.*\]" -B 2 -A 2

Length of output: 401


Script:

#!/bin/bash
# Description: Check if validation attributes are used on DateTimeOffset properties in model classes
# Expected: Find any validation patterns we should follow

# First, let's find all .cs files in Models directories
fd "\.cs$" --full-path "*/Models"

# Then search for DateTimeOffset properties in those files
fd "\.cs$" --full-path "*/Models" --exec grep -B 2 -A 2 "DateTimeOffset"

# And search for validation attributes
fd "\.cs$" --full-path "*/Models" --exec grep -B 2 -A 2 "\[.*Validation"

Length of output: 471


Script:

#!/bin/bash
# Description: Check if validation attributes are used on DateTimeOffset properties in model classes
# Expected: Find any validation patterns we should follow

# Find all .cs files in Models directories
find . -type f -path "*/Models/*.cs" -exec grep -B 2 -A 2 "DateTimeOffset" {} \;

# Search for validation attributes in model classes
find . -type f -path "*/Models/*.cs" -exec grep -B 2 -A 2 "\[.*Validation" {} \;

Length of output: 5565


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@Andreass2 Andreass2 added kind/bug Something isn't working ignore-for-release pull request wont be included in release notes labels Nov 6, 2024
@Andreass2 Andreass2 marked this pull request as ready for review November 6, 2024 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ignore-for-release pull request wont be included in release notes kind/bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants