Advertisement
Guest User

UserController.cs

a guest
Apr 4th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 16.31 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using cppAPI.Models;
  7. using Microsoft.AspNetCore.Cors;
  8. using Microsoft.EntityFrameworkCore;
  9. using Microsoft.AspNetCore.Authorization;
  10. using cppAPI.Controllers;
  11. using System.Data;
  12. using System.Data.Common;
  13. using static cppAPI.Modules.SharedFunctions;
  14.  
  15. namespace FDCoreAPI.Controllers
  16. {
  17.     [EnableCors("CorsPolicy")]
  18.  
  19.     [Route("api/[controller]")]
  20.     public class UserController : Controller
  21.     {
  22.         private readonly CPP_TOOLContext _context;
  23.  
  24.         public UserController(CPP_TOOLContext context)
  25.         {
  26.             _context = context;
  27.         }
  28.  
  29.         [HttpGet]
  30.         [Authorize]
  31.         public object Get()
  32.         {
  33.             try
  34.             {
  35.                 var user = from u in _context.TbUser
  36.                            select new
  37.                            {
  38.                                u.CreationDate,
  39.                                u.Email,
  40.                                u.FirstLoginDate,
  41.                                u.FirstName,
  42.                                u.IsActive,
  43.                                u.LastLoginDate,
  44.                                u.LastName,
  45.                                u.PlanerName,
  46.                                u.Qnr,
  47.                                u.Token,
  48.                                u.TelefonNumber,
  49.                                u.UniqueName,
  50.                                u.Userid,
  51.                                UserName = u.FirstName + ' ' + u.LastName,
  52.                            };
  53.                 return user;
  54.             }
  55.             catch (Exception ex)
  56.             {
  57.                 return new { status = 500, message = ex.Message };
  58.             }
  59.         }
  60.  
  61.         [HttpGet]
  62.         [Authorize]
  63.         [Route("assignedUser")]
  64.         public object assignedUser(int groupid)
  65.         {
  66.             try
  67.             {
  68.                 string strSQL = "SELECT t.userid, t.uniqueName, t.lastName, t.firstName, t.email, "
  69.                     + "t.planerName, t.qnr, t.telefonNumber, t.token, "
  70.                     + "t.creationDate, t.firstLoginDate, t.lastLoginDate, t.isActive, t.firstName + ' ' + t.lastName AS userName, "
  71.                     + "CONVERT(bit, CASE WHEN(SELECT COUNT(GroupID) FROM tbUserGroupMapping WHERE GroupId = " + groupid.ToString() + " AND UserID = t.UserID) > 0 THEN 1 ELSE 0 END) AS isAssigned "
  72.                     + "FROM tb_User t;";
  73.  
  74.                 var con = _context.Database.GetDbConnection();
  75.                 con.Open();
  76.  
  77.                 using (var cmd = con.CreateCommand())
  78.                 {
  79.                     cmd.CommandType = CommandType.Text;
  80.                     cmd.CommandText = strSQL;
  81.  
  82.                     DbDataReader dr = cmd.ExecuteReader();
  83.                     List<object> user = new List<object>();
  84.  
  85.                     string errMessage = "";
  86.                     if (dr.HasRows)
  87.                     {
  88.                         errMessage = GetListFromReader(dr, ref user);
  89.                     }
  90.  
  91.                     if (errMessage == "")
  92.                     {
  93.                         return user;
  94.                     }
  95.                     else
  96.                     {
  97.                         return new { status = 500, message = errMessage };
  98.                     }
  99.                 }
  100.             }
  101.             catch (Exception ex)
  102.             {
  103.                 return new { status = 500, message = ex.Message };
  104.             }
  105.  
  106.         }
  107.  
  108.  
  109.         [HttpGet]
  110.         [Authorize]
  111.         [Route("byGroupId")]
  112.         public object byGroupId(int groupID)
  113.         {
  114.             try
  115.             {
  116.                 string strSQL = "SELECT tb_User.UserId, tb_User.UniqueName, tb_User.LastName, tb_User.FirstName, tb_User.Email, "
  117.                                      + "tb_User.CreationDate, tb_User.FirstLoginDate, tb_User.LastLoginDate, tb_User.IsActive, tb_User.FirstName + ' ' + tb_User.LastName AS UserName "
  118.                               + "FROM tb_User INNER JOIN tbUserGroupMapping ON tb_User.UserID = tbUserGroupMapping.UserID "
  119.                               + "WHERE tb_User.IsActive = 1 AND tbUserGroupMapping.GroupID = " + groupID.ToString() + ";";
  120.  
  121.                 var con = _context.Database.GetDbConnection();
  122.                 con.Open();
  123.  
  124.                 using (var cmd = con.CreateCommand())
  125.                 {
  126.                     cmd.CommandType = CommandType.Text;
  127.                     cmd.CommandText = strSQL;
  128.  
  129.                     DbDataReader dr = cmd.ExecuteReader();
  130.                     List<object> user = new List<object>();
  131.  
  132.                     string errMessage = "";
  133.                     if (dr.HasRows)
  134.                     {
  135.                         errMessage = GetListFromReader(dr, ref user);
  136.                     }
  137.  
  138.                     if (errMessage == "")
  139.                     {
  140.                         return user;
  141.                     }
  142.                     else
  143.                     {
  144.                         return new { status = 500, message = errMessage };
  145.                     }
  146.                 }
  147.             }
  148.             catch (Exception ex)
  149.             {
  150.                 return new { status = 500, message = ex.Message };
  151.             }
  152.         }
  153.  
  154.         // GET api/values/5
  155.         [HttpGet]
  156.         [Authorize]
  157.         [Route("byEMail")]
  158.         public object byEMail(string Email)
  159.         {
  160.             try
  161.             {
  162.                 string strSQL = "SELECT tb_User.UserID, tb_User.UniqueName, tb_User.LastName, tb_User.FirstName, tb_User.EMail, tb_User.CreationDate, tb_User.FirstLoginDate, tb_User.LastLoginDate, tb_User.IsActive, tb_User.FirstName + ' ' + tb_User.LastName AS UserName, "
  163.                     + "dbo.ConcatUserGroups(tb_User.UserID) as UserGroups "
  164.                     + "FROM tb_User "
  165.                     + "WHERE tb_User.EMail='" + Email + "';";
  166.  
  167.                 var con = _context.Database.GetDbConnection();
  168.                 con.Open();
  169.  
  170.                 using (var cmd = con.CreateCommand())
  171.                 {
  172.                     cmd.CommandType = CommandType.Text;
  173.                     cmd.CommandText = strSQL;
  174.  
  175.                     DbDataReader dr = cmd.ExecuteReader();
  176.                     List<object> user = new List<object>();
  177.  
  178.                     string errMessage = "";
  179.                     if (dr.HasRows)
  180.                     {
  181.                         errMessage = GetListFromReader(dr, ref user);
  182.                     }
  183.  
  184.                     if (errMessage == "")
  185.                     {
  186.                         return user;
  187.                     }
  188.                     else
  189.                     {
  190.                         return new { status = 500, message = errMessage };
  191.                     }
  192.                 }
  193.             }
  194.             catch (Exception ex)
  195.             {
  196.                 return new { status = 500, message = ex.Message };
  197.             }
  198.         }
  199.  
  200.         [HttpGet("{bmwPlanner}")]
  201.         [Authorize]
  202.         [Route("PlanerAnalysis")]
  203.         public object PlanerAnalysis(string bmwPlanner)
  204.         {
  205.             try
  206.             {
  207.                 string strSQL = "SELECT "
  208.                     + "(SELECT '" + bmwPlanner + "') AS bmwPlanner, "
  209.                     + "(SELECT dbo.GetPlannerSuppliers('" + bmwPlanner + "')) AS plannerSuppliers, "
  210.                     + "(SELECT dbo.GetPlannerActiveSuppliers('" + bmwPlanner + "')) AS plannerActiveSuppliers, "
  211.                     + "(SELECT dbo.GetPlannerOpenTickets('" + bmwPlanner + "')) AS plannerOpenTickets, "
  212.                     + "(SELECT dbo.GetPlannerRestingTime('" + bmwPlanner + "')) AS plannerRestingTime, "
  213.                     + "(SELECT dbo.GetPlannerClosedTickets('" + bmwPlanner + "')) AS plannerClosedTickets, "
  214.                     + "(SELECT dbo.GetPlannerSuppliersIncomplete('" + bmwPlanner + "')) AS plannerSuppliersIncomplete, "
  215.                     + "(SELECT dbo.GetPlannerRedFlags('" + bmwPlanner + "')) AS flgRedCount, "
  216.                     + "(SELECT dbo.GetPlannerBlueFlags('" + bmwPlanner + "')) AS flgBlueCount, "
  217.                     + "(SELECT dbo.GetPlannerGreenFlags('" + bmwPlanner + "')) AS flgGreenCount, "
  218.                     + "(SELECT dbo.GetPlannerYellowFlags('" + bmwPlanner + "')) AS flgYellowCount, "
  219.                     + "(SELECT dbo.GetPlannerPurpleFlags('" + bmwPlanner + "')) AS flgPurpleCount ";
  220.  
  221.  
  222.                 var con = _context.Database.GetDbConnection();
  223.                 con.Open();
  224.  
  225.                 using (var cmd = con.CreateCommand())
  226.                 {
  227.                     cmd.CommandType = CommandType.Text;
  228.                     cmd.CommandText = strSQL;
  229.                     cmd.CommandTimeout = 900000;
  230.  
  231.                     DbDataReader dr = cmd.ExecuteReader();
  232.                     List<object> analysis = new List<object>();
  233.  
  234.                     string errMessage = "";
  235.                     if (dr.HasRows)
  236.                     {
  237.                         errMessage = GetListFromReader(dr, ref analysis);
  238.                     }
  239.  
  240.                     if (errMessage == "")
  241.                     {
  242.                         return analysis;
  243.                     }
  244.                     else
  245.                     {
  246.                         return new { status = 500, message = errMessage };
  247.                     }
  248.                 }
  249.             }
  250.             catch (Exception ex)
  251.             {
  252.                 return new { status = 500, message = ex.Message };
  253.             }
  254.         }
  255.  
  256.  
  257.         // POST api/values
  258.         [HttpPost]
  259.         [Authorize]
  260.         public object Post([FromBody]TbUser user)
  261.         {
  262.             var response = new object();
  263.             try
  264.             {
  265.                 var exists = _context.TbUser.AsNoTracking().FirstOrDefault(u => u.UniqueName == user.UniqueName || u.PlanerName == user.PlanerName || u.Qnr == user.Qnr);
  266.  
  267.                 if (exists != null)
  268.                 {
  269.                     response = new { ststus = 250, message = "Der Unique Name '" + user.UniqueName + "' oder Planer '" + user.PlanerName + "' oder Q-Nummer '" + user.Qnr + "' wurden bereist verwendet!" };
  270.                 } else
  271.                 {
  272.                     _context.TbUser.Add(user);
  273.                     _context.SaveChanges();
  274.                     int userId = user.Userid;
  275.  
  276.                     response = new { status = 200, message = "OK", id = userId };
  277.                 }
  278.             }
  279.             catch (Exception ex)
  280.             {
  281.                 response = new { status = 500, message = ex.Message };
  282.             }
  283.             return response;
  284.         }
  285.  
  286.  
  287.         [HttpPost]
  288.         [Authorize]
  289.         [Route("SetPassword")]
  290.         public object SetPassword([FromBody]TbUserCredentials userCredentials)
  291.         {
  292.             var response = new object();
  293.             try
  294.             {
  295.                 string salt = null;
  296.                 string UserPassword = userCredentials.Password;
  297.                 var hashedPassword = SharedFunctions.CreateHashString(UserPassword, out salt);
  298.  
  299.                 userCredentials.Password = hashedPassword;
  300.                 userCredentials.Salt = salt;
  301.  
  302.                 _context.TbUserCredentials.Add(userCredentials);
  303.                 _context.SaveChanges();
  304.             }
  305.             catch (Exception ex)
  306.             {
  307.                 response = new { status = 500, message = ex.Message };
  308.             }
  309.  
  310.             return response;
  311.         }
  312.  
  313.  
  314.         [HttpPut]
  315.         [Authorize]
  316.         [Route("ChangePassword")]
  317.  
  318.         public object ChangePassword([FromBody]TbUserCredentials credentials)
  319.         {
  320.             var response = new object();
  321.             try
  322.             {
  323.                 string salt = null;
  324.                 string UserPassword = credentials.Password;
  325.                 var hashedPassword = SharedFunctions.CreateHashString(UserPassword, out salt);
  326.  
  327.                 TbUserCredentials cred = _context.TbUserCredentials.SingleOrDefault(uc => uc.Userid == credentials.Userid);
  328.                 cred.Password = hashedPassword;
  329.                 cred.Salt = salt;
  330.  
  331.                 _context.TbUserCredentials.Update(cred);
  332.                 _context.SaveChanges();
  333.  
  334.                 response = new { status = 200, message = "OK" };
  335.  
  336.  
  337.             }
  338.             catch (Exception ex)
  339.             {
  340.                 response = new { status = 500, message = ex.Message };
  341.             }
  342.  
  343.             return response;
  344.         }
  345.  
  346.  
  347.  
  348.         // PUT api/values/5
  349.         [HttpPut]
  350.         [Authorize]
  351.         public object Put([FromBody]TbUser user)
  352.         {
  353.             var response = new object();
  354.             try
  355.             {
  356.                 var exists = _context.TbUser.AsNoTracking().FirstOrDefault(u => u.Userid != user.Userid
  357.                             && (u.UniqueName == user.UniqueName || u.PlanerName == user.PlanerName || u.Qnr == user.Qnr));
  358.  
  359.                 if (exists != null)
  360.                 {
  361.                     response = new { ststus = 250, message = "Der Unique Name '" + user.UniqueName + "' oder Planer '" + user.PlanerName + "' oder Q-Nummer '" + user.Qnr + "' wurden bereist verwendet!" };
  362.                 } else
  363.                 {
  364.                     _context.TbUser.Update(user);
  365.                     _context.SaveChanges();
  366.  
  367.                     response = new { status = 200, message = "OK" };
  368.                 }
  369.             }
  370.             catch (Exception ex)
  371.             {
  372.                 response = new { status = 500, message = ex.Message };
  373.             }
  374.  
  375.             return response;
  376.         }
  377.  
  378.  
  379.         // DELETE api/values/5
  380.         [HttpDelete("{id}")]
  381.         [Authorize]
  382.         public object Delete(int id)
  383.         {
  384.             var response = new object();
  385.             try
  386.             {
  387.                 TbUser userToDelete = _context.TbUser.FirstOrDefault(u => u.Userid == id);
  388.                 TbUserCredentials credToDelete = _context.TbUserCredentials.FirstOrDefault(u => u.Userid == id);
  389.                 TbUserGroupMapping[] mappingToDelete = _context.TbUserGroupMapping.Where(u => u.UserId == id).ToArray();
  390.  
  391.                 if (mappingToDelete.Length > 0)
  392.                 {
  393.                     _context.TbUserGroupMapping.RemoveRange(mappingToDelete);
  394.                 }
  395.                 if (credToDelete != null)
  396.                 {
  397.                     _context.TbUserCredentials.Remove(credToDelete);
  398.                 }
  399.                 if (userToDelete != null)
  400.                 {
  401.                     _context.TbUser.Remove(userToDelete);
  402.                 }
  403.                
  404.                 _context.SaveChanges();
  405.  
  406.                 response = new { status = 200, message = "Löschen erfolgreich" };
  407.             }
  408.             catch (Exception e)
  409.             {
  410.                 response = new { status = 500, message = e.Message };
  411.             }
  412.             return response;
  413.         }
  414.  
  415.         [HttpPost]
  416.         [Authorize]
  417.         [Route("setUserSettings")]
  418.  
  419.         public object SetUserSettings([FromBody] TbUserSettings UserSettings)
  420.         {
  421.             var response = new object();
  422.             var settingId = 0;
  423.             try
  424.             {
  425.                 if(UserSettings.Settingid == 0)
  426.                 {
  427.                     _context.TbUserSettings.Add(UserSettings);
  428.                 }
  429.                 else{
  430.                     _context.TbUserSettings.Update(UserSettings);
  431.                 }
  432.                 _context.SaveChanges();
  433.                 settingId = UserSettings.Settingid;
  434.                 response = new { status = 200, message = "Speichern der Settings erfolgreich", settingId = settingId };
  435.             }
  436.             catch (Exception e)
  437.             {
  438.                 response = new { status = 500, message = e.Message };
  439.             }
  440.  
  441.             return response;
  442.         }
  443.  
  444.         [HttpGet]
  445.         [Authorize]
  446.         [Route("getUserSettings")]
  447.  
  448.         public object GetUserSettings(int userID, string settingName)
  449.         {
  450.             var response = new object();
  451.             try
  452.             {
  453.                 var userSettings = _context.TbUserSettings.Where(u => u.Userid == userID && u.SettingName == settingName).ToList();
  454.                 response = new { status = 200, userSettings = userSettings };
  455.             }
  456.             catch (Exception e)
  457.             {
  458.                 response = new { status = 500, message = e.Message };
  459.             }
  460.  
  461.  
  462.             return response;
  463.         }
  464.  
  465.     }
  466. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement