Snippets Collections
import 'reflect-metadata';
import {
  dataFileSummaryInfoInverseSide,
  returnsDataFileSummaryInfo,
  returnsSubmissionPeriod,
  SubmissionPeriod
} from '../../../../src/domain/submission/SubmissionPeriod';
import { DataFileSummaryInfo } from '../../../../src/domain/datafile/DataFileSummaryInfo';

describe('Submission Period Unit Tests', () => {

  test('returnsSubmissionPeriod', () => {
    expect(returnsSubmissionPeriod()).toEqual(SubmissionPeriod);
  });

  test('constructor', () => {
    expect(new SubmissionPeriod()).toBeInstanceOf(SubmissionPeriod);
  });

  test('dataFileSummaryInfoInverseSide', () => {
    const dataFileSummaryInfo: DataFileSummaryInfo = new DataFileSummaryInfo();
    expect(dataFileSummaryInfoInverseSide(dataFileSummaryInfo)).toEqual(
      dataFileSummaryInfo.submissionPeriod
    );
  });

  test('returnsDataFileSummaryInfo', () => {
    expect(returnsDataFileSummaryInfo()).toEqual(DataFileSummaryInfo);
  });

});

import { returnsSubmissionPeriods, returnsSummaryInfo } from "../../../../src/domain/datafile/DataFileSummaryInfo";
import { SubmissionPeriod } from "../../../../src/domain/submission/SubmissionPeriod";

describe('Data File Summary Info Tests', () => {
    test('returnsSubmissionPeriods', () => {
      expect(returnsSubmissionPeriods()).toEqual(SubmissionPeriod);
    });

    test('returnsSummaryInfo', () => {
        const submissionPeriod = new SubmissionPeriod();
        expect(returnsSummaryInfo(submissionPeriod)).toEqual(
          submissionPeriod.dataFileSummaryInfo
        );
      });
}
)
export JAVA_HOME=[/usr/java/jdk1.6.0_45] <- 여기에 경로 설정
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;
public class ColorChooserDemo
{   private JFrame frame;
	private JColorChooser cc;
	private JButton b;
     
	public ColorChooserDemo()
	{
		frame = new JFrame("A Sample Frame");
		frame.setSize(700, 500);
		
		cc = new JColorChooser(); frame.add(cc);
		
		b = new JButton("Color Changer");
		b.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae)
			{ frame.getContentPane().setBackground(cc.getColor()); }
		});
		frame.add(b);		
				
		frame.setLayout(new FlowLayout());
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setVisible(true);
	}
	
	public static void main(String[] args)
	{  	new ColorChooserDemo(); 	}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonDemo  
{   private JFrame frame;
    private JLabel label;
	private JButton b1, b2; 
	
	public ButtonDemo()
	{
		frame = new JFrame("A Simple Swing App");

		Toolkit tk = frame.getToolkit();
		Dimension dim = tk.getScreenSize();
		int width = (int)dim.getWidth();
		int height = (int)dim.getHeight();
		frame.setSize(width, height);
		
		frame.setLayout(new FlowLayout());	
		
		label = new JLabel("I show the button text");
		label.setFont(new Font("Verdana", Font.BOLD, 18));	
		frame.add(label);
		
		b1 = new JButton("The First Button");
		b1.setFont(new Font("Verdana", Font.BOLD, 18));
		frame.add(b1);
		b1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae)
			{   label.setText(b1.getText()+" is pressed!"); 	}
		});
		
		b2 = new JButton("The Second Button");
		b2.setFont(new Font("Verdana", Font.BOLD, 18));
		frame.add(b2);
		b2.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae)
			{   label.setText(b2.getText()+" is pressed!"); 	}
		});
				
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
	
	public static void main(String[] args)
	{   new ButtonDemo();
	}
}
import java.awt.*;
import java.awt.event.*;
import javax .swing.*;
public class LabelDemo{
	private JFrame frame;
	private JLabel label;
	public LabelDemo(){
		frame=new JFrame("a simple swing app");
		Toolkit tk=frame.getToolkit();
		Dimension dim=tk.getScreenSize();
		int width=(int)dim.getWidth();
		int height=(int)dim.getHeight();
		frame.setSize(width,height);
		
		frame.setLayout(new FlowLayout());
		
		ImageIcon ic= new ImageIcon("giphy.gif"); 
		
		label=new JLabel("A Shining planet",ic,JLabel.CENTER);
		label.setFont(new Font("Verdana",Font.BOLD,18));
		label.setBackground(Color.blue);
		frame.add(label);
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		
		
	}
	public static void main(String[] args){
		new LabelDemo();
	}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;

public class ColorChooserDemo
{   private JFrame frame;
	private JColorChooser cc;
	private JButton b;
     
	public ColorChooserDemo()
	{
		frame = new JFrame("A Sample Frame");
		frame.setSize(700, 500);
		
		cc = new JColorChooser(); frame.add(cc);
		
		b = new JButton("Color Changer");
		b.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae)
			{ frame.getContentPane().setBackground(cc.getColor()); }
		});
		frame.add(b);		
				
		frame.setLayout(new FlowLayout());
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setVisible(true);
	}
	
	public static void main(String[] args)
	{  	new ColorChooserDemo(); 	}
}
sync && echo 3 > /proc/sys/vm/drop_caches
jQuery(".homeSlider").slick({
customPaging: function (slick, index) {
        // Add leading zero for single-digit slide numbers
        var slideNumber = (index + 1 < 10) ? '0' + (index + 1) : (index + 1);

        // Remove the zero after count 9
        slideNumber = (index + 1 === 10) ? '' + (index + 1) : slideNumber;

        return "<a>" + slideNumber + "</a>";
    },
  });
const [array, setArray] = React.useState(['One', 'Two', 'Three']);

// this is not the correct way!
array.push('Four');
setArray(array); 

// this is the right way
setArray([...array, 'Four']);
const [rating, setRating] = React.useState(0); // -1, 0 or 1
const [isBlocked, setIsBlocked] = React.useState(false); // true or false
const [notes, setNotes] = React.useState(['no notes yet']); // an array of strings 
// the User functional component
function User(props) {
  // the hook that manages internal state
  const [rating, setRating] = React.useState(0);

  /*
   * event handlers to update internal state
   */
  function handleLike() {
    setRating(1);
  }

  function handleDislike() {
    setRating(-1);
  }

  return (
    <div className="user">
      <img src={`img/${props.id}.png`} width="75" />
      {props.name}
      <div className="rating">
        <button onClick={handleLike} disabled={rating > 0}>👍</button>
        {rating}
        <button onClick={handleDislike} disabled={rating < 0}>👎</button>
      </div>
    </div>
  );
} 
npm run dev - runs development project

npm run build -runs build project that is able to be streamed to the internet
I want to use React to Scroll to Specific Section of my Website, but the navbar, pages all are different .js files

ChatGPT
To implement scrolling to specific sections of your website using React, even when the components are in different files, you can use the react-scroll library. This library provides a smooth scrolling experience between different sections of your webpage.

Here are the steps to achieve this:

npm install react-scroll

// Navbar.js
import React from 'react';
import { Link, animateScroll as scroll } from 'react-scroll';

const Navbar = () => {
  return (
    <nav>
      <ul>
        <li>
          <Link
            activeClass="active"
            to="home"
            spy={true}
            offset={-70}
            duration={1500}
			smooth={'easeOutElastic'}
          >
            Home
          </Link>
        </li>
        <li>
          <Link
            activeClass="active"
            to="about"
            spy={true}
            offset={-70}
            duration={1500}
			smooth={'easeOutElastic'}
          >
            About
          </Link>
        </li>
        {/* Add more links for other sections */}
      </ul>
    </nav>
  );
};

export default Navbar;



// Home.js
import React from 'react';

const Home = () => {
  return (
    <div id="home">
      <h1>Home Section</h1>
      {/* Add content for the home section */}
    </div>
  );
};

export default Home;



// App.js
import React from 'react';
import Navbar from './Navbar';
import Home from './Home';
import About from './About';
// Import other section components

const App = () => {
  return (
    <div>
      <Navbar />
      <Home />
      <About />
      {/* Render other section components */}
    </div>
  );
};

export default App;


Now, when you click on the navigation links in the Navbar, the page will smoothly scroll to the corresponding sections. Make sure to customize the content of each section and adjust the Link components in the Navbar accordingly.
// InfoForm.js

this.state = {
  submitted: false,
  userEmail: '', // we'll start this off as an empty string
}; 

//We can attach the onChange listener to our <input> element. This will be triggered every time a change is made inside our input. For example, if the user enters the string, 'pillow' inside of our input, onChange() will fire 6 times, one for each character inside the string.

// InfoForm.js

<input onChange={this.handleChange} className="infoForm-input" type="email" placeholder="Enter your email here"/> 
  
//Finally, we'll need to create the handleChange() method itself:
  
// InfoForm.js

handleChange = (evt) => {
  this.setState({ userEmail: evt.target.value });
}; 
  
// Date with time
GETDATE()
// Just the year
YEAR(GETDATE())
// Date without the time
CAST( GETDATE() AS Date )
// InfoForm.js

import React from "react";
import "./InfoForm.css";

class InfoForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      submitted: false,
    };
  }

  handleSubmit = () => {
    this.setState({ submitted: true });
  };

  render() {
    if (this.state.submitted) {
      return (
        <p className="infoForm-text">
          Thanks. When the kingdom of comfort opens, we'll be in touch!
        </p>
      );
    } else {
      return (
        <div className="infoForm-container">
          <p className="infoForm-text">
            Sign up below and we'll let you know when we launch the next great
            mattress experience!
          </p>
          <form onSubmit={this.handleSubmit} className="infoForm-form">
            <input
              className="infoForm-input"
              type="email"
              placeholder={"Enter your email here"}
            />
            <button className="infoForm-button" type="submit">
              Amaze me!
            </button>
          </form>
        </div>
      );
    }
  }
}

export default InfoForm;
/* Header.css */

@font-face {
    font-family: 'Roboto Condensed';
    src: url('../../fonts/Robotocondensed.woff') format('woff');
}

.header-title {
    text-align: center;
    color: #fff;
    font-size: 40px;
    font-family: 'Roboto Condensed', sans-serif;
    max-width: 220px;
    margin: 0 auto 58px;
    text-transform: uppercase;
} 
select * from information_schema.columns 
where TABLE_SCHEMA ='SCE' and TABLE_NAME like'%Order%' and COLUMN_NAME like'%Order%'

select * from information_schema.columns 
WHERE TABLE_SCHEMA ='SCE' and TABLE_NAME like'vw_ORDERS_1' and COLUMN_NAME like'%Date%'
https://sydneyharbourboattours.com/wp-admin/plugin-install.php
<style>
body{
background:#f9f9fb;    
}
.view-account{
background:#FFFFFF; 
margin-top:20px;
}
.view-account .pro-label {
font-size: 13px;
padding: 4px 5px;
position: relative;
top: -5px;
margin-left: 10px;
display: inline-block
}

.view-account .side-bar {
padding-bottom: 30px
}

.view-account .side-bar .user-info {
text-align: center;
margin-bottom: 15px;
padding: 30px;
color: #616670;
border-bottom: 1px solid #f3f3f3
}

.view-account .side-bar .user-info .img-profile {
width: 120px;
height: 120px;
margin-bottom: 15px
}

.view-account .side-bar .user-info .meta li {
margin-bottom: 10px
}

.view-account .side-bar .user-info .meta li span {
display: inline-block;
width: 100px;
margin-right: 5px;
text-align: right
}

.view-account .side-bar .user-info .meta li a {
color: #616670
}

.view-account .side-bar .user-info .meta li.activity {
color: #a2a6af
}

.view-account .side-bar .side-menu {
text-align: center
}

.view-account .side-bar .side-menu .nav {
display: inline-block;
margin: 0 auto
}

.view-account .side-bar .side-menu .nav>li {
font-size: 14px;
margin-bottom: 0;
border-bottom: none;
display: inline-block;
float: left;
margin-right: 15px;
margin-bottom: 15px
}

.view-account .side-bar .side-menu .nav>li:last-child {
margin-right: 0
}

.view-account .side-bar .side-menu .nav>li>a {
display: inline-block;
color: #9499a3;
padding: 5px;
border-bottom: 2px solid transparent
}

.view-account .side-bar .side-menu .nav>li>a:hover {
color: #616670;
background: none
}

.view-account .side-bar .side-menu .nav>li.active a {
color: #40babd;
border-bottom: 2px solid #40babd;
background: none;
border-right: none
}

.theme-2 .view-account .side-bar .side-menu .nav>li.active a {
color: #6dbd63;
border-bottom-color: #6dbd63
}

.theme-3 .view-account .side-bar .side-menu .nav>li.active a {
color: #497cb1;
border-bottom-color: #497cb1
}

.theme-4 .view-account .side-bar .side-menu .nav>li.active a {
color: #ec6952;
border-bottom-color: #ec6952
}

.view-account .side-bar .side-menu .nav>li .icon {
display: block;
font-size: 24px;
margin-bottom: 5px
}

.view-account .content-panel {
padding: 30px
}

.view-account .content-panel .title {
margin-bottom: 15px;
margin-top: 0;
font-size: 18px
}

.view-account .content-panel .fieldset-title {
padding-bottom: 15px;
border-bottom: 1px solid #eaeaf1;
margin-bottom: 30px;
color: #616670;
font-size: 16px
}

.view-account .content-panel .avatar .figure img {
float: right;
width: 64px
}

.view-account .content-panel .content-header-wrapper {
position: relative;
margin-bottom: 30px
}

.view-account .content-panel .content-header-wrapper .actions {
position: absolute;
right: 0;
top: 0
}

.view-account .content-panel .content-utilities {
position: relative;
margin-bottom: 30px
}

.view-account .content-panel .content-utilities .btn-group {
margin-right: 5px;
margin-bottom: 15px
}

.view-account .content-panel .content-utilities .fa {
font-size: 16px;
margin-right: 0
}

.view-account .content-panel .content-utilities .page-nav {
position: absolute;
right: 0;
top: 0
}

.view-account .content-panel .content-utilities .page-nav .btn-group {
margin-bottom: 0
}

.view-account .content-panel .content-utilities .page-nav .indicator {
color: #a2a6af;
margin-right: 5px;
display: inline-block
}

.view-account .content-panel .mails-wrapper .mail-item {
position: relative;
padding: 10px;
border-bottom: 1px solid #f3f3f3;
color: #616670;
overflow: hidden
}

.view-account .content-panel .mails-wrapper .mail-item>div {
float: left
}

.view-account .content-panel .mails-wrapper .mail-item .icheck {
background-color: #fff
}

.view-account .content-panel .mails-wrapper .mail-item:hover {
background: #f9f9fb
}

.view-account .content-panel .mails-wrapper .mail-item:nth-child(even) {
background: #fcfcfd
}

.view-account .content-panel .mails-wrapper .mail-item:nth-child(even):hover {
background: #f9f9fb
}

.view-account .content-panel .mails-wrapper .mail-item a {
color: #616670
}

.view-account .content-panel .mails-wrapper .mail-item a:hover {
color: #494d55;
text-decoration: none
}

