Пример #1
0
        public async Task <Response <Visit> > AddVisit(AddVisitContract contract)
        {
            try
            {
                var visit = new Visit
                {
                    Active       = true,
                    DateTime     = DateTime.Now,
                    Content      = contract.Content,
                    DoctorId     = contract.DoctorId,
                    MedicalRepId = contract.MedicalRepId,
                    Type         = contract.Typ
                };
                await _repo.AddVisitAsync(visit);

                await _medicalRepHandler.HandleAddingVisitAsync(visit);

                await _unitWork.CommitAsync();

                return(new Response <Visit>(visit));
            }
            catch (Exception e)
            {
                return(new Response <Visit>($"Can not Add the visit: {e.Message}"));
            }
        }
Пример #2
0
        public async Task <Response <EventNotification> > GetEvent(int dataId, int typeId)
        {
            try
            {
                var ev = await _repo.GetEvent(dataId, typeId);

                if (ev == null)
                {
                    return(new Response <EventNotification>("Not found"));
                }
                var readHandler = new ReadingHandler <EventNotificationPrimaryKey>();
                var arr         = new List <IReadable <EventNotificationPrimaryKey> > {
                    new EventRead(ev)
                };
                readHandler.SetObj(arr);
                var readEvent = readHandler.ReadAll();
                await _unitWork.CommitAsync();

                if (readEvent.Count > 0)
                {
                    ev.Read = false;
                }

                return(new Response <EventNotification>(ev));
            }
            catch (Exception e)
            {
                return(new Response <EventNotification>($"ERROR :{e.Message}"));
            }
        }
Пример #3
0
        public async Task <Response <Competition> > AddNextCompetition(Competition competition)
        {
            try
            {
                var last = await _repo.GetLastCompetition(competition.Type);

                var now = _offSetHandler.GetDate();
                var d1  = new DateTime(now.Year, now.Month, now.Day).AddDays(1); //for daily comparison
                var d2  = new DateTime(now.Year, now.Month, 1).AddDays(1);       //for monthly comparision
                if (last != null && (!competition.Type && d1 <= last.DateTime.Date ||
                                     competition.Type && d2 <= last.DateTime.Date))
                {
                    return(new Response <Competition>("the Competition already exists ! "));
                }

                competition.DateTime = competition.Type ? d2 : d1;
                await _repo.AddCompetition(competition);

                await _unitWork.CommitAsync();

                return(new Response <Competition>(competition));
            }
            catch (Exception e)
            {
                return(new Response <Competition>($"Error :{e.Message}"));
            }
        }
Пример #4
0
        public async Task <RegisterServiceResult> AddRepAsync(AddMedicalRepResourcesRequest request)
        {
            try
            {
                var rep = _mapper.Map <AddMedicalRepResourcesRequest, MedicalRep>(request);
                if (request.Image != null && request.Image.Length > 0)
                {
                    rep.ProfileUrl = await UploadAsync(request.Image);
                }
                await _repo.AddUser(rep);

                var identity = new IdentityUser
                {
                    Email       = request.Email,
                    PhoneNumber = request.Phone,
                    UserName    = rep.GenerateUserName()
                };
                var result = await _identityUser.RegisterAsync(identity, request.Password, rep);

                rep.IdentityUser = identity;
                await _unitWork.CommitAsync();

                return(result);
            }
            catch (Exception e)
            {
                return(new RegisterServiceResult($"Can not Register :{e.InnerException}"));
            }
        }
Пример #5
0
        public async Task <Response <Evaluation> > OppositeEvaluationAsync(int userId, int visitId)
        {
            try
            {
                var evaluation = await _repo.GetAnEvaluationWithItsVisitAsync(visitId, userId);

                if (evaluation == null)
                {
                    return(new Response <Evaluation>("evaluation is not found to Modify!"));
                }
                if (!_visitAssertion.AssertActivation(evaluation.Visit))
                {
                    return(new Response <Evaluation>("Visit is not Active Or Deleted !"));
                }
                await _repo.OppositeEvaluationAsync(userId : userId, visitId : visitId);

                await _medicalRepHandlers.HandleEvaluationWithMedicalRepAsync(evaluation, evaluation.Visit, Interacting.Modify);

                await _unitWork.CommitAsync();

                //handle Notification
                var not = await GetEvent(evaluation.Id, (int)NotificationTypesEnum.Evaluation);

                if (!not.Success)
                {
                    return(new Response <Evaluation>("Event is opposited successfully,but Notification is not !"));
                }
                var opposite = new EvaluationOpposite(not.Source);
                opposite.Opposite();
                //end of handling Notification
                await _unitWork.CommitAsync();

                return(new Response <Evaluation>(evaluation));
            }
            catch (Exception e)
            {
                return(new Response <Evaluation>($"Error:Can not Change Evaluation :{e.Message}"));
            }
        }
Пример #6
0
        public async Task <Response <VisitReport> > AddReport(VisitReport visitReport)
        {
            try
            {
                var associatedVisit = await _interacting.GetVisitWithItsReportsAsync(visitReport.VisitId);

                if (!associatedVisit.Success)
                {
                    return(new Response <VisitReport>(associatedVisit.Error));
                }

                if (associatedVisit.Source == null)
                {
                    return(new Response <VisitReport>("Visit Is not found!"));
                }

                if (!_assertion.AssertActivation(associatedVisit.Source))
                {
                    return(new Response <VisitReport>("You try to report to deleted or Un Active Comment !"));
                }

                if (associatedVisit.Source.VisitReports.Any(report => report.ReporterId == visitReport.ReporterId))
                {
                    return(new Response <VisitReport>("User already has made a Report to this visit!"));
                }

                if (associatedVisit.Source.Type)
                {
                    return(new Response <VisitReport>("Report Can only applied for the Optional Visits !"));
                }


                associatedVisit.Source.VisitReports.Add(visitReport);

                _visitsHandlers.HandleReportingVisit(associatedVisit.Source, associatedVisit.Source.VisitReports);
                await _reportHandlers.HandleReporting(associatedVisit.Source, associatedVisit.Source.VisitReports);

                await _unitWork.CommitAsync();

                return(new Response <VisitReport>(visitReport));
            }
            catch (Exception e)
            {
                return(new Response <VisitReport>($"Error:{e.Message}"));
            }
        }