コード例 #1
0
        public async Task <LabGroup> Create(LabGroupCreate groupIn)
        {
            var group = LabGroup.FromCreate(groupIn);
            await _labGroups.InsertOneAsync(group);

            return(group);
        }
コード例 #2
0
        public async Task <IActionResult> Update([FromHeader] string authToken, string id, LabGroupUpdate update)
        {
            if (!await _authenticationService.CheckAccess(authToken, "groupMgr"))
            {
                return(Unauthorized());
            }

            LabGroup group = await _labGroupService.Get(id);

            if (group == null)
            {
                return(NotFound());
            }

            _labGroupService.Update(group, update);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Document modified.",
                                         "labGroups",
                                         id,
                                         JsonSerializer.Serialize(LabGroup.FromUpdate(group, update))
                                         ));

            return(Ok());
        }
コード例 #3
0
        } // SQL insert of the Mark Scheme Parts

        public bool UploadLabGroup(LabGroup labGroupToUpload)
        {
            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource     = "tarambana.database.windows.net";
                builder.UserID         = "tasa";
                builder.Password       = "******";
                builder.InitialCatalog = "bookChoice";

                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    using (SqlCommand command = new SqlCommand())
                    {
                        command.Connection  = connection;
                        command.CommandType = CommandType.Text;
                        command.CommandText = "INSERT INTO dbo.LabGroup (LabGroupAssignmentID, LabGroupLocation, LabGroupNumber, LabGroupStudentID, LabGroupUnit) VALUES (@labGroupAssignmentID, @labGroupLocation, @labGroupNumber, @labGroupStudentID, @labGroupUnit)";
                        command.Parameters.AddWithValue("@labGroupAssignmentID", labGroupToUpload.labGroupAssignmentID);
                        command.Parameters.AddWithValue("@labGroupLocation", labGroupToUpload.labGroupLocation);
                        command.Parameters.AddWithValue("@labGroupNumber", labGroupToUpload.labGroupNumber);
                        command.Parameters.AddWithValue("@labGroupStudentID", labGroupToUpload.labGroupStudentID);
                        command.Parameters.AddWithValue("@labGroupUnit", labGroupToUpload.labGroupUnit);

                        connection.Open();
                        command.ExecuteNonQuery();
                        return(true);
                    }
                }
            }
            catch (SqlException e)
            {
                Console.WriteLine(e.ToString());
                return(false);
            } // SQL insert of the Mark Scheme LabGroup
        }
コード例 #4
0
        public async Task <ActionResult <Order> > Create([FromHeader] string authToken, bool stockroom, OrderCreate create)
        {
            if (stockroom)
            {
                if (!await _authenticationService.CheckAccess(authToken, "orderMgr"))
                {
                    return(Unauthorized());
                }

                Order created = await _orderService.CreateStockroom(create);

                await _logService.Create(new Log(
                                             null,
                                             AuthenticationHelpers.GetUserIdFromToken(authToken),
                                             DateTime.UtcNow,
                                             "Order Placed",
                                             "orders",
                                             created.Id,
                                             JsonSerializer.Serialize(created)
                                             ));

                return(Ok(created));
            }
            else
            {
                if (!await _authenticationService.CheckAccess(authToken, "orderView"))
                {
                    return(Unauthorized());
                }

                LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

                Order created = await _orderService.Create(create, group.Id);

                group.BudgetBalance = group.BudgetBalance - (created.UnitCost * created.Quantity);

                group.Transactions.Add(new Transaction(
                                           created.Id,
                                           "Remove",
                                           "Order Submitted",
                                           (created.UnitCost * created.Quantity),
                                           DateTime.UtcNow
                                           ));

                _labGroupService.Update(group, group.Id);

                await _logService.Create(new Log(
                                             null,
                                             AuthenticationHelpers.GetUserIdFromToken(authToken),
                                             DateTime.UtcNow,
                                             "Order Placed",
                                             "orders",
                                             created.Id,
                                             JsonSerializer.Serialize(created)
                                             ));

                return(Ok(created));
            }
        }
コード例 #5
0
        public async Task <ActionResult <List <Dictionary <string, object> > > > Get([FromHeader] string authToken, [FromQuery] string view)
        {
            if (!await _authenticationService.CheckAccess(authToken, "logView"))
            {
                return(Unauthorized());
            }

            List <Dictionary <string, object> > logs = new List <Dictionary <string, object> >();

            if (view == "orders")
            {
                LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

                logs = await _logViewService.GetOrderHistory(view, group, _supplierService);
            }

            else if (view == "transactions")
            {
                LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

                int i = 1;
                foreach (Transaction t in group.Transactions)
                {
                    Dictionary <string, object> transaction = new Dictionary <string, object>();
                    transaction["action"]      = t.Action;
                    transaction["amount"]      = t.Amount;
                    transaction["description"] = t.Description;
                    if (t.OrderId == string.Empty || t.OrderId == null)
                    {
                        transaction["order"] = null;
                    }
                    else
                    {
                        Order o = await _orderService.Get(t.OrderId);

                        Supplier s = await _supplierService.Get(o.SupplierId);

                        Dictionary <string, object> order = new Dictionary <string, object>();
                        order["placedUtc"]  = o.PlacedUtc;
                        order["partNumber"] = o.PartNumber;
                        if (!(s == null))
                        {
                            order["supplierName"] = s.Name;
                        }
                        order["url"]         = o.Url;
                        transaction["order"] = order;
                    }
                    transaction["utc"] = t.Utc;
                    transaction["key"] = i;
                    logs.Add(transaction);
                    i++;
                }
            }


            return(logs);
        }
コード例 #6
0
        public async Task <ActionResult <LabGroup> > Create([FromHeader] string authToken, LabGroupCreate create)
        {
            if (!await _authenticationService.CheckAccess(authToken, "groupMgr"))
            {
                return(Unauthorized());
            }

            List <string> members = new List <string>();

            foreach (string techId in create.Members)
            {
                User temp = await _userService.GetByTechId(techId);

                members.Add(temp.Id);
            }

            LabCourse course = await _labCourseService.Get(create.LabCourseId);

            LabGroupCreate editCreate = create;

            editCreate.Members       = members;
            editCreate.Budget        = course.InitialBudget;
            editCreate.BudgetBalance = course.InitialBudget;
            editCreate.GroupNumber   = (course.LabGroups == null) ?  1 : course.LabGroups.Count + 1;
            editCreate.Transactions  = new List <Transaction>();
            editCreate.Transactions.Add(new Transaction(null, "Add", "Initial Budget", course.InitialBudget, DateTime.UtcNow));

            LabGroup created = await _labGroupService.Create(editCreate);

            await _labCourseService.AddGroup(course, created.Id);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Group created.",
                                         "labGroups",
                                         created.Id,
                                         JsonSerializer.Serialize(created)
                                         ));

            foreach (string id in created.Members)
            {
                User temp = await _userService.Get(id);

                temp.Permissions.Add("61db5dde3fb8d66a6bbdde3b");
                temp.Permissions.Add("61db59a03fb8d66a6bbdde34");
                temp.Permissions.Add("61db5a813fb8d66a6bbdde36");

                await _tokenService.InvalidateUserTokens(temp.Id);

                _userService.Update(temp.Id, temp);
            }

            return(Ok(created));
        }
コード例 #7
0
        public async Task <LabGroup> CheckIn(string checkIn)
        {
            LabGroup group = await _labGroups.Find <LabGroup>(labGroup => labGroup.CheckedOut.Contains(checkIn)).FirstOrDefaultAsync();

            group.CheckedOut.Remove(checkIn);

            await _labGroups.ReplaceOneAsync(labGroup => labGroup.Id == group.Id, group);

            return(group);
        }
