Exemple #1
0
        public IResult CreatePhoneOrder(string currentUserId, string userId, int phoneId)
        {
            Phone phone = this.Data.Phones.GetById(phoneId);

            PhoneNumberOrder order = new PhoneNumberOrder()
            {
                ActionDate  = DateTime.Now,
                AdminId     = currentUserId,
                PhoneAction = PhoneAction.TakePhone,
                UserId      = userId,
                PhoneNumber = phone.PhoneNumber
            };

            phone.PhoneStatus = PhoneStatus.Taken;
            phone.UserId      = userId;
            this.Data.Phones.Update(phone);
            this.Data.PhoneNumberOrders.Add(order);

            try
            {
                this.Data.SaveChanges();
            }
            catch (Exception)
            {
                return(this.ErrorResult("There was a problem."));
            }

            return(this.MessageResult("Order is created!", "/admin/orders"));
        }
Exemple #2
0
        private void SeedPhonesUsersOrders(PhoneSystemDbContext context, IList <Phone> phones, ICollection <User> users)
        {
            foreach (var user in users)
            {
                var phone = phones[this.random.Next(0, phones.Count)];
                phones.Remove(phone);

                var order = new PhoneNumberOrder()
                {
                    PhoneNumber = phone.PhoneNumber,
                    UserId      = user.Id,
                    ActionDate  = DateTime.Now,
                    PhoneAction = PhoneAction.TakePhone,
                    AdminId     = context.Users.Where(x => x.UserName == "admin").Select(x => x.Id).FirstOrDefault()
                };

                var newPhone = context.Phones.Where(x => x.PhoneNumber == phone.PhoneNumber).FirstOrDefault();
                newPhone.PhoneStatus = PhoneStatus.Taken;
                newPhone.User        = user;
                context.PhoneNumberOrders.Add(order);
            }

            context.SaveChanges();
        }
        public IResult TakePhone(string phoneId, string currentUserId)
        {
            TakeOrderResultViewModel model = new TakeOrderResultViewModel();

            Phone phone = this.Data.Phones.All()
                          .Where(p => p.PhoneNumber == phoneId)
                          .FirstOrDefault();

            if (phone == null)
            {
                return(this.ErrorResult("Error: There is no such phone"));
            }

            if (phone.PhoneStatus != PhoneStatus.Taken)
            {
                return(this.ErrorResult(string.Format("Error: Phone status is {0}. It can be taken back.", phone.PhoneStatus.ToString())));
            }

            PhoneNumberOrder takeOrder = this.Data.PhoneNumberOrders.All()
                                         .Where(p => p.PhoneNumber == phoneId)
                                         .OrderByDescending(p => p.Id)
                                         .FirstOrDefault();

            if (takeOrder == null)
            {
                return(this.ErrorResult(string.Format("Error: There is no order for this phone {0}", phoneId)));
            }

            if (takeOrder.PhoneAction != PhoneAction.TakePhone)
            {
                return(this.ErrorResult(string.Format("Error: Order status is {0} for phone {1}. It can be taken back.",
                                                      takeOrder.PhoneAction.ToString(), phoneId)));
            }

            PhoneNumberOrder order = new PhoneNumberOrder()
            {
                ActionDate  = DateTime.Now,
                AdminId     = currentUserId,
                PhoneNumber = phoneId,
                UserId      = takeOrder.UserId,
                PhoneAction = PhoneAction.GiveBackPhone
            };

            User user = this.Data.Users.GetById(order.UserId);

            user.IsActive = true;

            this.Data.PhoneNumberOrders.Add(order);
            this.Data.Users.Update(user);
            phone.PhoneStatus = PhoneStatus.Free;
            phone.UserId      = null;
            this.Data.Phones.Update(phone);

            // TODO phone available after logic

            try
            {
                this.Data.SaveChanges();
            }
            catch (Exception ex)
            {
                ErrorResult errors = new ErrorResult();
                foreach (var key in ex.Data.Keys)
                {
                    errors.Add(key + " " + ex.Data[key]);
                }

                return(errors);
            }

            MessageResult message = new MessageResult();

            message.Add(string.Format("Order with id {0} was created", order.Id));
            message.Add(string.Format("Phone with id {0} was set to free and available after {1}", phone.PhoneNumber, phone.AvailableAfter));
            return(message);
        }