<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: VIPS</title>
    <description>The latest articles on DEV Community by VIPS (@bhaveshbhai).</description>
    <link>https://dev.to/bhaveshbhai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F924918%2F9ac72dd4-549c-47af-ba82-3522a60cc73f.png</url>
      <title>DEV Community: VIPS</title>
      <link>https://dev.to/bhaveshbhai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhaveshbhai"/>
    <language>en</language>
    <item>
      <title>Add Vue and Vuetify DataTable</title>
      <dc:creator>VIPS</dc:creator>
      <pubDate>Wed, 26 Apr 2023 12:28:55 +0000</pubDate>
      <link>https://dev.to/bhaveshbhai/add-vue-and-vuetify-datatable-5be1</link>
      <guid>https://dev.to/bhaveshbhai/add-vue-and-vuetify-datatable-5be1</guid>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.bezkoder.com/vue-3-crud/"&gt;https://www.bezkoder.com/vue-3-crud/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;vue create projectName
vue add vuetify
npm install axios
npm install vue-router@4
npm remove @vue/cli-plugin-eslint&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.bezkoder.com/vue-3-crud/"&gt;https://www.bezkoder.com/vue-3-crud/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vuetifyjs.com/en/components/data-tables/basics/"&gt;https://vuetifyjs.com/en/components/data-tables/basics/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create Router.js file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { createWebHistory, createRouter } from "vue-router";

const routes =  [
  {
    path: "/",
    alias: "/Tutorial",
    name: "Tutorial",
    component: () =&amp;gt; import("./components/Tutorial")
  }

];

const router = createRouter({
  history: createWebHistory(),
  routes,
});

export default router;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update Main.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'vuetify/styles'
import { createApp } from 'vue'
import App from './App.vue'
import vuetify from './plugins/vuetify'
import { loadFonts } from './plugins/webfontloader'
import 'vuetify/labs/VDataTable'
loadFonts()

createApp(App)
  .use(vuetify)
  .mount('#app')

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;add http-common.js please update 7017 to our port number&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import axios from "axios";

