예제 #1
0
        public async Task <IActionResult> PostBill(AccidentBill bill)
        {
            try
            {
                var currentUser = (from u in dbContext.Users
                                   where u.Email == User.Identity.Name
                                   select u).FirstOrDefault();

                FMSAccidentalCheck check = (from c in dbContext.FMSAccidentalCheckList
                                            where c.Id == bill.CheckPointId
                                            select c).SingleOrDefault();
                check.MaintenanceStatus = CheckMaintenanceStatus.InProgress;
                check.Remarks           = bill.Remarks;
                FMSAccidentalCheckComment newComment = new FMSAccidentalCheckComment()
                {
                    Id = Guid.NewGuid(),
                    FMSAccidentalCheckId = check.Id,
                    FMSAccidentId        = check.FMSAccidentId,
                    Comment       = bill.BillAmount.ToString(),
                    FMSUserId     = new Guid((from u in dbContext.Users where u.Email == User.Identity.Name select u.Id).SingleOrDefault()),
                    FMSVehicleId  = check.FMSVehicleId,
                    VehicleNumber = check.VehicleNumber,
                    LastUpdated   = DateTime.Now,
                    Mentions      = ""
                };

                await dbContext.FMSAccidentalCheckComments.AddAsync(newComment);

                bill.Id = new Guid();
                await dbContext.AccidentBills.AddAsync(bill);

                check.CommentCount = await(from c in dbContext.FMSAccidentalCheckComments
                                           where c.FMSAccidentalCheckId == bill.CheckPointId
                                           select c).CountAsync();
                Accident accident = await dbContext.Accidents.Where(x => x.Id == check.FMSAccidentId).Select(x => x).SingleOrDefaultAsync();

                accident.LastUpdated = PakistanDateTime.Now;
                check.LastUpdated    = PakistanDateTime.Now;
                await dbContext.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }
        }
예제 #2
0
        public async Task <IActionResult> AddCheckListPointComment(FMSAccidentalCheckCommentVM comment)
        {
            try
            {
                var currentUser = (from u in dbContext.Users
                                   where u.Email == User.Identity.Name
                                   select u).FirstOrDefault();
                FMSAccidentalCheckComment newComment = new FMSAccidentalCheckComment()
                {
                    Id = Guid.NewGuid(),
                    FMSAccidentalCheckId = comment.FMSAccidentalCheckId,
                    FMSAccidentId        = comment.FMSAccidentId,
                    Comment       = comment.Comment,
                    FMSUserId     = new Guid((from u in dbContext.Users where u.Email == User.Identity.Name select u.Id).SingleOrDefault()),
                    FMSVehicleId  = comment.FMSVehicleId,
                    VehicleNumber = comment.VehicleNumber,
                    LastUpdated   = DateTime.Now,
                    Mentions      = comment.Mentions
                };
                await dbContext.FMSAccidentalCheckComments.AddAsync(newComment);

                await dbContext.SaveChangesAsync();

                FMSAccidentalCheck check = await(from a in dbContext.FMSAccidentalCheckList
                                                 where a.Id == comment.FMSAccidentalCheckId
                                                 select a).SingleOrDefaultAsync();
                check.LastUpdated = PakistanDateTime.Now;
                //await dbContext.SaveChangesAsync();

                check.CommentCount = await(from c in dbContext.FMSAccidentalCheckComments
                                           where c.FMSAccidentalCheckId == comment.FMSAccidentalCheckId
                                           select c).CountAsync();
                check.MaintenanceStatus = CheckMaintenanceStatus.InProgress;

                Accident accident = await dbContext.Accidents.Where(x => x.Id == comment.FMSAccidentId).Select(x => x).SingleOrDefaultAsync();

                accident.LastUpdated = PakistanDateTime.Now;
                await dbContext.SaveChangesAsync();


                if (!string.IsNullOrEmpty(comment.Mentions))
                {
                    string[] mentions = comment.Mentions.Split(',');
                    foreach (var mention in mentions)
                    {
                        ApplicationUser user = (from u in dbContext.Users
                                                where u.Id == mention
                                                select u).FirstOrDefault();

                        await hubContext.Clients.All.SendAsync("ReceiveMessage",
                                                               user.Email,
                                                               $"Notification for Vehicle Number {check.VehicleNumber}",
                                                               $"{currentUser.Name} mentioned you in a comment under accidental check list point {check.Description}");

                        await SMSService.SendSMS($"Notification for Vehicle Number {check.VehicleNumber}: {currentUser.Name} mentioned you in a comment under accidental check list point {check.Description}", "03035650720");

                        SMSService.SendMail($"Notification for Vehicle Number {check.VehicleNumber}", $"{currentUser.Name} mentioned you in a comment under accidental check list point {check.Description}", "*****@*****.**");
                    }
                }

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }
        }