예제 #1
0
        public ActionResult <CaseResponse> Post([FromBody] Case newItem)
        {
            var response = new CaseResponse();

            if (newItem is null)
            {
                return(BadRequest());
            }

            response.Case = _caseService.AddCase(newItem);

            response.Achievements = AwardAchievements((Guid)newItem.UserId);

            var lvl = _levelingService.AddExperience(newItem.UserId, Activity.CreatedCase);

            if (lvl > 0)
            {
                response.LevelupResponse = new LevelupResponse
                {
                    NewLevel = lvl
                };
            }

            return(Ok(response));
        }
예제 #2
0
        public JsonResult SelectCases(CaseRequest request)
        {
            //EF Core 多对多关系查询
            var datas = _db.Cases
                        /*筛选条件*/
                        .WhereIf(request.IndustryID != null, x => x.IndustryCases.Any(b => b.IndustryID == request.IndustryID))
                        .WhereIf(request.ColorID != null, x => x.ColorCases.Any(b => b.ColorID == request.ColorID))
                        .WhereIf(request.ProductID != null, x => x.ProductCases.Any(b => b.ProductID == request.ProductID))
                        .WhereIf(request.ClientID != null, x => x.ClientCases.Any(b => b.ClientID == request.ClientID))
                        /*包含关系*/
                        .Include(x => x.IndustryCases)
                        .Include(x => x.ColorCases)
                        .Include(x => x.ProductCases)
                        .Include(x => x.ClientCases)
                        /*选择属性*/
                        .Select(x => new
            {
                x.ID,
                x.Name,
                x.Cover,
                Industries = x.IndustryCases.Select(i => new
                {
                    i.Industry.ID,
                    i.Industry.Name
                }),
                Colors = x.ColorCases.Select(c => new
                {
                    c.Color.ID,
                    c.Color.Name,
                    c.Color.Value
                }),
                Products = x.ProductCases.Select(p => new
                {
                    p.Product.ID,
                    p.Product.Name
                }),
                Clients = x.ClientCases.Select(c => new
                {
                    c.Client.ID,
                    c.Client.Name
                })
            });

            CaseResponse response = new CaseResponse();

            response.IndustryID = request.IndustryID;
            response.ColorID    = request.ColorID;
            response.ProductID  = request.ProductID;
            response.ClientID   = request.ClientID;
            response.Page       = request.Page;
            response.Limit      = request.Limit;
            response.Total      = datas.Count();

            response.Data = datas.OrderBy(x => x.ID).Skip((request.Page - 1) * request.Limit).Take(request.Limit).ToList();

            return(Json(response));
        }
예제 #3
0
        private CaseResponse CreateResponse(ProxySuccessResponse response, string caseNumber, ICaseClientProxy client)
        {
            var caseResponse = new CaseResponse
            {
                CaseNumber = string.IsNullOrWhiteSpace(caseNumber) ? null : caseNumber,
                Success    = response.Success,
                Errors     = response.Success ? null : response.Errors,
                Id         = response.Id
            };

            return(caseResponse);
        }
        public async Task Should_use_first_best_case_if_lead_case_is_missing()
        {
            var notLeadCase = new CaseResponse
            {
                IsLeadCase = false,
                Name       = "not lead case name",
                Number     = "not lead case number"
            };

            GivenApiHasResponseWithCase(notLeadCase);

            // the hearing is properly mapped and returned
            var hearing = await _hearingService.GetHearingFor("username", _hearingId);

            Assert.AreEqual(notLeadCase.Name, hearing.CaseName);
            Assert.AreEqual(notLeadCase.Number, hearing.CaseNumber);
        }
        private HearingDetailsResponse InitHearing()
        {
            var @case = new CaseResponse
            {
                IsLeadCase = true,
                Name       = "Mapping test",
                Number     = "12345678 MT"
            };

            return(new HearingDetailsResponse
            {
                Id = Guid.NewGuid(),
                Cases = new List <CaseResponse> {
                    @case
                },
                ScheduledDateTime = new DateTime(2020, 10, 12, 13, 10, 0, DateTimeKind.Utc)
            });
        }
 private void GivenApiHasResponseWithCase(CaseResponse caseResponse)
 {
     GivenApiHasResponse(new HearingDetailsResponse
     {
         Id = _hearingId,
         ScheduledDateTime = _scheduledDateTime,
         CaseTypeName      = CaseType,
         HearingTypeName   = HearingType,
         Participants      = new List <ParticipantResponse>
         {
             new ParticipantResponse {
                 Username = Username, Id = participantId
             }
         },
         Cases = new List <CaseResponse> {
             caseResponse
         }
     });
 }
예제 #7
0
        private async Task <CaseResponse> UpdateAsync(SalesforceEventTypeEnum eventType, string sObject, string caseId, object record, ICaseClientProxy client = null, IDictionary <string, object> logData = null)
        {
            ProxySuccessResponse response     = null;
            CaseResponse         caseResponse = null;
            var isError = false;
            var metric  = new MetricWatcher(eventType.ToString(),
                                            new MetricWatcherOption
            {
                ManualStartStop = true,
                LoggingOption   = LogOptionEnum.FullLog,
                LogMessage      = logData
            });

            try
            {
                metric.Start();
                if (client == null)
                {
                    client = await CaseService.GetUserNamePasswordForceClientAsync(ClientEnum.Header);
                }
                response = await client.UpdateAsync(sObject, caseId, record);
            }
            catch (Exception ex)
            {
                isError = true;
                if (ex is ForceException)
                {
                    throw new ExternalErrorException(ex.GetExceptionMessages(), new LogObject(eventType.ToString(), logData), ex);
                }
                throw;
            }
            finally
            {
                if (response != null)
                {
                    response.Id  = caseId;
                    caseResponse = await HandleCaseResponse(client, response, isError, metric);
                }
                metric.Stop(isError);
            }
            return(caseResponse);
        }
예제 #8
0
        public JsonResult InitData()
        {
            var datas = new
            {
                Industries = _db.Industries.ToList(),
                Colors     = _db.Colors.ToList(),
                Products   = _db.Products.ToList(),
                Clients    = _db.Clients.ToList()
            };

            CaseResponse response = new CaseResponse();

            response.IndustryID = null;
            response.ColorID    = null;
            response.ProductID  = null;
            response.ClientID   = null;
            response.Limit      = 10;
            response.Page       = 1;
            response.Data       = datas;


            return(Json(response));
        }