Changeset 8e74e2f


Ignore:
Timestamp:
11/16/20 03:55:10 (2 years ago)
Author:
DimitarSlezenkovski <dslezenkovski@…>
Branches:
master
Children:
db484c9
Parents:
8b13eb2
Message:

Fix bugs, add some more.

Files:
29 edited
2 moved

Legend:

Unmodified
Added
Removed
  • Farmatiko/ClientApp/src/app/admin/admin.component.html

    r8b13eb2 r8e74e2f  
    1212        <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
    1313          <ul class="navbar-nav flex-grow">
    14             <li>Administration panel</li>
     14            <li>Administration panel:</li>
     15            <li>&nbsp;Logged as <p *ngIf="head">{{adminHead.Name}}</p> </li>
     16            <li (click)="logout()" class="btn btn-link"><a>Logout</a></li>
    1517          </ul>
    1618        </div>
     
    1820    </nav>
    1921</header>
    20 <mat-tab-group mat-stretch-tabs>
     22<mat-tab-group mat-stretch-tabs dynamicHeight>
    2123      <mat-tab label="Claiming requests">
    2224        <div class="wrapper">
  • Farmatiko/ClientApp/src/app/admin/admin.component.ts

    r8b13eb2 r8e74e2f  
    77import { EditPharmacyHeadDialogComponent } from '../dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component';
    88import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component';
    9 import { PharmacyHeadDialogComponent } from '../nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component';
     9import { PharmacyHeadDialogComponent } from '../dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component';
     10import { AuthService } from '../shared/services/auth.service';
    1011
    1112
     
    1920  public requests: IPharmacyHeadRequest[] = [];
    2021  public head: IPharmacyHead = {
    21     PharmacyMedicines: null,
    22     Pharmacy: null,
    2322    Email: '',
    2423    Passwd: '',
    2524    Name: ''
    2625  };
     26  public adminHead: IPharmacyHead;
    2727
    28   constructor(private dataService: DataService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router) {
     28  constructor(private dataService: DataService, private authService: AuthService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router) {
    2929
    3030  }
    3131
    3232  ngOnInit(): void {
     33    this.authService.getUser()
     34        .subscribe((data) => {
     35          console.log(data);
     36          this.adminHead = data;
     37        },
     38        (err: any) => console.log(err),
     39        () => console.log('User data retrieved'));
     40
    3341    this.dataService.getPharmacyHeads()
    3442        .subscribe((pHeads: IPharmacyHead[]) => {
     
    3947
    4048    this.dataService.getClaimingRequests()
    41     .subscribe((pRequests: IPharmacyHeadRequest[]) => {
    42       this.requests = pRequests;
    43     },
    44     (err: any) => console.log(err),
    45     () => console.log("PharmacyHead data retrieved"));
     49        .subscribe((pRequests: IPharmacyHeadRequest[]) => {
     50          this.requests = pRequests;
     51        },
     52        (err: any) => console.log(err),
     53        () => console.log("PharmacyHead data retrieved"));
    4654  }
    4755
     
    5765        () => console.log("PharmacyHead inserted"));
    5866    this.head = {
    59       PharmacyMedicines: null,
    60       Pharmacy: null,
    6167      Email: '',
    6268      Passwd: '',
     
    8389    dialogRef.afterClosed().subscribe((editedHead: IPharmacyHead) => {
    8490      if(editedHead){
     91        console.log(editedHead);
    8592        this.heads = this.heads.filter(x => x !== eHead);
    8693        this.heads.push(editedHead);
     
    142149  }
    143150
     151  logout() {
     152    this.authService.logout();
     153  }
     154
    144155  openSnackBar(message: string, action: string) : MatSnackBarRef<SimpleSnackBar> {
    145156    return this.snackBar.open(message, action, {
  • Farmatiko/ClientApp/src/app/app.module.ts

    r8b13eb2 r8e74e2f  
    2626import { EditPharmacyDialogComponent } from './dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component';
    2727import { EditPharmacyHeadDialogComponent } from './dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component';
    28 import { PharmacyHeadDialogComponent } from './nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component';
     28import { PharmacyHeadDialogComponent } from './dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component';
     29import { AddMedicineDialogComponent } from './dialogs/add-medicine-dialog/add-medicine-dialog.component';
     30import { ListMedicinesDialogComponent } from './dialogs/list-medicines-dialog/list-medicines-dialog.component';
    2931
    3032@NgModule({
     
    4446    EditPharmacyDialogComponent,
    4547    EditPharmacyHeadDialogComponent,
    46     PharmacyHeadDialogComponent
     48    PharmacyHeadDialogComponent,
     49    AddMedicineDialogComponent,
     50    ListMedicinesDialogComponent
    4751  ],
    4852  imports: [
  • Farmatiko/ClientApp/src/app/counter/counter.component.css

    r8b13eb2 r8e74e2f  
    1212 
    1313.header {
    14     min-height: 64px;
    1514    padding: 8px 24px 0;
    1615}
  • Farmatiko/ClientApp/src/app/counter/counter.component.html

    r8b13eb2 r8e74e2f  
    22<app-nav-menu></app-nav-menu>
    33
    4 <mat-tab-group mat-stretch-tabs>
     4<mat-tab-group dynamicHeight mat-stretch-tabs>
    55  <mat-tab class="tab" label="Здравствени установи">
    66  <div class="wrapper">
  • Farmatiko/ClientApp/src/app/dashboard/dashboard.component.css

    r8b13eb2 r8e74e2f  
    1515 
    1616.header {
    17     min-height: 64px;
    1817    padding: 8px 24px 0;
    1918}
     
    3130    padding: 1em 0;
    3231}
     32
     33.btns {
     34    display: flex;
     35    flex-direction: row;
     36    justify-content: flex-start;
     37}
     38
     39.btns button {
     40    margin: 0.5em 0.5em 0.5em 0;
     41}
  • Farmatiko/ClientApp/src/app/dashboard/dashboard.component.html

    r8b13eb2 r8e74e2f  
    1313          <ul class="navbar-nav flex-grow">
    1414            <li>Logged as <p *ngIf="head">{{head.Name}}</p> </li>
    15             <li (click)="logout()" class="btn btn-link"><a>Logout</a></li>
    1615          </ul>
    1716        </div>
     
    2019        <mat-menu #menu="matMenu">
    2120          <button mat-menu-item [routerLink]="['/']"><mat-icon>directions</mat-icon>Почетна</button>
     21          <button mat-menu-item (click)="logout()"><mat-icon>exit_to_app</mat-icon>Одјави се</button>
    2222        </mat-menu>
    2323      </div>
     
    2525</header>
    2626
    27 <mat-tab-group mat-stretch-tabs>
     27<mat-tab-group dynamicHeight mat-stretch-tabs>
    2828  <mat-tab class="tab" label="Мои аптеки">
    2929  <div class="wrapper">
     
    8888    <div class="header">
    8989    <h2>Достапни лекови</h2>
    90     <mat-form-field>
     90    <div class="btns">
     91      <button mat-raised-button color="primary" (click)="saveDeletedMedicines()" [disabled]="editedMedicine==false">Зачувај ги промените</button>
     92      <button mat-raised-button color="accent" aria-label="Add medicine" (click)="addMedicine()">Додај нов лек</button>
     93      <button mat-raised-button color="accent" aria-label="Add medicine" (click)="addMedicinesFromList()">Додај постоечки лекови</button>
     94    </div><br/>
     95    <mat-slide-toggle (click)="switchEditMedicineMode()">Edit mode</mat-slide-toggle>
     96   
     97    <mat-form-field *ngIf="!medicinesEditMode">
    9198      <input matInput (keyup)="applyFilterMedicines($event.target.value)" placeholder="Пронајди лек">
    9299    </mat-form-field>
    93       </div>
     100    </div>
    94101      <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="head">
    95102        <thead>
     
    102109            <th>Цена</th>
    103110            <th>Пакување</th>
     111            <th>Контроли</th>
    104112          </tr>
    105113        </thead>
    106114        <tbody>
    107           <tr *ngFor="let medicine of head.PharmacyMedicines">
    108             <td><a (click)="openMedicineDialog(medicine)">{{ medicine.name }}</a></td>
    109             <td>{{ medicine.strength }}</td>
    110             <td>{{ medicine.form }}</td>
    111             <td>{{ medicine.wayOfIssuing }}</td>
    112             <td>{{ medicine.manufacturer }}</td>
    113             <td>{{ medicine.price }}</td>
    114             <td>{{ medicine.packaging }}</td>
    115             <td><a (click)="deleteMedicine(medicine)">Delete</a></td>
     115          <tr *ngFor="let medicine of filteredMedicines">
     116            <td *ngIf="!medicinesEditMode"><a (click)="openMedicineDialog(medicine)">{{ medicine.name }}</a></td>
     117            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.name" name="medname"></mat-form-field></td>
     118            <td *ngIf="!medicinesEditMode">{{ medicine.strength }}</td>
     119            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.strength" name="medstr"></mat-form-field></td>
     120            <td *ngIf="!medicinesEditMode">{{ medicine.form }}</td>
     121            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.form" name="medform"></mat-form-field></td>
     122            <td *ngIf="!medicinesEditMode">{{ medicine.wayOfIssuing }}</td>
     123            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.wayOfIssuing" name="medwayOfIssuing"></mat-form-field></td>
     124            <td *ngIf="!medicinesEditMode">{{ medicine.manufacturer }}</td>
     125            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.manufacturer" name="medmanufacturer"></mat-form-field></td>
     126            <td *ngIf="!medicinesEditMode">{{ medicine.price }}</td>
     127            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.price" name="medprice"></mat-form-field></td>
     128            <td *ngIf="!medicinesEditMode">{{ medicine.packaging }}</td>
     129            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.packaging" name="medpackaging"></mat-form-field></td>
     130            <td>
     131              <button mat-mini-fab color="warn" aria-label="Delete medicine" (click)="deleteMedicine(medicine)">
     132                <mat-icon>delete</mat-icon>
     133              </button>
     134            </td>
    116135          </tr>
    117136      </tbody>
  • Farmatiko/ClientApp/src/app/dashboard/dashboard.component.ts

    r8b13eb2 r8e74e2f  
    99import { ActivatedRoute, Router } from '@angular/router';
    1010import { AuthService } from '../shared/services/auth.service';
     11import { AddMedicineDialogComponent } from '../dialogs/add-medicine-dialog/add-medicine-dialog.component';
     12import { ListMedicinesDialogComponent } from '../dialogs/list-medicines-dialog/list-medicines-dialog.component';
    1113
    1214@Component({
     
    2123  public filteredMedicines: IMedicine[] = [];
    2224  public request: IPharmacyHeadRequest;
     25  editedMedicine: boolean = false;
     26  medicinesEditMode: boolean = false;
    2327
    2428  constructor(private dataService: DataService, private authService: AuthService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute) {
     
    3741        .subscribe((pharmacy: IPharmacy[]) => {
    3842          this.pharmacies = pharmacy;
     43          this.head.Pharmacy.forEach((pharma) => {
     44            this.filteredPharmacies = this.pharmacies = this.pharmacies.filter(x => x == pharma);
     45          });
    3946        },
    4047        (err: any) => console.log(err),
    4148        () => console.log('Pharmacy data retrieved'));
     49    this.filteredMedicines = this.head.PharmacyMedicines;
    4250  }
    4351 
     
    8391  deleteMedicine(medicine: IMedicine){
    8492    this.head.PharmacyMedicines = this.head.PharmacyMedicines.filter(x => x !== medicine);
     93    this.filteredMedicines = this.head.PharmacyMedicines;
     94    this.editedMedicine = true;
     95  }
     96 
     97  saveDeletedMedicines() {
    8598    this.dataService.updatePharmacyHead(this.head)
    86         .subscribe((hd: IPharmacyHead) => {
    87           if(hd) {
    88             this.openSnackBar("Success! Medicine deleted", "OK");
    89           }
    90           else {
    91             this.openSnackBar("Unable to delete Medicine", "Try again");
    92           }
    93         },
    94         (err: any) => console.log(err),
    95         () => console.log('Update sent!'));
     99      .subscribe((hd: IPharmacyHead) => {
     100        if(hd) {
     101          this.openSnackBar("Success! Medicine deleted", "OK");
     102          this.editedMedicine = false;
     103        }
     104        else {
     105          this.openSnackBar("Unable to delete Medicine", "Try again");
     106        }
     107      },
     108      (err: any) => console.log(err),
     109      () => console.log('Update sent!'));
    96110  }
    97111
     
    99113    console.log("applyFilterMedicines works!")
    100114    if(filterValue) {
    101       this.dataService.searchMedicines(filterValue)
    102           .subscribe((medicine: IMedicine[]) => {
    103             this.filteredMedicines = medicine;
    104           },
    105           (err: any) => console.log(err),
    106           () => console.log('Medicine data retrieved'));
     115      this.filteredMedicines = this.filteredMedicines.filter(x => x.name.toLocaleLowerCase().includes(filterValue.toLocaleLowerCase()));
    107116    }
    108117    else {
    109118      this.filteredMedicines = this.head.PharmacyMedicines;
     119    }
     120  }
     121
     122  addMedicine() {
     123    let dialogRef = this.dialog.open(AddMedicineDialogComponent, {
     124      width: 'auto'
     125    });
     126    dialogRef.afterClosed().subscribe((newMedicine: IMedicine) => {
     127      if(newMedicine){
     128        this.head.PharmacyMedicines.push(newMedicine);
     129        this.filteredMedicines = this.head.PharmacyMedicines;
     130        if(this.editedMedicine == false) {
     131          this.editedMedicine = true;
     132        }
     133        this.openSnackBar("Success! Medicine added, please save changes now", "OK");
     134      }
     135      else {
     136        this.openSnackBar("Failed! Please try again", "OK");
     137      }
     138    }, () => this.openSnackBar("Failed! Please try again", "OK"));
     139  }
     140
     141  addMedicinesFromList() {
     142    let dialogRef = this.dialog.open(ListMedicinesDialogComponent, {
     143      width: 'auto',
     144      height: 'auto'
     145    });
     146    dialogRef.afterClosed().subscribe((listMedicines: IMedicine[]) => {
     147      if(listMedicines){
     148        listMedicines.forEach((medicine) => {
     149          this.head.PharmacyMedicines = this.head.PharmacyMedicines.filter(x => x != medicine);
     150          this.head.PharmacyMedicines.push(medicine);
     151          this.filteredMedicines = this.head.PharmacyMedicines;
     152        });
     153        if(this.editedMedicine == false) {
     154          this.editedMedicine = true;
     155        }
     156        this.openSnackBar("Success! Medicines added, please save changes now", "OK");
     157      }
     158      else {
     159        this.openSnackBar("Failed! Please try again", "OK");
     160      }
     161    }, () => this.openSnackBar("Failed! Please try again", "OK"));
     162  }
     163
     164  switchEditMedicineMode() {
     165    this.medicinesEditMode = !this.medicinesEditMode;
     166    if(this.editedMedicine == false) {
     167      this.editedMedicine = true;
    110168    }
    111169  }
     
    117175          .subscribe((pharmacy: IPharmacy[]) => {
    118176            this.filteredPharmacies = pharmacy;
     177            this.head.Pharmacy.forEach((pharma) => {
     178              this.filteredPharmacies = this.filteredPharmacies.filter(x => x == pharma);
     179            });
    119180          },
    120181          (err: any) => console.log(err),
     
    123184    else {
    124185      this.filteredPharmacies = this.pharmacies;
    125     }   
     186    }
    126187  }
    127188
     
    138199
    139200  openEditPharmacyDialog(pharmacy: IPharmacy): void {
     201    console.log(pharmacy);
    140202    let dialogRef = this.dialog.open(EditPharmacyDialogComponent, {
    141203      width: '450px',
  • Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.html

    r8b13eb2 r8e74e2f  
    1313    <div class="form-group">
    1414      <label>Location</label>
    15       <input type="text" class="form-control" [(ngModel)]="pharmacy.location" #email="ngModel" required />
     15      <input type="text" class="form-control" name="location" [(ngModel)]="pharmacy.location" #location="ngModel" required />
    1616      <div class="alert alert-danger" [hidden]="pharmacy.location">Location is required</div>
    1717    </div>
    1818    <div class="form-group">
    1919        <label>Work 24/7</label>
    20         <br />
    2120        <div class="radio">
    2221          <label>
    23             <input type="radio" name="workAllTime" [(ngModel)]="pharmacy.workAllTime" #workAllTime="ngModel" value="true" required />
    24             Да
    25           </label>
    26         </div>
    27         <div class="radio">
    28           <label>
    29             <input type="radio" name="workAllTime" [(ngModel)]="pharmacy.workAllTime" #workAlltime="ngModel" value="false" required />
    30             Не
     22            <input type="checkbox" name="workAllTime" [(ngModel)]="pharmacy.workAllTime" #workAllTime="ngModel" [value]="pharmacy.workAllTime"/>
    3123          </label>
    3224        </div>
  • Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.ts

    r8b13eb2 r8e74e2f  
    1919
    2020  save() {
     21    console.log(this.pharmacy);
    2122    this.dialogRef.close(this.pharmacy);
    2223  }
  • Farmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.html

    r8b13eb2 r8e74e2f  
    2121      <tbody>
    2222        <tr *ngFor="let medicine of filteredListMedicines">
    23           <td>>{{ medicine.name }}</td>
     23          <td>{{ medicine.name }}</td>
    2424          <td>{{ medicine.strength }}</td>
    2525          <td>{{ medicine.form }}</td>
  • Farmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.ts

    r8b13eb2 r8e74e2f  
    1010})
    1111export class ListMedicinesDialogComponent implements OnInit {
    12   medicines: IMedicine[];
     12  medicines: IMedicine[] = [];
    1313  listMedicines: IMedicine[];
    1414  filteredListMedicines: IMedicine[];
     
    3030      this.medicines = this.medicines.filter(x => x != selectedMedicine);
    3131    }
    32     else {
    33       this.medicines.push(selectedMedicine);
    34     }
     32    this.medicines.push(selectedMedicine);
    3533  }
    3634
  • Farmatiko/ClientApp/src/app/home/home.component.css

    r8b13eb2 r8e74e2f  
    1212
    1313.header {
    14   min-height: 64px;
    1514  padding: 8px 24px 0;
    1615}
  • Farmatiko/ClientApp/src/app/home/home.component.html

    r8b13eb2 r8e74e2f  
    11<app-nav-menu></app-nav-menu>
    22
    3 <mat-tab-group mat-stretch-tabs>
     3<mat-tab-group dynamicHeight mat-stretch-tabs>
    44  <mat-tab class="tab" label="Лекови">
    55  <div class="wrapper">
  • Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.html

    r8b13eb2 r8e74e2f  
    2626            <a class="nav-link text-dark" [routerLink]="['/koronavirus']">Коронавирус</a>
    2727          </li>
     28          <li *ngIf="loggedIn">
     29            <button mat-button [matMenuTriggerFor]="menu"><mat-icon>more_vert</mat-icon></button>
     30            <mat-menu #menu="matMenu">
     31              <button mat-menu-item [routerLink]="['/dashboard']"><mat-icon>dashboard</mat-icon>Контролна табла</button>
     32              <button mat-menu-item (click)="logout()"><mat-icon>exit_to_app</mat-icon>Одјави се</button>
     33            </mat-menu>
     34          </li>
    2835        </ul>
    2936      </div>
  • Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.ts

    r8b13eb2 r8e74e2f  
    1 import { Component } from '@angular/core';
     1import { Component, OnInit } from '@angular/core';
     2import { AuthService } from '../shared/services/auth.service';
    23
    34@Component({
     
    67  styleUrls: ['./nav-menu.component.css']
    78})
    8 export class NavMenuComponent {
     9export class NavMenuComponent implements OnInit {
    910  isExpanded = false;
     11  loggedIn: boolean = false;
     12
     13  constructor(private authService: AuthService) {
     14   
     15  }
     16 
     17  ngOnInit(): void {
     18    if(localStorage.getItem('access_token')) {
     19      this.loggedIn = true;
     20    }
     21  }
     22
     23  logout() {
     24    this.authService.logout();
     25  }
    1026
    1127  collapse() {
  • Farmatiko/ClientApp/src/custom-theme.scss

    r8b13eb2 r8e74e2f  
    1414// hue. Available color palettes: https://material.io/design/color/
    1515$Farmatiko-primary: mat-palette($mat-green);
    16 $Farmatiko-accent: mat-palette($mat-pink, A200, A100, A400);
     16$Farmatiko-accent: mat-palette($mat-cyan);
    1717
    1818// The warn palette is optional (defaults to red).
  • Farmatiko/ClientApp/src/index.html

    r8b13eb2 r8e74e2f  
    77
    88    <meta name="viewport" content="width=device-width, initial-scale=1" />
    9     <link rel="icon" type="image/x-icon" href="favicon.ico" />
     9    <link rel="icon" type="image/x-icon" href="./favicon.ico" />
    1010      <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
    1111    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  • Farmatiko/Controllers/FarmatikoController.cs

    r8b13eb2 r8e74e2f  
    2424        {
    2525            //_JSONservice.DownloadPharmaciesExcel();
    26             //_JSONservice.GetProcessedHealthcareWorkersFromJSON();
     26            _JSONservice.GetProcessedHealthcareWorkersFromJSON();
    2727            //_JSONservice.GetProcessedHealthFacilitiesFromJSON();
    2828            //_JSONservice.GetProcessedMedicinesFromJSON();
    29             _JSONservice.GetProcessedPandemicsFromJSONApi();
     29            //_JSONservice.GetProcessedPandemicsFromJSONApi();
    3030        }
    3131        [HttpGet]
  • Farmatiko/Controllers/PharmacyHeadController.cs

    r8b13eb2 r8e74e2f  
    3030        [HttpGet]
    3131        [Route("api/pharmacyhead/{Id}")]
    32         public async Task<PharmacyHead> GetPharmacyHeadById([FromRoute]int Id)
     32        public async Task<PharmacyHead> GetPharmacyHeadById([FromRoute] int Id)
    3333        {
    3434            var Phead = await _PHService.GetPharmacyHeadByIdAsync(Id);
     
    3636        }
    3737        //POST
    38 /*
    39         [HttpPost]
    40         [Route("api/pharmacyhead/add")]
    41         public async Task<IActionResult> AddPharmacyHead([FromBody] PharmacyHead pharmacyHead)
    42         {
    43             bool Success = await _PHService.Add(pharmacyHead);
    44             return Ok(Success);
    45         }*/
     38        /*
     39                [HttpPost]
     40                [Route("api/pharmacyhead/add")]
     41                public async Task<IActionResult> AddPharmacyHead([FromBody] PharmacyHead pharmacyHead)
     42                {
     43                    bool Success = await _PHService.Add(pharmacyHead);
     44                    return Ok(Success);
     45                }*/
    4646
    4747        /*[HttpPost]
     
    4949        public async Task<int> Login([FromBody]PharmacyHead pharmacyHead)
    5050        {
    51             return await _PHService.Login(pharmacyHead);
     51            return await _PHService.Login(pharmacyHead); 
    5252        }*/
    5353        [HttpPut]
    5454        [Route("api/pharmacyhead/update")]
    55         public async Task UpdatePharmacyHead([FromBody]PharmacyHead pharmacyHead)
     55        public async Task UpdatePharmacyHead([FromBody] PharmacyHead pharmacyHead)
    5656        {
    5757            await _PHService.UpdatePharmacyHead(pharmacyHead);
     
    5959        [HttpPost]
    6060        [Route("api/pharmacyhead/requests")]
    61         public async Task<IActionResult> ClaimPharmacy([FromBody]RequestPharmacyHead pharmacy)
     61        public async Task<IActionResult> ClaimPharmacy([FromBody] RequestPharmacyHead pharmacy)
    6262        {
    6363            bool Success = await _PHService.ClaimPharmacy(pharmacy);
     
    7878            return Ok(Success);
    7979        }
    80        
     80
    8181    }
    8282}
  • FarmatikoData/FarmatikoDataContext.cs

    r8b13eb2 r8e74e2f  
    77    {
    88        public FarmatikoDataContext(DbContextOptions options) : base(options) { }
    9        
     9
    1010
    1111        public virtual DbSet<HealthFacility> HealthFacilities { get; set; }
     
    1818        public virtual DbSet<User> Users { get; set; }
    1919        public virtual DbSet<PharmacyHeadMedicine> PharmacyHeadMedicines { get; set; }
    20        
     20
    2121        protected override void OnModelCreating(ModelBuilder modelBuilder)
    2222        {
     23            modelBuilder.UseSerialColumns();
     24
    2325            modelBuilder.Entity<PharmacyHead>()
    2426                .ToTable("PharmacyHeads");
     
    2931            modelBuilder.Entity<Pharmacy>()
    3032                .ToTable("Pharmacies");
     33
     34            modelBuilder.Entity<Medicine>()
     35                .Property(x => x.Id)
     36                .HasIdentityOptions(startValue: 1);
     37
     38            modelBuilder.Entity<Pharmacy>()
     39                .Property(x => x.Id)
     40                .HasIdentityOptions(startValue: 1);
     41
     42            modelBuilder.Entity<PharmacyHead>()
     43                .Property(x => x.Id)
     44                .HasIdentityOptions(startValue: 1);
     45
     46            modelBuilder.Entity<PharmacyHeadMedicine>()
     47                .Property(x => x.Id)
     48                .HasIdentityOptions(startValue: 1);
     49
     50            modelBuilder.Entity<RequestPharmacyHead>()
     51                .Property(x => x.Id)
     52                .HasIdentityOptions(startValue: 1);
     53
     54            modelBuilder.Entity<User>()
     55                .Property(x => x.Id)
     56                .HasIdentityOptions(startValue: 1);
    3157
    3258            modelBuilder.Entity<PharmacyHeadMedicine>()
     
    4773                .HasForeignKey(k => k.PheadId);
    4874
    49             /*
    50                 modelBuilder.Entity<CarDetails>()
    51             .ToTable("CarDetails");
    5275
    53         modelBuilder.Entity<CarDetails>()
    54             .Property(x => x.Type)
    55             .HasConversion<int>();
    56 
    57         modelBuilder.Entity<CarDetails>()
    58             .HasMany(x => x.ImageUrls)
    59             .WithOne(y => y.Car)
    60             .HasForeignKey(y => y.CarId);                 
    61              */
    62 
    63             /*modelBuilder.Entity<PharmacyHead>()
    64                 .HasMany(x => x.PharmaciesList);*/
    6576
    6677            base.OnModelCreating(modelBuilder);
  • FarmatikoData/FarmatikoRepo/PHRepo.cs

    r8b13eb2 r8e74e2f  
    5050            EditedPHead.PHMedicineList = pharmacyHead.PHMedicineList;
    5151            //_context.Entry<PharmacyHead>(Phead).State = EntityState.Detached;
    52             Phead = EditedPHead;
     52            //Phead = EditedPHead;
    5353            await _context.SaveChangesAsync();
    5454        }
  • FarmatikoData/FarmatikoRepo/Repository.cs

    r8b13eb2 r8e74e2f  
    4545            var Medicines = await _context.Medicines.Select(x => new Medicine
    4646            {
     47                Id = x.Id,
    4748                Name = x.Name,
    4849                Strength = x.Strength,
     
    268269            return phmeds;
    269270        }
     271
     272        public async Task AddUser(User user)
     273        {
     274            await _context.Users.AddAsync(user);
     275            await _context.SaveChangesAsync();
     276        }
    270277    }
    271278}
  • FarmatikoData/FarmatikoRepoInterfaces/IRepository.cs

    r8b13eb2 r8e74e2f  
    4545        User GetRole(string userName);
    4646        ICollection<PharmacyHeadMedicine> GetPHMedicines(string email);
     47        Task AddUser(User user);
    4748    }
    4849}
  • FarmatikoData/Migrations/20201115222819_InitialMigration.Designer.cs

    r8b13eb2 r8e74e2f  
    1111{
    1212    [DbContext(typeof(FarmatikoDataContext))]
    13     [Migration("20201111183247_InitialMigration")]
     13    [Migration("20201115222819_InitialMigration")]
    1414    partial class InitialMigration
    1515    {
     
    1818#pragma warning disable 612, 618
    1919            modelBuilder
    20                 .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
    21                 .HasAnnotation("ProductVersion", "3.1.6")
     20                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn)
     21                .HasAnnotation("ProductVersion", "3.1.10")
    2222                .HasAnnotation("Relational:MaxIdentifierLength", 63);
    2323
     
    2727                        .ValueGeneratedOnAdd()
    2828                        .HasColumnType("integer")
    29                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     29                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    3030
    3131                    b.Property<string>("Address")
     
    6767                        .ValueGeneratedOnAdd()
    6868                        .HasColumnType("integer")
    69                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     69                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    7070
    7171                    b.Property<string>("Branch")
     
    101101                        .ValueGeneratedOnAdd()
    102102                        .HasColumnType("integer")
    103                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     103                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     104                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    104105
    105106                    b.Property<DateTime>("CreatedOn")
     
    149150                        .ValueGeneratedOnAdd()
    150151                        .HasColumnType("integer")
    151                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     152                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    152153
    153154                    b.Property<long>("ActiveGlobal")
     
    192193                        .ValueGeneratedOnAdd()
    193194                        .HasColumnType("integer")
    194                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     195                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     196                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    195197
    196198                    b.Property<string>("Address")
     
    230232                        .ValueGeneratedOnAdd()
    231233                        .HasColumnType("integer")
    232                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     234                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     235                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    233236
    234237                    b.Property<DateTime>("CreatedOn")
     
    270273
    271274                    b.Property<int>("Id")
    272                         .HasColumnType("integer");
     275                        .HasColumnType("integer")
     276                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'");
    273277
    274278                    b.HasKey("PheadId", "MedicineId");
     
    284288                        .ValueGeneratedOnAdd()
    285289                        .HasColumnType("integer")
    286                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     290                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     291                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    287292
    288293                    b.Property<DateTime>("CreatedOn")
     
    312317                        .ValueGeneratedOnAdd()
    313318                        .HasColumnType("integer")
    314                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     319                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     320                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    315321
    316322                    b.Property<DateTime>("CreatedOn")
     
    321327
    322328                    b.Property<string>("Email")
    323                         .HasColumnType("text");
    324 
    325                     b.Property<string>("Name")
     329                        .IsRequired()
     330                        .HasColumnType("text");
     331
     332                    b.Property<string>("Name")
     333                        .IsRequired()
    326334                        .HasColumnType("text");
    327335
    328336                    b.Property<string>("Password")
     337                        .IsRequired()
    329338                        .HasColumnType("text");
    330339
  • FarmatikoData/Migrations/20201115222819_InitialMigration.cs

    r8b13eb2 r8e74e2f  
    1414                {
    1515                    Id = table.Column<int>(nullable: false)
    16                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
    17                     CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
     16                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
     17                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql:"now()"),
    1818                    DeletedOn = table.Column<DateTime>(nullable: true),
    1919                    Name = table.Column<string>(nullable: false),
     
    3434                {
    3535                    Id = table.Column<int>(nullable: false)
    36                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
     36                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
    3737                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
    3838                    DeletedOn = table.Column<DateTime>(nullable: true),
     
    5656                {
    5757                    Id = table.Column<int>(nullable: false)
    58                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
     58                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
    5959                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
    6060                    DeletedOn = table.Column<DateTime>(nullable: true),
     
    7373                {
    7474                    Id = table.Column<int>(nullable: false)
    75                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
     75                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
    7676                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
    7777                    DeletedOn = table.Column<DateTime>(nullable: true),
     
    9191                {
    9292                    Id = table.Column<int>(nullable: false)
    93                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
     93                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
    9494                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
    9595                    DeletedOn = table.Column<DateTime>(nullable: true),
     
    115115                {
    116116                    Id = table.Column<int>(nullable: false)
    117                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
     117                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
    118118                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
    119119                    DeletedOn = table.Column<DateTime>(nullable: true),
     
    143143                {
    144144                    Id = table.Column<int>(nullable: false)
    145                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
    146                     CreatedOn = table.Column<DateTime>(nullable: false),
     145                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
     146                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
    147147                    DeletedOn = table.Column<DateTime>(nullable: true),
    148148                    Name = table.Column<string>(nullable: false),
     
    195195                {
    196196                    Id = table.Column<int>(nullable: false)
    197                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
     197                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
    198198                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
    199199                    DeletedOn = table.Column<DateTime>(nullable: true),
  • FarmatikoData/Migrations/FarmatikoDataContextModelSnapshot.cs

    r8b13eb2 r8e74e2f  
    1616#pragma warning disable 612, 618
    1717            modelBuilder
    18                 .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
    19                 .HasAnnotation("ProductVersion", "3.1.6")
     18                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn)
     19                .HasAnnotation("ProductVersion", "3.1.10")
    2020                .HasAnnotation("Relational:MaxIdentifierLength", 63);
    2121
     
    2525                        .ValueGeneratedOnAdd()
    2626                        .HasColumnType("integer")
    27                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     27                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    2828
    2929                    b.Property<string>("Address")
     
    6565                        .ValueGeneratedOnAdd()
    6666                        .HasColumnType("integer")
    67                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     67                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    6868
    6969                    b.Property<string>("Branch")
     
    9999                        .ValueGeneratedOnAdd()
    100100                        .HasColumnType("integer")
    101                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     101                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     102                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    102103
    103104                    b.Property<DateTime>("CreatedOn")
     
    147148                        .ValueGeneratedOnAdd()
    148149                        .HasColumnType("integer")
    149                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     150                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    150151
    151152                    b.Property<long>("ActiveGlobal")
     
    190191                        .ValueGeneratedOnAdd()
    191192                        .HasColumnType("integer")
    192                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     193                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     194                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    193195
    194196                    b.Property<string>("Address")
     
    228230                        .ValueGeneratedOnAdd()
    229231                        .HasColumnType("integer")
    230                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     232                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     233                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    231234
    232235                    b.Property<DateTime>("CreatedOn")
     
    268271
    269272                    b.Property<int>("Id")
    270                         .HasColumnType("integer");
     273                        .HasColumnType("integer")
     274                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'");
    271275
    272276                    b.HasKey("PheadId", "MedicineId");
     
    282286                        .ValueGeneratedOnAdd()
    283287                        .HasColumnType("integer")
    284                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     288                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     289                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    285290
    286291                    b.Property<DateTime>("CreatedOn")
     
    310315                        .ValueGeneratedOnAdd()
    311316                        .HasColumnType("integer")
    312                         .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
     317                        .HasAnnotation("Npgsql:IdentitySequenceOptions", "'1', '1', '', '', 'False', '1'")
     318                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
    313319
    314320                    b.Property<DateTime>("CreatedOn")
     
    319325
    320326                    b.Property<string>("Email")
    321                         .HasColumnType("text");
    322 
    323                     b.Property<string>("Name")
     327                        .IsRequired()
     328                        .HasColumnType("text");
     329
     330                    b.Property<string>("Name")
     331                        .IsRequired()
    324332                        .HasColumnType("text");
    325333
    326334                    b.Property<string>("Password")
     335                        .IsRequired()
    327336                        .HasColumnType("text");
    328337
  • FarmatikoData/Models/PharmacyHead.cs

    r8b13eb2 r8e74e2f  
    2222        public string Password { get; set; }
    2323
    24 
    2524        [JsonProperty("PharmacyMedicines")]
    2625        public List<Medicine> MedicineList { get; set; }
  • FarmatikoData/Models/User.cs

    r8b13eb2 r8e74e2f  
    22using System;
    33using System.Collections.Generic;
     4using System.ComponentModel.DataAnnotations;
    45using System.Text;
    56
     
    1314            PharmacyHead
    1415        }
     16        [Required]
    1517        public string Name { get; set; }
     18        [Required]
    1619        public string Email { get; set; }
     20        [Required]
    1721        public string Password { get; set; }
    1822        public Role UserRole { get; set; }
  • FarmatikoServices/Services/PHService.cs

    r8b13eb2 r8e74e2f  
    55using System.Collections.Generic;
    66using System.Linq;
    7 using System.Text;
    87using System.Threading.Tasks;
    98
     
    6463                var phead = _iPHRepo.GetPharmacyHead(pharmacyHead.Email);
    6564
    66                 if (pharmacyHead.PharmaciesList.Count() == 0)
    67                     pharmacyHead.PharmaciesList = null;
     65                /*if (pharmacyHead.PharmaciesList.Count() == 0)
     66                    pharmacyHead.PharmaciesList = null;*/
    6867
    6968
    7069                phead.PHMedicineList = _repository.GetPHMedicines(phead.Email);
    7170
    72                 if (phead.MedicineList != pharmacyHead.MedicineList || phead != pharmacyHead)
     71                if (phead.MedicineList != pharmacyHead.MedicineList)
    7372                {
    7473                    phead.MedicineList = pharmacyHead.MedicineList;
     
    8382                        return;
    8483                    }
    85                     foreach (var med in phead.MedicineList)
    86                     {
    87                         med.Id++;
    88                         var PHMObj = phead.PHMedicineList.Select(x => new PharmacyHeadMedicine
     84                    List<PharmacyHeadMedicine> PHMList = new List<PharmacyHeadMedicine>();
     85                    if (phead.PHMedicineList == pharmacyHead.PHMedicineList)
     86                    {
     87                        foreach (var med in phead.MedicineList)
    8988                        {
    90                             PheadId = x.PheadId,
    91                             Head = x.Head,
    92                             MedicineId = x.MedicineId,
    93                             Medicine = x.Medicine
    94                         }).Where(x => x.MedicineId == med.Id).Single();
    95                         list.Add(PHMObj);
     89                            //list = phead.PHMedicineList.ToList();
     90
     91                            var PHMObj = phead.PHMedicineList.Select(x => new PharmacyHeadMedicine
     92                            {
     93                                Id = x.Id,
     94                                PheadId = x.PheadId,
     95                                Head = x.Head,
     96                                MedicineId = x.MedicineId,
     97                                Medicine = x.Medicine
     98                            }).Where(x => x.MedicineId == med.Id).Single();
     99                            if (PHMObj == null || PHMObj == default)
     100                                break;
     101                            if (PHMObj.MedicineId == med.Id)
     102                                list.Add(PHMObj);
     103
     104                        }
     105
     106                        phead.PHMedicineList = list;
    96107                    }
    97108
    98                     phead.PHMedicineList = list;
    99 
    100109                    await _iPHRepo.UpdatePharmacyHead(phead);
     110                }
     111                else if (!phead.Equals(pharmacyHead))
     112                {
     113                    await _iPHRepo.UpdatePharmacyHead(pharmacyHead);
    101114                }
    102115                else throw new Exception("Cannot update pharmacy head since there was no changes.");
     
    154167                if (user.UserRole.ToString().Equals("Admin"))
    155168                {
    156                     var Admin = new
     169                    var Admin = new PharmacyHead()
    157170                    {
    158171                        Id = user.Id,
    159172                        Email = user.Email,
    160173                        Name = user.Name,
    161                         Passwd = user.Password,
    162                         MedicineList = PHMedicines,
     174                        Password = user.Password,
    163175                        PharmaciesList = Phead.PharmaciesList
    164176                    };
     
    167179                }
    168180
    169                 if (PheadPharms.Count() > 0)
    170                     Phead.MedicineList = PHMedicineList;
     181                if (PheadPharms.Count() > 0 || PheadPharms != null)
     182                    Phead.PharmaciesList = PheadPharms;
    171183                else Phead.PharmaciesList = pharmacies;
    172184
    173                 if (Phead.PHMedicineList.Count() > 0)
     185                if (Phead.PHMedicineList.Count() > 0 || Phead.PHMedicineList != null)
    174186                {
    175187                    foreach (var med in Medicines)
    176188                    {
    177                         var PHMObj = Phead.PHMedicineList.Select(x => new PharmacyHeadMedicine
     189
     190                        var PHMObj = Phead.PHMedicineList.Where(x => x.MedicineId == med.Id).SingleOrDefault();
     191                        if (PHMObj == null)
    178192                        {
    179                             PheadId = x.PheadId,
    180                             Head = x.Head,
    181                             MedicineId = x.MedicineId,
    182                             Medicine = x.Medicine
    183                         }).Where(x => x.MedicineId == med.Id).SingleOrDefault();
    184                         if (PHMObj == null || PHMObj == default)
    185                             break;
     193                            continue;
     194                        }
     195                        var phm = Phead.MedicineList;
    186196                        if (PHMObj.MedicineId == med.Id)
    187197                        {
    188                             Medicine medicine = new Medicine(med.Name, med.Strength, med.Form, med.WayOfIssuing, med.Manufacturer, med.Price, med.Packaging);
     198                            var medicine = new Medicine()
     199                            {
     200                                Id = med.Id,
     201                                Name = med.Name,
     202                                Strength = med.Strength,
     203                                Form = med.Form,
     204                                WayOfIssuing = med.WayOfIssuing,
     205                                Manufacturer = med.Manufacturer,
     206                                Price = med.Price,
     207                                Packaging = med.Packaging
     208                            };
    189209                            PHMedicineList.Add(medicine);
    190210                        }
  • FarmatikoServices/Services/Service.cs

    r8b13eb2 r8e74e2f  
    128128
    129129        // Ovaa kontrola ja ima samo admin
     130        public User MakeUser(PharmacyHead head)
     131        {
     132            var users = _repository.GetUsers();
     133           
     134            User user = new User()
     135            {
     136                Name = head.Name,
     137                Password = head.Password,
     138                Email = head.Email,
     139                UserRole = User.Role.PharmacyHead
     140            };
     141            return user;
     142        }
    130143        public async Task AddPharmacyHead(PharmacyHead pharmacyHead)
    131144        {
    132145            if (pharmacyHead != null)
    133146            {
    134                 /*var Medicines = await _repository.GetMedicinesAsync();
    135                 foreach (var med in Medicines)
    136                 {
    137                     pharmacyHead.MedicineList.Add(med);
    138                 }*/
    139                
     147                var user = MakeUser(pharmacyHead);
     148                await _repository.AddUser(user);               
    140149                await _repository.AddPharmacyHead(pharmacyHead);
    141150            }
Note: See TracChangeset for help on using the changeset viewer.