export default axios.create({
  baseURL: "https://localhost:7017/api", 
  headers: {
    "Content-type": "application/json",
    "Access-Control-Allow-Origin":"*",
  }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update App.vue&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;v-app&amp;gt;
    &amp;lt;v-main&amp;gt;
      &amp;lt;Tutorial/&amp;gt;
    &amp;lt;/v-main&amp;gt;
  &amp;lt;/v-app&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import Tutorial from './components/Tutorial.vue'

export default {
  name: 'App',

  components: {
    Tutorial,
  },

  data: () =&amp;gt; ({
    //
  }),
}
&amp;lt;/script&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create services folder then create TutorialDataService.js file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import http from "../http-common";

class TutorialDataService {
  getAll() {
    return http.get("/Tutorial");
  }

  get(id) {
    return http.get(`/Tutorial/${id}`);
  }

  update(id, data) {
    return http.put(`/Tutorial/${id}`, data);
  }
  create(data) {
    return http.post("/Tutorial", data);
  }
}

export default new TutorialDataService();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update plugin--&amp;gt;vuetify.js to below code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import '@mdi/font/css/materialdesignicons.css'
import 'vuetify/styles'

import { createVuetify } from 'vuetify'
import * as labs from 'vuetify/labs/components'

export default createVuetify({
  components: {
    ...labs,
  },
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create New Componenet Tutorial.vue&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;v-data-table :headers="headers" :items="communities" :sort-by="[{ key: 'surname', order: 'asc' }]" class="elevation-1"&amp;gt;
    &amp;lt;template v-slot:top&amp;gt;
      &amp;lt;v-toolbar flat&amp;gt;
        &amp;lt;v-toolbar-title&amp;gt;My CRUD&amp;lt;/v-toolbar-title&amp;gt;
        &amp;lt;v-divider class="mx-4" inset vertical&amp;gt;&amp;lt;/v-divider&amp;gt;
        &amp;lt;v-spacer&amp;gt;&amp;lt;/v-spacer&amp;gt;
        &amp;lt;v-dialog v-model="dialog" max-width="500px"&amp;gt;
          &amp;lt;template v-slot:activator="{ props }"&amp;gt;
            &amp;lt;v-btn color="primary" dark class="mb-2" v-bind="props"&amp;gt;
              New Item
            &amp;lt;/v-btn&amp;gt;
          &amp;lt;/template&amp;gt;
          &amp;lt;v-card&amp;gt;
            &amp;lt;v-card-title&amp;gt;
              &amp;lt;span class="text-h5"&amp;gt;{{ formTitle }}&amp;lt;/span&amp;gt;
            &amp;lt;/v-card-title&amp;gt;

            &amp;lt;v-card-text&amp;gt;
              &amp;lt;v-container&amp;gt;
                &amp;lt;v-row&amp;gt;
                  &amp;lt;v-col cols="12" sm="6" md="4"&amp;gt;
                    &amp;lt;v-text-field disabled hide-details v-model="editedItem.id" label=""&amp;gt;&amp;lt;/v-text-field&amp;gt;
                  &amp;lt;/v-col&amp;gt;
                  &amp;lt;v-col cols="12" sm="6" md="4"&amp;gt;
                    &amp;lt;v-text-field :rules="['Required']" v-model="editedItem.givenName" label="Given Name"&amp;gt;&amp;lt;/v-text-field&amp;gt;
                  &amp;lt;/v-col&amp;gt;
                  &amp;lt;v-col cols="12" sm="6" md="4"&amp;gt;
                    &amp;lt;v-text-field :rules="['Required']" v-model="editedItem.surname" label="Sur Name"&amp;gt;&amp;lt;/v-text-field&amp;gt;
                  &amp;lt;/v-col&amp;gt;
                  &amp;lt;v-col cols="12" sm="6" md="4"&amp;gt;
                    &amp;lt;v-text-field :rules="['Required']" v-model="editedItem.birthDate" label="Birth Date"&amp;gt;&amp;lt;/v-text-field&amp;gt;
                  &amp;lt;/v-col&amp;gt;
                  &amp;lt;v-col cols="12" sm="6" md="4"&amp;gt;
                    &amp;lt;v-text-field v-model="editedItem.email" label="Email"&amp;gt;&amp;lt;/v-text-field&amp;gt;
                  &amp;lt;/v-col&amp;gt;
                  &amp;lt;v-col cols="12" sm="6" md="4"&amp;gt;
                    &amp;lt;v-text-field v-model="editedItem.phoneNumber" label="Phone Number"&amp;gt;&amp;lt;/v-text-field&amp;gt;
                  &amp;lt;/v-col&amp;gt;
                &amp;lt;/v-row&amp;gt;
              &amp;lt;/v-container&amp;gt;
            &amp;lt;/v-card-text&amp;gt;

            &amp;lt;v-card-actions&amp;gt;
              &amp;lt;v-spacer&amp;gt;&amp;lt;/v-spacer&amp;gt;
              &amp;lt;v-btn color="blue-darken-1" variant="text" @click="close"&amp;gt;
                Cancel
              &amp;lt;/v-btn&amp;gt;
              &amp;lt;v-btn color="blue-darken-1" variant="text" @click="save"&amp;gt;
                Save
              &amp;lt;/v-btn&amp;gt;
            &amp;lt;/v-card-actions&amp;gt;
          &amp;lt;/v-card&amp;gt;
        &amp;lt;/v-dialog&amp;gt;
        &amp;lt;v-dialog v-model="dialogDelete" max-width="500px"&amp;gt;
          &amp;lt;v-card&amp;gt;
            &amp;lt;v-card-title class="text-h5"&amp;gt;Are you sure you want to delete this item?&amp;lt;/v-card-title&amp;gt;
            &amp;lt;v-card-actions&amp;gt;
              &amp;lt;v-spacer&amp;gt;&amp;lt;/v-spacer&amp;gt;
              &amp;lt;v-btn color="blue-darken-1" variant="text" @click="closeDelete"&amp;gt;Cancel&amp;lt;/v-btn&amp;gt;
              &amp;lt;v-btn color="blue-darken-1" variant="text" @click="deleteItemConfirm"&amp;gt;OK&amp;lt;/v-btn&amp;gt;
              &amp;lt;v-spacer&amp;gt;&amp;lt;/v-spacer&amp;gt;
            &amp;lt;/v-card-actions&amp;gt;
          &amp;lt;/v-card&amp;gt;
        &amp;lt;/v-dialog&amp;gt;
      &amp;lt;/v-toolbar&amp;gt;

    &amp;lt;/template&amp;gt;
    &amp;lt;template v-slot:item.actions="{ item }"&amp;gt;
      &amp;lt;v-icon small class="mr-2" @click="editItem(item)"&amp;gt;
        mdi-pencil
      &amp;lt;/v-icon&amp;gt;
    &amp;lt;/template&amp;gt;
    &amp;lt;template v-slot:no-data&amp;gt;
      &amp;lt;v-btn color="primary" @click="initialize"&amp;gt;
        Reset
      &amp;lt;/v-btn&amp;gt;
    &amp;lt;/template&amp;gt;
  &amp;lt;/v-data-table&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import TutorialDataService from '@/services/TutorialDataService'
export default {

  data: () =&amp;gt; ({
    dialog: false,
    dialogDelete: false,
    headers: [
      {
        title: 'Given Name',
        align: 'start',
        sortable: false,
        key: 'givenName',
      },
      { title: 'SurName', key: 'surname' },
      { title: 'Birth Date', key: 'birthDate' },
      { title: 'Email', key: 'email' },
      { title: 'Phone Number', key: 'phoneNumber' },
      { title: 'Actions', key: 'actions', sortable: false },
    ],
    communities: [],
    editedIndex: -1,
    editedItem: {
      id: null,
      givenName: '',
      surname: '',
      birthDate: new Date().toISOString().substr(0, 10),
      email: '',
      phoneNumber: '',
    },

  }),

  computed: {

  },

  watch: {
    dialog(val) {
      val || this.close()
    }
  },

  created() {
    this.initialize()
  },

  methods: {

    initialize() {

    // Call get api

    },


    editItem(item) {
      //call edit api
    },


    close() {
      this.dialog = false
      this.$nextTick(() =&amp;gt; {
        this.editedItem = Object.assign({}, this.defaultItem)
        this.editedIndex = -1
      })
    },

    save() {

      call update api
      this.close()
    },
  },
}
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>vue</category>
      <category>vuetify</category>
      <category>data</category>
      <category>table</category>
    </item>
    <item>
      <title>.net 6 API for PBSA</title>
      <dc:creator>VIPS</dc:creator>
      <pubDate>Wed, 26 Apr 2023 12:10:55 +0000</pubDate>
      <link>https://dev.to/bhaveshbhai/vue-3-withvuetify-3-with-api-51gm</link>
      <guid>https://dev.to/bhaveshbhai/vue-3-withvuetify-3-with-api-51gm</guid>
      <description>&lt;p&gt;Or you can create separate Project for vue.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Migration into API Project.&lt;/li&gt;
&lt;li&gt;Create Return folder under project.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create TutorialReturn.cs file under Return folder.&lt;br&gt;
Below is example. Make sure if may be null then add ?.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create Service folder&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create iterface ITutorialServices.cs file
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
        List&amp;lt;TutorialReturn&amp;gt; GetTutorialList();
        TutorialReturn GetTutorialById(int id);
// Here if you want to return all data then use below one.
        //TblTutorial GetTutorialById(int id);
        int CreateTutorial(TblTutorial Tutorial);
        int UpdateTutorial (TblTutorial Tutorial);
        int DeleteTutorial (int id);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2. Create class as TutorialServices.cs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class TutorialServices : ITutorialServices

    {
        public int CreateTutorial(TblTutorial Tutorial)
        {
            throw new NotImplementedException();
        }

        public int DeleteTutorial(int id)
        {
            throw new NotImplementedException();
        }

        public TutorialReturn GetTutorialById(int id)
        {
            TutorialReturn TutorialReturn = new TutorialReturn();
            try
            {
                using (var db = new PeopleContext())
                {
                   TutorialReturn =  (from x in db.TblTutorials
                                        where x.Id == id
                                        select new TutorialReturn
                                        {
                                            Id = x.Id,
                                            Address = x.Address,
                                            BirthDate = x.BirthDate,
                                            Email = x.Email,
                                            GivenName = x.GivenName,
                                            PhoneNumber = x.PhoneNumber,
                                            Surname = x.Surname
                                        }).FirstOrDefault();
                    return TutorialReturn;
                }

            }
            catch (Exception ex)
            {
                return TutorialReturn;
            }

        }

        //public TblTutorial GetTutorialById(int id)
        //{
        //    try
        //    {
        //        using (var db = new PeopleContext())
        //        {
        //            var result = db.TblTutorials.Where(x =&amp;gt; x.Id == id).FirstOrDefault();

        //            return result;
        //        }

        //    }
        //    catch (Exception ex)
        //    {
        //        return null;
        //    }

        //}

        public List&amp;lt;TutorialReturn&amp;gt; GetTutorialList()
        {
            using (var db = new PeopleContext())
            {
                var lstTutorial = (from x in db.TblTutorials
                                    select new TutorialReturn
                                    {
                                        Id = x.Id,
                                        Address = x.Address,
                                        BirthDate = x.BirthDate,
                                        Email = x.Email,
                                        GivenName = x.GivenName,
                                        PhoneNumber = x.PhoneNumber,
                                        Surname = x.Surname
                                    }).Take(50).ToList();
                return lstTutorial;
            } 
        }

        public int UpdateTutorial(TblTutorial Tutorial)
        {
            if (Tutorial != null)
            {
                using (var udb = new PeopleContext())
                {
                    var update = udb.TblTutorials.Where(o =&amp;gt; o.Id == Tutorial.Id).FirstOrDefault();
                    if (update != null)
                    {
                        update.Surname = Tutorial.Surname;
                        update.GivenName = Tutorial.GivenName;
                        update.Email = Tutorial.Email;
                        update.BirthDate = Tutorial.BirthDate;
                        update.PhoneNumber = Tutorial.PhoneNumber;
                        update.Address = Tutorial.Address;
                        udb.Update(update);
                        udb.SaveChanges();
                    }

                    return Tutorial.Id;
                }
            }
            return Tutorial.Id;
        }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then create New controller as Tutorial&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Route("api/[controller]")]
    [ApiController]
    public class TutorialController : ControllerBase
    {
        private ITutorialServices TutorialServices;

        public TutorialController(ITutorialServices TutorialServices)
        {
            this.TutorialServices = TutorialServices;
        }


        // GET: api/&amp;lt;TutorialController&amp;gt;
        [HttpGet]
        public IEnumerable&amp;lt;TutorialReturn&amp;gt; Get()
        {
            return TutorialServices.GetTutorialList();
        }

        [HttpGet("{id}")]
        public TutorialReturn GetTutorialByID(int id)
        {
            return TutorialServices.GetTutorialById(id);
        }

        // GET api/&amp;lt;TutorialController&amp;gt;/5
        //[HttpGet("{id}")]
        //public TblTutorial GetTutorialbyID(int id)
        //{
        //    return TutorialServices.GetTutorialById(id);
        //}

        // POST api/&amp;lt;TutorialController&amp;gt;
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/&amp;lt;TutorialController&amp;gt;/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] TblTutorial value)
        {
             TutorialServices.UpdateTutorial(value);
        }

        // DELETE api/&amp;lt;TutorialController&amp;gt;/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also add below thing into Program.cs file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Add services to the container.\
builder.Services.AddDbContext&amp;lt;PeopleContext&amp;gt;(options =&amp;gt;
    options.UseSqlServer(builder.Configuration.GetConnectionString("People")));

builder.Services.AddScoped&amp;lt;ITutorialService, TutorialService&amp;gt;();
builder.Services.AddScoped&amp;lt;PeopleContext, PeopleContext&amp;gt;();

builder.Services.AddCors(options =&amp;gt;
{
    options.AddPolicy("AllOrigins",
        builder =&amp;gt;
        {
            builder.AllowAnyHeader()
                           .AllowAnyOrigin()
                          .AllowAnyMethod();
        });
});


app.UseCors("AllOrigins");


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Appsetting.json&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "People": "Data Source=DT13\\SQLEXPRESS2019;Initial Catalog=People;Integrated Security=True;TrustServerCertificate=True;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PeopleContext file replace with below thing&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
    protected readonly IConfiguration Configuration;
    //public PeopleContext()
    //{
    //}

    //public PeopleContext(DbContextOptions&amp;lt;PeopleContext&amp;gt; options)
    //    : base(options)
    //{
    //}
    public PeopleContext(IConfiguration configuration)
    {
        Configuration = configuration;
    }
    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        options.UseSqlServer(Configuration.GetConnectionString("People"));
    }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Updated service with new connection string thing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
    public class TutorialServices : ITutorialServices

    {
        private readonly PeopleContext _dbContext;
        public TutorialServices(PeopleContext dbContext)
        {
            _dbContext = dbContext;
        }


        public TutorialReturn GetTutorialById(int id)
        {

            get data from database

        }

        public List&amp;lt;TutorialReturn&amp;gt; GetTutorialList()
        {
            var lstTutorial = (from x in _dbContext.TblTutorials
                                select new TutorialReturn
                                {
                                    Id = x.Id,
                                    Address = x.Address,
                                    BirthDate = x.BirthDate,
                                    Email = x.Email,
                                    GivenName = x.GivenName,
                                    PhoneNumber = x.PhoneNumber,
                                    Surname = x.Surname
                                }).Take(50).ToList();
            return lstTutorial;

        }

        public int UpdateTutorial(TblTutorial Tutorial)
        {

            var update = _dbContext.TblTutorials.Where(o =&amp;gt; o.Id == Tutorial.Id).FirstOrDefault();
            if (update != null)
            {
                update.Surname = Tutorial.Surname;
                update.GivenName = Tutorial.GivenName;
                update.Email = Tutorial.Email;
                update.BirthDate = Tutorial.BirthDate;
                update.PhoneNumber = Tutorial.PhoneNumber;
                update.Address = Tutorial.Address;
                _dbContext.Update(update);
                _dbContext.SaveChanges();
            }

            return Tutorial.Id;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
