Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/02/16 12:35:30 (8 years ago)
Author:
jlodewyc
Message:

#2582 final commit / end of internship

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Controllers/OkbManagementController.cs

    r13862 r13871  
    22using HeuristicLab.Clients.Hive.WebJobManager.Services.Imports;
    33using HeuristicLab.Clients.Hive.WebJobManager.ViewModels;
     4using HeuristicLab.Common;
     5using HeuristicLab.Optimization;
    46using Microsoft.AspNetCore.Http;
    57using Microsoft.AspNetCore.Mvc;
    68using System;
     9using System.Collections.Generic;
     10using System.IO;
     11using System.Threading.Tasks;
    712
    813namespace HeuristicLab.Clients.Hive.WebJobManager.Controllers
    914{
    10     public class OkbManagementController: Controller
     15    public class OkbManagementController : Controller
    1116    {
    1217        private OkbManagementVM vm;
    1318        private WebLoginService weblog;
    1419        private Guid userId;
    15        
     20
    1621        private bool init()
    1722        {
     
    2631                userId = Guid.Parse(u);
    2732                vm = new OkbManagementVM(weblog.getCurrentUser(userId), weblog.getOkbAdminClient(userId));
    28                 if(vm.client != null)
     33                if (vm.client != null)
     34                {
     35                    vm.client.Refresh();
    2936                    return true;
     37                }
    3038            }
    3139            return false;
     
    4654            }
    4755        }
     56
     57        [HttpPost]
     58        public async Task<IActionResult> Uploader(ICollection<IFormFile> fileupl, string name, int id)
     59        {
     60            if (init())
     61            {
     62                try
     63                {
     64                    byte[] data = null;
     65                    foreach (var file in fileupl)
     66                    {
     67                        if (file.Length > 0)
     68                        {
     69                            using (var fileStream = file.OpenReadStream())
     70                            using (var ms = new MemoryStream())
     71                            {
     72                                fileStream.CopyTo(ms);
     73                                data = ms.ToArray();
     74                                // act on the Base64 data
     75                            }
     76                        }
     77                    }
     78                    var deser = PersistenceUtil.Deserialize<IOptimizer>(data);
     79                    OKB.Administration.IOKBItem obj = null;
     80                    if (name == "Algorithms" && deser is IAlgorithm)
     81                    {
     82                        vm.client.UpdateAlgorithmData((long)id, PersistenceUtil.Serialize(deser));
     83                        vm.message = "Upload has been completed, the file is now set as the new algorithm for " + vm.client.Algorithms.Find(x => x.Id == id).Name;
     84                        obj = vm.client.Algorithms.Find(x => x.Id == id);
     85                        ((OKB.Administration.Algorithm)obj).DataTypeName = deser.GetType().Name;
     86                        ((OKB.Administration.Algorithm)obj).DataTypeTypeName = deser.GetType().AssemblyQualifiedName;
     87                    }
     88                    else if (name == "Problems" && deser is IProblem)
     89                    {
     90                        vm.client.UpdateProblemData((long)id, PersistenceUtil.Serialize(deser));
     91                        vm.message = "Upload has been completed, the file is now set as the new problem for " + vm.client.Problems.Find(x => x.Id == id).Name;
     92                        obj = vm.client.Problems.Find(x => x.Id == id);
     93                        ((OKB.Administration.Problem)obj).DataTypeName = deser.GetType().Name;
     94                        ((OKB.Administration.Problem)obj).DataTypeTypeName = deser.GetType().AssemblyQualifiedName;
     95                    }
     96                    else
     97                    {
     98                        throw new Exception();
     99                    }
     100                   
     101                    vm.client.Store(obj);
     102                    ViewBag.Title = "Upload complete - OKB Management";
     103                    ViewBag.Success = true;
     104
     105                }
     106                catch (Exception e)
     107                {
     108
     109                    vm.message = "Upload failed, please try again.";
     110                    ViewBag.Success = false;
     111                    ViewBag.Title = "Upload failed - OKB Management";
     112
     113                }
     114                ViewBag.SessionId = HttpContext.Session.GetString("UserId");
     115                vm.client.Refresh();
     116                return View("Index", vm);
     117            }
     118            else
     119            {
     120                return RedirectToAction("Index", "Query");
     121            }
     122        }
    48123    }
    49124}
Note: See TracChangeset for help on using the changeset viewer.