コード例 #8
0
        public async Task <IActionResult> Delete([FromHeader] string authToken, string id)
        {
            if (!await _authenticationService.CheckAccess(authToken, "groupMgr"))
            {
                return(Unauthorized());
            }

            LabGroup group = await _labGroupService.Get(id);

            if (group == null)
            {
                return(NotFound());
            }

            LabCourse course = await _labCourseService.Get(group.LabCourseId);

            if (group.Members != null)
            {
                foreach (string memberId in group.Members)
                {
                    User temp = await _userService.Get(memberId);

                    temp.Permissions.Remove("61db5dde3fb8d66a6bbdde3b");
                    temp.Permissions.Remove("61db59a03fb8d66a6bbdde34");
                    temp.Permissions.Remove("61db5a813fb8d66a6bbdde36");

                    await _tokenService.InvalidateUserTokens(memberId);

                    _userService.Update(temp.Id, temp);
                }
            }

            LabBench bench = await _labBenchService.Get(group.LabBenchId);

            if (bench != null)
            {
                _labBenchService.CheckInOut(bench, null, "Available");
            }
            await _labCourseService.RemoveGroup(course, id);

            await _labGroupService.Delete(id);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Document deleted.",
                                         "labGroup",
                                         id,
                                         null
                                         ));

            return(Ok());
        }
コード例 #9
0
        public async Task <IActionResult> Delete([FromHeader] string authToken, string id)
        {
            if (!await _authenticationService.CheckAccess(authToken, "courseMgr"))
            {
                return(Unauthorized());
            }

            LabCourse course = await _labCourseService.Get(id);

            if (course == null)
            {
                return(NotFound());
            }

            if (course.LabGroups != null)
            {
                foreach (string labgroupId in course.LabGroups)
                {
                    LabGroup group = await _labGroupService.Get(labgroupId);

                    foreach (string memberId in group.Members)
                    {
                        User temp = await _userService.Get(memberId);

                        if (temp != null)
                        {
                            temp.Permissions.Remove("61db5dde3fb8d66a6bbdde3b");
                            temp.Permissions.Remove("61db59a03fb8d66a6bbdde34");
                            temp.Permissions.Remove("61db5a813fb8d66a6bbdde36");

                            _userService.Update(temp.Id, temp);
                        }
                    }

                    await _labGroupService.Delete(labgroupId);
                }
            }

            await _labCourseService.Delete(id);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Document deleted.",
                                         "labCourses",
                                         id,
                                         null
                                         ));

            return(Ok());
        }
コード例 #10
0
        public async Task <ActionResult <List <Dictionary <string, object> > > > Get([FromHeader] string authToken, bool active)
        {
            if (!await _authenticationService.CheckAccess(authToken, "orderView"))
            {
                return(Unauthorized());
            }

            if (active)
            {
                LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

                List <Order> orders = await _orderService.GetActiveByGroupId(group.Id);

                if (orders == null || orders.Count == 0)
                {
                    return(NotFound());
                }

                List <Dictionary <string, object> > activeOrders = new List <Dictionary <string, object> >();

                foreach (Order order in orders)
                {
                    Dictionary <string, object> o = new Dictionary <string, object>();

                    o["description"] = order.Description;
                    o["partNumber"]  = order.PartNumber;
                    o["quantity"]    = order.Quantity;
                    o["unitCost"]    = order.UnitCost;
                    o["url"]         = order.Url;
                    o["status"]      = order.Status;
                    o["placedUtc"]   = order.PlacedUtc;
                    o["shippedUtc"]  = order.ShippedUtc;
                    o["receivedUtc"] = order.ReceivedUtc;

                    Supplier s = await _supplierService.Get(order.SupplierId);

                    if (s != null)
                    {
                        o["supplierName"] = s.Name;
                    }

                    activeOrders.Add(o);
                }

                return(activeOrders);
            }

            return(NotFound());
        }
コード例 #11
0
        public async Task <ActionResult <Dictionary <string, object> > > Get([FromHeader] string authToken, bool thisDoesNothing)
        {
            if (!await _authenticationService.CheckAccess(authToken, "groupView"))
            {
                return(Unauthorized());
            }

            Dictionary <string, object> groupBudget = new Dictionary <string, object>();

            LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

            groupBudget["budget"]        = group.Budget;
            groupBudget["budgetBalance"] = group.BudgetBalance;

            return(groupBudget);
        }
コード例 #12
0
        public async Task <ActionResult <List <Order> > > Get([FromHeader] string authToken)
        {
            if (!await _authenticationService.CheckAccess(authToken, "orderView"))
            {
                return(Unauthorized());
            }

            LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

            var orders = await _orderService.GetByGroupId(group.Id);

            if (orders == null || orders.Count == 0)
            {
                return(NotFound());
            }

            return(orders);
        }
コード例 #13
0
        public async Task <ActionResult <Dictionary <string, object> > > Get([FromHeader] string authToken, string id, bool doesNothing)
        {
            if (!await _authenticationService.CheckAccess(authToken, "groupView"))
            {
                return(Unauthorized());
            }

            LabGroup group = await _labGroupService.Get(id);

            if (group == null)
            {
                return(NotFound());
            }

            Dictionary <string, object> groupInfo = new Dictionary <string, object>();

            groupInfo["groupNumber"] = group.GroupNumber;

            List <string> members = new List <string>();

            foreach (string userId in group.Members)
            {
                User temp = await _userService.Get(userId);

                if (temp == null)
                {
                    return(NotFound());
                }
                if (temp.PreferredName == null)
                {
                    members.Add(temp.TechId + " " + temp.FirstName + " " + temp.LastName);
                }
                else
                {
                    members.Add(temp.TechId + " " + temp.PreferredName + " " + temp.LastName);
                }
            }

            groupInfo["members"] = members;

            return(groupInfo);
        }
コード例 #14
0
ファイル: XMLReader.cs プロジェクト: enriquetasa/MarkIt
        } // Reads XML and extracts Mark Scheme info into a data structure passed by reference

        public bool GetLabGroupInfo(String pathToXML, ref LabGroup inputLabGroup)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(pathToXML);

                XmlNodeList elemList = doc.GetElementsByTagName("LabGroupLocation");
                for (int i = 0; i < elemList.Count; i++)
                {
                    inputLabGroup.labGroupLocation = elemList[i].InnerText;
                }
                XmlNodeList elemList1 = doc.GetElementsByTagName("LabGroupNumber");
                for (int i = 0; i < elemList1.Count; i++)
                {
                    inputLabGroup.labGroupNumber = int.Parse(elemList1[i].InnerText);
                }
                XmlNodeList elemList2 = doc.GetElementsByTagName("LabGroupStudentID");
                for (int i = 0; i < elemList2.Count; i++)
                {
                    inputLabGroup.labGroupStudentID = int.Parse(elemList2[i].InnerText);
                }
                XmlNodeList elemList4 = doc.GetElementsByTagName("LabGroupUnit");
                for (int i = 0; i < elemList4.Count; i++)
                {
                    inputLabGroup.labGroupUnit = elemList4[i].InnerText;
                }
                XmlNodeList elemList5 = doc.GetElementsByTagName("assignmentNumber");
                for (int i = 0; i < elemList4.Count; i++)
                {
                    inputLabGroup.labGroupAssignmentID = int.Parse(elemList5[i].InnerText);
                }

                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        } // Reads XML and extracts Lab Group info into a data structure passed by reference
コード例 #15
0
        public async Task <ActionResult <BudgetRequest> > Create([FromHeader] string authToken, BudgetRequestCreate budgetRequest)
        {
            if (!await _authenticationService.CheckAccess(authToken, "announceView"))
            {
                return(Unauthorized());
            }

            LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

            BudgetRequest created = await _budgetRequestService.Create(budgetRequest, group.Id);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Document created.",
                                         "budgetRequests",
                                         created.Id,
                                         JsonSerializer.Serialize(created)
                                         ));

            return(Ok(budgetRequest));
        }
