Esempio n. 1
0
        public async Task <IActionResult> CompleteTask(int id, SubmitActionViewModel model)
        {
            var requests = await _context.Requests.Include(r => r.Process)
                           .ThenInclude(p => p.Actions).Include(r => r.Process)
                           .ThenInclude(p => p.States).Include(r => r.Process)
                           .ThenInclude(p => p.Activities).Include(r => r.Process)
                           .ThenInclude(p => p.Rules)
                           .Include(r => r.Process).ThenInclude(p => p.Rules).Include(r => r.Process)
                           .ThenInclude(p => p.Roles).Include(r => r.Process)
                           .ThenInclude(p => p.Nodes).ThenInclude(n => n.Childs)
                           .Include(r => r.Process).ThenInclude(p => p.Nodes).ThenInclude(n => n.Actions)
                           .Include(r => r.CurrentState).Include(r => r.CurrentNode)
                           .Include(r => r.Data).Include(r => r.Tasks)
                           .ToListAsync();

            if (id <= 0)
            {
                return(NotFound());
            }
            var request = requests.FirstOrDefault(r => r.Id == id);

            if (request is null)
            {
                return(NotFound());
            }
            if (model.data != null)
            {
                foreach (var data in model.data)
                {
                    request.InsertData(data, model.activity);
                }
                _context.Update(request);
                await _context.SaveChangesAsync();
            }

            if (id <= 0)
            {
                return(NotFound());
            }
            request.Data = await _context.Data.Where(d => d.RequestId == request.Id).ToListAsync();

            request.CurrentState = request.Transit(model.action, model.source, model.role, model.activity, model.approver, model.data, model.doactivity);
            try
            {
                _context.Update(request);
                await _context.SaveChangesAsync();
            }
            catch (System.Exception)
            {
                return(NotFound());
            }
            return(Ok(_mapper.Map <RequestViewModel>(request)));
        }
        public async Task <IActionResult> doSomething(int id, bool istree, bool trigger, SubmitActionViewModel model)
        {
            if (model is null)
            {
                return(Json("Lỗi: sai cấu trúc dữ liệu"));
            }
            var client = new HttpClient();

            try
            {
                if (istree)
                {
                    var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
                    var result  = await client.PutAsync("http://" + Configuration["url"] + ":88/api/v1/requests/submitnodeaction/" + id.ToString(), content);

                    if (result.IsSuccessStatusCode)
                    {
                        return(Json("Thao tác thành công, click \"Ok\" để load lại quy trình"));
                    }
                    return(Json("Lỗi: không tìm thấy máy chủ"));
                }
                else
                {
                    if (trigger)
                    {
                        model.data = new List <DataCreateModel> {
                            new DataCreateModel {
                                CampaignName = "Campaign ",
                                IsRunning    = false,
                                DataType     = DataType.Campaign
                            }
                        };
                        var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
                        var result  = await client.PutAsync("http://" + Configuration["url"] +
                                                            ":88/api/v1/requests/submitaction/" + id.ToString() + "?trigger=true", content);

                        if (result.IsSuccessStatusCode)
                        {
                            return(Json("Thao tác thành công, click \"Ok\" để load lại quy trình"));
                        }
                        return(Json(model));
                    }
                    else
                    {
                        var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
                        var result  = await client.PutAsync("http://" + Configuration["url"] +
                                                            ":88/api/v1/requests/submitaction/" + id.ToString() + "?trigger=false", content);

                        if (result.IsSuccessStatusCode)
                        {
                            return(Json("Thao tác thành công, click \"Ok\" để load lại quy trình"));
                        }
                        return(Json("Lỗi: không tìm thấy máy chủ"));
                    }
                }
            }
            catch (System.Exception)
            {
                return(Json("Lỗi: không tìm thấy máy chủ"));

                throw;
            }
        }