import React, { Component } from 'react';
import { Container, Segment, Item, Button, Grid } from 'semantic-ui-react';
import { connect } from 'react-redux';
import moment from 'moment';

import AddNewsForm from '../forms/AddNewsForm';
import EditNewsForm from '../forms/EditNewsForm';

import { getNews, deleteNews, setSelectedNews } from '../../actions/news';

import './News.css';

class News extends Component {
  componentWillMount() {
    this.props.getNews();
  }

  renderNews() {
    return this.props.news.map(item => (
      <Item key={item.id}>
        <Item.Content>
          <Item.Header
            style={{ fontSize: '2em', width: '100%' }}
          >
            <Grid>
              <Grid.Column floated='center' width={12}>
                {item.title}
              </Grid.Column>
              { this.props.user.role === 'Staff' ?
              <Grid.Column floated='right' width={4}>
                <EditNewsForm
                  onClick={() => {
                    this.props.setSelectedNews(item)
                  }}
                />
                <Button
                  compact
                  color='red'
                  size='mini'
                  onClick={() => this.props.deleteNews(item)}
                >
                  Delete
                </Button>
              </Grid.Column>
              : null }
            </Grid>
          </Item.Header>
          <Item.Description className='news-text' style={{ fontSize: '1.33em' }}>
            {this.renderMultiLine(item.text)}
          </Item.Description>
          <Item.Extra>
            <Grid>
              <Grid.Row className='news-extra'>
                <Grid.Column floated='left' width={10}>
                  <p> Készült: {moment(item.created_at).format('LLLL')} </p>
                  <p> Szerkesztve: {moment(item.updated_at).format('LLLL')}</p>
                </Grid.Column>
                <Grid.Column floated='right' width={5}>
                  <p> Írta: <strong>{item.author}</strong></p>
                  {/* TODO get the edited by name */}
                  <p> Szerkesztette: {item.last_update_by}</p>
                </Grid.Column>
              </Grid.Row>
            </Grid>
          </Item.Extra>
        </Item.Content>
      </Item>
    ));
  }

  renderMultiLine(text) {
    const strings = text.split('\n');
    return strings.map(string => <p>{string}</p>);
  }

  render() {
    return (
      <div>
        <Segment vertical>
          {/*  { this.props.user.is_superuser ? <AddNewsForm /> : ''} */}
          <Container text textAlign='center'>
            {this.props.user.role === 'Staff' ?
              <AddNewsForm />
              :
              null}
            <Item.Group divided>
              {this.renderNews()}
            </Item.Group>
          </Container>
        </Segment>
      </div>
    );
  }
}


const mapStateToProps = ({ news, user }) => ({ news, user });

export default connect(mapStateToProps, { getNews, deleteNews, setSelectedNews })(News);