コード例 #16
0
        public async Task <IActionResult> Update([FromHeader] string authToken, string id, string type, OrderUpdate orderIn)
        {
            if (!await _authenticationService.CheckAccess(authToken, "orderMgr"))
            {
                return(Unauthorized());
            }

            Order order = await _orderService.Get(id);

            if (order == null)
            {
                return(NotFound("Order Not Found!"));
            }

            if (type == "onOrder")
            {
                LabGroup group = await _labGroupService.Get(orderIn.GroupId);

                if (!_hostEnvironment.EnvironmentName.Equals("Development", StringComparison.OrdinalIgnoreCase))
                {
                    foreach (string userId in group.Members)
                    {
                        User temp = await _userService.Get(userId);

                        string details = "x" + orderIn.Quantity + " " + orderIn.PartNumber + " from " + orderIn.Url;

                        EmailHelpers.SendOrderPlacedEmail(temp.TechMail, details);
                    }
                }

                orderIn.ShippedUtc = DateTime.UtcNow;
            }
            else if (type == "completed")
            {
                LabGroup group = await _labGroupService.Get(orderIn.GroupId);

                if (!_hostEnvironment.EnvironmentName.Equals("Development", StringComparison.OrdinalIgnoreCase))
                {
                    foreach (string userId in group.Members)
                    {
                        User temp = await _userService.Get(userId);

                        string details = "x" + orderIn.Quantity + " " + orderIn.PartNumber + " from " + orderIn.Url;

                        EmailHelpers.SendOrderPlacedEmail(temp.TechMail, details);
                    }
                }
                orderIn.ReceivedUtc = DateTime.UtcNow;
            }
            else if (type == "rejected")
            {
                LabGroup group = await _labGroupService.Get(orderIn.GroupId);

                group.BudgetBalance = group.BudgetBalance + (orderIn.UnitCost * orderIn.Quantity);

                group.Transactions.Add(new Transaction(
                                           null,
                                           "Add",
                                           "Order Rejected",
                                           (orderIn.UnitCost * orderIn.Quantity),
                                           DateTime.UtcNow
                                           ));

                _labGroupService.Update(group, group.Id);

                if (!_hostEnvironment.EnvironmentName.Equals("Development", StringComparison.OrdinalIgnoreCase))
                {
                    foreach (string userId in group.Members)
                    {
                        User temp = await _userService.Get(userId);

                        EmailHelpers.SendOrderRejectedEmail(temp.TechMail);
                    }
                }
            }

            _orderService.Update(order, orderIn);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Order Updated",
                                         "orders",
                                         id,
                                         JsonSerializer.Serialize(Order.FromUpdate(order, orderIn))
                                         ));

            return(Ok());
        }
        public ActionResult Save(Section section)
        {
            if (section.Id == 0)
            {
                _context.Sections.Add(section);

                if (section.StudentCount > GlobalConfig.LAB_SPLIT_SIZE)
                {
                    var studentCountG1 = 0;
                    var studentCountG2 = 0;

                    if (section.StudentCount % 2 == 0)
                    {
                        studentCountG1 = section.StudentCount / 2;
                        studentCountG2 = section.StudentCount / 2;
                    }
                    else
                    {
                        studentCountG1 = section.StudentCount / 2;
                        studentCountG2 = studentCountG1 + 1;
                    }

                    var g1 = new LabGroup
                    {
                        Name         = "G-1",
                        Section      = section,
                        StudentCount = (byte)studentCountG1
                    };

                    var g2 = new LabGroup
                    {
                        Name         = "G-2",
                        Section      = section,
                        StudentCount = (byte)studentCountG2
                    };

                    _context.LabGroups.Add(g1);
                    _context.LabGroups.Add(g2);
                }
                else
                {
                    var g1 = new LabGroup
                    {
                        Name         = "G-1",
                        Section      = section,
                        StudentCount = (byte)section.StudentCount
                    };

                    _context.LabGroups.Add(g1);
                }
            }
            else
            {
                var sectionInDb = _context.Sections.Single(s => s.Id == section.Id);

                sectionInDb.DepartmentId = section.DepartmentId;
                sectionInDb.EntranceYear = section.EntranceYear;
                sectionInDb.Name         = section.Name;
                sectionInDb.StudentCount = section.StudentCount;
            }

            _context.SaveChanges();

            return(RedirectToAction("Index", "Sections"));
        }
コード例 #18
0
        public async Task <List <Dictionary <string, object> > > GetOrderHistory(string view, LabGroup group, SupplierService _suppliersService)
        {
            List <Log> logs = await _logs.Find(log => log.Collection == view && log.Document.Contains(group.Id)).Sort("{timestampUtc: -1}").ToListAsync();

            List <Dictionary <string, object> > convertedLogs = new List <Dictionary <string, object> >();

            int i = 1;

            if (logs[0].Document != null)
            {
                Dictionary <string, object> firstDocument = new Dictionary <string, object>();
                firstDocument = JsonConvert.DeserializeObject <Dictionary <string, object> >(logs[0].Document);
                if (!(firstDocument["SupplierId"] == null))
                {
                    Supplier s = await _suppliersService.Get(firstDocument["SupplierId"].ToString());

                    if (!(s == null))
                    {
                        firstDocument["SupplierName"] = s.Name;
                    }
                }
                firstDocument["GroupNumber"] = group.GroupNumber;
                firstDocument["key"]         = i;
                convertedLogs.Add(firstDocument);
            }

            foreach (Log log in logs)
            {
                bool repeat = false;
                foreach (Dictionary <string, object> conv in convertedLogs)
                {
                    if (log.DocumentId == conv["Id"].ToString())
                    {
                        repeat = true;
                    }
                }


                if (!repeat && log.Document != null)
                {
                    Dictionary <string, object> convertedDocument = new Dictionary <string, object>();

                    convertedDocument = JsonConvert.DeserializeObject <Dictionary <string, object> >(log.Document);

                    if (!(convertedDocument["SupplierId"] == null))
                    {
                        Supplier s = await _suppliersService.Get(convertedDocument["SupplierId"].ToString());

                        if (!(s == null))
                        {
                            convertedDocument["SupplierName"] = s.Name;
                        }
                    }
                    convertedDocument["GroupNumber"] = group.GroupNumber;
                    convertedDocument["key"]         = i;
                    convertedLogs.Add(convertedDocument);
                }
                i++;
            }

            return(convertedLogs);
        }
コード例 #19
0
        public async Task <IActionResult> Update([FromHeader] string authToken, string id, string memberId, bool addRemove)
        {
            if (!await _authenticationService.CheckAccess(authToken, "groupMgr"))
            {
                return(Unauthorized());
            }

            User add = await _userService.GetByTechId(memberId);

            if (add == null)
            {
                return(NotFound());
            }

            LabGroup group = await _labGroupService.Get(id);

            if (group == null)
            {
                return(NotFound());
            }

            if (addRemove)
            {
                if (group.Members == null)
                {
                    group.Members = new List <string>();
                    group.Members.Add(add.Id);
                }
                else
                {
                    group.Members.Add(add.Id);
                }

                add.Permissions.Add("61db5dde3fb8d66a6bbdde3b");
                add.Permissions.Add("61db59a03fb8d66a6bbdde34");
                add.Permissions.Add("61db5a813fb8d66a6bbdde36");

                await _tokenService.InvalidateUserTokens(add.Id);
            }
            else
            {
                if (group.Members == null)
                {
                    return(NotFound());
                }
                else
                {
                    group.Members.Remove(add.Id);

                    add.Permissions.Remove("61db5dde3fb8d66a6bbdde3b");
                    add.Permissions.Remove("61db59a03fb8d66a6bbdde34");
                    add.Permissions.Remove("61db5a813fb8d66a6bbdde36");

                    await _tokenService.InvalidateUserTokens(add.Id);
                }
            }

            _labGroupService.Update(group, id);

            _userService.Update(add.Id, add);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Document modified.",
                                         "labGroups",
                                         id,
                                         JsonSerializer.Serialize(group)
                                         ));

            return(Ok());
        }
コード例 #20
0
 public async void Update(LabGroup original, LabGroupUpdate update) =>
 await _labGroups.ReplaceOneAsync(labGroup => labGroup.Id == original.Id, LabGroup.FromUpdate(original, update));
コード例 #21
0
 public async void Update(LabGroup update, string id) =>
 await _labGroups.ReplaceOneAsync(labGroup => labGroup.Id == id, update);
コード例 #22
0
        public async Task <IActionResult> Update([FromHeader] string authToken, string id, BudgetRequestUpdate budgetRequestUpdate)
        {
            if (!await _authenticationService.CheckAccess(authToken, "budgetMgr"))
            {
                return(Unauthorized());
            }

            var budgetRequest = await _budgetRequestService.Get(id);

            if (budgetRequest == null)
            {
                return(NotFound());
            }

            _budgetRequestService.Update(budgetRequest, budgetRequestUpdate);

            await _logService.Create(new Log(
                                         null,
                                         AuthenticationHelpers.GetUserIdFromToken(authToken),
                                         DateTime.UtcNow,
                                         "Document modified.",
                                         "budgetRequests",
                                         id,
                                         JsonSerializer.Serialize(BudgetRequest.FromUpdate(budgetRequest, budgetRequestUpdate))
                                         ));

            if (budgetRequestUpdate.StockroomApprovedFlag)
            {
                LabGroup group = await _labGroupService.GetByMemberId(AuthenticationHelpers.GetUserIdFromToken(authToken));

                group.Budget        = group.Budget + budgetRequestUpdate.IncreaseAmount;
                group.BudgetBalance = group.BudgetBalance + budgetRequestUpdate.IncreaseAmount;

                group.Transactions.Add(new Transaction(
                                           null,
                                           "Add",
                                           "Budget Increase",
                                           budgetRequestUpdate.IncreaseAmount,
                                           DateTime.UtcNow
                                           ));

                _labGroupService.Update(group, group.Id);

                await _logService.Create(new Log(
                                             null,
                                             AuthenticationHelpers.GetUserIdFromToken(authToken),
                                             DateTime.UtcNow,
                                             "Document modified.",
                                             "budgetRequests",
                                             id,
                                             JsonSerializer.Serialize(group)
                                             ));

                if (!_hostEnvironment.EnvironmentName.Equals("Development", StringComparison.OrdinalIgnoreCase))
                {
                    foreach (string userId in group.Members)
                    {
                        User temp = await _userService.Get(userId);

                        EmailHelpers.SendBudgetRequestApprovedEmail(temp.TechMail);
                    }
                }
            }

            return(Ok());
        }
コード例 #23
0
        public async Task <IActionResult> Update([FromHeader] string authToken, string id, bool inOut, [FromQuery] string techId)
        {
            if (!await _authenticationService.CheckAccess(authToken, "benchMgr"))
            {
                return(Unauthorized());
            }

            LabBench bench = await _labBenchService.Get(id);

            if (bench == null)
            {
                return(NotFound());
            }

            if (inOut)
            {
                User user = await _userService.GetByTechId(techId);

                if (user == null)
                {
                    return(NotFound());
                }

                LabGroup group = await _labGroupService.GetByMemberId(user.Id);

                if (group == null)
                {
                    return(NotFound());
                }

                _labBenchService.CheckInOut(bench, group.Id, "Taken");

                _labGroupService.UpdateBench(group, id);

                await _logService.Create(new Log(
                                             null,
                                             AuthenticationHelpers.GetUserIdFromToken(authToken),
                                             DateTime.UtcNow,
                                             "Document modified.",
                                             "labBenches",
                                             id,
                                             JsonSerializer.Serialize(LabBench.FromCheckInOut(bench, group.Id, "Taken"))
                                             ));
            }
            else
            {
                LabGroup group = await _labGroupService.GetByBenchId(bench.Id);

                if (group == null)
                {
                    return(NotFound());
                }

                _labGroupService.UpdateBench(group, null);

                _labBenchService.CheckInOut(bench, null, "Available");

                await _logService.Create(new Log(
                                             null,
                                             AuthenticationHelpers.GetUserIdFromToken(authToken),
                                             DateTime.UtcNow,
                                             "Document modified.",
                                             "labBenches",
                                             id,
                                             JsonSerializer.Serialize(LabBench.FromCheckInOut(bench, null, "Available"))
                                             ));
            }

            return(Ok());
        }
コード例 #24
0
 public async void CheckOut(LabGroup original, string checkOut) =>
 await _labGroups.ReplaceOneAsync(labGroup => labGroup.Id == original.Id, LabGroup.FromCheckOut(original, checkOut));
コード例 #25
0
 public async void UpdateBench(LabGroup original, string benchId) =>
 await _labGroups.ReplaceOneAsync(labGroup => labGroup.Id == original.Id, LabGroup.FromAddRemoveBench(original, benchId));
コード例 #26
0
 public async void Update(LabGroup original, double increaseAmount) =>
 await _labGroups.ReplaceOneAsync(labGroup => labGroup.Id == original.Id, LabGroup.FromUpdateBudget(original, increaseAmount));
コード例 #27
0
ファイル: Form1.cs プロジェクト: enriquetasa/MarkIt
        } // Allows user to select path to XML to upload

        private void uploadBtn_Click(object sender, EventArgs e)
        {
            XMLReader XMLManager = new XMLReader();

            MarkScheme markSchemeInfo = new MarkScheme();
            LabGroup labGroupInfo = new LabGroup();
            List<MarkSchemeSection> markSchemeSectionsInfo = new List<MarkSchemeSection>();
            List<MarkSchemePart> markSchemePartsInfo = new List<MarkSchemePart>();

            if (XMLManager.GetMarkSchemeInfo(pathToXML, ref markSchemeInfo))
            {
                if (XMLManager.GetLabGroupInfo(pathToXML, ref labGroupInfo))
                {
                    assignmentID = markSchemeInfo.markSchemeAssignmentID;

                    if (XMLManager.GetMarkSchemeSectionsInfo(pathToXML, assignmentID, ref markSchemeSectionsInfo))
                    {
                        if (XMLManager.GetMarkSchemePartsInfo(pathToXML, assignmentID, ref markSchemePartsInfo))
                        {

                        }
                        else
                        {
                            MessageBox.Show("Error in reading parts from XML, check file and retry");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error in sections parts from XML, check file and retry");
                    }
                }
                else
                {
                    MessageBox.Show("Error in reading lab group information from XML, check file and retry");
                }
            }
            else
            {
                MessageBox.Show("Error in reading mark scheme information from XML, check file and retry");
            }

            if (databaseConnection.UploadMarkScheme(markSchemeInfo))
            {
                if (databaseConnection.UploadLabGroup(labGroupInfo))
                {
                    if (databaseConnection.UploadMarkSchemeSections(markSchemeSectionsInfo))
                    {
                        if (databaseConnection.UploadMarkSchemePart(markSchemePartsInfo))
                        {
                        }
                        else
                        {
                            MessageBox.Show("Error in part upload, retry");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error in section upload, retry");
                    }
                }
                else
                {
                    MessageBox.Show("Error in lab group upload, retry");
                }
            }
            else
            {
                MessageBox.Show("Error in mark scheme upload, retry");
            }

            MessageBox.Show("Upload complete");
        }
コード例 #28
0
 public async Task <BudgetRequest> Get(LabGroup group) =>
 await _budgetRequests.Find <BudgetRequest>(budgetRequest => budgetRequest.LabGroupId == group.Id).Sort("{submittedUtc: -1}").FirstOrDefaultAsync();