.view-account .content-panel .mails-wrapper .mail-item .checkbox-container,
.view-account .content-panel .mails-wrapper .mail-item .star-container {
display: inline-block;
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .star-container .fa {
color: #a2a6af;
font-size: 16px;
vertical-align: middle
}

.view-account .content-panel .mails-wrapper .mail-item .star-container .fa.fa-star {
color: #f2b542
}

.view-account .content-panel .mails-wrapper .mail-item .star-container .fa:hover {
color: #868c97
}

.view-account .content-panel .mails-wrapper .mail-item .mail-to {
display: inline-block;
margin-right: 5px;
min-width: 120px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject {
display: inline-block;
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label {
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label:last-child {
margin-right: 10px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label a,
.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label a:hover {
color: #fff
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-1 {
background: #f77b6b
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-2 {
background: #58bbee
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-3 {
background: #f8a13f
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-4 {
background: #ea5395
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-5 {
background: #8a40a7
}

.view-account .content-panel .mails-wrapper .mail-item .time-container {
display: inline-block;
position: absolute;
right: 10px;
top: 10px;
color: #a2a6af;
text-align: left
}

.view-account .content-panel .mails-wrapper .mail-item .time-container .attachment-container {
display: inline-block;
color: #a2a6af;
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .time-container .time {
display: inline-block;
text-align: right
}

.view-account .content-panel .mails-wrapper .mail-item .time-container .time.today {
font-weight: 700;
color: #494d55
}

.drive-wrapper {
padding: 15px;
background: #f5f5f5;
overflow: hidden
}

.drive-wrapper .drive-item {
width: 130px;
margin-right: 15px;
display: inline-block;
float: left
}

.drive-wrapper .drive-item:hover {
box-shadow: 0 1px 5px rgba(0, 0, 0, .1);
z-index: 1
}

.drive-wrapper .drive-item-inner {
padding: 15px
}

.drive-wrapper .drive-item-title {
margin-bottom: 15px;
max-width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}

.drive-wrapper .drive-item-title a {
color: #494d55
}

.drive-wrapper .drive-item-title a:hover {
color: #40babd
}

.theme-2 .drive-wrapper .drive-item-title a:hover {
color: #6dbd63
}

.theme-3 .drive-wrapper .drive-item-title a:hover {
color: #497cb1
}

.theme-4 .drive-wrapper .drive-item-title a:hover {
color: #ec6952
}

.drive-wrapper .drive-item-thumb {
width: 100px;
height: 80px;
margin: 0 auto;
color: #616670
}

.drive-wrapper .drive-item-thumb a {
-webkit-opacity: .8;
-moz-opacity: .8;
opacity: .8
}

.drive-wrapper .drive-item-thumb a:hover {
-webkit-opacity: 1;
-moz-opacity: 1;
opacity: 1
}

.drive-wrapper .drive-item-thumb .fa {
display: inline-block;
font-size: 36px;
margin: 0 auto;
margin-top: 20px
}

.drive-wrapper .drive-item-footer .utilities {
margin-bottom: 0
}

.drive-wrapper .drive-item-footer .utilities li:last-child {
padding-right: 0
}

.drive-list-view .name {
width: 60%
}

.drive-list-view .name.truncate {
max-width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}

.drive-list-view .type {
width: 15px
}

.drive-list-view .date,
.drive-list-view .size {
max-width: 60px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}

.drive-list-view a {
color: #494d55
}

.drive-list-view a:hover {
color: #40babd
}

.theme-2 .drive-list-view a:hover {
color: #6dbd63
}

.theme-3 .drive-list-view a:hover {
color: #497cb1
}

.theme-4 .drive-list-view a:hover {
color: #ec6952
}

.drive-list-view td.date,
.drive-list-view td.size {
color: #a2a6af
}

@media (max-width:767px) {
.view-account .content-panel .title {
    text-align: center
}
.view-account .side-bar .user-info {
    padding: 0
}
.view-account .side-bar .user-info .img-profile {
    width: 60px;
    height: 60px
}
.view-account .side-bar .user-info .meta li {
    margin-bottom: 5px
}
.view-account .content-panel .content-header-wrapper .actions {
    position: static;
    margin-bottom: 30px
}
.view-account .content-panel {
    padding: 0
}
.view-account .content-panel .content-utilities .page-nav {
    position: static;
    margin-bottom: 15px
}
.drive-wrapper .drive-item {
    width: 100px;
    margin-right: 5px;
    float: none
}
.drive-wrapper .drive-item-thumb {
    width: auto;
    height: 54px
}
.drive-wrapper .drive-item-thumb .fa {
    font-size: 24px;
    padding-top: 0
}
.view-account .content-panel .avatar .figure img {
    float: none;
    margin-bottom: 15px
}
.view-account .file-uploader {
    margin-bottom: 15px
}
.view-account .mail-subject {
    max-width: 100px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}
.view-account .content-panel .mails-wrapper .mail-item .time-container {
    position: static
}
.view-account .content-panel .mails-wrapper .mail-item .time-container .time {
    width: auto;
    text-align: left
}
}

@media (min-width:768px) {
.view-account .side-bar .user-info {
    padding: 0;
    padding-bottom: 15px
}
.view-account .mail-subject .subject {
    max-width: 200px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}
}

@media (min-width:992px) {
.view-account .content-panel {
    min-height: 800px;
    border-left: 1px solid #f3f3f7;
    margin-left: 200px
}
.view-account .mail-subject .subject {
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}
.view-account .side-bar {
    position: absolute;
    width: 200px;
    min-height: 600px
}
.view-account .side-bar .user-info {
    margin-bottom: 0;
    border-bottom: none;
    padding: 30px
}
.view-account .side-bar .user-info .img-profile {
    width: 120px;
    height: 120px
}
.view-account .side-bar .side-menu {
    text-align: left
}
.view-account .side-bar .side-menu .nav {
    display: block
}
.view-account .side-bar .side-menu .nav>li {
    display: block;
    float: none;
    font-size: 14px;
    border-bottom: 1px solid #f3f3f7;
    margin-right: 0;
    margin-bottom: 0
}
.view-account .side-bar .side-menu .nav>li>a {
    display: block;
    color: #9499a3;
    padding: 10px 15px;
    padding-left: 30px
}
.view-account .side-bar .side-menu .nav>li>a:hover {
    background: #f9f9fb
}
.view-account .side-bar .side-menu .nav>li.active a {
    background: #f9f9fb;
    border-right: 4px solid #40babd;
    border-bottom: none
}
.theme-2 .view-account .side-bar .side-menu .nav>li.active a {
    border-right-color: #6dbd63
}
.theme-3 .view-account .side-bar .side-menu .nav>li.active a {
    border-right-color: #497cb1
}
.theme-4 .view-account .side-bar .side-menu .nav>li.active a {
    border-right-color: #ec6952
}
.view-account .side-bar .side-menu .nav>li .icon {
    font-size: 24px;
    vertical-align: middle;
    text-align: center;
    width: 40px;
    display: inline-block
}
}
</style>

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
<div class="container">
    <div class="view-account">
        <section class="module">
            <div class="module-inner">
                <div class="side-bar">
                    <div class="user-info">
                        <img class="img-profile img-circle img-responsive center-block" src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="">
                        <ul class="meta list list-unstyled">
                            <li class="name">Rebecca Sanders
                                <label class="label label-info">UX Designer</label>
                            </li>
                            <li class="email"><a href="#">Rebecca.S@website.com</a></li>
                            <li class="activity">Last logged in: Today at 2:18pm</li>
                        </ul>
                    </div>
            		<nav class="side-menu">
        				<ul class="nav">
        					<li class="active"><a href="#"><span class="fa fa-user"></span> Profile</a></li>
        					<li><a href="#"><span class="fa fa-cog"></span> Settings</a></li>
        					<li><a href="#"><span class="fa fa-credit-card"></span> Billing</a></li>
        					<li><a href="#"><span class="fa fa-envelope"></span> Messages</a></li>
        					
        					<li><a href="user-drive.html"><span class="fa fa-th"></span> Drive</a></li>
        					<li><a href="#"><span class="fa fa-clock-o"></span> Reminders</a></li>
        				</ul>
        			</nav>
                </div>
                <div class="content-panel">
                    <h2 class="title">Profile<span class="pro-label label label-warning">PRO</span></h2>
                    <form class="form-horizontal">
                        <fieldset class="fieldset">
                            <h3 class="fieldset-title">Personal Info</h3>
                            <div class="form-group avatar">
                                <figure class="figure col-md-2 col-sm-3 col-xs-12">
                                    <img class="img-rounded img-responsive" src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="">
                                </figure>
                                <div class="form-inline col-md-10 col-sm-9 col-xs-12">
                                    <input type="file" class="file-uploader pull-left">
                                    <button type="submit" class="btn btn-sm btn-default-alt pull-left">Update Image</button>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2 col-sm-3 col-xs-12 control-label">User Name</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="Rebecca">
                                </div>
                            </div>
        
                            <div class="form-group">
                                <label class="col-md-2 col-sm-3 col-xs-12 control-label">First Name</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="Rebecca">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2 col-sm-3 col-xs-12 control-label">Last Name</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="Sanders">
                                </div>
                            </div>
                        </fieldset>
                        <fieldset class="fieldset">
                            <h3 class="fieldset-title">Contact Info</h3>
                            <div class="form-group">
                                <label class="col-md-2  col-sm-3 col-xs-12 control-label">Email</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="email" class="form-control" value="Rebecca@website.com">
                                    <p class="help-block">This is the email </p>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2  col-sm-3 col-xs-12 control-label">Twitter</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="SpeedyBecky">
                                    <p class="help-block">Your twitter username</p>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2  col-sm-3 col-xs-12 control-label">Linkedin</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="url" class="form-control" value="https://www.linkedin.com/in/lorem">
                                    <p class="help-block">eg. https://www.linkedin.com/in/yourname</p>
                                </div>
                            </div>
                        </fieldset>
                        <hr>
                        <div class="form-group">
                            <div class="col-md-10 col-sm-9 col-xs-12 col-md-push-2 col-sm-push-3 col-xs-push-0">
                                <input class="btn btn-primary" type="submit" value="Update Profile">
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </section>
    </div>
</div>
"use client";
import Lenis from "@studio-freight/lenis";
import { useEffect } from "react";

export const LenisScroller = () => {
  useEffect(() => {
    const lenis = new Lenis();

    lenis.on("scroll", (e: any) => {
       console.log(e);
     });

    function raf(time: number) {
      lenis.raf(time);
      requestAnimationFrame(raf);
    }

    requestAnimationFrame(raf);

    return () => {
      lenis.destroy();
    };
  }, []);

  return <></>;
};
USE [AdventureWorks];
GO
SELECT name AS [Name], 
       SCHEMA_NAME(schema_id) AS schema_name, 
       type_desc, 
       create_date, 
       modify_date
FROM sys.objects
WHERE type ='u'
SELECT catalog_name AS DBName, 
    Schema_name, 
    schema_owner
FROM information_schema.SCHEMATA;
SELECT * from INFORMATION_SCHEMA.VIEWS
import java.util.ArrayList;
import java.util.Scanner;

public class LibrarySystem {

    private static ArrayList<Book> books = new ArrayList<>();
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        while (true) {
            displayMenu();
            int choice = scanner.nextInt();
            scanner.nextLine(); // Consume the newline character

            switch (choice) {
                case 1:
                    addBook();
                    break;
                case 2:
                    viewBookList();
                    break;
                case 3:
                    searchBook();
                    break;
                case 4:
                    System.out.println("Exiting program. Goodbye!");
                    System.exit(0);
                default:
                    System.out.println("Invalid choice. Please try again.");
            }
        }
    }

    private static void displayMenu() {
        System.out.println("Library System Menu:");
        System.out.println("1. Add Book");
        System.out.println("2. View Book List");
        System.out.println("3. Search for Book");
        System.out.println("4. Exit");
        System.out.print("Enter your choice: ");
    }

    private static void addBook() {
        System.out.print("Enter book title: ");
        String title = scanner.nextLine();

        System.out.print("Enter author: ");
        String author = scanner.nextLine();

        books.add(new Book(title, author));
        System.out.println("Book added successfully!");
    }

    private static void viewBookList() {
        if (books.isEmpty()) {
            System.out.println("No books in the library yet.");
        } else {
            System.out.println("Book List:");
            for (Book book : books) {
                System.out.println("Title: " + book.getTitle() + ", Author: " + book.getAuthor());
            }
        }
    }

    private static void searchBook() {
        System.out.print("Enter book title to search: ");
        String searchTitle = scanner.nextLine();

        boolean found = false;
        for (Book book : books) {
            if (book.getTitle().equalsIgnoreCase(searchTitle)) {
                System.out.println("Book found: Title: " + book.getTitle() + ", Author: " + book.getAuthor());
                found = true;
                break;
            }
        }

        if (!found) {
            System.out.println("Book with title '" + searchTitle + "' not found.");
        }
    }

    private static class Book {
        private String title;
        private String author;

        public Book(String title, String author) {
            this.title = title;
            this.author = author;
        }

        public String getTitle() {
            return title;
        }

        public String getAuthor() {
            return author;
        }
    }
}

function perimeter(l, num){
	let dict = new Object();
	dict = {
		's' : 4*num,
		'c' : 2*num*3.14,
	};
	return dict[l] || undefined;
}
function num_of_digits(num) {
	let cnt = 1;
	num = Math.abs(num);
	num = Math.floor(num/10);
	while(num != 0){
		cnt = cnt+1;
		num = Math.floor(num/10);
	}
	return cnt;
}
Sales Rep Rank =

RANKX(
	ALL( Sales[Sales Rep]),
	[Total Sales],
	Dense
)

//Dense = not skip
import java.util.Scanner;
public class RootsOfDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        double det,root1,root2;

        System.out.println("ENTER THE VALUES OF a,b,and c :");

        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();

        det = (b*b)- 4*a*c;

        if(det>0){
            System.out.println("Roots are Real and Distinct ");
            root1 = (-b) + Math.sqrt(det)/(2*a);
            root2 = (-b) - Math.sqrt(det)/(2*a);
            System.out.println("The Roots are : "+ root1 + root2);
        }

        else if(det==0){
            System.out.println("Roots are Real and Equal ");
            root1 = -b/2*a;
            System.out.println("The Roots are : "+ root1 + root1);
        }

        else{
            System.out.println("Roots are Imaginary ");
            double img = Math.sqrt(det*-1)/2*a;
            //System.out.println("The real part is "+ -b/2*a +" The imaginary part is "+ ( Math.sqrt(det*-1)/2*a ) +"i" );
            System.out.println("The img roots are "+ -b/2*a +"+"+ img + "i");
            System.out.println("The img roots are "+ -b/2*a +"-"+ img + "i");
        }


    }
    
}
Table =

{
	("Nik", 101),
	("Hafiz", 102),
}
Table =

DATATABLE(
	"SNo", INTEGER,
	"Name", STRING,
	{
		{101, "Nik"},
		{102, "Hafiz"},
	}
)
shadow-[0_0_5px_black] hover:shadow-[0_0_15px_black] transition duration-500
version: "1.0"

name: ChannelNetwork

# All actions

actions:
  - name: VIEW
  - name: UPDATE

# All resources

resources:
  # UI Resource for access to kpis tab
  - name: ProductKpiTab
    actions: [VIEW]

    ### Begin productKpi fields

  - name: ProductKpi
    group: productKpi
    actions: [VIEW]

  - name: ProductKpi/*
    group: productKpi
    actions: [VIEW]

    ### End productKpi fields

    ### Begin salesKpi fields

  - name: SalesKpi
    group: salesKpi
    actions: [VIEW]

  - name: SalesKpi/*
    group: salesKpi
    actions: [VIEW]

    ### End salesKpi fields

    ### Begin inventoryKpi fields

  - name: InventoryKpi
    group: inventoryKpi
    actions: [VIEW]

  - name: InventoryKpi/*
    group: inventoryKpi
    actions: [VIEW]

    ### End inventoryKpi fields

    ### Begin filesKpi fields

  - name: FilesKpi
    group: filesKpi
    actions: [VIEW]

  - name: FilesKpi/*
    group: filesKpi
    actions: [VIEW]

    ### End filesKpi fields

    ### Begin ssKpi fields

  - name: SSKpi
    group: ssKpi
    actions: [VIEW]

  - name: SSKpi/*
    group: ssKpi
    actions: [VIEW]

    ### End ssKpi fields


    # UI Resource for access to Products tab
  - name: ProductTab
    actions: [VIEW, UPDATE]

    ### Begin Product Fields

  - name: Product
    group: product
    actions: [VIEW, UPDATE]

  - name: Product/sid
    group: product
    actions: [VIEW]

  - name: Product/createDate
    group: product
    actions: [VIEW]

  - name: Product/updateDate
    group: product
    actions: [VIEW]

  - name: Product/customerSid
    group: product-internal
    actions: [VIEW]

  - name: Product/sku
    group: product
    actions: [VIEW]

  - name: Product/name
    group: product
    actions: [VIEW]

  - name: Product/description
    group: product
    actions: [VIEW]

  - name: Product/productFamily
    group: product
    actions: [VIEW]

  - name: Product/productLine
    group: product
    actions: [VIEW]

  - name: Product/startDate
    group: product
    actions: [VIEW]

  - name: Product/endDate
    group: product
    actions: [VIEW]

  - name: Product/serialized
    group: product-internal
    actions: [VIEW]

  - name: Product/aggregation
    group: product-pos-aggr
    actions: [VIEW]

  - name: Product/aggregation/totalSalesLineCount
    group: product-pos-aggr
    actions: [VIEW]

  - name: Product/aggregation/totalSalesQuantity
    group: product-pos-aggr
    actions: [VIEW]

  - name: Product/aggregation/oldestInvoiceDate
    group: product-pos-aggr
    actions: [VIEW]

    ## Begin Product Dynamic Attrs


  - name: Product/dynamicAttrs
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/sid
    group: product-dynamicAttrs-internal
    actions: [VIEW]
  - name: Product/dynamicAttrs/updateDate
    group: product-dynamicAttrs-internal
    actions: [VIEW]
  - name: Product/dynamicAttrs/createDate
    group: product-dynamicAttrs-internal
    actions: [VIEW]
  - name: Product/dynamicAttrs/attributeType
    group: product-dynamicAttrs-internal
    actions: [VIEW]
  - name: Product/dynamicAttrs/STRING_COL_1
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_2
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_3
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_4
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_5
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_6
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_7
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_8
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_9
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_10
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_11
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_12
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_13
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_14
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_15
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_16
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_17
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_18
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_19
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_20
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_21
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_22
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_23
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_24
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_25
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_26
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_27
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_28
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_29
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/STRING_COL_30
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]

  - name: Product/dynamicAttrs/NUM_COL_1
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_2
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_3
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_4
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_5
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_6
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_7
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_8
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_9
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
  - name: Product/dynamicAttrs/NUM_COL_10
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]

  - name: Product/dynamicAttrs/DATE_COL_1
    group: product-dynamicAttrs
    actions: [VIEW, UPDATE]
    ## End Product Dynamic Attrs

    ### End Product Fields

    # UI Resource for access to POS tab
  - name: SalesTab
    actions: [VIEW, UPDATE]

    ### Begin POS Fields

  - name: Sales
    group: sales
    actions: [VIEW, UPDATE]

  - name: Sales/sid
    group: sales
    actions: [VIEW]

  - name: Sales/createDate
    group: sales
    actions: [VIEW]

  - name: Sales/updateDate
    group: sales
    actions: [VIEW]

  - name: Sales/customerSid
    group: sales-internal
    actions: [VIEW]

  - name: Sales/deleted
    group: sales-internal
    actions: [VIEW]

  - name: Sales/branchId
    group: sales
    actions: [VIEW]

  - name: Sales/invoiceNumber
    group: sales
    actions: [VIEW]

  - name: Sales/invoiceDate
    group: sales
    actions: [VIEW]

  - name: Sales/quantity
    group: sales
    actions: [VIEW]

  - name: Sales/reportedSku
    group: sales
    actions: [VIEW, UPDATE]

  - name: Sales/productDescription
    group: sales
    actions: [VIEW]

  - name: Sales/transactionId
    group: sales-internal
    actions: [VIEW]

  - name: Sales/vendorPartNumber
    group: sales
    actions: [VIEW]

  - name: Sales/accountRepresentative
    group: sales
    actions: [VIEW]

  - name: Sales/acquisitionExtendedPrice
    group: sales
    actions: [VIEW]

  - name: Sales/acquisitionUnitPrice
    group: sales
    actions: [VIEW]

  - name: Sales/boolExtendedPrice
    group: sales
    actions: [VIEW]

  - name: Sales/bookUnitPrice
    group: sales
    actions: [VIEW]

  - name: Sales/customerOrderNumber
    group: sales
    actions: [VIEW]

  - name: Sales/debitExtendedPrice
    group: sales
    actions: [VIEW]

  - name: Sales/debitUnitPrice
    group: sales
    actions: [VIEW]

  - name: Sales/designRegistrationNumber
    group: sales
    actions: [VIEW]

  - name: Sales/distributorId
    group: sales
    actions: [VIEW]

  - name: Sales/distributorName
    group: sales
    actions: [VIEW]

  - name: Sales/distributorShipmentNumber
    group: sales
    actions: [VIEW]

  - name: Sales/distributorWarehouseId
    group: sales
    actions: [VIEW]

  - name: Sales/exchangeDate
    group: sales
    actions: [VIEW]

  - name: Sales/exchangeRate
    group: sales
    actions: [VIEW]

  - name: Sales/globalProductClassCode
    group: sales
    actions: [VIEW]

  - name: Sales/legacySalesRecordId
    group: sales
    actions: [VIEW]

  - name: Sales/lengthOfProduction
    group: sales
    actions: [VIEW]

  - name: Sales/manufactureId
    group: sales
    actions: [VIEW]

  - name: Sales/manufactureName
    group: sales
    actions: [VIEW]

  - name: Sales/manufacturerShipmentNumber
    group: sales
    actions: [VIEW]

  - name: Sales/orderNumber
    group: sales
    actions: [VIEW]

  - name: Sales/originalId
    group: sales
    actions: [VIEW]

  - name: Sales/price
    group: sales
    actions: [VIEW]

  - name: Sales/purchaseOrderNumber
    group: sales
    actions: [VIEW]

  - name: Sales/r2rDuplicateType
    group: sales
    actions: [VIEW]

  - name: Sales/regionTerritory
    group: sales
    actions: [VIEW]

  - name: Sales/reportEndingDate
    group: sales
    actions: [VIEW]

  - name: Sales/reportType
    group: sales
    actions: [VIEW]

  - name: Sales/resaleExtendedPrice
    group: sales
    actions: [VIEW]

  - name: Sales/resaeExtension
    group: sales
    actions: [VIEW]

  - name: Sales/resaleUnitPrice
    group: sales
    actions: [VIEW]

  - name: Sales/resubmitted
    group: sales
    actions: [VIEW]

  - name: Sales/reportedProductFamily
    group: sales
    actions: [VIEW]

  - name: Sales/reportedProductLine
    group: sales
    actions: [VIEW]

  - name: Sales/reportedProductName
    group: sales
    actions: [VIEW]

  - name: Sales/shipDate
    group: sales
    actions: [VIEW]

  - name: Sales/shipDebitNumber
    group: sales
    actions: [VIEW]

  - name: Sales/shippingMethod
    group: sales
    actions: [VIEW]

  - name: Sales/spaNumber
    group: sales
    actions: [VIEW]

  - name: Sales/tier
    group: sales
    actions: [VIEW]

  - name: Sales/transactionType
    group: sales
    actions: [VIEW]

  - name: Sales/unitOfMeasure
    group: sales
    actions: [VIEW]

  - name: Sales/vendorPartDescription
    group: sales
    actions: [VIEW]

  - name: Sales/validationCodes
    group: sales
    actions: [VIEW]

  - name: Sales/serialNumbers
    group: sales
    actions: [VIEW]

    # Bill to address


  - name: Sales/billToAddress
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/billToAddress/entityName
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/street1
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/street2
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/city
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/stateProvince
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/postalCode
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/reportedCountry
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/country
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/country/name
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/country/twoCharCode
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddress/country/threeCharCode
    group: sales-bill-to
    actions: [VIEW]

  - name: Sales/billToAddressExternalId
    group: sales-bill-to
    actions: [VIEW]

    # sold to address

  - name: Sales/soldToAddress
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/soldToAddress/entityName
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/street1
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/street2
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/city
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/stateProvince
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/postalCode
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/reportedCountry
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/country
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/country/name
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/country/twoCharCode
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddress/country/threeCharCode
    group: sales-sold-to
    actions: [VIEW]

  - name: Sales/soldToAddressExternalId
    group: sales-sold-to
    actions: [VIEW]

    # ship to address

  - name: Sales/shipToAddress
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/shipToAddress/entityName
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/street1
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/street2
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/city
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/stateProvince
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/postalCode
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/reportedCountry
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/country
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/country/name
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/country/twoCharCode
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddress/country/threeCharCode
    group: sales-ship-to
    actions: [VIEW]

  - name: Sales/shipToAddressExternalId
    group: sales-ship-to
    actions: [VIEW]

    # sell from address

  - name: Sales/sellFromAddress
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/sellFromAddress/entityName
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/street1
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/street2
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/city
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/stateProvince
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/postalCode
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/reportedCountry
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/country
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/country/name
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/country/twoCharCode
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddress/country/threeCharCode
    group: sales-sell-from
    actions: [VIEW]

  - name: Sales/sellFromAddressExternalId
    group: sales-sell-from
    actions: [VIEW]

    # ship from address

  - name: Sales/shipFromAddress
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/shipFromAddress/entityName
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/street1
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/street2
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/city
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/stateProvince
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/postalCode
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/reportedCountry
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/country
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/country/name
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/country/twoCharCode
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddress/country/threeCharCode
    group: sales-ship-from
    actions: [VIEW]

  - name: Sales/shipFromAddressExternalId
    group: sales-ship-from
    actions: [VIEW]

    # sales in address

  - name: Sales/salesInAddress
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/salesInAddress/entityName
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/street1
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/street2
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/city
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/stateProvince
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/postalCode
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/reportedCountry
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/country
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/country/name
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/country/twoCharCode
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddress/country/threeCharCode
    group: sales-sales-in
    actions: [VIEW]

  - name: Sales/salesInAddressExternalId
    group: sales-sales-in
    actions: [VIEW]

    # purchasing customer address

  - name: Sales/purchasingCustomerAddress
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/entityName
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/street1
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/street2
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/city
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/stateProvince
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/postalCode
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/reportedCountry
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/country
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/country/name
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/country/twoCharCode
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerAddress/country/threeCharCode
    group: sales-purchasing-customer
    actions: [VIEW]

  - name: Sales/purchasingCustomerExternalId
    group: sales-purchasing-customer
    actions: [VIEW]

    # derived end customer address

  - name: Sales/derivedEndCustomerAddress
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/entityName
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/street1
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/street2
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/city
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/stateProvince
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/postalCode
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/reportedCountry
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/country
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/country/name
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/country/twoCharCode
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddress/country/threeCharCode
    group: sales-derived-end-customer
    actions: [VIEW]

  - name: Sales/derivedEndCustomerAddressExternalId
    group: sales-derived-end-customer
    actions: [VIEW]

    # data file

  - name: Sales/dataFile
    group: sales-data-file
    actions: [VIEW]

  - name: Sales/dataFile/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/dataFile/loadDate
    group: sales-data-file
    actions: [VIEW]

  - name: Sales/dataFile/reportDate
    group: sales-data-file
    actions: [VIEW]

  - name: Sales/dataFile/id
    group: sales-data-file
    actions: [VIEW]

  - name: Sales/dataFile/fileName
    group: sales-data-file
    actions: [VIEW]

  - name: Sales/dataFile/recordCount
    group: sales-data-file
    actions: [VIEW]

    # match info

  - name: Sales/productMatchInfo
    group: sales-product-match-info
    actions: [VIEW]

  - name: Sales/productMatchInfo/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/productMatchInfo/matchedProduct
    group: sales-product-match-info
    actions: [VIEW]

  - name: Sales/productMatchInfo/matchedProduct/sku
    group: sales-product-match-info
    actions: [VIEW]

    # reporting partner

  - name: Sales/reportingPartner
    group: sales-reporting-partner
    actions: [VIEW]

  - name: Sales/reportingPartner/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/reportingPartner/gsNumbers
    group: sales-reporting-partner
    actions: [VIEW]

  - name: Sales/reportingPartner/gsNumbers/value
    group: sales-reporting-partner
    actions: [VIEW]

    # currency

  - name: Sales/currency
    group: sales-currency
    actions: [VIEW]

  - name: Sales/currency/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/currency/name
    group: sales-currency
    actions: [VIEW]

    # resale currency

  - name: Sales/resaleCurrency
    group: sales-resale-currency
    actions: [VIEW]

  - name: Sales/resaleCurrency/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/resaleCurrency/name
    group: sales-resale-currency
    actions: [VIEW]

    # debit currency

  - name: Sales/debtCurrency
    group: sales-debit-currency
    actions: [VIEW]

  - name: Sales/debtCurrency/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/debtCurrency/name
    group: sales-debit-currency
    actions: [VIEW]

    # book currency

  - name: Sales/bookCurrency
    group: sales-book-currency
    actions: [VIEW]

  - name: Sales/bookCurrency/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/bookCurrency/name
    group: sales-book-currency
    actions: [VIEW]

    # acquisition currency

  - name: Sales/acquisitionCurrency
    group: sales-acquisition-currency
    actions: [VIEW]

  - name: Sales/acquisitionCurrency/*
    group: sales-internal
    actions: [VIEW]

  - name: Sales/acquisitionCurrency/name
    group: sales-acquisition-currency
    actions: [VIEW]

    ## Begin POS Dynamic Attrs

  - name: Sales/dynamicAttrs
    group: sales-dynamic-attrs
    actions: [VIEW, UPDATE]

  - name: Sales/dynamicAttrs/*
    group: sales-dynamic-attrs
    actions: [VIEW, UPDATE]

  - name: Sales/dynamicAttrs/STRING_COL_1
    group: sales-dynamic-attrs
    actions: [VIEW, UPDATE]

    ## End POS Dynamic Attrs

    ### End POS Fields

    # UI Resource for access to INV tab
  - name: InventoryTab
    actions: [VIEW, UPDATE]

    ### Begin INV Fields

  - name: Inventory
    group: inventory
    actions: [VIEW, UPDATE]

  - name: Inventory/sid
    group: inventory
    actions: [VIEW]

  - name: Inventory/createDate
    group: inventory
    actions: [VIEW]

  - name: Inventory/updateDate
    group: inventory
    actions: [VIEW]

  - name: Inventory/customerSid
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/deleted
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/productName
    group: inventory
    actions: [VIEW]

  - name: Inventory/clientDescription
    group: inventory
    actions: [VIEW]

  - name: Inventory/clientSku
    group: inventory
    actions: [VIEW, UPDATE]

  - name: Inventory/reportedSku
    group: inventory
    actions: [VIEW]

  - name: Inventory/inventoryDate
    group: inventory
    actions: [VIEW]

  - name: Inventory/unitOfMeasure
    group: inventory
    actions: [VIEW]

  - name: Inventory/id
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/originalId
    group: inventory
    actions: [VIEW]

  - name: Inventory/lineNumber
    group: inventory-internal
    actions: [VIEW]

    # data file

  - name: Inventory/dataFile
    group: inventory-data-file
    actions: [VIEW]

  - name: Inventory/dataFile/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/dataFile/loadDate
    group: inventory-data-file
    actions: [VIEW]

  - name: Inventory/dataFile/reportDate
    group: inventory-data-file
    actions: [VIEW]

  - name: Inventory/dataFile/id
    group: inventory-data-file
    actions: [VIEW]

  - name: Inventory/dataFile/fileName
    group: inventory-data-file
    actions: [VIEW]

  - name: Inventory/dataFile/recordCount
    group: inventory-data-file
    actions: [VIEW]

    # reporting partner

  - name: Inventory/reportingPartner
    group: inventory-reporting-partner
    actions: [VIEW]

  - name: Inventory/reportingPartner/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/reportingPartner/gsNumbers
    group: inventory-reporting-partner
    actions: [VIEW]

  - name: Inventory/reportingPartner/gsNumbers/value
    group: inventory-reporting-partner
    actions: [VIEW]

    # submission period

  - name: Inventory/submissionPeriod
    group: inventory-submission-period
    actions: [VIEW]

  - name: Inventory/submissionPeriod/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/submissionPeriod/expectedDate
    group: inventory-submission-period
    actions: [VIEW]

  - name: Inventory/submissionPeriod/periodStartDate
    group: inventory-submission-period
    actions: [VIEW]

  - name: Inventory/submissionPeriod/periodEndDate
    group: inventory-submission-period
    actions: [VIEW]

    # quantities

  - name: Inventory/inventoryQuantities
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/inventoryQuantities/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/onHandQuantity
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/onHandQuantity/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/onHandQuantity/value
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/onOrderQuantity
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/onOrderQuantity/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/onOrderQuantity/value
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/committedQuantity
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/committedQuantity/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/committedQuantity/value
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/floatQuantity
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/floatQuantity/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/floatQuantity/value
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/backorderedQuantity
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/backorderedQuantity/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/backorderedQuantity/value
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/returnedQuantity
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/returnedQuantity/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/returnedQuantity/value
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/inTransitQuantity
    group: inventory-quantity
    actions: [VIEW]

  - name: Inventory/inTransitQuantity/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/inTransitQuantity/value
    group: inventory-quantity
    actions: [VIEW]

    # prices

  - name: Inventory/inventoryPrices
    group: inventory-price
    actions: [VIEW]

  - name: Inventory/inventoryPrices/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/unitPrice
    group: inventory-price
    actions: [VIEW]

  - name: Inventory/unitPrice/*
    group: inventory-internal
    actions: [VIEW]

  - name: Inventory/unitPrice/price
    group: inventory-price
    actions: [VIEW]

  - name: Inventory/unitPrice/fromCurrency
    group: inventory-price
    actions: [VIEW]

  - name: Inventory/unitPrice/fromCurrency/name
    group: inventory-price
    actions: [VIEW]

  - name: Inventory/unitPrice/toCurrency
    group: inventory-price
    actions: [VIEW]

  - name: Inventory/unitPrice/toCurrency/name
    group: inventory-price
    actions: [VIEW]

    ## Begin INV Dynamic Attrs

  - name: Inventory/dynamicAttrs
    group: inventory-dynamic-attrs
    actions: [VIEW]

  - name: Inventory/dynamicAttrs/*
    group: inventory-dynamic-attrs
    actions: [VIEW]

    ## End INV Dynamic Attrs

    ### End INV Fields

  # UI Resource for access to File Tab
  - name: FilesTab
    actions: [VIEW, UPDATE]

  ## Begin Partner

  - name: Partner
    group: reporting-partner
    actions: [VIEW]

  - name: Partner/*
    group: reporting-partner
    actions: [VIEW]

  ## End Partner

  # Begin File fields
  - name: DataFile
    group: file-management
    actions: [VIEW, UPDATE]

  - name: DataFile/sid
    group: file-management
    actions: [VIEW]

  - name: DataFile/loadDate
    group: file-management
    actions: [VIEW]

  - name: DataFile/reportDate
    group: file-management
    actions: [VIEW]

  - name: DataFile/fileName
    group: file-management
    actions: [VIEW]

  - name: DataFile/fileType
    group: file-management
    actions: [VIEW]

  - name: DataFile/dataType
    group: file-management
    actions: [VIEW]

  - name: DataFile/id
    group: file-management
    actions: [VIEW]

  - name: DataFile/fileSize
    group: file-management
    actions: [VIEW]

  - name: DataFile/source
    group: file-management
    actions: [VIEW]

  - name: DataFile/recordCount
    group: file-management
    actions: [VIEW]

  - name: DataFile/deletedLines
    group: file-management
    actions: [VIEW]

  - name: DataFile/download
    group: file-download
    actions: [VIEW]

  - name: DataFile/validationDownload
    group: file-validation-download
    actions: [VIEW]

  - name: DataFile/upload
    group: file-upload
    actions: [VIEW]

  - name: DataFile/uploadDataTypes
    group: file-upload
    actions: [VIEW]

  - name: DataFile/uploadFileTypes
    group: file-upload
    actions: [VIEW]

  - name: DataFile/reportingPartner
    group: file-reporting-partner
    actions: [VIEW]

  - name: DataFile/reportingPartner/*
    group: file-reporting-partner
    actions: [VIEW]

  - name: DataFile/reportingPartner/partnerOverlayView
    group: file-reporting-partner
    actions: [VIEW]

  - name: DataFile/reportingPartner/partnerOverlayView/*
    group: file-reporting-partner
    actions: [VIEW]

  - name: DataFile/dataFileState
    group: file-data-file-state
    actions: [VIEW]

  - name: DataFile/dataFileState/*
    group: file-data-file-state
    actions: [VIEW]

  - name: DataFile/dataFileState/sid
    group: file-data-file-state
    actions: [VIEW]

  - name: DataFile/dataFileState/createDate
    group: file-data-file-state
    actions: [VIEW]

  - name: DataFile/dataFileState/updateDate
    group: file-data-file-state
    actions: [VIEW]

  - name: DataFile/parserAttempt
    group: file-parser-attempt
    actions: [VIEW]

  - name: DataFile/parserAttempt/*
    group: file-parser-attempt
    actions: [VIEW]

  # End of File fields
  
  # UI Resource for access to Submission Schedule
  - name: SubmissionTrackingTab
    actions: [VIEW, UPDATE]

  - name: SubmissionResultsTab
    actions: [VIEW, UPDATE]

  # Begin Submission Schedule 
  - name: SubmissionSchedule
    group: submission-schedule
    actions: [VIEW, UPDATE]

  - name: SubmissionSchedule/sid
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/createDate
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/updateDate
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/name
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/reportingPartner
    group: ss-reporting-partner
    actions: [VIEW]

  - name: SubmissionSchedule/reportingPartner/*
    group: ss-reporting-partner
    actions: [VIEW]

  - name: SubmissionSchedule/reportingPartner/partnerOverlayView
    group: ss-reporting-partner
    actions: [VIEW]

  - name: SubmissionSchedule/reportingPartner/partnerOverlayView/*
    group: ss-reporting-partner
    actions: [VIEW]

  - name: SubmissionSchedule/dataType
    group: ss-data-type
    actions: [VIEW]

  - name: SubmissionSchedule/dataType/*
    group: ss-data-type
    actions: [VIEW]

  - name: SubmissionSchedule/periodRule
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/expectedDay
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/startDate
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/endDate
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/isInPeriodReporter
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/weekOfMonth
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/monthOfQuarter
    group: submission-schedule
    actions: [VIEW]

  - name: SubmissionSchedule/workingDays
    group: submission-schedule
    actions: [VIEW]

  # End Submission Schedule 

  # Begin Submission Schedule Notification
  - name: SubmissionScheduleNotification
    group: submission-schedule-notification
    actions: [VIEW]
  
  - name: SubmissionScheduleNotification/*
    group: submission-schedule-notification
    actions: [VIEW]

  - name: SubmissionScheduleNotification/notificationType
    group: submission-schedule-notification
    actions: [VIEW]

  - name: SubmissionScheduleNotification/notificationType/*
    group: submission-schedule-notification
    actions: [VIEW]

  - name: SubmissionScheduleNotification/serviceUser
    group: submission-schedule-notification
    actions: [VIEW]

  - name: SubmissionScheduleNotification/serviceUser/*
    group: submission-schedule-notification
    actions: [VIEW]

  # END Submission Schedule Notification

  # Begin Submission Period
  - name: SubmissionPeriod
    group: submission-period-update
    actions: [VIEW, UPDATE]

  - name: SubmissionPeriod/sid
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/expectedDate
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/periodStartDate
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/periodEndDate
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/createDate
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/updateDate
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/noData
    group: submission-period-update
    actions: [VIEW, UPDATE]

  - name: SubmissionPeriod/noDataReason
    group: submission-period-update
    actions: [VIEW, UPDATE]

  - name: SubmissionPeriod/noDataCreateDate
    group: submission-period-update
    actions: [VIEW, UPDATE]

  - name: SubmissionPeriod/onTimeOverride
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/expectedDay
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/workingDays
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/isInPeriodReporter
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/trackingLevel
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/status
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/reportedFlag
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/fileIds
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/firstFileName
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/firstFileCreateDate
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/firstFileId
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/deleted
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/noDataServiceUser
    group: submission-period-update
    actions: [VIEW, UPDATE]

  - name: SubmissionPeriod/noDataServiceUser/sid
    group: sp-no-data-user
    actions: [VIEW]

  - name: SubmissionPeriod/noDataServiceUser/firstName
    group: sp-no-data-user
    actions: [VIEW]

  - name: SubmissionPeriod/noDataServiceUser/lastName
    group: sp-no-data-user
    actions: [VIEW]

  - name: SubmissionPeriod/noDataServiceUser/email
    group: sp-no-data-user
    actions: [VIEW]

  - name: SubmissionPeriod/submissionPeriodLineItemView
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/submissionPeriodLineItemView/*
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/dataFileSummaryInfo
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/dataFileSummaryInfo/*
    group: submission-period
    actions: [VIEW]
    
  - name: SubmissionPeriod/submissionSchedule
    group: submission-period
    actions: [VIEW]
    
  - name: SubmissionPeriod/submissionSchedule/sid
    group: submission-period
    actions: [VIEW]
    
  - name: SubmissionPeriod/submissionSchedule/name
    group: submission-period
    actions: [VIEW]
    
  - name: SubmissionPeriod/submissionSchedule/periodRule
    group: submission-period
    actions: [VIEW]

  - name: SubmissionPeriod/submissionSchedule/reportingPartner
    group: sp-reporting-partner
    actions: [VIEW]

  - name: SubmissionPeriod/submissionSchedule/reportingPartner/*
    group: sp-reporting-partner
    actions: [VIEW]

  - name: SubmissionPeriod/submissionSchedule/reportingPartner/partnerOverlayView
    group: sp-reporting-partner
    actions: [VIEW]

  - name: SubmissionPeriod/submissionSchedule/reportingPartner/partnerOverlayView/*
    group: sp-reporting-partner
    actions: [VIEW]

  - name: SubmissionPeriod/submissionSchedule/dataType
    group: sp-data-type
    actions: [VIEW]

  - name: SubmissionPeriod/submissionSchedule/dataType/*
    group: sp-data-type
    actions: [VIEW]

  # End Submission Period

  # Begin Export Request

  - name: ExportRequest
    group: export
    actions: [VIEW, UPDATE]

  - name: ExportRequest/*
    group: export
    actions: [VIEW, UPDATE]

  # End Export Request

  ### Begin Base resources

  - name: About
    group: about
    actions: [VIEW]

  - name: About/*
    group: about
    actions: [VIEW]

  - name: UserEvent
    group: user-event
    actions: [VIEW, UPDATE]

  - name: UserEvent/*
    group: user-event
    actions: [VIEW, UPDATE]

  - name: ObjectLock
    group: object-lock
    actions: [VIEW, UPDATE]

  - name: ObjectLock/*
    group: object-lock
    actions: [VIEW, UPDATE]

  - name: ObjectLockResponse
    group: object-lock-response
    actions: [VIEW]

  - name: ObjectLockResponse/*
    group: object-lock-response
    actions: [VIEW]

  - name: MutationResponse
    group: mutation-response
    actions: [VIEW]

  - name: MutationResponse/*
    group: mutation-response
    actions: [VIEW]

  - name: DynamicAttrMetadata
    group: attr-metadata
    actions: [VIEW]

  - name: DynamicAttrMetadata/*
    group: attr-metadata
    actions: [VIEW]
    

  ### End Base resources

  ### Begin mutation resources

  - name: Product/mutation/*
    group: product-update
    actions: [UPDATE]

  - name: Sales/mutation/*
    group: sales-update
    actions: [UPDATE]

  - name: Inventory/mutation/*
    group: inventory-update
    actions: [UPDATE]

  - name: ExportRequest/mutation/*
    group: export
    actions: [UPDATE]

  - name: SubmissionPeriod/mutation/*
    group: submission-period-mutation
    actions: [UPDATE]

    ### End mutation resources

    ### Begin Customer Resources

  - name: INT
    actions: [VIEW]

  - name: ACS
    actions: [VIEW]

  - name: CAMB
    actions: [VIEW]

  - name: CYBERDYNE
    actions: [VIEW]

  - name: COR
    actions: [VIEW]

  - name: INT_CCD
    actions: [VIEW]

  - name: ACS_CCD
    actions: [VIEW]

  - name: CAMB_CCD
    actions: [VIEW]

  - name: QCOM_CCD
    actions: [VIEW]

  - name: COR_CCD
    actions: [VIEW]

    ### End Customer Resources

# Common permissions for all tenants
permissions:

  - name: BasicViewUpdate
    displayName: Background Permissions
    description: Every User needs this permission
    resource-actions:
      - about:[VIEW]
      - user-event:[VIEW, UPDATE]
      - object-lock:[VIEW, UPDATE]
      - object-lock-response:[VIEW]
      - mutation-response:[VIEW]
      - attr-metadata:[VIEW]

  - name: KpiView
    displayName: KPI Tab
    description: KPI Permission Set
    resource-actions:
      - ProductKpiTab:[VIEW]

  - name: SSKpiFields
    displayName: Submission KPI Fields
    description: Submission KPI Fields Permission Set
    resource-actions:
      - ssKpi:[VIEW]

  - name: FilesKpiFields
    displayName: Files KPI Fields
    description: Files KPI Fields Permission Set
    resource-actions:
      - filesKpi:[VIEW]

  - name: FileTab
    displayName: File Tab
    description: File Permission Set
    resource-actions:
      - FilesTab:[VIEW]

  - name: FileUploadPartner
    displayName: File Upload for Partner
    description: File Upload Permission Set
    resource-actions:
      - DataFile:[VIEW, UPDATE] 
      - file-upload:[VIEW]     

  - name: FileUpload
    displayName: File Upload 
    description: File Upload Permission Set
    resource-actions:
      - DataFile:[VIEW]
      - file-upload:[VIEW]
      - reporting-partner:[VIEW]

  - name: FileDownload
    displayName: File Download
    description: File Download Permission Set
    resource-actions:
      - DataFile:[VIEW]
      - file-download:[VIEW]
      - file-validation-download:[VIEW]

  - name: SubmissionTab
    displayName: Submission Tab
    description: File Permission Set
    resource-actions:
      - SubmissionTrackingTab:[VIEW]
      - SubmissionResultsTab:[VIEW]

  - name: FileManufactureView
    displayName: File Admin View
    description: File Admin Permission Set
    resource-actions:
      - file-management:[VIEW]
      - file-reporting-partner:[VIEW]
      - file-data-file-state:[VIEW]
      - file-parser-attempt:[VIEW]

  - name: FilePartnerView
    displayName: File Partner View
    description: File Partner Permission Set
    resource-actions:
      - file-management:[VIEW]
      - file-data-file-state:[VIEW]
      - file-parser-attempt:[VIEW]

  - name: SubmissionManufactureView
    displayName: Submission Admin View
    description: Submission Full Permission Set
    resource-actions:
      - submission-schedule:[VIEW]
      - submission-schedule-notification:[VIEW]
      - ss-reporting-partner:[VIEW]
      - ss-data-type:[VIEW]
      - submission-period:[VIEW]
      - sp-reporting-partner:[VIEW]
      - sp-data-type:[VIEW]
      - sp-no-data-user:[VIEW]
      - submission-period-update:[VIEW]

  - name: SubmissionPartnerView
    displayName: Submission Partner View
    description: Submission Full Permission Set
    resource-actions:
      - submission-schedule:[VIEW]
      - submission-schedule-notification:[VIEW]
      - ss-data-type:[VIEW]
      - submission-period:[VIEW]
      - sp-data-type:[VIEW]
      - sp-no-data-user:[VIEW]
      - submission-period-update:[VIEW]

  - name: SubmissionPartnerUpdate
    displayName: Submission Partner Update
    description: Submission Update Permission Set
    resource-actions:
      - submission-period-update:[UPDATE]
      - submission-period-mutation:[UPDATE]

  - name: SubmissionUpdate
    displayName: Submission Update 
    description: Submission Update Permission Set
    resource-actions:
      - submission-period-update:[UPDATE]
      - submission-period-mutation:[UPDATE]
export const SubmissionDef = `
  type Query {
    submissionPeriods(
      offset: Float, 
      limit: Float,
      filters: SubmissionPeriodFilters,
      sort: SubmissionPeriodSort
    ): [SubmissionPeriod]
    submissionSchedules(
      offset: Float, 
      limit: Float,
      filters: SubmissionScheduleFilters, 
      sort: SubmissionScheduleSort
    ): [SubmissionSchedule]
    submissionScheduleNotifications(
      submissionScheduleSid: ID,
      offset: Float,
      limit: Float,
      filters: SubmissionScheduleNotificationFilters,
      sort: SubmissionScheduleNotificationSort
    ): [SubmissionScheduleNotification]
  }

  type Mutation {
    markNoData(data: [NoDataInput]): [MutationResponse] @auth(object: SubmissionPeriod)
  }

  type SubmissionPeriod {
    sid: ID
    createDate: Date
    updateDate: Date
    customerSid: ID
    expectedDate: Date
    periodStartDate: Date
    periodEndDate: Date
    noData: Boolean
    noDataReason: String
    noDataCreateDate: Date
    onTimeOverride: Boolean
    expectedDay: String
    workingDays: String
    isInPeriodReporter: Float
    trackingLevel: String
    submissionSchedule: SubmissionSchedule
    status: String
    reportedFlag: Boolean
    numberOfFiles: Float
    dataFileSummaryInfo: [DataFileSummaryInfo]
    submissionPeriodLineItemView: SubmissionPeriodLineItemView
    noDataServiceUser: ServiceUser
  }

  type SubmissionPeriodLineItemView {
    salesLineItemCount: Float
    invLineItemCount: Float
    earliestFileSubmissionDate: Date
  }

  type DataFileSummaryInfo{
    numberOfPOSLines: Float
    numberOfInventoryLines: Float
    receivedDate: Date
    dataFileId: String
    dataFileName: String
  }
  
  type SubmissionSchedule {
    sid: ID
    createDate: Date
    updateDate: Date
    customerSid: ID
    dataType: DataType    
    reportingPartner: Partner
    periodRule: String
    name: String
    startDate: Date
    endDate: Date
    expectedDay: String
    workingDays: String
    isInPeriodReporter: Boolean
    weekOfMonth: Float
    monthOfQuarter: Float
  }

  type DataType {
    sid: ID
    createDate: Date
    updateDate: Date
    type: String
  }

  type SubmissionScheduleNotification {
    sid: ID
    createDate: Date
    updateDate: Date
    customerSid: ID
    submissionScheduleSid: ID
    notificationType: NotificationType
    serviceUser: ServiceUser
  }

  enum NotificationType {
    PARSE_SUCCESS
    LATE
    PARSE_FAIL
    EXPECTED
  }

  input SubmissionPeriodFilters {
    sid: IDFilter
    createDate: DateFilter
    updateDate: DateFilter
    customerSid: IDFilter
    expectedDate: DateFilter
    periodStartDate: DateFilter
    periodEndDate: DateFilter
    noDataCreateDate: DateFilter
    submissionSchedule: SubmissionScheduleFilters
    status: StringFilter
    reportedFlag: BooleanFilter
    submissionPeriodLineItemView: SubmissionPeriodLineItemViewFilter
    noData: BooleanFilter
    numberOfFiles: NumberFilter
  }
  
  input SubmissionPeriodLineItemViewFilter {
    salesLineItemCount: NumberFilter
    invLineItemCount: NumberFilter
    earliestFileSubmissionDate: DateFilter
  }

  input SubmissionScheduleFilters {
    sid: IDFilter
    createDate: DateFilter
    updateDate: DateFilter
    customerSid: IDFilter
    reportingPartner: PartnerFilter
    name: StringFilter
    dataType: DataTypeFilter
    periodRule: StringFilter
    expectedDay: StringFilter
    workingDays: StringFilter
    startDate: DateFilter
    endDate: DateFilter
    isInPeriodReporter: BooleanFilter
    weekOfMonth: NumberFilter
    monthOfQuarter: NumberFilter
  }

  input DataTypeFilter {
    sid: IDFilter
    createDate: DateFilter
    updateDate: DateFilter
    type: StringFilter
  }

  input SubmissionScheduleNotificationFilters {
    sid: IDFilter
    createDate: DateFilter
    updateDate: DateFilter
    customerSid: IDFilter
    submissionScheduleSid: IDFilter
    notificationType: StringFilter
    serviceUser: ServiceUserFilters
  }

  input SubmissionPeriodSort {
    sid: SortOption
    createDate: SortOption
    updateDate: SortOption
    expectedDate: SortOption
    periodStartDate: SortOption
    periodEndDate: SortOption
    noDataCreateDate: SortOption
    submissionSchedule: SubmissionScheduleSort
    status: SortOption
    reportedFlag: SortOption
    submissionPeriodLineItemView: SubmissionPeriodLineItemViewSort
    noData: SortOption
    numberOfFiles: SortOption
  }
  
  input SubmissionPeriodLineItemViewSort {
    salesLineItemCount: SortOption
    invLineItemCount: SortOption
    earliestFileSubmissionDate: SortOption
  }

  input SubmissionScheduleSort {
    sid: SortOption
    createDate: SortOption
    updateDate: SortOption
    customerSid: SortOption
    dataType: DataTypeSort
    reportingPartner: PartnerSort
    periodRule: SortOption
    name: SortOption
    startDate: SortOption
    endDate: SortOption
    expectedDay: SortOption
    workingDays: SortOption
    isInPeriodReporter: SortOption
    weekOfMonth: SortOption
    monthOfQuarter: SortOption
  }

  input DataTypeSort {
    sid: SortOption
    createDate: SortOption
    updateDate: SortOption
    type: SortOption
  }

  input SubmissionScheduleNotificationSort {
    sid: SortOption
    createDate: SortOption
    updateDate: SortOption
    notificationType: SortOption
    serviceUser: ServiceUserSort
  }

  input NoDataInput {
    sid: ID!
    noDataReason: String
  }
`;
export const statusSql = (alias: string) => {
     return `(select
             CASE WHEN ( ${alias}."ON_TIME_OVERRIDE" = 1) 
                  THEN 'On-time'
                  WHEN ( "spli1"."EARLIEST_FILE_SUBMISSION_DATE" < ${alias}."EXPECTED_DATE" )
                  THEN 'On-time'
                  WHEN ( ( ${alias}."NO_DATA" = 1 ) 
                         AND ( ${alias}."NO_DATA_CREATE_DATE" < ${alias}."EXPECTED_DATE"))
                  THEN 'On-time'
                  WHEN ( ${alias}."EXPECTED_DATE" > SYSTIMESTAMP)
                  THEN 'Pending'
                  ELSE 'Late'
             END
             from SUBMISSION_PERIOD "sp1"
             left join SUBMISSION_PERIOD_LINE_ITEM_V "spli1" on 
                                                     "spli1"."SUBMISSION_PERIOD_SID" = "sp1"."SID"
                                                     AND "spli1"."CUSTOMER_SID" = "sp1"."CUSTOMER_SID"
             where "sp1"."SID" = ${alias}."SID"
             AND "sp1"."CUSTOMER_SID" = ${alias}."CUSTOMER_SID")`;
};

export const reportedFlagSql = (alias: string) => {
     return `(select
             CASE WHEN MAX(${alias}."ON_TIME_OVERRIDE") = 1
                  THEN 1
                  WHEN MAX(${alias}."NO_DATA") = 1
                  THEN 1
                  WHEN COUNT("df"."ID") > 0
                  THEN 1
                  ELSE 0
             END
             from SUBMISSION_SCHEDULE "ss1"
             left join DATA_FILE_SUMMARY_INFO "dfsi" on 
                                              "dfsi"."SUBMISSION_PERIOD_SID" = ${alias}."SID"
                                              AND "dfsi"."CUSTOMER_SID" = ${alias}."CUSTOMER_SID"
             left join DATA_TYPE "dt1" on "ss1"."DATA_TYPE_SID" = "dt1"."SID"
             left join DATA_FILE "df" on "dfsi"."CUSTOMER_SID" = "df"."CUSTOMER_SID"
                                 AND "dfsi"."DATA_FILE_SID" = "df"."SID"
                                 AND "df"."DATA_TYPE" = "dt1"."TYPE"  
             where "ss1"."SID" = ${alias}."SUBMISSION_SCHEDULE_SID"
             AND "ss1"."CUSTOMER_SID" = ${alias}."CUSTOMER_SID")`
};

export const fileIdsSql = (alias: string) => { 
    return `(select
             listagg("df"."ID",',') within group (ORDER BY "df"."CREATE_DATE")
             from SUBMISSION_SCHEDULE "ss1"
             left join DATA_FILE_SUMMARY_INFO "dfsi" on 
                                              "dfsi"."SUBMISSION_PERIOD_SID" = ${alias}."SID"
                                              AND "dfsi"."CUSTOMER_SID" = ${alias}."CUSTOMER_SID"
             left join DATA_TYPE "dt1" on "ss1"."DATA_TYPE_SID" = "dt1"."SID"
             left join DATA_FILE "df" on "dfsi"."CUSTOMER_SID" = "df"."CUSTOMER_SID"
                                 AND "dfsi"."DATA_FILE_SID" = "df"."SID"
                                 AND "df"."DELETED" = 0
                                 AND "df"."DATA_TYPE" = "dt1"."TYPE"  
             where "ss1"."SID" = ${alias}."SUBMISSION_SCHEDULE_SID"
             AND "ss1"."CUSTOMER_SID" = ${alias}."CUSTOMER_SID")`
};

export const filesCountSql = (alias: string) => {
     return `(select
      count(df.id) as number_of_files
      from SUBMISSION_SCHEDULE ss1
      left join DATA_FILE_SUMMARY_INFO dfsi on 
                                       dfsi.SUBMISSION_PERIOD_SID =  ${alias}.SID
                                       AND dfsi.CUSTOMER_SID = ${alias}.CUSTOMER_SID
      left join DATA_TYPE dt1 on ss1.DATA_TYPE_SID = dt1.SID
      left join DATA_FILE df on dfsi.CUSTOMER_SID = df.CUSTOMER_SID
                          AND dfsi.DATA_FILE_SID = df.SID
                          AND df.DELETED = 0
                          AND df.DATA_TYPE = dt1.TYPE
      where ss1.SID = ${alias}.SUBMISSION_SCHEDULE_SID
      AND ss1.CUSTOMER_SID= ${alias}.CUSTOMER_SID)`
}
import { Entity, Column, JoinColumn, OneToOne, VirtualColumn, OneToMany } from 'typeorm';
import { CustomerDomainEntity } from '../base/CustomerDomainEntity';
import {
  returnsSubmissionPeriodLineItemView,
  SubmissionPeriodLineItemView
} from './SubmissionPeriodLineItemView';
import {
  reportedFlagSql,
  statusSql,
  fileIdsSql,
  filesCountSql
} from './SubmissionPeriodSql';
import {
  returnsSubmissionSchedule,
  SubmissionSchedule
} from './SubmissionSchedule';
import { ServiceUser, returnsServiceUser } from '../user/ServiceUser';
import { DataFileSummaryInfo } from '../datafile/DataFileSummaryInfo';

export const returnsDataFileSummaryInfo = () => DataFileSummaryInfo;

export const dataFileSummaryInfoInverseSide = (dataFileSummaryInfo) =>
  dataFileSummaryInfo.submissionPeriod;

export const returnsSubmissionPeriod = () => SubmissionPeriod;

@Entity({ name: 'SUBMISSION_PERIOD' })
export class SubmissionPeriod extends CustomerDomainEntity {
  @Column({ name: 'EXPECTED_DATE' })
  expectedDate: Date;

  @Column({ name: 'PERIOD_START_DATE' })
  periodStartDate: Date;

  @Column({ name: 'PERIOD_END_DATE' })
  periodEndDate: Date;

  @Column({ name: 'SUBMISSION_SCHEDULE_SID', select: false })
  submissionScheduleSid: number;

  @Column({ name: 'ON_TIME_OVERRIDE' })
  onTimeOverride: boolean;

  @Column({ name: 'NO_DATA' })
  noData: boolean;

  @Column({ name: 'NO_DATA_REASON' })
  noDataReason: string;

  @Column({ name: 'NO_DATA_CREATE_DATE' })
  noDataCreateDate: Date;

  @Column({ name: 'NO_DATA_SERVICE_USER_SID', select: false })
  noDataServiceUserSid: number;

  @OneToOne(returnsServiceUser)
  @JoinColumn({ name: 'NO_DATA_SERVICE_USER_SID' })
  noDataServiceUser: Promise<ServiceUser>;

  @Column({ name: 'TRACKING_LEVEL' })
  trackingLevel: string;

  @Column({ name: 'EXPECTED_DAY' })
  expectedDay: number;

  @Column({ name: 'WORKING_DAYS' })
  workingDays: string;

  @Column({ name: 'IS_IN_PERIOD_REPORTER' })
  isInPeriodReporter: number;

  @Column({ name: 'DELETED' })
  deleted: boolean;

  @OneToOne(returnsSubmissionSchedule)
  @JoinColumn({ name: 'SUBMISSION_SCHEDULE_SID' })
  submissionSchedule?: Promise<SubmissionSchedule>;

  @VirtualColumn({ query: statusSql })
  status?: string;

  @VirtualColumn({ query: reportedFlagSql })
  reportedFlag: boolean;

  @VirtualColumn( {query : fileIdsSql} )
  fileIds?: string;

  firstFileId?: string;

  firstFileName?: string;

  firstFileCreateDate?: Date;

  @VirtualColumn( {query : filesCountSql} )
  numberOfFiles?: number;

  @OneToMany(returnsDataFileSummaryInfo,dataFileSummaryInfoInverseSide)
  @JoinColumn({ name: 'SID', referencedColumnName: 'submissionPeriodSid' })
  dataFileSummaryInfo?: Promise<DataFileSummaryInfo[]>;

  @OneToOne(returnsSubmissionPeriodLineItemView)
  @JoinColumn({ name: 'SID', referencedColumnName: 'submissionPeriodSid' })
  submissionPeriodLineItemView?: Promise<SubmissionPeriodLineItemView>;

}
import { Customer } from './customer/Customer';
import { Partner } from './partner/Partner';
import { Product } from './product/Product';
import { DynamicAttrs } from './attribute/DynamicAttrs';
import { DynamicAttrMetadata } from './attribute/DynamicAttrMetadata';
import { Sales } from './sales/Sales';
import { Address } from './address/Address';
import { Currency } from './base/Currency';
import { DataFile } from './datafile/DataFile';
import { Country } from './address/Country';
import { SalesMatchInfo } from './sales/SalesMatchInfo';
import { ProductAggr } from './product/ProductAggr';
import { GsNumber } from './partner/GsNumber';
import { Inventory } from './inventory/Inventory';
import { SubmissionPeriod } from './submission/SubmissionPeriod';
import { InventoryQuantity } from './inventory/InventoryQuantity';
import { QuantityType } from './inventory/QuantityType';
import { InventoryPrice } from './inventory/InventoryPrice';
import { UserEvent } from './event/UserEvent';
import { UserSession } from './event/UserSession';
import { DataFileState } from './datafile/DataFileState';
import { ParserAttempt } from './datafile/ParserAttempt';
import { PartnerOverlayView } from './partner/PartnerOverlayView';
import { DataState } from './base/DataState';
import { SubmissionSchedule } from './submission/SubmissionSchedule';
import { DataType } from './base/DataType';
import { SubmissionPeriodLineItemView } from './submission/SubmissionPeriodLineItemView';
import { SubmissionScheduleNotification } from './submission/SubmissionScheduleNotification';
import { ServiceUser } from './user/ServiceUser';
import { AuditEvent } from './event/AuditEvent';
import { SubmissionScheduleAudit } from './submission/SubmissionScheduleAudit';
import { AuditType } from './event/AuditType';
import { DataFileSummaryInfo } from './datafile/DataFileSummaryInfo';

export const entities = [
  Customer,
  GsNumber,
  Partner,
  Product,
  ProductAggr,
  Sales,
  Inventory,
  SubmissionPeriod,
  SubmissionSchedule,
  SubmissionScheduleNotification,
  DataType,
  SubmissionPeriodLineItemView,
  InventoryQuantity,
  QuantityType,
  InventoryPrice,
  SalesMatchInfo,
  Address,
  Country,
  Currency,
  DataFile,
  DataFileState,
  DataState,
  ParserAttempt,
  PartnerOverlayView,
  DynamicAttrs,
  DynamicAttrMetadata,
  UserEvent,
  UserSession,
  ServiceUser,
  AuditEvent,
  SubmissionScheduleAudit,
  AuditType,
  DataFileSummaryInfo
];
export const getDataFileIdSql = (alias: string) => {
    return `SELECT df.id FROM DATA_FILE df WHERE df.SID = ${alias}.DATA_FILE_SID`;
};

export const getDataFileNameSql = (alias: string) => {
    return `SELECT df.file_name FROM DATA_FILE df WHERE df.SID = ${alias}.DATA_FILE_SID`;
};
import { Entity, Column, ManyToOne, JoinColumn, VirtualColumn} from 'typeorm';
import { CustomerDomainEntity } from '../base/CustomerDomainEntity';
import { SubmissionPeriod } from '../submission/SubmissionPeriod';
import { getDataFileIdSql, getDataFileNameSql } from './DataFileSummaryInfoSql';

export const returnsSubmissionPeriods = () => SubmissionPeriod;
export const returnsSummaryInfo = (submissionPeriod) => submissionPeriod.dataFileSummaryInfo;

@Entity({ name: 'DATA_FILE_SUMMARY_INFO' })
export class DataFileSummaryInfo extends CustomerDomainEntity {

    @ManyToOne(returnsSubmissionPeriods,returnsSummaryInfo)
    @JoinColumn({ name: 'SUBMISSION_PERIOD_SID', referencedColumnName:'sid'})
    submissionPeriod: SubmissionPeriod;

    @Column({name:'DATA_FILE_SID'})
    dataFileSid: number;

    @Column({name: 'CUSTOMER_SID'})
    customerSid: number;

    @Column({name:'NUM_SLIS'})
    numberOfPOSLines: number;

    @Column({name:'NUM_ILIS'})
    numberOfInventoryLines: number;

    @Column({name: 'CREATE_DATE'})
    receivedDate: Date;
    
    @Column({ name: 'SUBMISSION_PERIOD_SID', nullable: true })
    submissionPeriodSid: number;

    @VirtualColumn({ query: getDataFileIdSql})
    dataFileId?: string;
    
    @VirtualColumn({ query: getDataFileNameSql})
    dataFileName?: string;
}

import {
  fileIdsSql,
  reportedFlagSql,
  statusSql,
  filesCountSql
} from '../../../../src/domain/submission/SubmissionPeriodSql';

describe('SubmissionPeriodSql Tests', () => {
  test('statusSql', () => {
    const actual = statusSql(`"sp"`);

    expect(actual).toEqual(
      `(select
             CASE WHEN ( "sp"."ON_TIME_OVERRIDE" = 1) 
                  THEN 'On-time'
                  WHEN ( "spli1"."EARLIEST_FILE_SUBMISSION_DATE" < "sp"."EXPECTED_DATE" )
                  THEN 'On-time'
                  WHEN ( ( "sp"."NO_DATA" = 1 ) 
                         AND ( "sp"."NO_DATA_CREATE_DATE" < "sp"."EXPECTED_DATE"))
                  THEN 'On-time'
                  WHEN ( "sp"."EXPECTED_DATE" > SYSTIMESTAMP)
                  THEN 'Pending'
                  ELSE 'Late'
             END
             from SUBMISSION_PERIOD "sp1"
             left join SUBMISSION_PERIOD_LINE_ITEM_V "spli1" on 
                                                     "spli1"."SUBMISSION_PERIOD_SID" = "sp1"."SID"
                                                     AND "spli1"."CUSTOMER_SID" = "sp1"."CUSTOMER_SID"
             where "sp1"."SID" = "sp"."SID"
             AND "sp1"."CUSTOMER_SID" = "sp"."CUSTOMER_SID")`
    );
  });

  
  test('reportedFlagSql', () => {
    const actual = reportedFlagSql(`"sp"`);

    expect(actual).toEqual(
      `(select
             CASE WHEN MAX("sp"."ON_TIME_OVERRIDE") = 1
                  THEN 1
                  WHEN MAX("sp"."NO_DATA") = 1
                  THEN 1
                  WHEN COUNT("df"."ID") > 0
                  THEN 1
                  ELSE 0
             END
             from SUBMISSION_SCHEDULE "ss1"
             left join DATA_FILE_SUMMARY_INFO "dfsi" on 
                                              "dfsi"."SUBMISSION_PERIOD_SID" = "sp"."SID"
                                              AND "dfsi"."CUSTOMER_SID" = "sp"."CUSTOMER_SID"
             left join DATA_TYPE "dt1" on "ss1"."DATA_TYPE_SID" = "dt1"."SID"
             left join DATA_FILE "df" on "dfsi"."CUSTOMER_SID" = "df"."CUSTOMER_SID"
                                 AND "dfsi"."DATA_FILE_SID" = "df"."SID"
                                 AND "df"."DATA_TYPE" = "dt1"."TYPE"  
             where "ss1"."SID" = "sp"."SUBMISSION_SCHEDULE_SID"
             AND "ss1"."CUSTOMER_SID" = "sp"."CUSTOMER_SID")`
    );
  });

  
  test('fileIdsSql', () => {
    const actual = fileIdsSql(`"sp"`);

    expect(actual).toEqual(
      `(select
             listagg("df"."ID",',') within group (ORDER BY "df"."CREATE_DATE")
             from SUBMISSION_SCHEDULE "ss1"
             left join DATA_FILE_SUMMARY_INFO "dfsi" on 
                                              "dfsi"."SUBMISSION_PERIOD_SID" = "sp"."SID"
                                              AND "dfsi"."CUSTOMER_SID" = "sp"."CUSTOMER_SID"
             left join DATA_TYPE "dt1" on "ss1"."DATA_TYPE_SID" = "dt1"."SID"
             left join DATA_FILE "df" on "dfsi"."CUSTOMER_SID" = "df"."CUSTOMER_SID"
                                 AND "dfsi"."DATA_FILE_SID" = "df"."SID"
                                 AND "df"."DELETED" = 0
                                 AND "df"."DATA_TYPE" = "dt1"."TYPE"  
             where "ss1"."SID" = "sp"."SUBMISSION_SCHEDULE_SID"
             AND "ss1"."CUSTOMER_SID" = "sp"."CUSTOMER_SID")`
    );
  });

  test('filesCountSql', () => {
    const actual = filesCountSql(`"sp"`);

    expect(actual).toEqual(
      `(select
      count(df.id) as number_of_files
      from SUBMISSION_SCHEDULE ss1
      left join DATA_FILE_SUMMARY_INFO dfsi on 
                                       dfsi.SUBMISSION_PERIOD_SID =  "sp".SID
                                       AND dfsi.CUSTOMER_SID = "sp".CUSTOMER_SID
      left join DATA_TYPE dt1 on ss1.DATA_TYPE_SID = dt1.SID
      left join DATA_FILE df on dfsi.CUSTOMER_SID = df.CUSTOMER_SID
                          AND dfsi.DATA_FILE_SID = df.SID
                          AND df.DELETED = 0
                          AND df.DATA_TYPE = dt1.TYPE
      where ss1.SID = "sp".SUBMISSION_SCHEDULE_SID
      AND ss1.CUSTOMER_SID= "sp".CUSTOMER_SID)`
    );
  });

});
import 'reflect-metadata';
import {
  dataFileSummaryInfoInverseSide,
  returnsDataFileSummaryInfo,
  returnsSubmissionPeriod,
  SubmissionPeriod
} from '../../../../src/domain/submission/SubmissionPeriod';
import { DataFileSummaryInfo } from '../../../../src/domain/datafile/DataFileSummaryInfo';

describe('Submission Period Unit Tests', () => {

  test('returnsSubmissionPeriod', () => {
    expect(returnsSubmissionPeriod()).toEqual(SubmissionPeriod);
  });

  test('constructor', () => {
    expect(new SubmissionPeriod()).toBeInstanceOf(SubmissionPeriod);
  });

  test('dataFileSummaryInfoInverseSide', () => {
    const dataFileSummaryInfo: DataFileSummaryInfo = new DataFileSummaryInfo();
    expect(dataFileSummaryInfoInverseSide(dataFileSummaryInfo)).toEqual(
      dataFileSummaryInfo.submissionPeriod
    );
  });

  test('returnsDataFileSummaryInfo', () => {
    expect(returnsDataFileSummaryInfo()).toEqual(DataFileSummaryInfo);
  });

});

import { getDataFileIdSql, getDataFileNameSql } from "../../../../src/domain/datafile/DataFileSummaryInfoSql";

describe('DataFileSummaryInfoSql Tests', () => {
    test('getDataFileIdSql', () => {
      const actual = getDataFileIdSql(`"dfsi"`);
  
      expect(actual).toEqual(
        `SELECT df.id FROM DATA_FILE df WHERE df.SID = "dfsi".DATA_FILE_SID`
      );
    });

    test('getDataFileNameSql', () => {
        const actual = getDataFileNameSql(`"dfsi"`);
    
        expect(actual).toEqual(
          `SELECT df.file_name FROM DATA_FILE df WHERE df.SID = "dfsi".DATA_FILE_SID`
        );
      });
}
);
import { returnsSubmissionPeriods, returnsSummaryInfo } from "../../../../src/domain/datafile/DataFileSummaryInfo";
import { SubmissionPeriod } from "../../../../src/domain/submission/SubmissionPeriod";

describe('Data File Summary Info Tests', () => {
    test('returnsSubmissionPeriods', () => {
      expect(returnsSubmissionPeriods()).toEqual(SubmissionPeriod);
    });

    test('returnsSummaryInfo', () => {
        const submissionPeriod = new SubmissionPeriod();
        expect(returnsSummaryInfo(submissionPeriod)).toEqual(
          submissionPeriod.dataFileSummaryInfo
        );
      });
}
)
var storeName = HttpUtility.ParseQueryString(urlAddress).Get("storeName");
Add following Code in Program.CS :
     builder.Services.AddSession(options =>
     {
         options.IdleTimeout = TimeSpan.FromMinutes(30);
     });
app.UseSession();

In Controller use the following Code: 
To get the Session:
 HttpContext.Session.SetString("Name", "John Smith");

To set the Session:
 ViewBag.Name = HttpContext.Session.GetString(sessionName);


star

Wed Dec 27 2023 09:54:50 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Wed Dec 27 2023 09:54:08 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Wed Dec 27 2023 09:24:36 GMT+0000 (Coordinated Universal Time) https://gonghwachun.tistory.com/2

@wheedo

star

Wed Dec 27 2023 06:58:02 GMT+0000 (Coordinated Universal Time)

@dsce

star

Wed Dec 27 2023 06:11:55 GMT+0000 (Coordinated Universal Time)

@dsce

star

Wed Dec 27 2023 06:08:27 GMT+0000 (Coordinated Universal Time)

@dsce

star

Wed Dec 27 2023 05:13:25 GMT+0000 (Coordinated Universal Time)

@dsce

star

Wed Dec 27 2023 01:56:11 GMT+0000 (Coordinated Universal Time)

@wheedo #ubuntu

star

Wed Dec 27 2023 01:51:52 GMT+0000 (Coordinated Universal Time)

@wheedo #ubuntu

star

Wed Dec 27 2023 01:44:50 GMT+0000 (Coordinated Universal Time) https://askubuntu.com/questions/629995/apache-not-able-to-restart

@wheedo #apache2

star

Wed Dec 27 2023 00:15:27 GMT+0000 (Coordinated Universal Time)

@nofil

star

Tue Dec 26 2023 23:54:54 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/5adbf722-17fb-4637-89b0-6a8f144d3de9/task/9d9d6270-839b-42c9-9dce-dfe4eb4b808a/

@Marcelluki

star

Tue Dec 26 2023 22:31:29 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/46460f66-7574-4d1b-a269-8e5c08776b78/

@Marcelluki

star

Tue Dec 26 2023 22:23:19 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/46460f66-7574-4d1b-a269-8e5c08776b78/

@Marcelluki

star

Tue Dec 26 2023 21:49:30 GMT+0000 (Coordinated Universal Time)

@Marcelluki

star

Tue Dec 26 2023 21:28:32 GMT+0000 (Coordinated Universal Time) https://chat.openai.com/?__cf_chl_tk

@eziokittu

star

Tue Dec 26 2023 21:17:30 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/9670babf-c9e3-44c3-8784-d5bc9efc6c34/

@Marcelluki

star

Tue Dec 26 2023 21:03:38 GMT+0000 (Coordinated Universal Time)

@darshcode #sql

star

Tue Dec 26 2023 20:18:23 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/c1f7540a-c695-4912-b5f1-ec8b601257f5/task/57b0a0e5-2f34-4eb6-bc1d-3a747e58b05d/

@Marcelluki

star

Tue Dec 26 2023 19:54:04 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/a6036347-14d2-40cd-93f6-d08a9c2d2ecf/task/f6e5b7ab-9da4-4871-873a-36c4461f0c89/

@Marcelluki

star

Tue Dec 26 2023 19:15:41 GMT+0000 (Coordinated Universal Time)

@darshcode #sql

star

Tue Dec 26 2023 18:11:53 GMT+0000 (Coordinated Universal Time)

@Shira

star

Tue Dec 26 2023 18:10:45 GMT+0000 (Coordinated Universal Time) https://www.bootdey.com/snippets/view/Update-user-profile

@PhobiaCide #javascript

star

Tue Dec 26 2023 16:34:30 GMT+0000 (Coordinated Universal Time) https://github.com/studio-freight/lenis/issues/170

@vishalbhan

star

Tue Dec 26 2023 15:14:46 GMT+0000 (Coordinated Universal Time) https://www.sqlshack.com/different-ways-to-search-for-objects-in-sql-databases/

@darshcode #sql

star

Tue Dec 26 2023 14:43:15 GMT+0000 (Coordinated Universal Time) https://www.sqlshack.com/different-ways-to-search-for-objects-in-sql-databases/

@darshcode #sql

star

Tue Dec 26 2023 14:37:35 GMT+0000 (Coordinated Universal Time)

@darshcode #sql

star

Tue Dec 26 2023 13:31:32 GMT+0000 (Coordinated Universal Time) https://www.addustechnologies.com/blog/build-your-own-blockchain-network

@jonathandaveiam

star

Tue Dec 26 2023 12:53:12 GMT+0000 (Coordinated Universal Time) https://www.programiz.com/java-programming/online-compiler/

@Fahrine

star

Tue Dec 26 2023 09:24:36 GMT+0000 (Coordinated Universal Time) https://edabit.com/challenges/javascript

@msagr

star

Tue Dec 26 2023 08:49:13 GMT+0000 (Coordinated Universal Time) https://edabit.com/challenges/javascript

@msagr

star

Tue Dec 26 2023 07:58:24 GMT+0000 (Coordinated Universal Time)

@nikahafiz #ms.pbi #dax #dax.ranks #dax.all #ranking

star

Tue Dec 26 2023 06:47:06 GMT+0000 (Coordinated Universal Time)

@python

star

Tue Dec 26 2023 03:29:11 GMT+0000 (Coordinated Universal Time)

@nikahafiz #ms.pbi #dax #table

star

Tue Dec 26 2023 03:28:03 GMT+0000 (Coordinated Universal Time)

@nikahafiz #ms.pbi #dax #dax.datatable #dax.integer #dax.string #table

star

Mon Dec 25 2023 20:28:13 GMT+0000 (Coordinated Universal Time) https://chat.openai.com/?__cf_chl_tk

@eziokittu

star

Mon Dec 25 2023 18:40:19 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:39:36 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:39:08 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:38:34 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:38:04 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:37:39 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:37:10 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:36:47 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:36:16 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:35:48 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 18:35:13 GMT+0000 (Coordinated Universal Time)

@thanuj #sql

star

Mon Dec 25 2023 16:37:40 GMT+0000 (Coordinated Universal Time)

@abhikash01

star

Mon Dec 25 2023 16:22:36 GMT+0000 (Coordinated Universal Time)

@abhikash01

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension